ó
    üÞ j�F  ã                  óÌ  • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
J
r
Jr  SSKJrJr  SSKJr  SS	KJrJrJr  S
SKJr  S
SKJrJr  S
SKJrJr  SrSrSS jrSS jr \RB                  " \"5      r#Sr$Sr%S S jr&S!S jr'S"S jr(S#S jr)          S#S jr*          S#S jr+          S#S jr,S$S jr-          S#S jr.     S%         S&S jjr/g)'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                ó  • [        U SS5      nU(       d  / $ [        USS5      nU(       d  / $ / nU HD  n[        USS5      =(       d    /  H'  n UR                  SS9nUR                  SUS.5        M)     MF     U$ ! [         a     M>  f = f)	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          Úc/var/www/html/gaurav/venv/lib/python3.13/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;Á;
B	ÂB	c                 óŠ   • SSK n U R                  R                  SS5      R                  5       S;   nU(       a  [        $ [
        $ )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                óâ   • U c  g [        U SS 5      nU(       d  g U Vs/ sH,  n[        USS 5      (       d  M  [        UR                  5      PM.     nnU(       a  SR                  U5      $ S $ s  snf )NÚpartsÚtextÚ )r   Ústrr;   Újoin)Úcontentr:   ÚpÚ
text_partss       r'   Ú_extract_text_from_contentrB   M   sc   € Ø�ØÜ�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                óÜ   • [        U SS5      nUc  / $ [        U SS5      n[        USS5      =(       d    / nUc  [        U5      $ U Vs/ sH  n[        USS5      U:X  d  M  UPM     sn$ s  snf )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                ó|   • [        [        U 5      5       H$  n[        [        USS5      5      nU(       d  M"  Us  $    g)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   s9   € äÔ1°#Ó6Ö7ˆÜ)¬'°%¸ÀDÓ*IÓJˆßˆ4ØŠKñ 8ð r7   c                óô  ^ ^^^^
^^^• [        5       m
T
R                  S5      =(       d    [        m0 mTR                  S5      =n(       a  [        U5      =n(       a  UTS'   [	        5       S[        S5      S.T
R                  S5      =(       d    0 Em[        TSS5      =n(       a  UTS'   TR                  S	5      =n(       a  UTS	'   TR                  S
5      =n(       a  UTS
'   UU
UUUUUU 4S jn	U	" 5       $ )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  óT  >#   • [        TSTTR                  S5      TR                  S5      TS9 n [        T	[        U 5         [	        T" T0 T
D65      nS n[        U5       H/  n[        USS 5      =n(       d  M  [        U5      =n(       d  M-  Un  O   U R                  U(       a  SU0OS S9  U S h  v•N    [        T	[        S 5         S S S 5        g  N ! [         a  nU R                  [        U5      S9  e S nAff = f! [        T	[        S 5        f = f! , (       d  f       g = f7f©	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_runÚ#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   ƒ-D(°DÁ3CÁ:CÂ%CÂ3CÂ4CÂ9DÃ	D(ÃCÃ
C>Ã C9Ã9C>Ã>DÄ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_runrx   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               óV  ^ ^^^^^^#   • [        U[        S5      nUb8  [        U5         [        T " T0 TD65       ISh  v•N nU  Sh  v•N nU7v •  M  [	        5       mTR                  S5      =(       d    [        m0 mTR                  S5      =n(       a  [        U5      =n(       a  UTS'   [        5       S[        S5      S.TR                  S5      =(       d    0 Em[        USS5      =n	(       a  U	TS'   TR                  S	5      =n
(       a  U
TS	'   TR                  S
5      =n(       a  UTS
'   SUUUUUUU 4S jjnU" 5         Sh  v•N nU7v •  M   GN GN
 SSS5      ISh  v•N    O! , ISh  v•N  (       d  f       O= fSSS5        g! , (       d  f       g= f NX
 g7f)a9  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            	    ón  >#   • [        TST
TR                  S5      TR                  S5      TS9 IS h  v•N n  S n[        T" T0 T	D65       IS h  v•N nU  S h  v•N n[        USS 5      =n(       a  [	        U5      =n(       a  UnU7v •  M8   N[ N@ N7
 S S S 5      IS h  v•N    O! , IS h  v•N  (       d  f       O= fU R                  U(       a  SU0OS S9  O+! [         a  nU R                  [        U5      S9  e S nAff = fS S S 5      IS h  v•N    g ! , IS h  v•N  (       d  f       g = f7f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_asyncÚ/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Í   ƒ1D5´BµD5¸DºCÁBÁCÁB)ÁBÁB
ÁBÁ 0B)ÂD5ÂCÂBÂB)ÂCÂ"B%Â#CÂ)C 	Â/B2Â0C 	Â<!CÃDÃ
DÃ(DÄDÄDÄ	D5ÄDÄD5ÄD2Ä!D$Ä"D2Ä.D5)ÚreturnzAsyncGenerator[Any, None])
r   rj   r   r   r   r1   rw   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Ð9ú÷ *ð 	÷	 *Ô)ð 	úñZÑ)ùs¬   ‰ F)©F¿EÁ FÁE1ÁEÁ
E
ÁEÁE1ÁC2F)ÅF'ÅF%ÅF'ÅF)ÅFÅEÅE1ÅFÅ*E-Å+FÅ1F	Å7E:Å8F	ÆFÆ	F)Æ
F"ÆF)Æ%F'Æ'F)c               óÈ  #   • [        5       nU(       d,  [        U " U0 UD65       ISh  v•N nU  Sh  v•N nU7v •  M  U(       a  US   OUR                  S5      n[        USS5      =(       d    [	        U5      R
                  n0 n	Ub  [        U5      =n
(       a  X©S'   [        USU	S9 ISh  v•N n Sn[        U " U0 UD65       ISh  v•N nU  Sh  v•N n[        USS5      =n(       a  [        U5      =n(       a  UnU7v •  M8   Nâ NÙ
 SSS5      ISh  v•N    g! , ISh  v•N  (       d  f       g= f NŒ Nq Nh
 SSS5      ISh  v•N    O! , ISh  v•N  (       d  f       O= fUR                  U(       a  S	U0OSS
9  O+! [         a  nUR                  [        U5      S9  e SnAff = fSSS5      ISh  v•N    g! , ISh  v•N  (       d  f       g= f7f)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Ø$�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Ð9úð �M‰M¾l 8¨\Ñ":ÐPTˆMÒUøÜó 	Ø�M‰M¤ A£ˆMÑ'Øûð	ú÷ G×F×F×F×FÐFüs1  ‚'G"©DªG"­D#°D´DµD¸D#Á A0G"Â0D=Â1G"Â4GÂ6FÃD?ÃFÃEÃEÃE
ÃEÃ0EÄG"ÄDÄD#ÄG"ÄDÄG"Ä#D:Ä)D,Ä*D:Ä6G"Ä?FÅEÅEÅFÅEÅFÅE-	ÅEÅE-	Å)!FÆ
GÆ
F3ÆF.Æ.F3Æ3GÆ6G"ÇGÇG"ÇGÇGÇGÇG"c              ƒ  óÄ  #   • [        5       nU(       d  U " U0 UD6I Sh  v•N $ [        USS5      =(       d    [        U5      R                  nUR	                  S5      =(       d    U(       a  US   O0 n[        U[        5      (       a  UOSU0n[        R                  " 5       nUR                  USUSS[        5       00[        R                  " U[        R                  S9S	9n	 U	R                  5          [%        U	5         U " U0 UD6I Sh  v•N nSSS5        [        W[        5      (       a  UnO-[        U[&        5      (       a  SU0nOUb  S[)        U5      0nO0 nU	R+                  US9   U	R-                  5         U$  GNa! [         a"  n
[         R#                  S
U
 35         Sn
A
N¶Sn
A
ff = f N¥! , (       d  f       N©= f! [         a#  n
[         R#                  SU
 35         Sn
A
U$ Sn
A
ff = f! [         a^  n
U	R+                  [)        U
5      S9   U	R-                  5         e ! [         a"  n[         R#                  SU 35         SnAe SnAff = fSn
A
ff = f7f)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Ñ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Ý   ‚I ŸF  CI Ã$F Ã5G5 Ä F4ÄF2ÄF4ÄAG5 Å.G Å>G5 Å?I Æ
F/ÆF*Æ%I Æ*F/Æ/I Æ2F4Æ4
GÆ>G5 Ç
G2ÇG-Ç'G5 Ç,I Ç-G2Ç2G5 Ç5
IÇ?IÈH)È(IÈ)
IÈ3IÉIÉIÉIÉIÉI c                ó
  •  [        U SS 5      =(       d    /  HG  n[        USS 5      =(       d    /  H*  n[        US5      (       d  M  UR                  (       d  M)      g   MI     [        U5      (       a  gg! [         a     gf = f)NÚcontentsr:   Úfunction_responseÚresponse_generationÚtool_selectionÚdirect_responseÚunknown)r   Úhasattrr    r   r    )r!   Úllm_responser?   Úparts       r'   Ú_determine_llm_call_typer¨   ?  s   € ð	Ü˜{¨J¸Ó=×CÀÒCˆGÜ ¨°$Ó7×=¸2Ò=�Ü˜4Ð!4×5Ó5¸$×:P×:PÑ:PÚ0ó >ñ Dô ˜l×+Ñ+Ø#Ø øÜó Ùðús$   ‚AA5 ÁA5 ÁA5 ÁA5 Á5
BÂBc               óx	  ^^^#   • [        5       nU(       d  U " U0 UD6  Sh  v•N nU7v •  M  [        U5      S:”  a  US   OUR                  S5      m[        R                  " 5       nUR	                  SS0 SS[        5       00[        R                  " U[        R                  S9S	9mS
mS&UUU4S jjnSnSn	Sn
 [        U " U0 UD65       ISh  v•N nU  Sh  v•N nU" 5         [        USS
5      nUc`  U(       aY  [        R                  " 5       n TR                  S[        R                  " U[        R                  S9R                  5       S.5        Un	[#        US5      (       a  UR$                  b  Un
U7v •  M©   GN^
 g N´ N«! [         a"  n[        R!                  SU 35         SnANYSnAff = f
 SSS5      ISh  v•N    O! , ISh  v•N  (       d  f       O= fU" 5         SS0nU
=(       d    U	nU(       Gaa  [#        US5      (       GaO  UR$                  (       Ga=  [        UR$                  SS5      =(       d    / n/ / nn['        U5       Há  u  nn[#        US5      (       a7  UR(                  (       a&  UR+                  [-        UR(                  5      5        MN  [#        US5      (       d  Ma  UR.                  (       d  Mt  UR.                  nUR+                  SU 3S[        USS5      [0        R2                  " [        USS5      (       a  [5        UR6                  5      O0 5      S.S.5        Mã     U(       a  SR9                  U5      OSUS'   U(       a  UUS'   U	(       a1  [;        U	5      =n(       a  UTR<                  R?                  S0 5      S'   Ub!  X†-
  TR<                  R?                  S0 5      S '   U	(       a0  T(       a)  [A        TU	5      TR<                  R?                  S0 5      S!'   TRC                  US"9   TRE                  5         g! [         a"  n[        R!                  S#U 35         SnAgSnAff = f! [         ae  nU" 5         TRC                  [-        U5      S$9   TRE                  5         e ! [         a"  n[        R!                  S%U 35         SnAe SnAff = fSnAff = f7f)'zIWrap BaseLlmFlow._call_llm_async to capture LLM calls with TTFT tracking.Nr   r!   Úgoogle_adk_llmÚllmrX   rU   rŠ   rŒ   Fc                 óØ  >• T(       a  gT(       a  [        T5      OSn T(       a  [        T5      OSnT(       a  [        T5      O/ nU(       a	  SU0Tl        U (       a&  U Tl        U TR
                  R                  S0 5      S'   U(       a  UTR
                  R                  S0 5      S'   Sm TR                  5         g! [         a"  n[        R                  SU 35         SnAgSnAff = f)	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_postÚ: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  s8  úé € ô "Ó#€FÞÙ" DÐ3¨FÒ3÷ 	�%Ø�Kô ! ›Y¨›]�$�q’'°·
±
¸=Ó0I€Kä—’“€Jð ×!Ñ!ØØØØ˜MÔ+;Ó+=Ð>Ð?Ü×)Ò)¨*¼¿¹ÑFð "ð €Gð €F÷9ñ 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Ð5úñ6 	!Ô"à#)¨;Ð"7ˆØ+×9¨zˆ÷ Ü˜¨	×2Ò2Ø×&×&Ð&ä˜N×2Ñ2°G¸TÓB×HÀbˆEØ%'¨˜
ˆJä$ UÖ+‘��4Ü˜4 ×(Ñ(¨T¯Y¯YØ×%Ñ%¤c¨$¯)©)£nÖ5Ü˜T ?×3Ó3¸×8J×8JÑ8JØ×+Ñ+�BØ×%Ñ%à$)¨!¨ +Ø$.ä(/°°F¸BÓ(?Ü-1¯ZªZÜ5<¸RÀÈ×5NÑ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  …R:ŸF£F¤F§BR:Â<Q ÃFÃQ ÃGÃF9ÃFÃF9Ã 4GÄAF
Å)GÆFÆR:ÆQ ÆF9Æ

F6ÆF1Æ,GÆ1F6Æ6GÆ:Q ÇGÇQ ÇG#ÇGÇG#ÇCQ Ê8Q ËD<Q ÐP ÐR:Ð
QÐ#Q Ð;Q Ð?R:Ñ QÑQ Ñ
R7ÑR2Ñ2RÒR2Ò
R/ÒR*Ò%R2Ò*R/Ò/R2Ò2R7Ò7R:c                ó8  • [        5       n[        U =(       d    UR                  S5      =(       d    [        SU=(       d    0 U=(       d    UR                  S5      U=(       d    UR                  S5      0 UR                  S5      =(       d    0 EU=(       d    0 ES9$ )z2Create a trace context for manual session tracing.rP   r^   r_   r`   rX   ra   )r   r   r1   rw   )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–   rw   rj   rB   rJ   rN   rx   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   