Ë
    ³Œj�F  ã                  ó²  — d Z ddlmZ ddlZddlZddl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 ddlmZ dd	lmZmZmZ d
dlmZ d
dlmZmZ d
dlmZmZ dZdZdd„Zdd„Z  ejB                  e"«      Z#dZ$dZ%d d„Z&d!d„Z'd"d„Z(d#d„Z)	 	 	 	 	 	 	 	 	 	 d#d„Z*	 	 	 	 	 	 	 	 	 	 d#d„Z+	 	 	 	 	 	 	 	 	 	 d#d„Z,d$d„Z-	 	 	 	 	 	 	 	 	 	 d#d„Z.	 	 	 	 	 d%	 	 	 	 	 	 	 	 	 d&d„Z/y)'z2Client instrumentation for Google ADK using wrapt.é    )ÚannotationsN)ÚAsyncGenerator)Úaclosing)ÚdatetimeÚtimezone)ÚAnyÚOptional)Úget_package_version)Úget_current_run_treeÚset_tracing_parentÚtraceé   )Úget_tracing_config)Úconvert_llm_request_to_messagesÚhas_function_calls)Úextract_model_nameÚextract_usage_from_responseÚgoogle_vertexaiÚ	google_aic                óô   — t        | dd«      }|sg S t        |dd«      }|sg S g }|D ]?  }t        |dd«      xs g D ])  }	 |j                  d¬«      }|j                  d|dœ«       Œ+ ŒA |S # t        $ r Y Œ;w xY w)	zFExtract tool definitions from LlmRequest and convert to OpenAI format.ÚconfigNÚtoolsÚfunction_declarationsT)Úexclude_noneÚfunction)Útyper   )ÚgetattrÚ
model_dumpÚappendÚ	Exception)Úllm_requestr   Ú
tools_listÚresultÚtoolÚ	func_declÚdumpeds          ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/integrations/google_adk/_client.pyÚextract_tools_from_llm_requestr(      s¤   € ä�[ (¨DÓ1€FÙØˆ	ä˜ ¨$Ó/€JÙØˆ	à€FÛˆÜ  Ð'>ÀÓEÒKÈÒKˆIð	Ø"×-Ñ-¸4Ð-Ó@�Ø—‘à *Ø$*ñõñ Lð ð €Møô ò Ùðús   ¿&A+Á+	A7Á6A7c                 ó~   — ddl } | j                  j                  dd«      j                  «       dv }|rt        S t
        S )z;Detect provider based on GOOGLE_GENAI_USE_VERTEXAI env var.r   NÚGOOGLE_GENAI_USE_VERTEXAIÚ0)Ú1ÚtrueÚyes)ÚosÚenvironÚgetÚlowerÚ_LS_PROVIDER_VERTEXAIÚ_LS_PROVIDER_GOOGLE_AI)r/   Úuse_vertexais     r'   Ú_get_ls_providerr6   3   s?   € ãà—:‘:—>‘>Ð"=¸sÓC×IÑIÓKð Pð €Lñ
 %1Ô ÐLÔ6LÐLó    zgoogle_adk.sessionÚ_langsmith_root_runc                ó¼   — | €y t        | dd «      }|sy |D �cg c]%  }t        |dd «      sŒt        |j                  «      ‘Œ' }}|rdj                  |«      S d S c c}w )NÚpartsÚtextÚ )r   Ústrr;   Újoin)Úcontentr:   ÚpÚ
text_partss       r'   Ú_extract_text_from_contentrB   M   sa   € Ø€ØÜ�G˜W dÓ+€EÙØÙ',ÓI¡u !´¸¸6À4Õ0H”#�a—f‘f•+ u€JÐIÙ#-ˆ3�8‰8�JÓÐ7°4Ð7ùò Js
   ˜A«Ac                óÆ   — t        | dd«      }|€g S t        | dd«      }t        |dd«      xs g }|€t        |«      S |D �cg c]  }t        |dd«      |k(  sŒ|‘Œ c}S c c}w )z.Get session events for the current invocation.ÚsessionNÚinvocation_idÚevents)r   Úlist)ÚctxrD   rE   rF   Úes        r'   Ú_iter_invocation_eventsrJ   W   ss   € ä�c˜9 dÓ+€GØ€Øˆ	Ü˜C °$Ó7€MÜ�W˜h¨Ó-Ò3°€FØÐÜ�F‹|ÐÙÓT‘v�!¤¨¨O¸TÓ!BÀmÓ!SŠA�vÑTÐTùÒTs   ÁAÁAc                ón   — t        t        | «      «      D ]  }t        t        |dd«      «      }|sŒ|c S  y)zCGet the latest text from session events for the current invocation.r?   N)ÚreversedrJ   rB   r   )rH   Úeventr;   s      r'   Ú_extract_latest_invocation_textrN   c   s7   € äÔ1°#Ó6Ö7ˆÜ)¬'°%¸ÀDÓ*IÓJˆÚØŠKð 8ð r7   c                ó¬  ‡ ‡‡‡‡
‡‡‡— t        «       Š
‰
j                  d«      xs t        Ši Š‰j                  d«      x}rt        |«      x}r|‰d<   t	        «       dt        d«      dœ‰
j                  d«      xs i ¥Št        ‰dd«      x}r|‰d<   ‰j                  d	«      x}r|‰d	<   ‰j                  d
«      x}r|‰d
<   ˆˆ
ˆˆˆˆˆˆ fd„}	 |	«       S )aÄ  Wrap Runner.run to create a root trace for synchronous execution.

    Runner.run internally starts a new thread to run its async event loop, so
    context vars set here would not be visible to code running in that thread.
    We bridge the gap by storing the root run on the instance (a plain object
    attribute that IS visible across threads) so that wrap_runner_run_async can
    re-establish it as a context var inside the async event loop.
    ÚnameÚnew_messageÚinputú
google-adk©Úls_providerÚls_integrationÚls_integration_versionÚmetadataÚapp_nameNÚuser_idÚ
session_idc            	   3  ó6  •K  — t        ‰d‰‰j                  d«      ‰j                  d«      ‰¬«      5 } t        ‰	t        | «       	 t	         ‰‰i ‰
¤Ž«      }d }t        |«      D ]#  }t        |dd «      x}sŒt        |«      x}sŒ!|} n | j                  |rd|ind ¬«       |E d {  –—†  	 t        ‰	t        d «       	 d d d «       y 7 Œ # t        $ r!}| j                  t        |«      ¬«       ‚ d }~ww xY w# t        ‰	t        d «       w xY w# 1 sw Y   y xY w­w©	NÚchainÚproject_nameÚtags©rP   Úrun_typeÚinputsr_   r`   rX   r?   Úoutput©Úoutputs©Úerror)r   r1   ÚsetattrÚ_SYNC_ROOT_RUN_ATTRrG   rL   r   rB   Úendr    r=   )Úroot_runrF   Úfinal_outputrM   r?   r;   rI   Úargsr   ÚinstanceÚkwargsÚtrace_inputsÚtrace_metadataÚ
trace_nameÚwrappeds          €€€€€€€€r'   Ú
_trace_runz#wrap_runner_run.<locals>._trace_runŠ   s  øè ø€ ÜØØØØŸ™ NÓ3Ø—‘˜FÓ#Ø#õ
ð Ü�HÔ1°8Ô<ð=Ü™g tÐ6¨vÑ6Ó7�Ø#�Ü% fÖ-�EÜ")¨%°¸DÓ"AÐA�wÑAÜ#=¸gÓ#FÐF˜4ÑFØ+/˜LÙ!ð	 .ð
 —‘Á h°Ñ%=ÐSW�ÔXØ!×!Ñ!ô
 ˜Ô"5°tÕ<÷/
ð 
ð$ "ùÜò Ø—‘¤3 q£6�Ô*Øûðûô ˜Ô"5°tÕ<ú÷/
ð 
üsj   ƒ0D³DÁ0C
Á7C
Â"C
Â'CÂ(C
Â-DÂ?	DÃC
Ã
	C4ÃC/Ã/C4Ã4C7Ã7D
Ä
DÄDÄD)r   r1   ÚTRACE_CHAIN_NAMErB   r6   r
   r   )rt   ro   rn   rp   rQ   r;   rY   rZ   r[   ru   r   rq   rr   rs   s   ````      @@@@r'   Úwrap_runner_runrw   l   sö   ÿ€ ô  Ó!€FØ—‘˜FÓ#Ò7Ô'7€Jà#%€LØ—j‘j Ó/Ð/€{Ð/Ü-¨kÓ:Ð:ˆ4Ð:Ø$(ˆL˜Ñ!ô (Ó)Ø&Ü"5°lÓ"Cñ&ð �:‰:�jÓ!Ò' Rð	&€Nô ˜8 Z°Ó6Ð6€xÐ6Ø%-ˆ�zÑ"Ø—*‘*˜YÓ'Ð'€wÐ'Ø$+ˆ�yÑ!Ø—Z‘Z Ó-Ð-€zÐ-Ø'1ˆ�|Ñ$÷=ó =ñ4 ‹<Ðr7   c               óî  ‡ ‡‡‡‡‡‡K  — t        |t        d«      }|�7t        |«      5  t         ‰ ‰i ‰¤Ž«      4 ƒd{  –—† }|2 3 d{  –—† }|­–— Œt	        «       Š‰j                  d«      xs t        Ši Š‰j                  d«      x}rt        |«      x}r|‰d<   t        «       dt        d«      dœ‰j                  d«      xs i ¥Št        |dd«      x}	r|	‰d<   ‰j                  d	«      x}
r|
‰d	<   ‰j                  d
«      x}r|‰d
<   dˆˆˆˆˆˆˆ fd„} |«       2 3 d{  –—† }|­–— Œ7 Œñ7 Œè6 ddd«      ƒd{  –—†7   n# 1 ƒd{  –—†7  sw Y   nxY wddd«       y# 1 sw Y   yxY w7 ŒK6 y­w)aM  Wrap Runner.run_async to create a root trace for asynchronous execution.

    When called from the background thread spawned by Runner.run, the root run
    stored on the instance is re-established as a context var so that
    wrap_agent_run_async and wrap_flow_call_llm_async can find the parent via
    get_current_run_tree().
    NrP   rQ   rR   rS   rT   rX   rY   rZ   r[   c            	    óJ  •K  — t        ‰d‰
‰j                  d«      ‰j                  d«      ‰¬«      4 ƒd {  –—† } 	 d }t         ‰‰i ‰	¤Ž«      4 ƒd {  –—† }|2 3 d {  –—† }t        |dd «      x}rt	        |«      x}r|}|­–— Œ-7 ŒP7 Œ57 Œ,6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY w| j                  |rd|ind ¬«       n-# t        $ r!}| j                  t        |«      ¬«       ‚ d }~ww xY wd d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­wr]   )r   r1   r   r   rB   rk   r    r=   )Úrunrm   ÚagenrM   r?   r;   rI   rn   r   rp   rq   rr   rs   rt   s          €€€€€€€r'   Ú_trace_run_asyncz/wrap_runner_run_async.<locals>._trace_run_asyncÏ   s  øè ø€ ÜØØØØŸ™ NÓ3Ø—‘˜FÓ#Ø#÷
õ 
ð ðØ.2�Ü#¡G¨TÐ$<°VÑ$<×=Ô=ÀÙ'+÷ $˜eÜ&-¨e°YÀÓ&EÐE˜7ÐEÜ'AÀ'Ó'JÐJ˜tÐJØ/3 Ø#œð
øð >øð$ø t÷ >×=×=×=Ó=úð —‘¹L ¨<Ñ 8Èd�ÕSøÜò Ø—‘œc !›f�Ô%Øûðú÷#
÷ 
÷ 
÷ 
ó 
üsÍ   ƒ4D#·B¸D#»D½CÁB
ÁCÁB!ÁBÁB
Á BÁ#%B!ÂD#Â
CÂBÂB!ÂCÂBÂCÂ!B3	Â'B*Â(B3	Â/CÃDÃ	C9ÃC4Ã4C9Ã9DÃ<D#ÄD
ÄD#ÄD ÄDÄD ÄD#)ÚreturnzAsyncGenerator[Any, None])
r   rj   r   r   r   r1   rv   rB   r6   r
   )rt   ro   rn   rp   rl   r{   rM   rQ   r;   rY   rZ   r[   r|   r   rq   rr   rs   s   ` ``         @@@@r'   Úwrap_runner_run_asyncr~   §   s‰  þè ø€ ô �xÔ!4°dÓ;€HØÐä Õ)Ü¡¨Ð 8°Ñ 8×9Ô9¸TÙ#'÷  ˜%Ø”Kô  Ó!€FØ—‘˜FÓ#Ò7Ô'7€Jà#%€LØ—j‘j Ó/Ð/€{Ð/Ü-¨kÓ:Ð:ˆ4Ð:Ø$(ˆL˜Ñ!ô (Ó)Ø&Ü"5°lÓ"Cñ&ð �:‰:�jÓ!Ò' Rð	&€Nô ˜8 Z°Ó6Ð6€xÐ6Ø%-ˆ�zÑ"Ø—*‘*˜YÓ'Ð'€wÐ'Ø$+ˆ�yÑ!Ø—Z‘Z Ó-Ð-€zÐ-Ø'1ˆ�|Ñ$÷ó ñ, (Ô)÷ ˆeØŒðc :øð ø 4÷ :×9×9×9Ó9ú÷ *ð 	÷	 *ð 	úðZøÑ)ùs«   ‰E5¨E%¾D0¿E%ÁEÁD4Á	D2
Á
D4ÁEÁCE5Ä!E3Ä%E1Ä&E3Ä)E5Ä0E%Ä2D4Ä4EÄ5E%Å EÅE%ÅE	ÅEÅE	ÅE%Å	E5Å%E.Å*E5Å1E3Å3E5c               óp  K  — t        «       }|s+t         | |i |¤Ž«      4 ƒd{  –—† }|2 3 d{  –—† }|­–— Œ|r|d   n|j                  d«      }t        |dd«      xs t	        |«      j
                  }i }	|�t        |«      x}
r|
|	d<   t        |d|	¬«      4 ƒd{  –—† }	 d}t         | |i |¤Ž«      4 ƒd{  –—† }|2 3 d{  –—† }t        |dd«      x}rt        |«      x}r|}|­–— Œ-7 ŒÊ7 ŒÁ6 ddd«      ƒd{  –—†7   y# 1 ƒd{  –—†7  sw Y   yxY w7 Œ|7 Œa7 ŒX6 ddd«      ƒd{  –—†7   n# 1 ƒd{  –—†7  sw Y   nxY w|j                  |rd	|ind¬
«       n-# t        $ r!}|j                  t        |«      ¬«       ‚ d}~ww xY wddd«      ƒd{  –—†7   y# 1 ƒd{  –—†7  sw Y   yxY w­w)zJWrap BaseAgent.run_async to create a chain span for each agent invocation.Nr   Úparent_contextrP   rR   r^   )rP   rb   rc   r?   rd   re   rg   )r   r   r1   r   r   Ú__name__rN   r   rB   rk   r    r=   )rt   ro   rn   rp   Úparentr{   rM   rH   Ú
agent_namerc   ÚlatestÚ	agent_runrm   r?   r;   rI   s                   r'   Úwrap_agent_run_asyncr†   é   s£  è ø€ ô "Ó#€FÙÜ™G TÐ4¨VÑ4×5Ô5¸Ù#÷ �eØ”ñ ˆ$ˆqŠ'˜vŸz™zÐ*:Ó;€CÜ˜ 6¨4Ó0ÒK´D¸³N×4KÑ4K€Jà€FØ
€Ü4°SÓ9Ð9ˆ6Ð9Ø$ˆF�7‰Oä˜*¨w¸v×FÕFÈ)ð	Ø*.ˆLÜ¡¨Ð 8°Ñ 8×9Ô9¸TÙ#'÷  ˜%Ü")¨%°¸DÓ"AÐA�wÐAÜ#=¸gÓ#FÐF˜4ÐFØ+/˜LØ”Kð+ 6øðø˜t÷ 6×5Ð5ð 	÷ 6×5Ð5ð 	úð Gøð :øð ø 4÷ :×9×9×9Ó9úð �M‰M¹l 8¨\Ñ":ÐPTˆMÕUøÜò 	Ø�M‰M¤ A£ˆMÔ'Øûð	ú÷ G×F×F×FÓFüs0  ‚"F6¤C/¥F6¨D«C3¯C1°C3³DºA$F6ÂDÂF6Â"F!Â$E"Â;DÂ<E"Â?D4ÃD!ÃD
ÃD!Ã
%D4Ã/F6Ã1C3Ã3DÃ4F6Ã?DÄ F6ÄDÄDÄDÄF6ÄE"ÄD!Ä!D4Ä"E"Ä-D0Ä.E"Ä4E	Ä:D=Ä;E	ÅE"Å!F!Å"	FÅ+FÆFÆF!ÆF6ÆFÆF6Æ!F3Æ'F*Æ(F3Æ/F6c           
   ƒ  ó~  K  — t        «       }|s | |i |¤Žƒ d{  –—† S t        |dd«      xs t        |«      j                  }|j	                  d«      xs	 |r|d   ni }t        |t        «      r|nd|i}t        j                  «       }|j                  |d|ddt        «       iit        j                  |t        j                  ¬«      ¬	«      }		 |	j                  «        	 t%        |	«      5   | |i |¤Žƒ d{  –—† }ddd«       t        t        «      r|}n't        |t&        «      rd|i}n|�dt)        |«      i}ni }|	j+                  |¬«       	 |	j-                  «        |S 7 �ŒI# t        $ r"}
t         j#                  d
|
› �«       Y d}
~
Œ­d}
~
ww xY w7 Œœ# 1 sw Y   Œ›xY w# t        $ r#}
t         j#                  d|
› �«       Y d}
~
|S d}
~
ww xY w# t        $ r`}
|	j+                  t)        |
«      ¬«       	 |	j-                  «        ‚ # t        $ r"}t         j#                  d|› �«       Y d}~‚ d}~ww xY wd}
~
ww xY w­w)zHWrap BaseTool.run_async (all tool subclasses) to trace tool invocations.NrP   rn   r   r$   rX   rU   ©Útz©rP   rb   rc   ÚextraÚ
start_timezFailed to post tool run: r?   rd   re   zFailed to patch tool run: rg   z#Failed to patch tool run on error: )r   r   r   r�   r1   Ú
isinstanceÚdictÚtimeÚcreate_childr6   r   Úfromtimestampr   ÚutcÚpostr    ÚloggerÚdebugr   rG   r=   rk   Úpatch)rt   ro   rn   rp   r‚   Ú	tool_nameÚ	tool_argsrc   rŒ   Útool_runrI   r#   rf   Úpatch_es                 r'   Úwrap_tool_run_asyncr›     s"  è ø€ ô "Ó#€FÙÙ˜dÐ- fÑ-×-Ð-ä˜ &¨$Ó/ÒJ´4¸³>×3JÑ3J€IØ—
‘
˜6Ó"Ò?±$ t¨A¢w¸B€IÜ$ Y´Ô5‰Y¸FÀIÐ;N€Fä—‘“€JØ×"Ñ"ØØØØ˜MÔ+;Ó+=Ð>Ð?Ü×)Ñ)¨*¼¿¹ÔFð #ó €Hð6Ø�‰ŒðÜ Õ)Ù" DÐ3¨FÑ3×3ˆF÷ *ä�fœdÔ#Ø‰GÜ˜¤Ô%Ø  &Ð)‰GØÐØ¤ V£Ð-‰GàˆGØ�‰˜WˆÔ%ð	;Ø�N‰NÔð ˆðI .úô" ò 6Ü�‰Ð0°°Ð4×5Ñ5ûð6úð
 4ø÷ *Ð)ûô ò 	;Ü�L‰LÐ5°a°SÐ9×:Ð:Øˆûð	;ûô ò Ø�‰œ3˜q›6ˆÔ"ð	JØ�N‰NÔð 	øô ò 	JÜ�L‰LÐ>¸w¸iÐH×IÐIØûð	Jþð	üsÝ   ‚H=šE#›B3H=ÃE& Ã G Ã+FÃ7FÃ8FÃ<AG ÅF" Å!G Å"H=Å&	FÅ/FÆH=ÆFÆH=ÆFÆFÆG Æ"	GÆ+G	ÇG ÇH=Ç	GÇG Ç	H:ÇH5Ç6HÈH5È	H2ÈH-È(H5È-H2È2H5È5H:È:H=c                óÌ   — 	 t        | dd «      xs g D ]4  }t        |dd «      xs g D ]  }t        |d«      sŒ|j                  sŒ  y Œ6 t        |«      ryy# t        $ r Y yw xY w)NÚcontentsr:   Úfunction_responseÚresponse_generationÚtool_selectionÚdirect_responseÚunknown)r   Úhasattrrž   r   r    )r!   Úllm_responser?   Úparts       r'   Ú_determine_llm_call_typer¦   ?  sv   € ð	Ü˜{¨J¸Ó=ÒCÀÒCˆGÜ ¨°$Ó7Ò=¸2Ò=�Ü˜4Ð!4Õ5¸$×:PÓ:PÚ0ñ >ð Dô ˜lÔ+Ø#Ø øÜò Ùðús"   ‚4A ·A ÁA ÁA Á	A#Á"A#c               ó¤  ‡‡‡K  — t        «       }|s | |i |¤Ž2 3 d{  –—† }|­–— Œt        |«      dkD  r|d   n|j                  d«      Št        j                  «       }|j	                  ddi ddt        «       iit        j                  |t        j                  ¬«      ¬	«      Šd
Šd&ˆˆˆfd„}d}d}	d}
	 t         | |i |¤Ž«      4 ƒd{  –—† }|2 3 d{  –—† } |«        t        |dd
«      }|€\|rZt        j                  «       }	 ‰j                  dt        j                  |t        j                  ¬«      j                  «       dœ«       |}	t#        |d«      r|j$                  �|}
|­–— Œ�7 �ŒR6 y7 Œ¨7 ŒŸ# t        $ r"}t        j!                  d|› �«       Y d}~ŒQd}~ww xY w6 ddd«      ƒd{  –—†7   n# 1 ƒd{  –—†7  sw Y   nxY w |«        ddi}|
xs |	}|�r)t#        |d«      �r|j$                  �rt        |j$                  dd«      xs g }g g }}t'        |«      D ]Ã  \  }}t#        |d«      r1|j(                  r%|j+                  t-        |j(                  «      «       ŒCt#        |d«      sŒP|j.                  sŒ]|j.                  }|j+                  d|› �dt        |dd«      t1        j2                  t        |dd«      rt5        |j6                  «      ni «      dœdœ«       ŒÅ |rdj9                  |«      nd|d<   |r||d<   |	r,t;        |	«      x}r|‰j<                  j?                  di «      d<   |�"||z
  ‰j<                  j?                  di «      d <   |	r+‰r)tA        ‰|	«      ‰j<                  j?                  di «      d!<   ‰jC                  |¬"«       	 ‰jE                  «        y# t        $ r"}t        j!                  d#|› �«       Y d}~yd}~ww xY w# t        $ rg} |«        ‰jC                  t-        |«      ¬$«       	 ‰jE                  «        ‚ # t        $ r"}t        j!                  d%|› �«       Y d}~‚ d}~ww xY wd}~ww xY w­w)'zIWrap BaseLlmFlow._call_llm_async to capture LLM calls with TTFT tracking.Nr   r!   Úgoogle_adk_llmÚllmrX   rU   rˆ   rŠ   Fc                 ó�  •— ‰ry‰rt        ‰«      nd} ‰rt        ‰«      nd}‰rt        ‰«      ng }|r	d|i‰_        | r&| ‰_        | ‰j
                  j                  di «      d<   |r|‰j
                  j                  di «      d<   dŠ	 ‰j                  «        y# t        $ r"}t        j                  d|› �«       Y d}~yd}~ww xY w)	zBCapture the final llm_request state and post the run (idempotent).NÚmessagesrX   Úls_model_nameÚinvocation_paramsr   TzFailed to post LLM run: )r   r   r(   rc   rP   r‹   Ú
setdefaultr“   r    r”   r•   )Ú
model_namer«   r   rI   r!   Úllm_runÚposteds       €€€r'   Ú_capture_inputs_and_postz:wrap_flow_call_llm_async.<locals>._capture_inputs_and_poste  sÇ   ø€ ñ Øá8CÔ'¨Ô4Èˆ
ÙCNÔ2°;Ô?ÐTXˆÙ?JÔ.¨{Ô;ÐPRˆáØ(¨(Ð3ˆGŒNÙØ%ˆGŒLØHRˆG�M‰M×$Ñ$ Z°Ó4°_ÑEÙØINˆG�M‰M×$Ñ$Ð%8¸"Ó=¸gÑFàˆð	9Ø�L‰L�NøÜò 	9Ü�L‰LÐ3°A°3Ð7×8Ñ8ûð	9ús   Â	B Â	CÂ#C Ã CÚpartialÚ	new_token)rP   r�   zFailed to add new_token event: r?   ÚroleÚ	assistantr:   r;   Úfunction_callÚcall_r   rP   Ú rn   )rP   Ú	arguments)Úidr   r   r<   Ú
tool_callsÚusage_metadataÚtime_to_first_tokenÚllm_call_typere   zFailed to patch LLM run: rg   z"Failed to patch LLM run on error: )r}   ÚNone)#r   Úlenr1   r�   r�   r6   r   r‘   r   r’   r   r   Ú	add_eventÚ	isoformatr    r”   r•   r£   r?   Ú	enumerater;   r   r=   r·   ÚjsonÚdumpsrŽ   rn   r>   r   r‹   r®   r¦   rk   r–   )rt   ro   rn   rp   r‚   rM   rŒ   r²   Úfirst_token_timeÚ
last_eventÚevent_with_contentr{   Ú
is_partialrI   rf   Úcontent_sourcer:   rA   r¼   Úir¥   ÚfcÚusagerš   r!   r°   r±   s                           @@@r'   Úwrap_flow_call_llm_asyncrÏ   L  s   úè ø€ ô "Ó#€FÙÙ" DÐ3¨FÒ3÷ 	�%ØŒKô ! ›Y¨š]�$�q’'°·
±
¸=Ó0I€Kä—‘“€Jð ×!Ñ!ØØØØ˜MÔ+;Ó+=Ð>Ð?Ü×)Ñ)¨*¼¿¹ÔFð "ó €Gð €F÷9ð0 )-ÐØ€JØÐð[Ü™G TÐ4¨VÑ4×5Ô5¸Ù#÷ �eá(Ô*ä$ U¨I°uÓ=�
à#Ð+±
Ü'+§y¡y£{Ð$ð
LØ×)Ñ)à(3Ü(0×(>Ñ(>Ø$4¼¿¹ô)"ç"+¡)£+ñ	ôð #�
Ü˜5 )Ô,°·±Ð1JØ).Ð&Ø”ðQ	ùÐ3àð\ 6øðùô" %ò LÜŸ™Ð'FÀqÀcÐ%J×KÑKûðLúð#  $÷ 6×5×5×5Ó5úñ6 	!Ô"à#)¨;Ð"7ˆØ+Ò9¨zˆò Ü˜¨	Õ2Ø×&Ó&ä˜N×2Ñ2°G¸TÓBÒHÀbˆEØ%'¨˜
ˆJä$ UÖ+‘��4Ü˜4 Ô(¨T¯YªYØ×%Ñ%¤c¨$¯)©)£nÕ5Ü˜T ?Õ3¸×8JÓ8JØ×+Ñ+�BØ×%Ñ%à$)¨!¨ +Ø$.ä(/°°F¸BÓ(?Ü-1¯Z©ZÜ5<¸RÀÈÔ5N¤D¨¯©¤MÐTVó."ñ)ñ	õð ,ñ$ :D §¡¨*Ô!5ÈˆG�IÑÙØ(2�˜Ñ%áÜ3°JÓ?Ð?ˆuÐ?ØMR�—‘×(Ñ(¨°RÓ8Ð9IÑJàÐ'à  :Ñ-ð �M‰M×$Ñ$ Z°Ó4Ð5JÑKñ ™+ä(¨°jÓAð �M‰M×$Ñ$ Z°Ó4°_ÑEð 	�‰˜GˆÔ$ð	:Ø�M‰M�OøÜò 	:Ü�L‰LÐ4°Q°CÐ8×9Ñ9ûð	:ûô ò á Ô"Ø�‰œ#˜a›&ˆÔ!ð	IØ�M‰MŒOð 	øô ò 	IÜ�L‰LÐ=¸g¸YÐG×HÐHØûð	Iþðüs7  …QšE3žE0ŸE3¢BQÂ7O ÃE5ÃO ÃF:ÃF'ÃE7ÃF'Ã-F:Ä	AE9Å"F:Å0E3Å3QÅ5O Å7F'Å9	F$ÆFÆF:ÆF$Æ$F:Æ(O Æ3F6Æ4O Æ:GÇ GÇGÇB.O É7O ÊDO ÎN/ Î.QÎ/	OÎ8OÏO ÏQÏOÏO Ï	QÏ&"QÐ	PÐQÐ	QÐ#Q Ð;QÑ QÑQÑQÑQc                óø   — t        «       }t        | xs |j                  d«      xs t        d|xs i |xs |j                  d«      |xs |j                  d«      i |j                  d«      xs i ¥|xs i ¥¬«      S )z2Create a trace context for manual session tracing.rP   r^   r_   r`   rX   ra   )r   r   r1   rv   )rP   r_   rX   r`   rc   r   s         r'   Úcreate_traced_session_contextrÑ   ß  s{   € ô  Ó!€FÜØÒ;�V—Z‘Z Ó'Ò;Ô+;ØØŠ|˜Ø!Ò? V§Z¡Z°Ó%?ØÒ'�V—Z‘Z Ó'ØG�V—Z‘Z 
Ó+Ò1¨rÐG°x²~À2ÐGôð r7   )r!   r   r}   zlist[dict[str, Any]])r}   r=   )r?   r   r}   úOptional[str])rH   r   r}   z	list[Any])rH   r   r}   rÒ   )
rt   r   ro   r   rn   r   rp   r   r}   r   )r!   r   r¤   r   r}   r=   )NNNNN)
rP   rÒ   r_   rÒ   rX   úOptional[dict[str, Any]]r`   zOptional[list[str]]rc   rÓ   )0Ú__doc__Ú
__future__r   rÅ   Úloggingr�   Úcollections.abcr   Ú
contextlibr   r   r   Útypingr   r	   Ú$langsmith._internal._package_versionr
   Úlangsmith.run_helpersr   r   r   Ú_configr   Ú	_messagesr   r   Ú_usager   r   r3   r4   r(   r6   Ú	getLoggerr�   r”   rv   rj   rB   rJ   rN   rw   r~   r†   r›   r¦   rÏ   rÑ   © r7   r'   Ú<module>rá      sˆ  ðÙ 8å "ã Û Û Ý *Ý ß 'ß  å Dß QÑ Qå 'ß Jß Cà)Ð Ø$Ð óó6	Mð 
ˆ×	Ñ	˜8Ó	$€à'Ð ð ,Ð ó8ó	Uóó8ðv?Øð?Øð?Ø'*ð?Ø47ð?àó?ðDØðØðØ'*ðØ47ðàóðD1Øð1Øð1Ø'*ð1Ø47ð1àó1óh
ðPØðPØðPØ'*ðPØ47ðPàóPðh Ø"&Ø)-Ø $Ø'+ðØ
ðàðð 'ðð ð	ð
 %ôr7   