Ë
    Âjƒg  ã                  óè  — d dl mZ d dlZd dlZd dlmZ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 d dlmZmZ d dlmZm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$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= erddl>m?Z?m@Z@  edee'e	   e)e	   e+e,f   ¬«      ZA ed«      ZB ej†                  eD«      ZE G d„ ded¬«      ZF G d„ deeAe7f   «      ZG G d„ deGe(e7f   eeBe7f   e«      ZH G d „ d!eHe8e7   e7f   «      ZI G d"„ d#eHe4e7   e7f   «      ZJ G d$„ d%eGe*e7f   eeBe7f   e«      ZK G d&„ d'eKe8e7   e7f   «      ZL G d(„ d)eKe5e7   e7f   «      ZMy)*é    )ÚannotationsN)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚListÚUnionÚGenericÚTypeVarÚCallableÚIterableÚIteratorÚ	CoroutineÚAsyncIterator)ÚcontextmanagerÚasynccontextmanager)Ú	TypedDictÚoverrideé   )ÚBodyÚQueryÚHeadersÚNotGiven)Úconsume_sync_iteratorÚconsume_async_iterator)ÚBetaMessageÚBetaMessageParamé   )Ú	ToolErrorÚBetaFunctionToolÚBetaRunnableToolÚBetaAsyncFunctionToolÚBetaAsyncRunnableToolÚBetaBuiltinFunctionToolÚBetaAsyncBuiltinFunctionToolé   )Ústainless_helper_header)ÚDEFAULT_THRESHOLDÚDEFAULT_SUMMARY_PROMPTÚCompactionControl)ÚBetaMessageStreamÚBetaAsyncMessageStream)ÚResponseFormatTÚParsedBetaMessageÚParsedBetaContentBlock)ÚParseMessageCreateParamsBase)ÚBetaToolResultBlockParam)Ú	AnthropicÚAsyncAnthropicÚAnyFunctionToolT)ÚboundÚRunnerItemTc                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y	)
ÚRequestOptionszHeaders | NoneÚextra_headerszQuery | NoneÚextra_queryzBody | NoneÚ
extra_bodyz'float | httpx.Timeout | None | NotGivenÚtimeoutN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úS/var/www/html/venv/lib/python3.12/site-packages/anthropic/lib/tools/_beta_runner.pyr8   r8   :   s   … Ø!Ó!ØÓØÓØ4Ô4rB   r8   F)Útotalc                  óR   — e Zd Zdddœ	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zd	d„Zd
d„Zy)ÚBaseToolRunnerN©Úmax_iterationsÚcompaction_controlc               ó–  — |D �ci c]  }|j                   |“Œ c}| _        i |¥d|d   D �cg c]  }|‘Œ c}i¥| _        t        | j                  j	                  «       |j                  d«      ¬«      }|r!i |¥|j                  d«      xs i ¥}	i |¥d|	i¥}|| _        d| _        d | _        || _	        d| _
        || _        y c c}w c c}w )NÚmessages)ÚtoolsrK   r9   Fr   )ÚnameÚ_tools_by_nameÚ_paramsr'   ÚvaluesÚgetÚ_optionsÚ_messages_modifiedÚ_cached_tool_call_responseÚ_max_iterationsÚ_iteration_countÚ_compaction_control)
ÚselfÚparamsÚoptionsrL   rH   rI   ÚtoolÚmessageÚhelper_headerÚmerged_headerss
             rC   Ú__init__zBaseToolRunner.__init__B   sñ   € ñ <AÓA¹5°4˜tŸy™y¨$™¸5ÑAˆÔðG
ØðG
à°°zÒ0BÓCÑ0B WšÐ0BÑCñG
ˆŒô 0Ø×%Ñ%×,Ñ,Ó.Ø—Z‘Z 
Ó+ô
ˆñ ØV ÐV°'·+±+¸oÓ2NÒ2TÐRTÐVˆNØB˜ÐB /°>ÑBˆGØˆŒØ"'ˆÔØCGˆÔ'Ø-ˆÔØ !ˆÔØ#5ˆÕ ùò# Bùò Ds
   …C¬	Cc                óL   — t        |«      r || j                  «      }|| _        y)a  
        Update the parameters for the next API call. This invalidates any cached tool responses.

        Args:
            params (ParsedMessageCreateParamsBase[ResponseFormatT] | Callable): Either new parameters or a function to mutate existing parameters
        N)ÚcallablerO   )rX   rY   s     rC   Úset_messages_paramsz"BaseToolRunner.set_messages_params^   s!   € ô �FÔÙ˜DŸL™LÓ)ˆFØˆ�rB   c                óÆ   ‡— |D �cg c]-  }t        |t        «      r|j                  |j                  dœn|‘Œ/ c}Šd| _        | j                  ˆfd„«       d| _        yc c}w )zØAdd one or more messages to the conversation history.

        This invalidates the cached tool response, i.e. if tools were already called, then they will
        be called again on the next loop iteration.
        ©ÚroleÚcontentTc                ó"   •— i | ¥dg | d   ¢‰¢i¥S )NrK   rA   )rY   Úmessage_paramss    €rC   Ú<lambda>z0BaseToolRunner.append_messages.<locals>.<lambda>x   s$   ø€ Ð0n°6Ð0n¸:ÐGmÈÐPZÑI[ÐGmÐ^lÐGmÒ0nrB   N)Ú
isinstancer   re   rf   rS   rb   rT   )rX   rK   r\   rh   s      @rC   Úappend_messageszBaseToolRunner.append_messagesm   sg   ø€ ñ $ó2
á#�ô CMÈWÔVaÔBb�W—\‘\¨g¯o©oÒ>ÐhoÑoØ#ñ2
ˆð #'ˆÔØ× Ñ Ó!nÔoØ*.ˆÕ'ùò2
s   †2Ac                óP   — | j                   �| j                  | j                   k\  ryy)NTF)rU   rV   ©rX   s    rC   Ú_should_stopzBaseToolRunner._should_stop{   s'   € Ø×ÑÐ+°×0EÑ0EÈ×I]ÑI]Ò0]ØØrB   )rY   ú-ParseMessageCreateParamsBase[ResponseFormatT]rZ   r8   rL   zIterable[AnyFunctionToolT]rH   ú
int | NonerI   úCompactionControl | NoneÚreturnÚNone)rY   z˜ParseMessageCreateParamsBase[ResponseFormatT] | Callable[[ParseMessageCreateParamsBase[ResponseFormatT]], ParseMessageCreateParamsBase[ResponseFormatT]]rr   rs   )rK   z5BetaMessageParam | ParsedBetaMessage[ResponseFormatT]rr   rs   ©rr   Úbool)r=   r>   r?   r_   rb   rk   rn   rA   rB   rC   rF   rF   A   so   „ ð &*Ø7;ñ6ð >ð6ð  ð	6ð
 *ð6ð #ð6ð 5ð6ð 
ó6ð8ðsðð 
ó	ó/ôrB   rF   c                  ó®   ‡ — e Zd Zdddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zdd„Zee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ˆ xZS )ÚBaseSyncToolRunnerNrG   c               óÒ   •— t         ‰| �  |||||¬«       || _        |�-|j                  d«      rt	        j
                  dt        d¬«       | j                  «       | _        d | _	        y ©N)rY   rZ   rL   rH   rI   Úenableda!  The 'compaction_control' parameter is deprecated and will be removed in a future version. Use server-side compaction instead by passing `edits=[{'type': 'compact_20260112'}]` in your the params passed to `tool_runner()`. See https://platform.claude.com/docs/en/build-with-claude/compactionr   ©Ú
stacklevel©
Úsuperr_   Ú_clientrQ   ÚwarningsÚwarnÚDeprecationWarningÚ__run__Ú	_iteratorÚ_last_message©rX   rY   rZ   rL   ÚclientrH   rI   Ú	__class__s          €rC   r_   zBaseSyncToolRunner.__init__‚   sy   ø€ ô 	‰ÑØØØØ)Ø1ð 	ô 	
ð ˆŒàÐ)Ð.@×.DÑ.DÀYÔ.OÜ�M‰Mð}ô #Øõð Ÿ™›ˆŒð ð 	ÕrB   c                ó6   — | j                   j                  «       S ©N)r„   Ú__next__rm   s    rC   r‹   zBaseSyncToolRunner.__next__£   s   € Ø�~‰~×&Ñ&Ó(Ð(rB   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wrŠ   ©r„   ©rX   Úitems     rC   Ú__iter__zBaseSyncToolRunner.__iter__¦   s   è ø€ Ø—N”NˆDØ‹Jñ #ùs   ‚c              #  ó   K  — t        «       ‚­wrŠ   ©ÚNotImplementedErrorrm   s    rC   Ú_handle_requestz"BaseSyncToolRunner._handle_requestª   ó   è ø€ ô "Ó#Ð#ùó   ‚c                óÄ  ‡
— | j                   �| j                   d   sy| j                  «       }d}|�e|j                  j                  |j                  j                  xs dz   |j                  j
                  xs dz   }||j                  j                  z   }| j                   j                  dt        «      }||k  ryt        j                  d|› d|› d�«       | j                   j                  d| j                  d   «      }t        | j                  d	   «      }|d
   d   dk(  rT|d
   d   D �cg c](  }t        |t        «      r|j                  d«      dk7  r|‘Œ* }}|r	||d
   d<   n|j                  «        g |¢t!        d| j                   j                  dt"        «      ¬«      ‘}| j$                  j&                  j(                  j+                  ||| j                  d   ddi¬«      }	t        j                  d|	j                  j                  › �«       t        |	j,                  «      d   Š
‰
j.                  dk7  rt1        d«      ‚| j3                  ˆ
fd„«       yc c}w )ú’
        Check token usage and compact messages if threshold exceeded.
        Returns True if compaction was performed, False otherwise.
        rz   Fr   Úcontext_token_thresholdúToken usage ú has exceeded the threshold of ú. Performing compaction.ÚmodelrK   éÿÿÿÿre   Ú	assistantrf   ÚtypeÚtool_useÚuserÚsummary_promptrd   Ú
max_tokensúX-Stainless-HelperÚ
compaction©r�   rK   r¤   r9   ú&Compaction complete. New token usage: Útextú1Compaction response content is not of type 'text'c                ó8   •— i | ¥ddd‰j                   dœgdœgi¥S ©NrK   r¢   r©   )r    r©   rd   ©r©   ©rY   Úfirst_contents    €rC   ri   z7BaseSyncToolRunner._check_and_compact.<locals>.<lambda>ó   ó=   ø€ ð Øðàà &ð )/Ø(5×(:Ñ(:ñð$ñð
òrB   T©rW   Ú_get_last_messageÚusageÚinput_tokensÚcache_creation_input_tokensÚcache_read_input_tokensÚoutput_tokensrQ   r(   ÚlogÚinforO   Úlistrj   ÚdictÚpopr   r)   r   ÚbetarK   Úcreaterf   r    Ú
ValueErrorrb   ©rX   r\   Útokens_usedÚtotal_input_tokensÚ	thresholdr�   rK   ÚblockÚnon_tool_blocksÚresponser¯   s             @rC   Ú_check_and_compactz%BaseSyncToolRunner._check_and_compact°   sa  ø€ ð
 ×#Ñ#Ð+°4×3KÑ3KÈIÒ3VØà×(Ñ(Ó*ˆØˆØÐà—‘×*Ñ*Ø—=‘=×<Ñ<ÒAÀñCà—=‘=×8Ñ8Ò=¸Añ?ð ð
 -¨w¯}©}×/JÑ/JÑJˆKà×,Ñ,×0Ñ0Ð1JÔL]Ó^ˆ	à˜Ò"Øô 	�‰�< ˜}Ð,KÈIÈ;ÐVnÐoÔpà×(Ñ(×,Ñ,¨W°d·l±lÀ7Ñ6KÓLˆä˜Ÿ™ ZÑ0Ó1ˆà�B‰<˜Ñ ;Ò.ð
 & b™\¨)Ò4óá4�EÜ˜e¤TÔ*¨u¯y©y¸Ó/@ÀJÒ/Nò Ø4ð ð ñ Ø*9�˜‘˜YÒ'à—‘”ð
Øð
äØØ×0Ñ0×4Ñ4Ð5EÔG]Ó^ôð
ˆð —<‘<×$Ñ$×-Ñ-×4Ñ4ØØØ—|‘| LÑ1Ø/°Ð>ð	 5ó 
ˆô 	�‰Ð9¸(¿.¹.×:VÑ:VÐ9WÐXÔYä˜X×-Ñ-Ó.¨qÑ1ˆà×Ñ Ò'ÜÐPÓQÐQà× Ñ óô	
ð  ùòcs   Ä/-Ic              #  ó>  K  — | j                  «       sý| j                  «       5 }|–— | j                  «       }|€J ‚| j                  «       }|�/|j                  �#|j                  j
                  | j                  d<   d d d «       | xj                  dz  c_        | j                  «       sF| j                  «       }|€t        j                  d«       y | j                  s| j                  |«       d| _        d | _        | j                  «       sŒüy y # 1 sw Y   Œ•xY w­w©NÚ	containerr   z;Tool call was not requested, exiting from tool runner loop.F©rn   r”   r²   Ú_get_last_assistant_messagerÊ   ÚidrO   rV   rÇ   Úgenerate_tool_call_responser¸   ÚdebugrS   rk   rT   ©rX   r�   r\   Úlast_assistant_messagerÆ   s        rC   rƒ   zBaseSyncToolRunner.__run__  s  è ø€ Ø×#Ñ#Ô%Ø×%Ñ%Ô'¨4Ø’
Ø×0Ñ0Ó2�ØÐ*Ð*Ð*ð *.×)IÑ)IÓ)KÐ&Ø)Ð5Ð:P×:ZÑ:ZÐ:fØ0F×0PÑ0P×0SÑ0S�D—L‘L Ñ-÷ (ð ×!Ò! QÑ&Õ!ð ×*Ñ*Ô,Ø×;Ñ;Ó=�ØÐ#Ü—I‘IÐ[Ô\Øà×.Ò.Ø×(Ñ(¨°(Ô;à&+ˆDÔ#Ø.2ˆDÔ+ð1 ×#Ñ#×%ß'Ð'üs$   ‚!D£ADÁ=BDÄDÄDÄDc                óD   — t        | «       | j                  «       }|€J ‚|S )ú¦
        Consumes the tool runner stream and returns the last message if it has not been consumed yet.
        If it has, it simply returns the last message.
        )r   r²   ©rX   Úlast_messages     rC   Ú
until_donezBaseSyncToolRunner.until_done  s,   € ô
 	˜dÔ#Ø×-Ñ-Ó/ˆØÐ'Ð'Ð'ØÐrB   c                óŽ   — | j                   �!t        j                  d«       | j                   S | j                  «       }|| _         |S )á  Generate a MessageParam by calling tool functions with any tool use blocks from the last message.

        Note the tool call response is cached, repeated calls to this method will return the same response.

        None can be returned if no tool call was applicable.
        ú$Returning cached tool call response.©rT   r¸   rÏ   Ú_generate_tool_call_response©rX   rÆ   s     rC   rÎ   z.BaseSyncToolRunner.generate_tool_call_response)  sD   € ð ×*Ñ*Ð6Ü�I‰IÐ<Ô=Ø×2Ñ2Ð2Ø×4Ñ4Ó6ˆØ*2ˆÔ'ØˆrB   c           
     ó�  — | j                  «       }|sy |D �cg c]  }|j                  dk(  sŒ|‘Œ }}|sy g }|D ]á  }| j                  j                  |j                  «      }|€}t        j                  d|j                  › dt        | j                  j                  «       «      › d�t        d¬«       |j                  d|j                  d|j                  › d	�d
dœ«       Œ§	 |j                  |j                  «      }|j                  d|j                  |dœ«       Œã d|dœS c c}w # t        $ r5}|j                  d|j                  |j                  d
dœ«       Y d }~�Œ'd }~wt         $ rX}t"        j%                  d|j                  › �|¬«       |j                  d|j                  t'        |«      d
dœ«       Y d }~�Œ†d }~ww xY w)Nr¡   úTool 'ú-' not found in tool runner. Available tools: zÅ. If using a raw tool definition, handle the tool call manually and use `append_messages()` to add the result. Otherwise, pass the tool using `beta_tool(func)` or a `@beta_tool` decorated function.r   r{   Útool_resultúError: Tool 'ú' not foundT©r    Útool_use_idrf   Úis_error©r    rä   rf   ú#Error occurred while calling tool: ©Úexc_infor¢   rd   ©Ú#_get_last_assistant_message_contentr    rN   rQ   rM   r€   r�   rº   ÚkeysÚUserWarningÚappendrÍ   ÚcallÚinputr   rf   Ú	Exceptionr¸   Ú	exceptionÚrepr©	rX   rf   rÄ   Útool_use_blocksÚresultsr¡   r[   ÚresultÚexcs	            rC   rÛ   z/BaseSyncToolRunner._generate_tool_call_response7  s»  € Ø×:Ñ:Ó<ˆÙØá.5ÓR©g U¸¿¹ÀzÓ9Qš5¨gˆÐRÙØà24ˆã'ˆHØ×&Ñ&×*Ñ*¨8¯=©=Ó9ˆDØˆ|Ü—‘Ø˜XŸ]™]˜Oð ,(Ü(,¨T×-@Ñ-@×-EÑ-EÓ-GÓ(HÐ'Ið Jmðnô  Ø õð —‘à -Ø'/§{¡{Ø%2°8·=±=°/ÀÐ#MØ$(ñ	ôð ðØŸ™ 8§>¡>Ó2�Ø—‘¨ÀhÇkÁkÐ^dÑeÕfð/ (ðX ¨7Ñ3Ð3ùòe Søô< ò Ø—‘à -Ø'/§{¡{Ø#&§;¡;Ø$(ñ	÷ò ûô ò 	Ü—‘Ð CÀDÇIÁIÀ;ÐOÐZ]�Ô^Ø—‘à -Ø'/§{¡{Ü#'¨£9Ø$(ñ	÷ò ûð	ús/   ˜D#­D#Ã":D(Ä(	GÄ1*E!Å!GÅ-AG Ç Gc                ód   — t        | j                  «      r| j                  «       S | j                  S rŠ   ©ra   r…   rm   s    rC   r²   z$BaseSyncToolRunner._get_last_messagep  s+   € Ü�D×&Ñ&Ô'Ø×%Ñ%Ó'Ð'Ø×!Ñ!Ð!rB   c                ób   — | j                  «       }|�|j                  dk7  s|j                  sy |S ©NrŸ   ©r²   re   rf   rÔ   s     rC   rÌ   z.BaseSyncToolRunner._get_last_assistant_messageu  s4   € Ø×-Ñ-Ó/ˆØÐ <×#4Ñ#4¸Ò#CÈ<×K_ÒK_ØàÐrB   c                ó@   — | j                  «       }|€y |j                  S rŠ   ©rÌ   rf   ©rX   rÑ   s     rC   rë   z6BaseSyncToolRunner._get_last_assistant_message_content|  s&   € Ø!%×!AÑ!AÓ!CÐØ!Ð)Øà%×-Ñ-Ð-rB   )rY   ro   rZ   r8   rL   zIterable[BetaRunnableTool]r‡   r2   rH   rp   rI   rq   rr   rs   ©rr   r6   )rr   zIterator[RunnerItemT]rt   ©rr   z"ParsedBetaMessage[ResponseFormatT]©rr   zBetaMessageParam | None©rr   z)ParsedBetaMessage[ResponseFormatT] | None©rr   z4list[ParsedBetaContentBlock[ResponseFormatT]] | None)r=   r>   r?   r_   r‹   r�   r   r   r”   rÇ   rƒ   rÖ   rÎ   rÛ   r²   rÌ   rë   Ú__classcell__©rˆ   s   @rC   rw   rw   �   s¨   ø„ ð &*Ø7;ñð >ðð  ð	ð
 *ðð ðð #ðð 5ðð 
õóB)óð Øòó ó ðóRóh3ó6óó74ór"ó
÷.rB   rw   c                  ó(   — e Zd Zeedd„«       «       Zy)ÚBetaToolRunnerc              #  ó®   K  —  | j                   j                  j                  j                  di | j                  ¤| j
                  ¤Ž}|| _        |–— y ­w©NrA   ©r   r½   rK   ÚparserO   rR   r…   ©rX   r\   s     rC   r”   zBetaToolRunner._handle_request…  sG   è ø€ ð 3�$—,‘,×#Ñ#×,Ñ,×2Ñ2ÑS°T·\±\ÐSÀTÇ]Á]ÑSˆØ$ˆÔØ‹ùs   ‚AAN)rr   z,Iterator[ParsedBetaMessage[ResponseFormatT]]©r=   r>   r?   r   r   r”   rA   rB   rC   r	  r	  „  s   „ ØØòó ó ñrB   r	  c                  ó(   — e Zd Zeedd„«       «       Zy)ÚBetaStreamingToolRunnerc              #  óì   K  —  | j                   j                  j                  j                  di | j                  ¤| j
                  ¤Ž5 }|j                  | _        |–— d d d «       y # 1 sw Y   y xY w­wr  ©r   r½   rK   ÚstreamrO   rR   Úget_final_messager…   ©rX   r  s     rC   r”   z'BetaStreamingToolRunner._handle_requestŽ  sZ   è ø€ ð /ˆT�\‰\×Ñ×'Ñ'×.Ñ.ÑO°·±ÐOÀÇÁÒOÐSYØ!'×!9Ñ!9ˆDÔØŠL÷ P×OÑOüs   ‚AA4Á	A(Á	A4Á(A1Á-A4N)rr   z,Iterator[BetaMessageStream[ResponseFormatT]]r  rA   rB   rC   r  r  �  s   „ ØØòó ó ñrB   r  c                  ó®   ‡ — e Zd Zdddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zdd„Zee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ˆ xZS )ÚBaseAsyncToolRunnerNrG   c               óÒ   •— t         ‰| �  |||||¬«       || _        |�-|j                  d«      rt	        j
                  dt        d¬«       | j                  «       | _        d | _	        y ry   r}   r†   s          €rC   r_   zBaseAsyncToolRunner.__init__™  sy   ø€ ô 	‰ÑØØØØ)Ø1ð 	ô 	
ð ˆŒàÐ)Ð.@×.DÑ.DÀYÔ.OÜ�M‰Mð}ô #Øõð Ÿ™›ˆŒð
 ð	 	ÕrB   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wrŠ   )r„   Ú	__anext__rm   s    rC   r  zBaseAsyncToolRunner.__anext__¼  s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wrŠ   r�   rŽ   s     rC   Ú	__aiter__zBaseAsyncToolRunner.__aiter__¿  s!   è ø€ ØŸ.š.÷ 	�$ØŒJð	ø™.ùs   ‚"� “” —"ž  "c               ó   K  — t        «       ‚­wrŠ   r’   rm   s    rC   r”   z#BaseAsyncToolRunner._handle_requestÃ  r•   r–   c              ƒ  óö  ‡
K  — | j                   �| j                   d   sy| j                  «       ƒ d{  –—† }d}|�e|j                  j                  |j                  j                  xs dz   |j                  j
                  xs dz   }||j                  j                  z   }| j                   j                  dt        «      }||k  ryt        j                  d|› d|› d�«       | j                   j                  d	| j                  d	   «      }t        | j                  d
   «      }|d   d   dk(  rT|d   d   D �cg c](  }t        |t        «      r|j                  d«      dk7  r|‘Œ* }}|r	||d   d<   n|j                  «        g |¢t!        d| j                   j                  dt"        «      ¬«      ‘}| j$                  j&                  j(                  j+                  ||| j                  d   ddi¬«      ƒ d{  –—† }	t        j                  d|	j                  j                  › �«       t        |	j,                  «      d   Š
‰
j.                  dk7  rt1        d«      ‚| j3                  ˆ
fd„«       y7 �Œ<c c}w 7 Œ­w)r˜   Nrz   Fr   r™   rš   r›   rœ   r�   rK   rž   re   rŸ   rf   r    r¡   r¢   r£   rd   r¤   r¥   r¦   r§   r¨   r©   rª   c                ó8   •— i | ¥ddd‰j                   dœgdœgi¥S r¬   r­   r®   s    €rC   ri   z8BaseAsyncToolRunner._check_and_compact.<locals>.<lambda>  r°   rB   Tr±   rÀ   s             @rC   rÇ   z&BaseAsyncToolRunner._check_and_compactÉ  sw  øè ø€ ð
 ×#Ñ#Ð+°4×3KÑ3KÈIÒ3VØà×.Ñ.Ó0×0ˆØˆØÐà—‘×*Ñ*Ø—=‘=×<Ñ<ÒAÀñCà—=‘=×8Ñ8Ò=¸Añ?ð ð
 -¨w¯}©}×/JÑ/JÑJˆKà×,Ñ,×0Ñ0Ð1JÔL]Ó^ˆ	à˜Ò"Øô 	�‰�< ˜}Ð,KÈIÈ;ÐVnÐoÔpà×(Ñ(×,Ñ,¨W°d·l±lÀ7Ñ6KÓLˆä˜Ÿ™ ZÑ0Ó1ˆà�B‰<˜Ñ ;Ò.ð
 & b™\¨)Ò4óá4�EÜ˜e¤TÔ*¨u¯y©y¸Ó/@ÀJÒ/Nò Ø4ð ð ñ Ø*9�˜‘˜YÒ'à—‘”ð
Øð
äØØ×0Ñ0×4Ñ4Ð5EÔG]Ó^ôð
ˆð Ÿ™×*Ñ*×3Ñ3×:Ñ:ØØØ—|‘| LÑ1Ø/°Ð>ð	 ;ó 
÷ 
ˆô 	�‰Ð9¸(¿.¹.×:VÑ:VÐ9WÐXÔYä˜X×-Ñ-Ó.¨qÑ1ˆà×Ñ Ò'ÜÐPÓQÐQà× Ñ óô	
ð  ðU 1ûò2ð&
ús0   ƒ0I9³I/´DI9Ä9-I2Å&BI9Ç7I7Ç8A8I9É2I9c               óÒ  K  — | j                  «       �s/| j                  «       4 ƒd {  –—† }|­–— | j                  «       ƒ d {  –—† }|€J ‚| j                  «       ƒ d {  –—† }|�/|j                  �#|j                  j
                  | j                  d<   d d d «      ƒd {  –—†  | xj                  dz  c_        | j                  «       ƒ d {  –—† sN| j                  «       ƒ d {  –—† }|€t        j                  d«       y | j                  s| j                  |«       d| _        d | _        | j                  «       s�Œ.y y 7 �Œ7 �Œ7 Œè7 Œ©# 1 ƒd {  –—†7  sw Y   Œ¹xY w7 Œ“7 Œ}­wrÉ   rË   rÐ   s        rC   rƒ   zBaseAsyncToolRunner.__run__  s=  è ø€ Ø×#Ñ#Õ%Ø×+Ñ+×-Ô-°Ø“
Ø $× 6Ñ 6Ó 8×8�ØÐ*Ð*Ð*ð 04×/OÑ/OÓ/Q×)QÐ&Ø)Ð5Ð:P×:ZÑ:ZÐ:fØ0F×0PÑ0P×0SÑ0S�D—L‘L Ñ-÷ .×-ð ×!Ò! QÑ&Õ!ð ×0Ñ0Ó2×2Ð2Ø!%×!AÑ!AÓ!C×C�ØÐ#Ü—I‘IÐ[Ô\Øà×.Ò.Ø×(Ñ(¨°(Ô;à&+ˆDÔ#Ø.2ˆDÔ+ð1 ×#Ñ#×%Ð%Ø-ùà8ùð *Røð .ø×-×-Ñ-úð 3øØCús�   ‚&E'¨E©E'¬EÁEÁEÁ!E
Á"5EÂE'Â"EÂ#,E'ÃE#ÃE'Ã'E%Ã(AE'ÅE'ÅEÅ
EÅE'ÅE ÅEÅE ÅE'Å%E'c              ƒ  ót   K  — t        | «      ƒ d{  –—†  | j                  «       ƒ d{  –—† }|€J ‚|S 7 Œ"7 Œ­w)rÓ   N)r   r²   rÔ   s     rC   rÖ   zBaseAsyncToolRunner.until_done8  sB   è ø€ ô
 % TÓ*×*Ð*Ø!×3Ñ3Ó5×5ˆØÐ'Ð'Ð'ØÐð 	+øØ5ús   ‚8‘4’8©6ª8¶8c              ƒ  óª   K  — | j                   �!t        j                  d«       | j                   S | j                  «       ƒ d{  –—† }|| _         |S 7 Œ­w)rØ   NrÙ   rÚ   rÜ   s     rC   rÎ   z/BaseAsyncToolRunner.generate_tool_call_responseB  sP   è ø€ ð ×*Ñ*Ð6Ü�I‰IÐ<Ô=Ø×2Ñ2Ð2à×:Ñ:Ó<×<ˆØ*2ˆÔ'Øˆð =ús   ‚AAÁAÁAc              ƒ  ó€   K  — t        | j                  «      r| j                  «       ƒ d {  –—† S | j                  S 7 Œ­wrŠ   rú   rm   s    rC   r²   z%BaseAsyncToolRunner._get_last_messageQ  s7   è ø€ Ü�D×&Ñ&Ô'Ø×+Ñ+Ó-×-Ð-Ø×!Ñ!Ð!ð .ús   ‚)>«<¬>c              ƒ  ó~   K  — | j                  «       ƒ d {  –—† }|�|j                  dk7  s|j                  sy |S 7 Œ$­wrü   rý   rÔ   s     rC   rÌ   z/BaseAsyncToolRunner._get_last_assistant_messageV  s@   è ø€ Ø!×3Ñ3Ó5×5ˆØÐ <×#4Ñ#4¸Ò#CÈ<×K_ÒK_ØàÐð	 6ús   ‚=–;—%=c              ƒ  ó\   K  — | j                  «       ƒ d {  –—† }|€y |j                  S 7 Œ­wrŠ   rÿ   r   s     rC   rë   z7BaseAsyncToolRunner._get_last_assistant_message_content]  s3   è ø€ Ø'+×'GÑ'GÓ'I×!IÐØ!Ð)Øà%×-Ñ-Ð-ð	 "Jús   ‚,–*—,c           
   ƒ  óÂ  K  — | j                  «       ƒ d {  –—† }|sy |D �cg c]  }|j                  dk(  sŒ|‘Œ }}|sy g }|D ]é  }| j                  j                  |j                  «      }|€}t        j                  d|j                  › dt        | j                  j                  «       «      › d�t        d¬«       |j                  d|j                  d|j                  › d	�d
dœ«       Œ§	 |j                  |j                  «      ƒ d {  –—† }|j                  d|j                  |dœ«       Œë d|dœS 7 �Œc c}w 7 Œ2# t        $ r5}|j                  d|j                  |j                  d
dœ«       Y d }~�Œ4d }~wt         $ rX}t"        j%                  d|j                  › �|¬«       |j                  d|j                  t'        |«      d
dœ«       Y d }~�Œ“d }~ww xY w­w)Nr¡   rÞ   rß   zÑ. If using a raw tool definition, handle the tool call manually and use `append_messages()` to add the result. Otherwise, pass the tool using `beta_async_tool(func)` or a `@beta_async_tool` decorated function.r   r{   rà   rá   râ   Trã   ræ   rç   rè   r¢   rd   rê   rô   s	            rC   rÛ   z0BaseAsyncToolRunner._generate_tool_call_responsed  sÍ  è ø€ Ø×@Ñ@ÓB×BˆÙØá.5ÓR©g U¸¿¹ÀzÓ9Qš5¨gˆÐRÙØà24ˆã'ˆHØ×&Ñ&×*Ñ*¨8¯=©=Ó9ˆDØˆ|Ü—‘Ø˜XŸ]™]˜Oð ,(Ü(,¨T×-@Ñ-@×-EÑ-EÓ-GÓ(HÐ'Ið Jyðzô  Ø õð —‘à -Ø'/§{¡{Ø%2°8·=±=°/ÀÐ#MØ$(ñ	ôð ðØ#Ÿy™y¨¯©Ó8×8�Ø—‘¨ÀhÇkÁkÐ^dÑeÕfð/ (ðX ¨7Ñ3Ð3ðm Cûò Sð8 9ùäò Ø—‘à -Ø'/§{¡{Ø#&§;¡;Ø$(ñ	÷ò ûô ò 	Ü—‘Ð CÀDÇIÁIÀ;ÐOÐZ]�Ô^Ø—‘à -Ø'/§{¡{Ü#'¨£9Ø$(ñ	÷ò ûð	üst   ‚G–D5—G¢D8·D8»B0GÃ,D?Ä
D=Ä#D?Ä.GÄ8GÄ=D?Ä?	GÅ*E8Å2GÅ8GÆAGÇGÇGÇG)rY   ro   rZ   r8   rL   zIterable[BetaAsyncRunnableTool]r‡   r3   rH   rp   rI   rq   rr   rs   r  )rr   zAsyncIterator[RunnerItemT]rt   r  r  r  r  )r=   r>   r?   r_   r  r  r   r   r”   rÇ   rƒ   rÖ   rÎ   r²   rÌ   rë   rÛ   r  r  s   @rC   r  r  –  s§   ø„ ð &*Ø7;ñ!ð >ð!ð  ð	!ð
 /ð!ð ð!ð #ð!ð 5ð!ð 
õ!óF0óð Øòó ó ðóRóh3ó6óó"ó
ó.÷74rB   r  c                  ó(   — e Zd Zeedd„«       «       Zy)ÚBetaAsyncToolRunnerc               óÄ   K  —  | j                   j                  j                  j                  di | j                  ¤| j
                  ¤Žƒ d {  –—† }|| _        |­–— y 7 Œ­wr  r  r  s     rC   r”   z#BetaAsyncToolRunner._handle_requestŸ  sP   è ø€ ð 9˜Ÿ™×)Ñ)×2Ñ2×8Ñ8ÑY¸4¿<¹<ÐYÈ4Ï=É=ÑY×YˆØ$ˆÔØŒð Zús   ‚A
A ÁAÁA N)rr   z1AsyncIterator[ParsedBetaMessage[ResponseFormatT]]©r=   r>   r?   r   r   r”   rA   rB   rC   r)  r)  ž  s   „ ØØòó ó ñrB   r)  c                  ó(   — e Zd Zeedd„«       «       Zy)ÚBetaAsyncStreamingToolRunnerc               ó(  K  —  | j                   j                  j                  j                  di | j                  ¤| j
                  ¤Ž4 ƒd {  –—† }|j                  | _        |­–— d d d «      ƒd {  –—†  y 7 Œ+7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­wr  r  r  s     rC   r”   z,BetaAsyncStreamingToolRunner._handle_request¨  sk   è ø€ ð 5�4—<‘<×$Ñ$×-Ñ-×4Ñ4ÑU°t·|±|ÐUÀtÇ}Á}×UÒUÐY_Ø!'×!9Ñ!9ˆDÔØ‹L÷ V×UÑUøÐUø×U×UÑUüsH   ‚ABÁA9ÁBÁA=Á(BÁ3A;Á4BÁ;BÁ=BÂBÂBÂBN)rr   z6AsyncIterator[BetaAsyncMessageStream[ResponseFormatT]]r+  rA   rB   rC   r-  r-  §  s   „ ØØòó ó ñrB   r-  )NÚ
__future__r   Úloggingr€   Úabcr   r   Útypingr   r   r   r	   r
   r   r   r   r   r   r   Ú
contextlibr   r   Útyping_extensionsr   r   ÚhttpxÚ_typesr   r   r   r   Ú_utilsr   r   Ú
types.betar   r   Ú_beta_functionsr   r    r!   r"   r#   r$   r%   Ú_stainless_helpersr'   Ú_beta_compaction_controlr(   r)   r*   Ústreaming._beta_messagesr+   r,   Útypes.beta.parsed_beta_messager-   r.   r/   Ú types.beta.message_create_paramsr0   Ú'types.beta.beta_tool_result_block_paramr1   r   r2   r3   r4   r6   Ú	getLoggerr=   r¸   r8   rF   rw   r	  r  r  r)  r-  rA   rB   rC   Ú<module>rA     s­  ðÝ "ã Û ß #÷÷ ÷ ñ ÷ ;ß 1ã ç 4Ó 4ß Cß 7÷÷ ñ õ 9ß bÑ bß Pß hÑ hÝ LÝ Oáß4ñ ØØ
Ø˜ÑÐ4°SÑ9Ð;RÐTpÐpñôÐ ñ �mÓ$€à€g×Ñ˜Ó!€ô5�Y eõ 5ô=�WÐ-¨Ð>Ñ?ô =ô@@.˜Ð(8¸/Ð(IÑJÈGÐT_ÐapÐTpÑLqÐsvô @.ôFÐ'Ð(9¸/Ñ(JÈOÐ([Ñ\ô ôÐ0Ð1BÀ?Ñ1SÐUdÐ1dÑeô ôE4ØÐ(¨/Ð9Ñ:¸GÀKÐQ`ÐD`Ñ<aÐcfôE4ôPÐ-Ð.?ÀÑ.PÐRaÐ.aÑbô ôÐ#6Ð7MÈoÑ7^Ð`oÐ7oÑ#põ rB   