§
    ~Štj�F  ã                  óN  — 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d3d„Zd4d„Z  ej!        e"¦  «        Z#dZ$dZ%d5d„Z&d6d„Z'd7d„Z(d8d$„Z)d8d%„Z*d8d&„Z+d8d'„Z,d9d)„Z-d8d*„Z.	 	 	 	 	 d:d;d2„Z/dS )<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_aiÚllm_requestr   Úreturnúlist[dict[str, Any]]c                ó  — t          | dd¦  «        }|sg S t          |dd¦  «        }|sg S g }|D ]W}t          |dd¦  «        pg D ]A}	 |                     d¬¦  «        }|                     d|dœ¦  «         Œ2# t          $ r Y Œ>w xY wŒX|S )	zFExtract tool definitions from LlmRequest and convert to OpenAI format.ÚconfigNÚtoolsÚfunction_declarationsT)Úexclude_noneÚfunction)Útyper   )ÚgetattrÚ
model_dumpÚappendÚ	Exception)r   r   Ú
tools_listÚresultÚtoolÚ	func_declÚdumpeds          úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langsmith/integrations/google_adk/_client.pyÚextract_tools_from_llm_requestr*      sç   € å�[ (¨DÑ1Ô1€FØð Øˆ	å˜ ¨$Ñ/Ô/€JØð Øˆ	à€FØð ð ˆÝ  Ð'>ÀÑEÔEÐKÈð 
	ð 
	ˆIð	Ø"×-Ò-¸4Ð-Ñ@Ô@�Ø—’à *Ø$*ðð ñô ð ð øõ ð ð ð Ø�ðøøøð
	ð €Ms   Á.A6Á6
BÂBÚstrc                 óˆ   — ddl } | j                             dd¦  «                             ¦   «         dv }|rt          n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)r2   Úuse_vertexais     r)   Ú_get_ls_providerr9   3   sL   € à€I€I€Ià”:—>’>Ð"=¸sÑCÔC×IÒIÑKÔKð Pð €Lð
 %1ÐLÕ Ð Õ6LÐLó    zgoogle_adk.sessionÚ_langsmith_root_runÚcontentúOptional[str]c                ó~   — | €d S t          | dd ¦  «        }|sd S d„ |D ¦   «         }|rd                     |¦  «        nd S )NÚpartsc                óX   — g | ]'}t          |d d¦  «        ¯t          |j        ¦  «        ‘Œ(S )ÚtextN)r    r+   rA   )Ú.0Úps     r)   ú
<listcomp>z._extract_text_from_content.<locals>.<listcomp>S   s1   € ÐIÐIÐI !µ¸¸6À4Ñ0HÔ0HÐI•#�a”f‘+”+ÐIÐIÐIr:   ú )r    Újoin)r<   r?   Ú
text_partss      r)   Ú_extract_text_from_contentrH   M   sY   € Ø€ØˆtÝ�G˜W dÑ+Ô+€EØð ØˆtØIÐI uÐIÑIÔI€JØ#-Ð7ˆ3�8Š8�JÑÔÐ°4Ð7r:   Úctxú	list[Any]c                ó´   ‡— t          | dd¦  «        }|€g S t          | dd¦  «        Št          |dd¦  «        pg }‰€t          |¦  «        S ˆfd„|D ¦   «         S )z.Get session events for the current invocation.ÚsessionNÚinvocation_idÚeventsc                ó>   •— g | ]}t          |d d¦  «        ‰k    ¯|‘ŒS )rM   N)r    )rB   ÚerM   s     €r)   rD   z+_iter_invocation_events.<locals>.<listcomp>`   s/   ø€ ÐTÐTÐT�!¥¨¨O¸TÑ!BÔ!BÀmÒ!SÐ!SˆAÐ!SÐ!SÐ!Sr:   )r    Úlist)rI   rL   rN   rM   s      @r)   Ú_iter_invocation_eventsrR   W   sq   ø€ å�c˜9 dÑ+Ô+€GØ€Øˆ	Ý˜C °$Ñ7Ô7€MÝ�W˜h¨Ñ-Ô-Ð3°€FØÐÝ�F‰|Œ|ÐØTÐTÐTÐT�vÐTÑTÔTÐTr:   c                óŒ   — t          t          | ¦  «        ¦  «        D ]&}t          t          |dd¦  «        ¦  «        }|r|c S Œ'dS )zCGet the latest text from session events for the current invocation.r<   N)ÚreversedrR   rH   r    )rI   ÚeventrA   s      r)   Ú_extract_latest_invocation_textrV   c   sV   € åÕ1°#Ñ6Ô6Ñ7Ô7ð ð ˆÝ)­'°%¸ÀDÑ*IÔ*IÑJÔJˆØð 	ØˆKˆKˆKð	àˆ4r:   ÚwrappedÚinstanceÚargsÚkwargsc                óü  ‡ ‡‡‡‡
‡‡‡— t          ¦   «         Š
‰
                     d¦  «        pt          Ši Š‰                     d¦  «        x}rt          |¦  «        x}r|‰d<   t	          ¦   «         dt          d¦  «        dœ‰
                     d¦  «        pi ¥Št          ‰dd¦  «        x}r|‰d<   ‰                     d	¦  «        x}r|‰d	<   ‰                     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  ó¢  •K  — t          ‰d‰‰                     d¦  «        ‰                     d¦  «        ‰¬¦  «        5 } t          ‰	t          | ¦  «         	 t	           ‰‰i ‰
¤Ž¦  «        }d }t          |¦  «        D ]*}t          |dd ¦  «        x}rt          |¦  «        x}r|} nŒ+|                      |rd|ind ¬¦  «         |E d {V —† n6# t          $ r)}|                      t          |¦  «        ¬¦  «         ‚ d }~ww xY w	 t          ‰	t          d ¦  «         n# t          ‰	t          d ¦  «         w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S ©	NÚchainÚproject_nameÚtags©r\   Úrun_typeÚinputsrk   rl   rd   r<   Úoutput©Úoutputs©Úerror)r   r4   ÚsetattrÚ_SYNC_ROOT_RUN_ATTRrQ   rT   r    rH   Úendr#   r+   )Úroot_runrN   Úfinal_outputrU   r<   rA   rP   rY   r   rX   rZ   Útrace_inputsÚtrace_metadataÚ
trace_namerW   s          €€€€€€€€r)   Ú
_trace_runz#wrap_runner_run.<locals>._trace_runŠ   sç  øè è € ÝØØØØŸš NÑ3Ô3Ø—’˜FÑ#Ô#Ø#ð
ñ 
ô 
ð 	=ð Ý�HÕ1°8Ñ<Ô<Ð<ð=Ý˜g˜g tÐ6¨vÐ6Ð6Ñ7Ô7�Ø#�Ý% fÑ-Ô-ð "ð "�EÝ")¨%°¸DÑ"AÔ"AÐA�wð "Ý#=¸gÑ#FÔ#FÐF˜4ð "Ø+/˜LØ!˜EøØ—’ÀÐ%W h°Ð%=Ð%=ÐSW�ÑXÔXÐXØ!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!øÝð ð ð Ø—’¥3 q¡6¤6�Ñ*Ô*Ð*Øøøøøðøøøð "õ
 ˜Õ"5°tÑ<Ô<Ð<Ð<ø•˜Õ"5°tÑ<Ô<Ð<Ð<øøøÐ<ð/	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=sH   ¿EÁA5CÃDÃ
D Ã$C;Ã;D Ä DÄEÄD3Ä3EÅEÅE)r   r4   ÚTRACE_CHAIN_NAMErH   r9   r
   r    )rW   rX   rY   rZ   r]   rA   re   rf   rg   r}   r   rz   r{   r|   s   ````      @@@@r)   Úwrap_runner_runr   l   s`  øøøøøøøø€ õ  Ñ!Ô!€FØ—’˜FÑ#Ô#Ð7Õ'7€Jà#%€LØ—j’j Ñ/Ô/Ð/€{ð )Ý-¨kÑ:Ô:Ð:ˆ4ð 	)Ø$(ˆL˜Ñ!õ (Ñ)Ô)Ø&Ý"5°lÑ"CÔ"Cð&ð &ð �:Š:�jÑ!Ô!Ð' Rð	&€Nõ ˜8 Z°Ñ6Ô6Ð6€xð .Ø%-ˆ�zÑ"Ø—*’*˜YÑ'Ô'Ð'€wð ,Ø$+ˆ�yÑ!Ø—Z’Z Ñ-Ô-Ð-€zð 2Ø'1ˆ�|Ñ$ð=ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð =ð4 ˆ:‰<Œ<Ðr:   c               ó@  ‡ ‡‡‡‡‡‡K  — t          |t          d¦  «        }|�yt          |¦  «        5  t           ‰ ‰i ‰¤Ž¦  «        4 ƒd{V —†}|2 3 d{V —†}|W V — Œ6 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «         n# 1 swxY w Y   dS t	          ¦   «         Š‰                     d¦  «        pt          Ši Š‰                     d¦  «        x}rt          |¦  «        x}r|‰d<   t          ¦   «         dt          d¦  «        dœ‰                     d¦  «        pi ¥Št          |dd¦  «        x}	r|	‰d<   ‰                     d	¦  «        x}
r|
‰d	<   ‰                     d
¦  «        x}r|‰d
<   dˆˆˆˆˆˆˆ fd„} |¦   «         2 3 d{V —†}|W V — Œ6 dS )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().
    Nr\   r]   r^   r_   r`   rd   re   rf   rg   r   úAsyncGenerator[Any, None]c            	    ót  •K  — t          ‰d‰
‰                     d¦  «        ‰                     d¦  «        ‰¬¦  «        4 ƒd {V —†	 } 	 d }t           ‰‰i ‰	¤Ž¦  «        4 ƒd {V —†}|2 3 d {V —†}t          |dd ¦  «        x}rt	          |¦  «        x}r|}|W V — Œ36 	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   |                      |rd|ind ¬¦  «         n6# t          $ r)}|                      t          |¦  «        ¬¦  «         ‚ d }~ww xY w	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S ri   )r   r4   r   r    rH   rw   r#   r+   )Úrunry   ÚagenrU   r<   rA   rP   rY   r   rZ   rz   r{   r|   rW   s          €€€€€€€r)   Ú_trace_run_asyncz/wrap_runner_run_async.<locals>._trace_run_asyncÏ   sµ  øè è € ÝØØØØŸš NÑ3Ô3Ø—’˜FÑ#Ô#Ø#ð
ñ 
ô 
ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ðØ.2�Ý# G G¨TÐ$<°VÐ$<Ð$<Ñ=Ô=ð $ð $ð $ð $ð $ð $ð $ÀØ'+ð $ð $ð $ð $ð $ð $ð $˜eÝ&-¨e°YÀÑ&EÔ&EÐE˜7ð 4Ý'AÀ'Ñ'JÔ'JÐJ˜tð 4Ø/3 Ø#˜˜˜˜˜ð	 (, tð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð —’¸LÐ R ¨<Ð 8Ð 8Èd�ÑSÔSÐSÐSøÝð ð ð Ø—’�c !™fœf�Ñ%Ô%Ð%Øøøøøðøøøð Tð!	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sf   ÁD'ÁCÁ%B/Á(BÁ..B/ÂCÂ/
B9	Â9CÂ<B9	Â=CÃD'Ã
DÃ'$DÄDÄD'Ä'
D1Ä4D1)r   r�   )
r    rv   r   r   r   r4   r~   rH   r9   r
   )rW   rX   rY   rZ   rx   r„   rU   r]   rA   re   rf   rg   r…   r   rz   r{   r|   s   ` ``         @@@@r)   Úwrap_runner_run_asyncr†   §   s'  øøøøøøøè è € õ �xÕ!4°dÑ;Ô;€HØÐå Ñ)Ô)ð 	 ð 	 Ý  ¨Ð 8°Ð 8Ð 8Ñ9Ô9ð  ð  ð  ð  ð  ð  ð  ¸TØ#'ð  ð  ð  ð  ð  ð  ð  ˜%Ø�K�K�K�K�Kð $( 4ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	ˆåÑ!Ô!€FØ—’˜FÑ#Ô#Ð7Õ'7€Jà#%€LØ—j’j Ñ/Ô/Ð/€{ð )Ý-¨kÑ:Ô:Ð:ˆ4ð 	)Ø$(ˆL˜Ñ!õ (Ñ)Ô)Ø&Ý"5°lÑ"CÔ"Cð&ð &ð �:Š:�jÑ!Ô!Ð' Rð	&€Nõ ˜8 Z°Ñ6Ô6Ð6€xð .Ø%-ˆ�zÑ"Ø—*’*˜YÑ'Ô'Ð'€wð ,Ø$+ˆ�yÑ!Ø—Z’Z Ñ-Ô-Ð-€zð 2Ø'1ˆ�|Ñ$ðð ð ð ð ð ð ð ð ð ð ð ð, (Ð'Ñ)Ô)ð ð ð ð ð ð ð ˆeØˆˆˆˆˆð *Ð)Ð)sG   ±BÁA1ÁAÁA1ÁBÁ1
A;	Á;BÁ>A;	Á?BÂBÂBÆFc               óž  K  — t          ¦   «         }|sRt           | |i |¤Ž¦  «        4 ƒd{V —†}|2 3 d{V —†}|W V — Œ6 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   dS |r|d         n|                     d¦  «        }t          |dd¦  «        pt	          |¦  «        j        }i }	|�t          |¦  «        x}
r|
|	d<   t          |d|	¬¦  «        4 ƒd{V —†}	 d}t           | |i |¤Ž¦  «        4 ƒd{V —†}|2 3 d{V —†}t          |dd¦  «        x}rt          |¦  «        x}r|}|W V — Œ36 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   | 	                    |rd	|ind¬
¦  «         n6# t          $ r)}| 	                    t          |¦  «        ¬¦  «         ‚ d}~ww xY w	 ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )zJWrap BaseAgent.run_async to create a chain span for each agent invocation.Nr   Úparent_contextr\   r^   rj   )r\   rn   ro   r<   rp   rq   rs   )r   r   r4   r    r   Ú__name__rV   r   rH   rw   r#   r+   )rW   rX   rY   rZ   Úparentr„   rU   rI   Ú
agent_namero   ÚlatestÚ	agent_runry   r<   rA   rP   s                   r)   Úwrap_agent_run_asyncrŽ   é   s
  è è € õ "Ñ#Ô#€FØð Ý˜G˜G TÐ4¨VÐ4Ð4Ñ5Ô5ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸Ø#ð ð ð ð ð ð ð �eØ�����ð  $˜tð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ˆàÐ
;ˆ$ˆqŒ'ˆ'˜vŸzšzÐ*:Ñ;Ô;€CÝ˜ 6¨4Ñ0Ô0ÐKµD¸±N´NÔ4K€Jà€FØ
€Ý4°SÑ9Ô9Ð9ˆ6ð 	%Ø$ˆF�7‰Oå˜*¨w¸vÐFÑFÔFð ð ð ð ð ð ð È)ð	Ø*.ˆLÝ  ¨Ð 8°Ð 8Ð 8Ñ9Ô9ð  ð  ð  ð  ð  ð  ð  ¸TØ#'ð  ð  ð  ð  ð  ð  ð  ˜%Ý")¨%°¸DÑ"AÔ"AÐA�wð 0Ý#=¸gÑ#FÔ#FÐF˜4ð 0Ø+/˜LØ�K�K�K�K�Kð	 $( 4ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð �MŠM¸lÐ"T 8¨\Ð":Ð":ÐPTˆMÑUÔUÐUÐUøÝð 	ð 	ð 	Ø�MŠM¥ A¡¤ˆMÑ'Ô'Ð'Øøøøøð	øøøð Vðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð s€   ®A±>·AÁ
AÁAÃF<ÃE2Ã:EÃ=D0Ä.EÄ2E2Å
E	ÅE2ÅE	ÅE2Å1F<Å2
F%Å<$F Æ F%Æ%F<Æ<
GÇ	Gc           
   ƒ  ó  K  — t          ¦   «         }|s | |i |¤Žƒ d{V —†S t          |dd¦  «        pt          |¦  «        j        }|                     d¦  «        p|r|d         ni }t          |t          ¦  «        r|nd|i}t          j        ¦   «         }|                     |d|ddt          ¦   «         iit          j        |t          j        ¬¦  «        ¬	¦  «        }		 |	                     ¦   «          n4# t          $ r'}
t                                d
|
› �¦  «         Y d}
~
nd}
~
ww xY w	 t%          |	¦  «        5   | |i |¤Žƒ d{V —†}ddd¦  «         n# 1 swxY w Y   t          |t          ¦  «        r|}n0t          |t&          ¦  «        rd|i}n|�dt)          |¦  «        i}ni }|	                     |¬¦  «         	 |	                     ¦   «          n4# t          $ r'}
t                                d|
› �¦  «         Y d}
~
nd}
~
ww xY w|S # t          $ rs}
|	                     t)          |
¦  «        ¬¦  «         	 |	                     ¦   «          n4# t          $ r'}t                                d|› �¦  «         Y d}~nd}~ww xY w‚ d}
~
ww xY w)zHWrap BaseTool.run_async (all tool subclasses) to trace tool invocations.Nr\   rY   r   r&   rd   ra   ©Útz©r\   rn   ro   ÚextraÚ
start_timezFailed to post tool run: r<   rp   rq   zFailed to patch tool run: rs   z#Failed to patch tool run on error: )r   r    r   r‰   r4   Ú
isinstanceÚdictÚtimeÚcreate_childr9   r   Úfromtimestampr   ÚutcÚpostr#   ÚloggerÚdebugr   rQ   r+   rw   Úpatch)rW   rX   rY   rZ   rŠ   Ú	tool_nameÚ	tool_argsro   r”   Útool_runrP   r%   rr   Úpatch_es                 r)   Úwrap_tool_run_asyncr£     sS  è è € õ "Ñ#Ô#€FØð .Ø�W˜dÐ- fÐ-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-å˜ &¨$Ñ/Ô/ÐJµ4¸±>´>Ô3J€IØ—
’
˜6Ñ"Ô"Ð?°$Ð'> t¨A¤w w¸B€IÝ$ YµÑ5Ô5ÐNˆYˆY¸FÀIÐ;N€Få”‘”€JØ×"Ò"ØØØØ˜MÕ+;Ñ+=Ô+=Ð>Ð?ÝÔ)¨*½¼ÐFÑFÔFð #ñ ô €Hð6Ø�Š‰ŒˆˆøÝð 6ð 6ð 6Ý�ŠÐ4°Ð4Ð4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøð6øøøðÝ Ñ)Ô)ð 	4ð 	4Ø"˜7 DÐ3¨FÐ3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ˆFð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4å�f�dÑ#Ô#ð 	ØˆGˆGÝ˜¥Ñ%Ô%ð 	Ø  &Ð)ˆGˆGØÐØ¥ V¡¤Ð-ˆGˆGàˆGØ�Š˜WˆÑ%Ô%Ð%ð	;Ø�NŠNÑÔÐÐøÝð 	;ð 	;ð 	;Ý�LŠLÐ9°aÐ9Ð9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:øøøøð	;øøøàˆøÝð ð ð Ø�Š�3˜q™6œ6ˆÑ"Ô"Ð"ð	JØ�NŠNÑÔÐÐøÝð 	Jð 	Jð 	JÝ�LŠLÐH¸wÐHÐHÑIÔIÐIÐIÐIÐIÐIÐIøøøøð	Jøøøàøøøøðøøøs©   ÃC3 Ã3
D$Ã=DÄD$Ä(H Ä7EÅH ÅEÅH ÅEÅA!H Æ<G ÇH Ç
HÇG=Ç8H Ç=HÈH È
JÈ#I?È5I
É	I?É

I;ÉI6É1I?É6I;É;I?É?JÚllm_responsec                óÚ   — 	 t          | dd ¦  «        pg D ]3}t          |dd ¦  «        pg D ]}t          |d¦  «        r|j        r  dS ŒŒ4t          |¦  «        rdS dS # t          $ r Y dS w xY w)NÚcontentsr?   Úfunction_responseÚresponse_generationÚtool_selectionÚdirect_responseÚunknown)r    Úhasattrr§   r   r#   )r   r¤   r<   Úparts       r)   Ú_determine_llm_call_typer®   ?  s¶   € ð	Ý˜{¨J¸Ñ=Ô=ÐCÀð 	1ð 	1ˆGÝ ¨°$Ñ7Ô7Ð=¸2ð 1ð 1�Ý˜4Ð!4Ñ5Ô5ð 1¸$Ô:Pð 1Ø0Ð0Ð0Ð0øð1õ ˜lÑ+Ô+ð 	$Ø#Ð#Ø Ð øÝð ð ð Øˆyˆyðøøøs   ‚AA ÁA Á
A*Á)A*c               ó2	  ‡‡‡K  — t          ¦   «         }|s | |i |¤Ž2 3 d{V —†}|W V — Œ6 dS t          |¦  «        dk    r|d         n|                     d¦  «        Št          j        ¦   «         }|                     ddi ddt          ¦   «         iit          j        |t          j	        ¬¦  «        ¬	¦  «        Šd
Šd(ˆˆˆfd„}d}d}	d}
	 t           | |i |¤Ž¦  «        4 ƒd{V —†}|2 3 d{V —†} |¦   «          t          |dd
¦  «        }|€“|r‘t          j        ¦   «         }	 ‰                     dt          j        |t          j	        ¬¦  «                             ¦   «         dœ¦  «         n4# t          $ r'}t                               d|› �¦  «         Y d}~nd}~ww xY w|}	t#          |d¦  «        r	|j        �|}
|W V — ŒØ6 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y    |¦   «          ddi}|
p|	}|�r/t#          |d¦  «        �r|j        �rt          |j        dd¦  «        pg }g g }}t'          |¦  «        D ]Ç\  }}t#          |d¦  «        r/|j        r(|                     t-          |j        ¦  «        ¦  «         ŒDt#          |d¦  «        rs|j        rl|j        }|                     d|› �dt          |dd¦  «        t1          j        t          |dd¦  «        rt5          |j        ¦  «        ni ¦  «        dœdœ¦  «         ŒÈ|rd                     |¦  «        nd|d<   |r||d <   |	r/t;          |	¦  «        x}r|‰j                             di ¦  «        d!<   |�!||z
  ‰j                             di ¦  «        d"<   |	r.‰r,tA          ‰|	¦  «        ‰j                             di ¦  «        d#<   ‰ !                    |¬$¦  «         	 ‰ "                    ¦   «          dS # t          $ r(}t                               d%|› �¦  «         Y d}~dS d}~ww xY w# t          $ r}} |¦   «          ‰ !                    t-          |¦  «        ¬&¦  «         	 ‰ "                    ¦   «          n4# t          $ r'}t                               d'|› �¦  «         Y d}~nd}~ww xY w‚ d}~ww xY w))zIWrap BaseLlmFlow._call_llm_async to capture LLM calls with TTFT tracking.Nr   r   Úgoogle_adk_llmÚllmrd   ra   r�   r’   Fr   ÚNonec                 ó¾  •— ‰rdS ‰rt          ‰¦  «        nd} ‰rt          ‰¦  «        nd}‰rt          ‰¦  «        ng }|r	d|i‰_        | r%| ‰_        | ‰j                             di ¦  «        d<   |r|‰j                             di ¦  «        d<   dŠ	 ‰                     ¦   «          dS # t          $ r(}t           
                    d|› �¦  «         Y d}~dS d}~ww xY w)	zBCapture the final llm_request state and post the run (idempotent).NÚmessagesrd   Úls_model_nameÚinvocation_paramsr   TzFailed to post LLM run: )r   r   r*   ro   r\   r“   Ú
setdefaultr›   r#   rœ   r�   )Ú
model_namer´   r   rP   r   Úllm_runÚposteds       €€€r)   Ú_capture_inputs_and_postz:wrap_flow_call_llm_async.<locals>._capture_inputs_and_poste  s)  ø€ ð ð 	ØˆFà8CÐMÕ'¨Ñ4Ô4Ð4Èˆ
ØCNÐXÕ2°;Ñ?Ô?Ð?ÐTXˆØ?JÐRÕ.¨{Ñ;Ô;Ð;ÐPRˆàð 	4Ø(¨(Ð3ˆGŒNØð 	SØ%ˆGŒLØHRˆGŒM×$Ò$ Z°Ñ4Ô4°_ÑEØð 	OØINˆGŒM×$Ò$Ð%8¸"Ñ=Ô=¸gÑFàˆð	9Ø�LŠL‰NŒNˆNˆNˆNøÝð 	9ð 	9ð 	9Ý�LŠLÐ7°AÐ7Ð7Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8øøøøð	9øøøs   ÂB* Â*
CÂ4CÃCÚpartialÚ	new_token)r\   r—   zFailed to add new_token event: r<   ÚroleÚ	assistantr?   rA   Úfunction_callÚcall_r   r\   Ú rY   )r\   Ú	arguments)Úidr   r   rE   Ú
tool_callsÚusage_metadataÚtime_to_first_tokenÚllm_call_typerq   zFailed to patch LLM run: rs   z"Failed to patch LLM run on error: )r   r²   )#r   Úlenr4   r—   r˜   r9   r   r™   r   rš   r   r    Ú	add_eventÚ	isoformatr#   rœ   r�   r¬   r<   Ú	enumeraterA   r"   r+   rÀ   ÚjsonÚdumpsr–   rY   rF   r   r“   r·   r®   rw   rž   )rW   rX   rY   rZ   rŠ   rU   r”   r»   Úfirst_token_timeÚ
last_eventÚevent_with_contentr„   Ú
is_partialrP   rr   Úcontent_sourcer?   rG   rÅ   Úir­   ÚfcÚusager¢   r   r¹   rº   s                           @@@r)   Úwrap_flow_call_llm_asyncr×   L  sš  øøøè è € õ "Ñ#Ô#€FØð Ø"˜7 DÐ3¨FÐ3Ð3ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%ØˆKˆKˆKˆKˆKð 4àˆå  ™YœY¨š]˜]�$�q”'�'°·
²
¸=Ñ0IÔ0I€Kå”‘”€Jð ×!Ò!ØØØØ˜MÕ+;Ñ+=Ô+=Ð>Ð?ÝÔ)¨*½¼ÐFÑFÔFð "ñ ô €Gð €Fð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð0 )-ÐØ€JØÐð[Ý˜G˜G TÐ4¨VÐ4Ð4Ñ5Ô5ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸Ø#ð ð ð ð ð ð ð �eà(Ð(Ñ*Ô*Ð*å$ U¨I°uÑ=Ô=�
à#Ð+°
Ð+Ý'+¤y¡{¤{Ð$ð
LØ×)Ò)à(3Ý(0Ô(>Ø$4½¼ð)"ñ )"ô )"ç"+¢)¡+¤+ð	ð ñô ð ð øõ %ð Lð Lð LÝŸšÐ%JÀqÐ%JÐ%JÑKÔKÐKÐKÐKÐKÐKÐKøøøøðLøøøð #�
Ý˜5 )Ñ,Ô,ð /°´Ð1JØ).Ð&Ø�����ð/  $˜tð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð6 	!Ð Ñ"Ô"Ð"à#)¨;Ð"7ˆØ+Ð9¨zˆð ñ	3å˜¨	Ñ2Ô2ñ	3ð Ô&ñ	3õ
 ˜NÔ2°G¸TÑBÔBÐHÀbˆEØ%'¨˜
ˆJå$ UÑ+Ô+ð ð ‘��4Ý˜4 Ñ(Ô(ð ¨T¬Yð Ø×%Ò%¥c¨$¬)¡n¤nÑ5Ô5Ð5Ð5Ý˜T ?Ñ3Ô3ð ¸Ô8Jð ØÔ+�BØ×%Ò%à"-¨! + +Ø$.å(/°°F¸BÑ(?Ô(?Ý-1¬ZÝ5<¸RÀÈÑ5NÔ5NÐ$V¥D¨¬¡M¤M MÐTVñ."ô ."ð)ð )ð	ð 	ñô ð øð :DÐ!M §¢¨*Ñ!5Ô!5Ð!5ÈˆG�IÑØð 3Ø(2�˜Ñ%àð 	SÝ3°JÑ?Ô?Ð?ˆuð SØMR�”×(Ò(¨°RÑ8Ô8Ð9IÑJàÐ'à  :Ñ-ð ŒM×$Ò$ Z°Ñ4Ô4Ð5JÑKð ð 	˜+ð 	å(¨°jÑAÔAð ŒM×$Ò$ Z°Ñ4Ô4°_ÑEð 	�Š˜GˆÑ$Ô$Ð$ð	:Ø�MŠM‰OŒOˆOˆOˆOøÝð 	:ð 	:ð 	:Ý�LŠLÐ8°QÐ8Ð8Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9øøøøð	:øøøøõ ð ð ð à Ð Ñ"Ô"Ð"Ø�Š�#˜a™&œ&ˆÑ!Ô!Ð!ð	IØ�MŠM‰OŒOˆOˆOøÝð 	Ið 	Ið 	IÝ�LŠLÐG¸gÐGÐGÑHÔHÐHÐHÐHÐHÐHÐHøøøøð	IøøøàøøøøðøøøsÆ   ž+Ã
P Ã%GÃ(G Ã.3GÄ"AE+Å*GÅ+
FÅ5FÆGÆFÆ%GÇP Ç
GÇP Ç!GÇ"G!P ÏO Ï
PÏ$PÐP ÐPÐP Ð
RÐ-RÑQÑRÑ
RÑ&RÒRÒRÒRÒRr\   rk   rd   úOptional[dict[str, Any]]rl   úOptional[list[str]]ro   c                ó  — t          ¦   «         }t          | p|                     d¦  «        pt          d|pi |p|                     d¦  «        |p|                     d¦  «        i |                     d¦  «        pi ¥|pi ¥¬¦  «        S )z2Create a trace context for manual session tracing.r\   rj   rk   rl   rd   rm   )r   r   r4   r~   )r\   rk   rd   rl   ro   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ðñ ô ð r:   )r   r   r   r   )r   r+   )r<   r   r   r=   )rI   r   r   rJ   )rI   r   r   r=   )
rW   r   rX   r   rY   r   rZ   r   r   r   )r   r   r¤   r   r   r+   )NNNNN)
r\   r=   rk   r=   rd   rØ   rl   rÙ   ro   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   r6   r7   r*   r9   Ú	getLoggerr‰   rœ   r~   rv   rH   rR   rV   r   r†   rŽ   r£   r®   r×   rÛ   © r:   r)   ú<module>ré      sM  ðØ 8Ð 8à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à DÐ DÐ DÐ DÐ DÐ DØ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qà 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cà)Ð Ø$Ð ðð ð ð ð6	Mð 	Mð 	Mð 	Mð 
ˆÔ	˜8Ñ	$Ô	$€à'Ð ð ,Ð ð8ð 8ð 8ð 8ð	Uð 	Uð 	Uð 	Uðð ð ð ð8ð 8ð 8ð 8ðv?ð ?ð ?ð ?ðDð ð ð ðD1ð 1ð 1ð 1ðh
ð 
ð 
ð 
ðPð Pð Pð Pðh Ø"&Ø)-Ø $Ø'+ðð ð ð ð ð ð r:   