
    wi                        d dl Z d dlZd dlZd dl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ez  ez  ez  ez  Z*e*ez  Z+de*d	e,fd
Z-de.e   d	e fdZ/de.e,   d	e'fdZ0de1e2e.e   f   d	e.e*   fdZ3e G d d             Z4e G d d             Z5 G d de	      Z6e#ed   z  Z7ej                  ee ed      f   ee ed      f   z  ee ed      f   z  ee ed      f   z  ee ed      f   z  ee ed      f   z  ee ed      f   z  ee ed      f   z  ee ed      f   z  ee6 ed      f   z   e
d        f   Z8 G d! d"e	      Z9y)#    N)	dataclassfield)	AnnotatedLiteral)	BaseModelDiscriminatorTag)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&   r.   chunks      \/home/ubuntu/bibliothek-app/.venv/lib/python3.12/site-packages/mistralai/extra/run/result.pyas_textr4   2   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-   ).0r2   s     r3   	<genexpr>z/reconstitute_message_content.<locals>.<genexpr>G   s     
6e:eS!
6s   r)   )r.   )alljointypingcastlistr-   r+   r   lenr.   append)r6   r,   r2   s      r3   reconstitute_message_contentrD   C   s     
6v
66wwv{{49f56602G 	"eS!5)EeY'7|
72;	 B  EJJ. u%NN5!	" Nr5   c                 T    t        j                  t        dj                  |             S )z-Recreates function call arguments from streamr)   )r?   r@   r#   r>   r6   s    r3   reconstitute_function_call_argsrG   W   s    ;;12776?CCr5   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    r3   <lambda>z%reconstitue_entries.<locals>.<lambda>a   s
    AaD r5   )keyr   rF   )r,   
created_atidagent_idmodelrole)name	argumentsrO   rP   tool_call_id)sorteditemsr+   r   r?   r@   rA   rC   r   rD   r,   rO   rP   rQ   rR   rS   r   r   rT   rG   rU   rV   )	rH   run_entriesidxeventsfirst_eventmessage_eventsmessage_eventfunction_call_eventsfunction_call_events	            r3   reconstitue_entriesra   \   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)RunFilesrP   rT   r,   N)__name__
__module____qualname__r-   __annotations__bytesrK   r5   r3   rc   rc      s    G
INr5   rc   c                      e Zd ZU ee   ed<    ed      Zedz  ed<    ee      Z	ee
   ed<    ee      Zeeef   ed<    ed      Zee   dz  ed<   d	ed
edz  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_modelr/   r'   c                 8    | j                   j                  |      S r9   )rp   get)selfr/   s     r3   get_filezRunResult.get_file   s    zz~~g&&r5   c                 6    g | j                   | j                  S r9   )rk   ro   rt   s    r3   entrieszRunResult.entries   s    :##:d&9&9::r5   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)typer4   )r:   r&   s     r3   r;   z+RunResult.output_as_text.<locals>.<genexpr>   s)      
zz-- EN
s   $&)ro   
ValueErrorr>   rw   s    r3   output_as_textzRunResult.output_as_text   s;    "">??yy 
,,
 
 	
r5   c                     | j                   t        d      t        t        j                  | j
                        | j                         S )NzNo output format was not set.)rq   r}   r
   jsonloadsr~   rw   s    r3   output_as_modelzRunResult.output_as_model   sA    $<=='JJt**+T->->
 	
r5   )rd   re   rf   rA   r    rg   r   rm   r-   ro   RunOutputEntriesdictrp   rc   rq   r|   r   ru   property
RunEntriesrx   r~   r   rK   r5   r3   rj   rj      s    %%"'"5OS4Z5-24-HND)*H!&t!<E4X<+0+>L$y/D(>' '4 ' ;j) ; ; 
 
 
 
 
 
r5   rj   c                       e Zd ZU dZedz  ed<   dZed   dz  ed<   eed<   eed<   ej                  j                  ej                  j                        Zej                  dz  ed<   d	Zedz  ed
<   y)FunctionResultEventNrP   function.resultr|   resultrV   )tzrO   r   output_index)rd   re   rf   rP   r-   rg   r|   r   datetimenowtimezoneutcrO   r   intrK   r5   r3   r   r      s}    Bd
.?D'#
$t
+?K+3+<+<+@+@   ,A ,J!!D(   !L#* r5   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    r3   rM   rM      s    -a@ r5   c                   "    e Zd ZU eed<   eed<   y)RunResultEventseventdataN)rd   re   rf   RunResultEventsTyperg   RunResultEventsDatarK   r5   r3   r   r      s    
r5   r   ):r   r   r?   dataclassesr   r   r   r   pydanticr   r   r	   %mistralai.extra.utils.response_formatr
   mistralai.client.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.client.utilsr%   r   r   r-   r4   rA   rD   rG   r   r   ra   rc   rj   r   r   r   r   rK   r5   r3   <module>r      s      ( % 2 2 J      6 5   	   11
#  "*+(DDI D:T D
' d+A&B!BC'	
'T    
 
 
B!) !  ):!;; &&#S)=%>>?(#.E*FFGH!3'C#DDEF "C(E$FFGH $c*I&JJK	L
 !3'<#==>? "C(>$??@A &,A(BBCD )3/G+HHIJ #S):%;;<	= @A
C i r5   