
    i                     >   d dl Z d dlZd dlZd dlmZmZmZmZ d dlmZm	Z	 d dl
mZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ ej                  eeeeef   Z,ej                  e,ef   Z-de,d	e.fd
Z/de0e!   d	e"fdZ1de0e.   d	e)fdZ2de3e4e0e    f   d	e0e,   fdZ5e G d d             Z6e G d d             Z7 G d de      Z8ej                  e%ed   f   Z9ej                  eee ed      f   ee ed      f   ee ed      f   ee ed      f   ee ed      f   ee ed      f   ee ed      f   ee ed      f   ee ed      f   ee8 ed      f   f
    ed        f   Z: G d! d"e      Z;y)#    N)Union	AnnotatedOptionalLiteral)	dataclassfield)DiscriminatorTag	BaseModel)pydantic_model_from_json)FunctionResultEntryFunctionCallEntryMessageOutputEntryAgentHandoffEntryToolExecutionEntryMessageInputEntryAgentHandoffDoneEventAgentHandoffStartedEventResponseDoneEventResponseErrorEventResponseStartedEventFunctionCallEventMessageOutputEventToolExecutionDoneEventToolExecutionStartedEventConversationEventsDataMessageOutputEventContentMessageOutputEntryContent	TextChunkMessageOutputContentChunksSSETypesInputEntriesToolFileChunkToolReferenceChunkFunctionCallEntryArgumentsget_discriminatorentryreturnc                    d}t        | t              rt        | j                  t              r|| j                  z  }|S | j                  D ]w  }t        |t              r||j
                  z  }#t        |t              r!|d|j                   d|j                   dz  }Tt        |t              se|d|j                   dz  }y |S )zDKeep only the messages and turn content into textual representation. z	<File id=z name=>z<Reference title=)
isinstancer   contentstrr   textr#   file_id	file_namer$   title)r(   r0   chunks      X/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/mistralai/extra/run/result.pyas_textr6   1   s    D%+,emmS)EMM!D K  ?eY/EJJ&D}5ifU__<MQOOD'9:/}A>>D? K    chunksc                    t        d | D              r0dj                  t        j                  t        t
           |             S g }| D ]  }t        |t
              rt        |      }t        |t              rSt        |      r6t        |d   t              r#|d   xj                  |j                  z  c_	        p|j                  |       |j                  |        |S )z[Given a list of MessageOutputEventContent, recreate a normalised MessageOutputEntryContent.c              3   <   K   | ]  }t        |t                y wN)r-   r/   ).0r4   s     r5   	<genexpr>z/reconstitute_message_content.<locals>.<genexpr>F   s     
6e:eS!
6s   r+   )r0   )alljointypingcastlistr/   r-   r   lenr0   append)r8   r.   r4   s      r5   reconstitute_message_contentrF   B   s     
6v
66wwv{{49f56602G 	"eS!5)EeY'7|
72;	 B  EJJ. u%NN5!	" Nr7   c                 T    t        j                  t        dj                  |             S )z-Recreates function call arguments from streamr+   )rA   rB   r%   r@   r8   s    r5   reconstitute_function_call_argsrI   V   s    ;;12776?CCr7   received_event_trackerc                    g }t        | j                         d       D ]L  \  }}|d   }t        |t              rt	        j
                  t        t           |      }|j                  t        t        |D cg c]  }|j                   c}      |j                  |j                  |j                  |j                  |j                               t        |t               st	        j
                  t        t            |      }|j                  t#        |j$                  t'        |D cg c]  }|j(                   c}      |j                  |j                  |j*                               O |S c c}w c c}w )z;Given a list of events, recreate the corresponding entries.c                     | d   S )Nr    )xs    r5   <lambda>z%reconstitue_entries.<locals>.<lambda>`   s
    AaD r7   )keyr   rH   )r.   
created_atidagent_idmodelrole)name	argumentsrQ   rR   tool_call_id)sorteditemsr-   r   rA   rB   rC   rE   r   rF   r.   rQ   rR   rS   rT   rU   r   r   rV   rI   rW   rX   )	rJ   run_entriesidxeventsfirst_eventmessage_eventsmessage_eventfunction_call_eventsfunction_call_events	            r5   reconstitue_entriesrc   [   sS    +-K4::<.Q !VQik#56#[[.@)A6JN"8GU 6CM11 
  +55"~~(11%++$)) %67#);;t4E/F#O !$))= 8L  3 099   +55"~~!,!9!9)!D 7 " s   5E1'E6c                   ,    e Zd ZU eed<   eed<   eed<   y)RunFilesrR   rV   r.   N)__name__
__module____qualname__r/   __annotations__bytesrM   r7   r5   re   re      s    G
INr7   re   c                      e Zd ZU ee   ed<    ed      Zee	   ed<    ee      Z
ee   ed<    ee      Zee	ef   ed<    ed      Zeee      ed<   d	e	d
ee   fdZed
ee   fd       Zed
e	fd       Zed
efd       Zy)	RunResultinput_entriesN)defaultconversation_id)default_factoryoutput_entriesfilesoutput_modelr1   r)   c                 8    | j                   j                  |      S r;   )rr   get)selfr1   s     r5   get_filezRunResult.get_file   s    zz~~g&&r7   c                 6    g | j                   | j                  S r;   )rm   rq   rv   s    r5   entrieszRunResult.entries   s    :##:d&9&9::r7   c                 t    | j                   st        d      dj                  d | j                   D              S )NzNo output entries were started.
c              3   P   K   | ]  }|j                   d k(  rt        |         yw)zmessage.outputN)typer6   )r<   r(   s     r5   r=   z+RunResult.output_as_text.<locals>.<genexpr>   s)      
zz-- EN
s   $&)rq   
ValueErrorr@   ry   s    r5   output_as_textzRunResult.output_as_text   s;    "">??yy 
,,
 
 	
r7   c                     | j                   t        d      t        t        j                  | j
                        | j                         S )NzNo output format was not set.)rs   r   r   jsonloadsr   ry   s    r5   output_as_modelzRunResult.output_as_model   sA    $<=='JJt**+T->->
 	
r7   )rf   rg   rh   rC   r"   ri   r   ro   r   r/   rq   RunOutputEntriesdictrr   re   rs   r~   r   rw   property
RunEntriesrz   r   r   rM   r7   r5   rl   rl      s    %%%*4%8OXc]8-24-HND)*H!&t!<E4X<.3D.AL(4	?+A' '(: ' ;j) ; ; 
 
 
 
 
 
r7   rl   c                       e Zd ZU dZee   ed<   dZeed      ed<   eed<   eed<   e	j                  j                  e	j                  j                        Zee	j                     ed<   d	Zee   ed
<   y)FunctionResultEventNrR   function.resultr~   resultrX   )tzrQ   r   output_index)rf   rg   rh   rR   r   r/   ri   r~   r   datetimenowtimezoneutcrQ   r   intrM   r7   r5   r   r      s}    B1BD(7,-
.BK.6.?.?.C.C   /D /J**+  #$L(3-#r7   r   r   zagent.handoff.donezagent.handoff.startedzconversation.response.donezconversation.response.errorzconversation.response.startedzfunction.call.deltazmessage.output.deltaztool.execution.doneztool.execution.startedc                     t        | dd      S )Nr~   r&   )ms    r5   rO   rO      s    -a@ r7   c                   "    e Zd ZU eed<   eed<   y)RunResultEventseventdataN)rf   rg   rh   RunResultEventsTyperi   RunResultEventsDatarM   r7   r5   r   r      s    
r7   r   )<r   r   rA   r   r   r   r   dataclassesr   r   pydanticr	   r
   r   %mistralai.extra.utils.response_formatr   mistralai.modelsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   mistralai.utilsr'   r   r   r/   r6   rC   rF   rI   r   r   rc   re   rl   r   r   r   r   rM   r7   r5   <module>r      sW      6 6 ( 2 2 J      6 .<<	  \\*,==>
#  "*+(DDI D:T D
' d+A&B!BC'	
'T    
 
 
B$) $  ll8W5F-G#GH &&	'-A)BBC*C0G,HHI#S)E%FFG$c*G&HHI&,K(LLM#S)>%??@$c*@&AAB(#.C*DDE+S1I-JJK%s+<'==>		@ @AC "i r7   