
    yj                     l   d dl m Z  d dlmZmZ d dlmZmZ d dlmZm	Z	m
Z
  G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zdedeeef         deeef         fdZdddddddededededz  dedz  d edz  d!edz  d"edz  deeef         fd#Zd$ed%         d&edeeef         fd'Z	 d0ddd(d)eeef         d*e
d+ed,         d-edz  d.ee         dz  dedz  deeef         fd/ZdS )1    )datetime)AnyLiteral)	BaseModel
ConfigDict)	DreamTypeReconcilerTypeResolvedConfigurationc                   *    e Zd ZdZ ed          ZdS )BasePayloadz Base payload with common fields.forbid)extraN)__name__
__module____qualname____doc__r   model_config     ?/DATA/AppData/hermes/projects/honcho/src/utils/queue_payload.pyr   r   	   s&        **:H---LLLr   r   c                   v    e Zd ZU dZdZed         ed<   eed<   eed<   ee         ed<   eed<   e	ed<   e
ed	<   d
S )RepresentationPayloadz!Payload for representation tasks.representation	task_typesession_namecontent	observersobserved
created_atconfigurationN)r   r   r   r   r   r   __annotations__strlistr   r
   r   r   r   r   r      st         +++;Iw'(;;;LLLCyMMM((((((r   r   c                   *    e Zd ZU dZee         ed<   dS )RepresentationPayloadsz,Payload for a batch of representation tasks.payloadsN)r   r   r   r   r#   r   r!   r   r   r   r%   r%      s*         66())))))r   r%   c                   `    e Zd ZU dZdZed         ed<   eed<   eed<   e	ed<   dZ
edz  ed<   dS )	SummaryPayloadzPayload for summary tasks.summaryr   r   message_seq_in_sessionr    Nmessage_public_id)r   r   r   r   r   r   r!   r"   intr
   r+   r   r   r   r(   r(   !   sf         $$$-Iwy!---(((($(sTz(((((r   r(   c                   R    e Zd ZU dZdZed         ed<   eed<   eee	f         ed<   dS )WebhookPayloadz#Payload for webhook delivery tasks.webhookr   
event_typedataN)
r   r   r   r   r   r   r!   r"   dictr   r   r   r   r.   r.   ,   sJ         --$-Iwy!---OOO
sCx.r   r.   c                       e Zd ZU dZdZed         ed<   eed<   e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Zedz  ed<   dZedz  ed<   dS )DreamPayloadzPayload for dream tasks.dreamr   
dream_typeobserverr   Nr   trigger_reasondelay_reason&documents_since_last_dream_at_scheduledocument_threshold)r   r   r   r   r   r   r!   r   r"   r   r8   r9   r:   r,   r;   r   r   r   r4   r4   4   s         """)Iww)))MMMMMM#L#*### "&NC$J%%%#L#*###9=*C$J===%)d
)))))r   r4   c                   N    e Zd ZU dZdZed         ed<   ed         ed<   eed<   dS )DeletionPayloadzPayload for deletion tasks.deletionr   sessionobservation	workspacedeletion_typeresource_idN)r   r   r   r   r   r   r!   r"   r   r   r   r=   r=   G   sK         %%%/Iwz"///@AAAAr   r=   c                   8    e Zd ZU dZdZed         ed<   eed<   dS )ReconcilerPayloadzHPayload for reconciler tasks (vector sync, queue cleanup, self-healing).
reconcilerr   reconciler_typeN)r   r   r   r   r   r   r!   r	   r   r   r   rF   rF   O   s9         RR'3Iw|$333######r   rF   r0   r1   returnc                 N    t          | |                              dd          S )zCreate a webhook payload.r0   r1   jsonTmodeexclude_none)r.   
model_dumprK   s     r   create_webhook_payloadrQ   V   s4    
 Zd;;;FF$ G   r   N)r   r8   r9   r:   r;   r6   r7   r   r   r8   r9   r:   r;   c          
      Z    t          | |||||||                              dd          S )zCreate a dream payload.r6   r7   r   r   r8   r9   r:   r;   rL   TrM   )r4   rP   rS   s           r   create_dream_payloadrT   `   sF     !%!/U-	 	 	 jf4j00	1r   rC   r?   rD   c                 N    t          | |                              dd          S )zCreate a deletion payload.rC   rD   rL   TrM   )r=   rP   rV   s     r   create_deletion_payloadrW   x   s4    
 #   jf4j001r   )r   r   messager    r   )r   r)   r*   r   c                j   |                      d          }|                      d          }|                      d          }t          |t                    st          d          t          |t                    st          d          t          |t                    st          d          	 |dk    r|                      d          }	|                      d	          }
t          |	t                    st          d
          t          |
t
                    st          d          |t          |          dk    rt          d          |t          d          t          |	||
|||          }ny|dk    rs|t          d          |                      d          }|8t          |t                    r|	                                st          d          t          ||||          }|                    dd          }n2# t          $ r%}t          dt          |                     |d}~ww xY w|S )a  
    Create a processed payload from a message for queue processing.

    Note: workspace_name and message_id are no longer included in the returned payload
    as they are now stored in dedicated columns on the queue table. The caller is
    responsible for extracting and passing these values separately.

    Args:
        message: The original message dictionary
        task_type: Type of task ('representation' or 'summary')
        message_seq_in_session: Required for summary tasks, must be None for representation
        observers: List of observer peer names (required for representation tasks)
        observed: Name of the observed peer (*always* the peer who sent the message) (required for representation tasks)


    Returns:
        Processed payload dictionary ready for queue processing (without workspace_name and message_id)

    Raises:
        ValueError: If the payload doesn't match the expected schema
    workspace_namer   
message_idzWorkspace name must be a stringzSession name must be a stringzMessage ID must be an integerr   r   r   z Message content must be a stringz$created_at must be a datetime objectNr   z.observers is required for representation tasksz-observed is required for representation tasks)r   r   r   r   r   r    r)   z4message_seq_in_session is required for summary tasksr+   z8message_public_id must be a non-empty string if provided)r   r*   r    r+   rL   TrM   z Failed to create valid payload: )get
isinstancer"   	TypeErrorr,   r   len
ValueErrorr   stripr(   rP   	Exception)rX   r    r   r*   r   r   rZ   r   r[   r   r   validated_payloadr+   payloades                  r   create_payloadrf      sx   < [[!122N;;~..L\**Jnc** ;9:::lC(( 97888j#&& 978880M(((kk),,G \22Jgs++ D BCCCj(33 H FGGG C	NNa$7$7 !QRRR !PQQQ 5)%#!+! ! ! )##%- !WXXX ',? @ @ ,0#66 ->O>U>U>W>W - !N   !/)'=+"3	! ! ! $..F.NN M M MDCFFDDEE1LM Ns   -EH 
H0 H++H0)N)r   typingr   r   pydanticr   r   src.schemasr   r	   r
   r   r   r%   r(   r.   r4   r=   rF   r"   r2   rQ   r,   rT   rW   r#   rf   r   r   r   <module>rj      s                 * * * * * * * * H H H H H H H H H H. . . . .) . . .	) 	) 	) 	) 	)K 	) 	) 	)* * * * *[ * * *) ) ) ) )[ ) ) )    [   * * * * *; * * *&    k   $ $ $ $ $ $ $ $
sCx. 
#s(^     $!%#9=%)1 1 11 1 	1
 *1 $J1 *1 -0$J1 d
1 
#s(^1 1 1 101@A11 
#s(^1 1 1 1 *.	^ #'^ ^ ^#s(^^(^ 23^  $J	^ Cy4^ Dj^ 
#s(^^ ^ ^ ^ ^ ^r   