
    yji	                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ  e j        e          Z G d	 d
ee          Z G d de          Z G d de          Z G d de          Zeez  ZdeddfdZdS )    N)Enum)Literal)	BaseModel)
tracked_db)	QueueItem)create_webhook_payload)construct_work_unit_keyc                       e Zd ZdZdZdS )WebhookEventTypezqueue.emptyz
test.eventN)__name__
__module____qualname__QUEUE_EMPTYTEST     ;/DATA/AppData/hermes/projects/honcho/src/webhooks/events.pyr   r      s        KDDDr   r   c                       e Zd ZU dZeed<   dS )BaseWebhookEventz"Base class for all webhook events.workspace_idN)r   r   r   __doc__str__annotations__r   r   r   r   r      s$         ,,r   r   c                       e Zd ZU dZej        Zeej                 ed<   e	ed<   dZ
e	dz  ed<   dZe	dz  ed<   dZe	dz  ed<   dS )QueueEmptyEventz-Webhook event for when a queue becomes empty.type
queue_typeN
session_idobserverobserved)r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r      sy         772B2ND'".
/NNNOOO!Jd
!!!HcDjHcDjr   r   c                   B    e Zd ZU dZej        Zeej                 ed<   dS )	TestEventzWebhook event for testing.r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   $   s4         $$+;+@D'"'
(@@@@@r   r"   eventreturnc           	      L  K   	 t          | j        j        |                     ddh                    }t	          d          4 d{V }t          t          | j        ddi          |dd| j        d	          }|                    |           |	                                 d{V  t                              d
| j        | j                   ddd          d{V  dS # 1 d{V swxY w Y   dS # t          $ r$ t                              d| j                   Y dS w xY w)zf
    Add a webhook event to our DB queue.

    Args:
        event: The webhook event to publish.
    jsonr   )modeexclude)
event_typedatapublish_webhook_eventN	task_typewebhook)work_unit_keypayloadr   r,   workspace_name
message_idz/Published webhook event '%s' for workspace '%s'z"Failed to publish webhook event %s)r   r   value
model_dumpr   r   r	   r   addcommitloggerdebug	Exception	exception)r#   r/   db
queue_items       r   r+   r+   .   s     "
 )z'!!vx!@@
 
 

 566 	 	 	 	 	 	 	""5&#Y   #$1  J FF:))++LLA
"  !	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,  
 
 
0J	
 	
 	
 	
 	
 	

s7   AC5 
BC"C5 "
C,,C5 /C,0C5 5*D#"D#)loggingenumr   typingr   pydanticr   src.dependenciesr   
src.modelsr   src.utils.queue_payloadr   src.utils.work_unitr	   	getLoggerr   r6   r   r   r   r   r"   WebhookEventr+   r   r   r   <module>rF      s                      ' ' ' ' ' '             : : : : : : 7 7 7 7 7 7		8	$	$    sD   
    y            &      A A A A A  A A A *)
| )
 )
 )
 )
 )
 )
 )
r   