
    Qmi                        d Z ddlmZ ddlmZ ddlmZmZ ddl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dS )z;Pydantic data models for the multi-agent meeting framework.    )annotations)datetime)LiteralOptional)	BaseModelmodel_validatorc                  N    e Zd ZU dZded<   ded<   ded<   dZded<   dZded<   d	S )
AgentConfigz!Configuration for a single Agent.strnamerolesystem_prompt input_schemaoutput_schemaN)__name__
__module____qualname____doc____annotations__r   r        1/root/projects/multi-agents-meeting/src/models.pyr
   r
      sX         ++IIIIIILMr   r
   c                  2    e Zd ZU dZded<   ded<   ded<   dS )ScratchpadEntryz(A single entry on the shared whiteboard.r   
agent_namecontentr   	timestampN)r   r   r   r   r   r   r   r   r   r      s6         22OOOLLLr   r   c                  d    e Zd ZU dZded<   dZded<   dZded<   g Zded<   d	Zd
ed<   dZ	d
ed<   dS )MeetingStatez6The shared whiteboard maintaining all meeting context.r   topicr   contextcontext_summarylist[ScratchpadEntry]
scratchpadr   intcurrent_round
   
max_roundsN)
r   r   r   r   r   r"   r#   r%   r'   r)   r   r   r   r    r       sv         @@JJJGO(*J****MJr   r    c                  ~    e Zd ZU dZded<   ded<   dZded<   dZded	<   dZded
<    ed          dd            Z	dS )
PMDecisionz/Structured output from the PM Agent each round.r   analysiszLiteral['CALL_AGENT', 'FINISH']next_actionNzOptional[str]target_agentprompt_for_agentfinal_reportafter)modereturnc                    | j         dk    r-| j        st          d          | j        st          d          n!| j         dk    r| j        st          d          | S )z8Ensure required fields are present based on next_action.
CALL_AGENTz7target_agent is required when next_action is CALL_AGENTz;prompt_for_agent is required when next_action is CALL_AGENTFINISHz3final_report is required when next_action is FINISH)r-   r.   
ValueErrorr/   r0   )selfs    r   validate_fields_for_actionz%PMDecision.validate_fields_for_action1   s|     |++$ \ !Z[[[( ` !^___`))$ X !VWWWr   )r3   r+   )
r   r   r   r   r   r.   r/   r0   r   r9   r   r   r   r+   r+   (   s         99MMM0000"&L&&&&&*****"&L&&&&_'"""
 
 
 #"
 
 
r   r+   c                  f    e Zd ZU dZded<   dZded<   g Zded<   g Zded	<   ded
<   ded<   ded<   dS )MeetingResultz?Complete result of a meeting including transcript and metadata.r   r!   r   r"   z	list[str]participantsr$   
transcriptr0   r   
started_atfinished_atN)r   r   r   r   r   r"   r<   r=   r   r   r   r;   r;   ?   sx         IIJJJG L    (*J****r   r;   N)r   
__future__r   r   typingr   r   pydanticr   r   r
   r   r    r+   r;   r   r   r   <module>rC      s;   A A " " " " " "       $ $ $ $ $ $ $ $ / / / / / / / /    )       i       9          .	 	 	 	 	I 	 	 	 	 	r   