§
    ÜŽ’jþp  ã                  ó¦  — 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& ddl'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD erddlEmFZFmGZG  edee-e	         e/e	         e1e2f         ¬¦  «        ZH ed¦  «        ZI ejJ        eK¦  «        ZL G d„ ded¬¦  «        ZM G d„ deeHe>f         ¦  «        ZN G d „ d!eNe.e>f         eeIe>f         e¦  «        ZO G d"„ d#eOe?e>         e>f         ¦  «        ZP G d$„ d%eOe;e>         e>f         ¦  «        ZQ G d&„ d'eNe0e>f         eeIe>f         e¦  «        ZR G d(„ d)eRe?e>         e>f         ¦  «        ZS G d*„ d+eRe<e>         e>f         ¦  «        ZTdS ),é    )Ú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)Úmerge_headersé   )Útool_registryÚtool_error_contentÚavailable_tool_names)Ú	ToolErrorÚBetaFunctionToolÚBetaRunnableToolÚBetaAsyncFunctionToolÚBetaAsyncRunnableToolÚBetaBuiltinFunctionToolÚBetaAsyncBuiltinFunctionToolé   )Úhelper_headerÚstainless_helper_header)ÚDEFAULT_THRESHOLDÚDEFAULT_SUMMARY_PROMPTÚCompactionControl)ÚBetaMessageStreamÚBetaAsyncMessageStream)ÚResponseFormatTÚParsedBetaMessageÚParsedBetaContentBlock)ÚParseMessageCreateParamsBase)ÚBetaToolResultBlockParam)Ú	AnthropicÚAsyncAnthropicÚAnyFunctionToolT)ÚboundÚRunnerItemTc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   d	S )
ÚRequestOptionszHeaders | NoneÚextra_headerszQuery | NoneÚextra_queryzBody | NoneÚ
extra_bodyz'float | httpx.Timeout | None | NotGivenÚtimeoutN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úNC:\Projects\DSCons\.venv\Lib\site-packages\anthropic\lib\tools\_beta_runner.pyr=   r=   <   sB   € € € € € € Ø!Ð!Ð!Ñ!ØÐÐÑØÐÐÑØ4Ð4Ð4Ñ4Ð4Ð4rG   r=   F)Útotalc                  ó>   — e Zd Zdddœdd„Zdd„Zdd„Zdd„Zdd„ZdS )ÚBaseToolRunnerN©Úmax_iterationsÚcompaction_controlÚparamsú-ParseMessageCreateParamsBase[ResponseFormatT]Úoptionsr=   ÚtoolsúIterable[AnyFunctionToolT]rM   ú
int | NonerN   úCompactionControl | NoneÚreturnÚNonec               ó�  — t          |¦  «        | _        i |¥dd„ |d         D ¦   «         i¥| _        t          | j                             ¦   «         |                     d¦  «        ¬¦  «        }|r-t          ||                     d¦  «        pi ¦  «        }i |¥d|i¥}|| _        d| _        d | _	        || _
        d| _        || _        d S )NÚmessagesc                ó   — g | ]}|‘ŒS rF   rF   ©Ú.0Úmessages     rH   ú
<listcomp>z+BaseToolRunner.__init__.<locals>.<listcomp>P   s   € ÐCÐCÐC W˜ÐCÐCÐCrG   )rR   rY   r>   Fr   )r    Ú_tools_by_nameÚ_paramsr,   ÚvaluesÚgetr   Ú_optionsÚ_messages_modifiedÚ_cached_tool_call_responseÚ_max_iterationsÚ_iteration_countÚ_compaction_control)ÚselfrO   rQ   rR   rM   rN   r+   Úmerged_headerss           rH   Ú__init__zBaseToolRunner.__init__D   sø   € õ ,¨EÑ2Ô2ˆÔðG
ØðG
àÐCÐC°°zÔ0BÐCÑCÔCðG
ð G
ˆŒõ 0ØÔ%×,Ò,Ñ.Ô.Ø—Z’Z 
Ñ+Ô+ð
ñ 
ô 
ˆð ð 	CÝ*¨=¸'¿+º+ÀoÑ:VÔ:VÐ:\ÐZ\Ñ]Ô]ˆNØB˜ÐB /°>ÐBÐBˆGØˆŒØ"'ˆÔØCGˆÔ'Ø-ˆÔØ !ˆÔØ#5ˆÔ Ð Ð rG   ú˜ParseMessageCreateParamsBase[ResponseFormatT] | Callable[[ParseMessageCreateParamsBase[ResponseFormatT]], ParseMessageCreateParamsBase[ResponseFormatT]]c                óR   — t          |¦  «        r || j        ¦  «        }|| _        dS )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)Úcallabler`   )ri   rO   s     rH   Úset_messages_paramsz"BaseToolRunner.set_messages_params`   s0   € õ �FÑÔð 	*Ø�V˜DœLÑ)Ô)ˆFØˆŒˆˆrG   rY   ú5BetaMessageParam | ParsedBetaMessage[ResponseFormatT]c                ól   ‡— d„ |D ¦   «         Šd| _         |                      ˆfd„¦  «         d| _        dS )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.
        c                óZ   — g | ](}t          |t          ¦  «        r|j        |j        d œn|‘Œ)S )©ÚroleÚcontent)Ú
isinstancer   rt   ru   r[   s     rH   r^   z2BaseToolRunner.append_messages.<locals>.<listcomp>u   sL   € ð 2
ð 2
ð 2
àõ CMÈWÕVaÑBbÔBbÐo�W”\¨g¬oÐ>Ð>Ð>Ðhoð2
ð 2
ð 2
rG   Tc                ó(   •— i | ¥dg | d         ¢‰¢i¥S )NrY   rF   )rO   Úmessage_paramss    €rH   ú<lambda>z0BaseToolRunner.append_messages.<locals>.<lambda>z   s)   ø€ Ð0n°6Ð0n¸:ÐGmÈÐPZÔI[ÐGmÐ^lÐGmÐ0nÐ0n€ rG   N)rd   ro   re   )ri   rY   rx   s     @rH   Úappend_messageszBaseToolRunner.append_messageso   sW   ø€ ð2
ð 2
à#ð2
ñ 2
ô 2
ˆð #'ˆÔØ× Ò Ð!nÐ!nÐ!nÐ!nÑoÔoÐoØ*.ˆÔ'Ð'Ð'rG   Úboolc                ó8   — | j         �| j        | j         k    rdS dS )NTF)rf   rg   ©ri   s    rH   Ú_should_stopzBaseToolRunner._should_stop}   s%   € ØÔÐ+°Ô0EÈÔI]Ò0]Ð0]Ø�4ØˆurG   úset[str]c                óB   — t          | j        d         | j        ¦  «        S )am  The tool names currently available, after applying any
        mid-conversation ``tool_removal`` / ``tool_addition`` blocks.

        Removal is only a hint to the model, which can still emit a ``tool_use``
        for a withdrawn tool; a name absent from this set routes that call down
        the same unknown-tool path as a tool that was never declared.
        rY   )r"   r`   r_   r}   s    rH   Ú_available_tool_namesz$BaseToolRunner._available_tool_names‚   s   € õ $ D¤L°Ô$<¸dÔ>QÑRÔRÐRrG   )rO   rP   rQ   r=   rR   rS   rM   rT   rN   rU   rV   rW   )rO   rl   rV   rW   )rY   rp   rV   rW   ©rV   r{   )rV   r   )rB   rC   rD   rk   ro   rz   r~   r�   rF   rG   rH   rK   rK   C   s�   € € € € € ð &*Ø7;ð6ð 6ð 6ð 6ð 6ð 6ð8ð ð ð ð/ð /ð /ð /ðð ð ð ð
Sð Sð Sð Sð Sð SrG   rK   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 ),ÚBaseSyncToolRunnerNrL   rO   rP   rQ   r=   rR   úIterable[BetaRunnableTool]Úclientr7   rM   rT   rN   rU   rV   rW   c               ó  •— t          ¦   «                              |||||¬¦  «         || _        |�1|                     d¦  «        rt	          j        dt          d¬¦  «         |                      ¦   «         | _        d | _	        d S ©N)rO   rQ   rR   rM   rN   Ú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©
Úsuperrk   Ú_clientrb   ÚwarningsÚwarnÚDeprecationWarningÚ__run__Ú	_iteratorÚ_last_message©ri   rO   rQ   rR   r†   rM   rN   Ú	__class__s          €rH   rk   zBaseSyncToolRunner.__init__Ž   s£   ø€ õ 	‰Œ×ÒØØØØ)Ø1ð 	ñ 	
ô 	
ð 	
ð ˆŒàÐ)Ð.@×.DÒ.DÀYÑ.OÔ.OÐ)ÝŒMð}õ #Øðñ ô ð ð Ÿš™œˆŒð ð 	ÔÐÐrG   r;   c                ó4   — | j                              ¦   «         S ©N)r“   Ú__next__r}   s    rH   r™   zBaseSyncToolRunner.__next__¯   s   € ØŒ~×&Ò&Ñ(Ô(Ð(rG   úIterator[RunnerItemT]c              #  ó&   K  — | j         D ]}|V — Œd S r˜   ©r“   ©ri   Úitems     rH   Ú__iter__zBaseSyncToolRunner.__iter__²   s,   è è € Ø”Nð 	ð 	ˆDØˆJˆJˆJˆJð	ð 	rG   c              #  ó"   K  — t          ¦   «         ‚r˜   ©ÚNotImplementedErrorr}   s    rH   Ú_handle_requestz"BaseSyncToolRunner._handle_request¶   ó   è è € õ "Ñ#Ô#Ð#rG   r{   c                óL  ‡	— | j         �| j         d         sdS |                      ¦   «         }d}|�9|j        j        |j        j        pdz   |j        j        pdz   }||j        j        z   }| j                              dt          ¦  «        }||k     rdS t           
                    d|› d|› d�¦  «         | j                              d	| j        d	         ¦  «        }t          | j        d
         ¦  «        }|d         d         dk    r:d„ |d         d         D ¦   «         }|r||d         d<   n|                     ¦   «          g |¢t          d| j                              dt          ¦  «        ¬¦  «        ‘}| j        j        j                             ||| j        d         t)          d¦  «        ¬¦  «        }t           
                    d|j        j        › �¦  «         t          |j        ¦  «        d         Š	‰	j        dk    rt/          d¦  «        ‚|                      ˆ	fd„¦  «         dS )ú’
        Check token usage and compact messages if threshold exceeded.
        Returns True if compaction was performed, False otherwise.
        Nr‰   Fr   Úcontext_token_thresholdúToken usage ú has exceeded the threshold of ú. Performing compaction.ÚmodelrY   éÿÿÿÿrt   Ú	assistantc                ón   — g | ]2}t          |t          ¦  «        r|                     d ¦  «        dk    ¯0|‘Œ3S ©ÚtypeÚtool_use©rv   Údictrb   ©r\   Úblocks     rH   r^   z9BaseSyncToolRunner._check_and_compact.<locals>.<listcomp>Ý   óM   € ð ð ð àÝ˜e¥TÑ*Ô*ðð 05¯yªy¸Ñ/@Ô/@ÀJÒ/NÐ/Nð à/NÐ/NÐ/NrG   ru   ÚuserÚsummary_promptrs   Ú
max_tokensÚ
compaction©r«   rY   r¹   r>   ú&Compaction complete. New token usage: Útextú1Compaction response content is not of type 'text'c                ó.   •— i | ¥ddd‰j         dœgdœgi¥S ©NrY   r·   r½   )r°   r½   rs   ©r½   ©rO   Úfirst_contents    €rH   ry   z7BaseSyncToolRunner._check_and_compact.<locals>.<lambda>ÿ   óK   ø€ ð Øðàà &ð )/Ø(5Ô(:ðð ð$ðð ð
ðð € rG   T©rh   Ú_get_last_messageÚusageÚinput_tokensÚcache_creation_input_tokensÚcache_read_input_tokensÚoutput_tokensrb   r-   ÚlogÚinfor`   ÚlistÚpopr   r.   rŽ   ÚbetarY   Úcreater+   ru   r°   Ú
ValueErrorro   ©
ri   r]   Útokens_usedÚtotal_input_tokensÚ	thresholdr«   rY   Únon_tool_blocksÚresponserÃ   s
            @rH   Ú_check_and_compactz%BaseSyncToolRunner._check_and_compact¼   sn  ø€ ð
 Ô#Ð+°4Ô3KÈIÔ3VÐ+Ø�5à×(Ò(Ñ*Ô*ˆØˆØÐà”Ô*Ø”=Ô<ÐAÀñCà”=Ô8Ð=¸Añ?ð ð
 -¨w¬}Ô/JÑJˆKàÔ,×0Ò0Ð1JÕL]Ñ^Ô^ˆ	à˜Ò"Ð"Ø�5õ 	�ŠÐo ÐoÐoÈIÐoÐoÐoÑpÔpÐpàÔ(×,Ò,¨W°d´lÀ7Ô6KÑLÔLˆå˜œ ZÔ0Ñ1Ô1ˆà�BŒ<˜Ô ;Ò.Ð.ðð à% bœ\¨)Ô4ðñ ô ˆOð ð Ø*9�˜”˜YÑ'Ð'à—’‘”�ð
Øð
åØØÔ0×4Ò4Ð5EÕG]Ñ^Ô^ðñ ô ð
ˆð ”<Ô$Ô-×4Ò4ØØØ”| LÔ1Ý'¨Ñ5Ô5ð	 5ñ 
ô 
ˆõ 	�ŠÐX¸(¼.Ô:VÐXÐXÑYÔYÐYå˜XÔ-Ñ.Ô.¨qÔ1ˆàÔ Ò'Ð'ÝÐPÑQÔQÐQà× Ò ðð ð ð ñ	
ô 	
ð 	
ð  ˆtrG   c              #  ó¤  K  — |                       ¦   «         �s8|                      ¦   «         5 }|V — |                      ¦   «         }|€J ‚|                      ¦   «         }|�|j        �|j        j        | j        d<   d d d ¦  «         n# 1 swxY w Y   | xj        dz  c_        |j        dk    rt           
                    d¦  «         d S |                      ¦   «         sO|                      ¦   «         }|€t           
                    d¦  «         d S | j        s|                      ||¦  «         d| _        d | _        |                       ¦   «         �¯6d S d S ©NÚ	containerr   Úrefusalz9Turn ended with a refusal, exiting from tool runner loop.z;Tool call was not requested, exiting from tool runner loop.F©r~   r£   rÆ   Ú_get_last_assistant_messagerÜ   Úidr`   rg   Ústop_reasonrÌ   ÚdebugrÙ   Úgenerate_tool_call_responserd   rz   re   ©ri   rž   r]   Úlast_assistant_messagerØ   s        rH   r’   zBaseSyncToolRunner.__run__  sÇ  è è € Ø×#Ò#Ñ%Ô%ñ 	3Ø×%Ò%Ñ'Ô'ð T¨4Ø�
�
�
Ø×0Ò0Ñ2Ô2�ØÐ*Ð*Ð*ð *.×)IÒ)IÑ)KÔ)KÐ&Ø)Ð5Ð:PÔ:ZÐ:fØ0FÔ0PÔ0S�D”L Ñ-ðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tð Ð!Ô! QÑ&Ð!Ô!ð
 Ô" iÒ/Ð/Ý—	’	ÐUÑVÔVÐVØ�ð ×*Ò*Ñ,Ô,ð <Ø×;Ò;Ñ=Ô=�ØÐ#Ý—I’IÐ[Ñ\Ô\Ð\Ø�FàÔ.ð <Ø×(Ò(¨°(Ñ;Ô;Ð;à&+ˆDÔ#Ø.2ˆDÔ+ð? ×#Ò#Ñ%Ô%ñ 	3ð 	3ð 	3ð 	3ð 	3s   ¬ABÂB
ÂB
ú"ParsedBetaMessage[ResponseFormatT]c                óT   — t          | ¦  «         |                      ¦   «         }|€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Æ   ©ri   Úlast_messages     rH   Ú
until_donezBaseSyncToolRunner.until_done2  s5   € õ
 	˜dÑ#Ô#Ð#Ø×-Ò-Ñ/Ô/ˆØÐ'Ð'Ð'ØÐrG   úBetaMessageParam | Nonec                óŒ   — | j         �!t                               d¦  «         | j         S |                      ¦   «         }|| _         |S ©a  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.
        Nz$Returning cached tool call response.©re   rÌ   râ   Ú_generate_tool_call_response©ri   rØ   s     rH   rã   z.BaseSyncToolRunner.generate_tool_call_response<  sG   € ð Ô*Ð6Ý�IŠIÐ<Ñ=Ô=Ð=ØÔ2Ð2Ø×4Ò4Ñ6Ô6ˆØ*2ˆÔ'ØˆrG   c           
     ó–  — |                       ¦   «         }|sd S d„ |D ¦   «         }|sd S g }|                      ¦   «         }|D �]ƒ}|j        |v r| j                             |j        ¦  «        nd }|€ut          j        d|j        › dt          | j                             ¦   «         ¦  «        › d�t          d¬¦  «         | 
                    d|j        d|j        › d	�d
dœ¦  «         Œ¤	 |                     |j        ¦  «        }| 
                    d|j        |dœ¦  «         ŒÞ# t          $ r7}| 
                    d|j        t          |¦  «        d
dœ¦  «         Y d }~�Œd }~wt           $ r[}t"                               d|j        › �|¬¦  «         | 
                    d|j        t          |¦  «        d
dœ¦  «         Y d }~�Œ}d }~ww xY wd|dœS )Nc                ó(   — g | ]}|j         d k    ¯|‘ŒS ©r±   ©r°   r´   s     rH   r^   zCBaseSyncToolRunner._generate_tool_call_response.<locals>.<listcomp>O  ó$   € ÐRÐRÐR U¸¼ÀzÒ9QÐ9Q˜5Ð9QÐ9QÐ9QrG   ú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_idru   Úis_error©r°   rý   ru   ú#Error occurred while calling tool: ©Úexc_infor·   rs   ©Ú#_get_last_assistant_message_contentr�   Únamer_   rb   r�   r�   rÎ   ÚkeysÚUserWarningÚappendrà   ÚcallÚinputr#   r!   Ú	ExceptionrÌ   Ú	exception©	ri   ru   Útool_use_blocksÚresultsÚ	availabler±   ÚtoolÚresultÚexcs	            rH   rð   z/BaseSyncToolRunner._generate_tool_call_responseJ  sz  € Ø×:Ò:Ñ<Ô<ˆØð 	Ø�4àRÐR¨gÐRÑRÔRˆØð 	Ø�4à24ˆØ×.Ò.Ñ0Ô0ˆ	à'ð *	ñ *	ˆHØ=E¼]ÈiÐ=WÐ=W�4Ô&×*Ò*¨8¬=Ñ9Ô9Ð9Ð]aˆDØˆ|Ý”ðn˜Xœ]ð nð nÝ(,¨TÔ-@×-EÒ-EÑ-GÔ-GÑ(HÔ(Hðnð nð nõ  Ø ðñ ô ð ð —’à -Ø'/¤{Ø#M°8´=Ð#MÐ#MÐ#MØ$(ð	ð ñô ð ð ðØŸš 8¤>Ñ2Ô2�Ø—’¨ÀhÄkÐ^dÐeÐeÑfÔfÐfÐføÝð ð ð Ø—’à -Ø'/¤{Ý#5°cÑ#:Ô#:Ø$(ð	ð ñô ð ð ð ð ð ñ øøøøõ ð 	ð 	ð 	Ý—’ÐOÀDÄIÐOÐOÐZ]�Ñ^Ô^Ð^Ø—’à -Ø'/¤{Ý#5°cÑ#:Ô#:Ø$(ð	ð ñô ð ð ð ð ð ñ øøøøð	øøøð ¨7Ð3Ð3Ð3s%   Ã&8DÄ
GÄ),EÅGÅ(AF>Æ>Gú)ParsedBetaMessage[ResponseFormatT] | Nonec                ó`   — t          | j        ¦  «        r|                      ¦   «         S | j        S r˜   ©rn   r”   r}   s    rH   rÆ   z$BaseSyncToolRunner._get_last_message„  s0   € Ý�DÔ&Ñ'Ô'ð 	(Ø×%Ò%Ñ'Ô'Ð'ØÔ!Ð!rG   c                óZ   — |                       ¦   «         }|�|j        dk    s|j        sd S |S ©Nr­   ©rÆ   rt   ru   ré   s     rH   rß   z.BaseSyncToolRunner._get_last_assistant_message‰  s9   € Ø×-Ò-Ñ/Ô/ˆØÐ <Ô#4¸Ò#CÐ#CÈ<ÔK_Ð#CØ�4àÐrG   ú4list[ParsedBetaContentBlock[ResponseFormatT]] | Nonec                ó@   — |                       ¦   «         }|€d S |j        S r˜   ©rß   ru   ©ri   rå   s     rH   r  z6BaseSyncToolRunner._get_last_assistant_message_content�  s(   € Ø!%×!AÒ!AÑ!CÔ!CÐØ!Ð)Ø�4à%Ô-Ð-rG   )rO   rP   rQ   r=   rR   r…   r†   r7   rM   rT   rN   rU   rV   rW   ©rV   r;   )rV   rš   r‚   ©rV   ræ   ©rV   rì   ©rV   r  ©rV   r  )rB   rC   rD   rk   r™   rŸ   r   r   r£   rÙ   r’   rë   rã   rð   rÆ   rß   r  Ú__classcell__©r–   s   @rH   r„   r„   �   sI  ø€ € € € € ð &*Ø7;ðð ð ð ð ð ð ð ðB)ð )ð )ð )ðð ð ð ð Øðð ð ñ „^ñ „^ððRð Rð Rð Rðh 3ð  3ð  3ð  3ðDð ð ð ðð ð ð ð84ð 84ð 84ð 84ðt"ð "ð "ð "ð
ð ð ð ð.ð .ð .ð .ð .ð .ð .ð .rG   r„   c                  ó6   — e Zd Zeedd„¦   «         ¦   «         ZdS )ÚBetaToolRunnerrV   ú,Iterator[ParsedBetaMessage[ResponseFormatT]]c              #  óp   K  —  | j         j        j        j        di | j        ¤| j        ¤Ž}|| _        |V — d S ©NrF   ©rŽ   rÐ   rY   Úparser`   rc   r”   ©ri   r]   s     rH   r£   zBetaToolRunner._handle_request™  sF   è è € ð 3�$”,Ô#Ô,Ô2ÐSÐS°T´\ÐSÀTÄ]ÐSÐSˆØ$ˆÔØˆˆˆˆˆrG   N)rV   r'  ©rB   rC   rD   r   r   r£   rF   rG   rH   r&  r&  ˜  s<   € € € € € ØØðð ð ñ „^ñ „Xðð ð rG   r&  c                  ó6   — e Zd Zeedd„¦   «         ¦   «         ZdS )ÚBetaStreamingToolRunnerrV   ú,Iterator[BetaMessageStream[ResponseFormatT]]c              #  ó¬   K  —  | j         j        j        j        di | j        ¤| j        ¤Ž5 }|j        | _        |V — d d d ¦  «         d S # 1 swxY w Y   d S r)  ©rŽ   rÐ   rY   Ústreamr`   rc   Úget_final_messager”   ©ri   r3  s     rH   r£   z'BetaStreamingToolRunner._handle_request¢  s¨   è è € ð /ˆTŒ\ÔÔ'Ô.ÐOÐO°´ÐOÀÄÐOÐOð 	ÐSYØ!'Ô!9ˆDÔØˆLˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   «A	Á	AÁAN)rV   r0  r-  rF   rG   rH   r/  r/  ¡  s<   € € € € € ØØðð ð ñ „^ñ „Xðð ð rG   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 ),ÚBaseAsyncToolRunnerNrL   rO   rP   rQ   r=   rR   úIterable[BetaAsyncRunnableTool]r†   r8   rM   rT   rN   rU   rV   rW   c               ó  •— t          ¦   «                              |||||¬¦  «         || _        |�1|                     d¦  «        rt	          j        dt          d¬¦  «         |                      ¦   «         | _        d | _	        d S rˆ   rŒ   r•   s          €rH   rk   zBaseAsyncToolRunner.__init__­  s£   ø€ õ 	‰Œ×ÒØØØØ)Ø1ð 	ñ 	
ô 	
ð 	
ð ˆŒàÐ)Ð.@×.DÒ.DÀYÑ.OÔ.OÐ)ÝŒMð}õ #Øðñ ô ð ð Ÿš™œˆŒð
 ð	 	ÔÐÐrG   r;   c              ƒ  óD   K  — | j                              ¦   «         ƒ d {V —†S r˜   )r“   Ú	__anext__r}   s    rH   r;  zBaseAsyncToolRunner.__anext__Ð  s,   è è € Ø”^×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/rG   úAsyncIterator[RunnerItemT]c               ó4   K  — | j         2 3 d {V —†}|W V — Œ6 d S r˜   rœ   r�   s     rH   Ú	__aiter__zBaseAsyncToolRunner.__aiter__Ó  sF   è è € Øœ.ð 	ð 	ð 	ð 	ð 	ð 	ð 	�$ØˆJˆJˆJˆJˆJð )˜.˜.s   Šc               ó"   K  — t          ¦   «         ‚r˜   r¡   r}   s    rH   r£   z#BaseAsyncToolRunner._handle_request×  r¤   rG   r{   c              ƒ  óh  ‡	K  — | j         �| j         d         sdS |                      ¦   «         ƒ d{V —†}d}|�9|j        j        |j        j        pdz   |j        j        pdz   }||j        j        z   }| j                              dt          ¦  «        }||k     rdS t           
                    d|› d|› d�¦  «         | j                              d	| j        d	         ¦  «        }t          | j        d
         ¦  «        }|d         d         dk    r:d„ |d         d         D ¦   «         }|r||d         d<   n|                     ¦   «          g |¢t          d| j                              dt          ¦  «        ¬¦  «        ‘}| j        j        j                             ||| j        d         t)          d¦  «        ¬¦  «        ƒ d{V —†}t           
                    d|j        j        › �¦  «         t          |j        ¦  «        d         Š	‰	j        dk    rt/          d¦  «        ‚|                      ˆ	fd„¦  «         dS )r¦   Nr‰   Fr   r§   r¨   r©   rª   r«   rY   r¬   rt   r­   c                ón   — g | ]2}t          |t          ¦  «        r|                     d ¦  «        dk    ¯0|‘Œ3S r¯   r²   r´   s     rH   r^   z:BaseAsyncToolRunner._check_and_compact.<locals>.<listcomp>þ  r¶   rG   ru   r·   r¸   rs   r¹   rº   r»   r¼   r½   r¾   c                ó.   •— i | ¥ddd‰j         dœgdœgi¥S rÀ   rÁ   rÂ   s    €rH   ry   z8BaseAsyncToolRunner._check_and_compact.<locals>.<lambda>   rÄ   rG   TrÅ   rÓ   s
            @rH   rÙ   z&BaseAsyncToolRunner._check_and_compactÝ  s¢  øè è € ð
 Ô#Ð+°4Ô3KÈIÔ3VÐ+Ø�5à×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØˆØÐà”Ô*Ø”=Ô<ÐAÀñCà”=Ô8Ð=¸Añ?ð ð
 -¨w¬}Ô/JÑJˆKàÔ,×0Ò0Ð1JÕL]Ñ^Ô^ˆ	à˜Ò"Ð"Ø�5õ 	�ŠÐo ÐoÐoÈIÐoÐoÐoÑpÔpÐpàÔ(×,Ò,¨W°d´lÀ7Ô6KÑLÔLˆå˜œ ZÔ0Ñ1Ô1ˆà�BŒ<˜Ô ;Ò.Ð.ðð à% bœ\¨)Ô4ðñ ô ˆOð ð Ø*9�˜”˜YÑ'Ð'à—’‘”�ð
Øð
åØØÔ0×4Ò4Ð5EÕG]Ñ^Ô^ðñ ô ð
ˆð œÔ*Ô3×:Ò:ØØØ”| LÔ1Ý'¨Ñ5Ô5ð	 ;ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	�ŠÐX¸(¼.Ô:VÐXÐXÑYÔYÐYå˜XÔ-Ñ.Ô.¨qÔ1ˆàÔ Ò'Ð'ÝÐPÑQÔQÐQà× Ò ðð ð ð ñ	
ô 	
ð 	
ð  ˆtrG   c               óü  K  — |                       ¦   «         �sd|                      ¦   «         4 ƒd {V —†}|W V — |                      ¦   «         ƒ d {V —†}|€J ‚|                      ¦   «         ƒ d {V —†}|�|j        �|j        j        | j        d<   	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | xj        dz  c_        |j        dk    rt           
                    d¦  «         d S |                      ¦   «         ƒ d {V —†sU|                      ¦   «         ƒ d {V —†}|€t           
                    d¦  «         d S | j        s|                      ||¦  «         d| _        d | _        |                       ¦   «         �¯bd S d S rÛ   rÞ   rä   s        rH   r’   zBaseAsyncToolRunner.__run__1  s€  è è € Ø×#Ò#Ñ%Ô%ñ 	3Ø×+Ò+Ñ-Ô-ð Tð Tð Tð Tð Tð Tð T°Ø�
�
�
�
Ø $× 6Ò 6Ñ 8Ô 8Ð8Ð8Ð8Ð8Ð8Ð8�ØÐ*Ð*Ð*ð 04×/OÒ/OÑ/QÔ/QÐ)QÐ)QÐ)QÐ)QÐ)QÐ)QÐ&Ø)Ð5Ð:PÔ:ZÐ:fØ0FÔ0PÔ0S�D”L Ñ-ÐSðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tð Ð!Ô! QÑ&Ð!Ô!ð
 Ô" iÒ/Ð/Ý—	’	ÐUÑVÔVÐVØ�ð ×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ð <Ø!%×!AÒ!AÑ!CÔ!CÐCÐCÐCÐCÐCÐC�ØÐ#Ý—I’IÐ[Ñ\Ô\Ð\Ø�FàÔ.ð <Ø×(Ò(¨°(Ñ;Ô;Ð;à&+ˆDÔ#Ø.2ˆDÔ+ð? ×#Ò#Ñ%Ô%ñ 	3ð 	3ð 	3ð 	3ð 	3s   ²AB Â 
B*Â-B*ræ   c              ƒ  óp   K  — t          | ¦  «        ƒ d{V —† |                      ¦   «         ƒ d{V —†}|€J ‚|S )rè   N)r   rÆ   ré   s     rH   rë   zBaseAsyncToolRunner.until_doneS  s]   è è € õ
 % TÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø!×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆØÐ'Ð'Ð'ØÐrG   rì   c              ƒ  óœ   K  — | j         �!t                               d¦  «         | j         S |                      ¦   «         ƒ d{V —†}|| _         |S rî   rï   rñ   s     rH   rã   z/BaseAsyncToolRunner.generate_tool_call_response]  s]   è è € ð Ô*Ð6Ý�IŠIÐ<Ñ=Ô=Ð=ØÔ2Ð2à×:Ò:Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆØ*2ˆÔ'ØˆrG   r  c              ƒ  óp   K  — t          | j        ¦  «        r|                      ¦   «         ƒ d {V —†S | j        S r˜   r  r}   s    rH   rÆ   z%BaseAsyncToolRunner._get_last_messagel  sF   è è € Ý�DÔ&Ñ'Ô'ð 	.Ø×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ!Ð!rG   c              ƒ  ój   K  — |                       ¦   «         ƒ d {V —†}|�|j        dk    s|j        sd S |S r  r  ré   s     rH   rß   z/BaseAsyncToolRunner._get_last_assistant_messageq  sO   è è € Ø!×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆØÐ <Ô#4¸Ò#CÐ#CÈ<ÔK_Ð#CØ�4àÐrG   r  c              ƒ  óP   K  — |                       ¦   «         ƒ d {V —†}|€d S |j        S r˜   r  r  s     rH   r  z7BaseAsyncToolRunner._get_last_assistant_message_contentx  s>   è è € Ø'+×'GÒ'GÑ'IÔ'IÐ!IÐ!IÐ!IÐ!IÐ!IÐ!IÐØ!Ð)Ø�4à%Ô-Ð-rG   c           
   ƒ  ó²  K  — |                       ¦   «         ƒ d {V —†}|sd S d„ |D ¦   «         }|sd S g }|                      ¦   «         }|D �]‰}|j        |v r| j                             |j        ¦  «        nd }|€ut          j        d|j        › dt          | j                             ¦   «         ¦  «        › d�t          d¬¦  «         | 
                    d|j        d|j        › d	�d
dœ¦  «         Œ¤	 |                     |j        ¦  «        ƒ d {V —†}| 
                    d|j        |dœ¦  «         Œä# t          $ r7}| 
                    d|j        t          |¦  «        d
dœ¦  «         Y d }~�Œ d }~wt           $ r[}t"                               d|j        › �|¬¦  «         | 
                    d|j        t          |¦  «        d
dœ¦  «         Y d }~�Œƒd }~ww xY wd|dœS )Nc                ó(   — g | ]}|j         d k    ¯|‘ŒS rô   rõ   r´   s     rH   r^   zDBaseAsyncToolRunner._generate_tool_call_response.<locals>.<listcomp>„  rö   rG   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·   rs   r  r  s	            rH   rð   z0BaseAsyncToolRunner._generate_tool_call_response  s¢  è è € Ø×@Ò@ÑBÔBÐBÐBÐBÐBÐBÐBˆØð 	Ø�4àRÐR¨gÐRÑRÔRˆØð 	Ø�4à24ˆØ×.Ò.Ñ0Ô0ˆ	à'ð *	ñ *	ˆHØ=E¼]ÈiÐ=WÐ=W�4Ô&×*Ò*¨8¬=Ñ9Ô9Ð9Ð]aˆDØˆ|Ý”ðz˜Xœ]ð zð zÝ(,¨TÔ-@×-EÒ-EÑ-GÔ-GÑ(HÔ(Hðzð zð zõ  Ø ðñ ô ð ð —’à -Ø'/¤{Ø#M°8´=Ð#MÐ#MÐ#MØ$(ð	ð ñô ð ð ðØ#Ÿyšy¨¬Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8�Ø—’¨ÀhÄkÐ^dÐeÐeÑfÔfÐfÐføÝð ð ð Ø—’à -Ø'/¤{Ý#5°cÑ#:Ô#:Ø$(ð	ð ñô ð ð ð ð ð ñ øøøøõ ð 	ð 	ð 	Ý—’ÐOÀDÄIÐOÐOÐZ]�Ñ^Ô^Ð^Ø—’à -Ø'/¤{Ý#5°cÑ#:Ô#:Ø$(ð	ð ñô ð ð ð ð ð ñ øøøøð	øøøð ¨7Ð3Ð3Ð3s%   Ã.>D-Ä-
GÄ7,E)Å)GÅ6AGÇG)rO   rP   rQ   r=   rR   r8  r†   r8   rM   rT   rN   rU   rV   rW   r  )rV   r<  r‚   r  r   r!  r"  )rB   rC   rD   rk   r;  r>  r   r   r£   rÙ   r’   rë   rã   rÆ   rß   r  rð   r#  r$  s   @rH   r7  r7  ª  sI  ø€ € € € € ð &*Ø7;ð!ð !ð !ð !ð !ð !ð !ð !ðF0ð 0ð 0ð 0ðð ð ð ð Øðð ð ñ Ôñ „^ððRð Rð Rð Rðh 3ð  3ð  3ð  3ðDð ð ð ðð ð ð ð"ð "ð "ð "ð
ð ð ð ð.ð .ð .ð .ð84ð 84ð 84ð 84ð 84ð 84ð 84ð 84rG   r7  c                  ó6   — e Zd Zeedd„¦   «         ¦   «         ZdS )ÚBetaAsyncToolRunnerrV   ú1AsyncIterator[ParsedBetaMessage[ResponseFormatT]]c               ó~   K  —  | j         j        j        j        di | j        ¤| j        ¤Žƒ d {V —†}|| _        |W V — d S r)  r*  r,  s     rH   r£   z#BetaAsyncToolRunner._handle_request»  sZ   è è € ð 9˜œÔ)Ô2Ô8ÐYÐY¸4¼<ÐYÈ4Ì=ÐYÐYÐYÐYÐYÐYÐYÐYˆØ$ˆÔØˆˆˆˆˆˆrG   N)rV   rM  ©rB   rC   rD   r   r   r£   rF   rG   rH   rL  rL  º  s=   € € € € € ØØðð ð ñ Ôñ „Xðð ð rG   rL  c                  ó6   — e Zd Zeedd„¦   «         ¦   «         ZdS )ÚBetaAsyncStreamingToolRunnerrV   ú6AsyncIterator[BetaAsyncMessageStream[ResponseFormatT]]c               óÒ   K  —  | j         j        j        j        di | j        ¤| j        ¤Ž4 ƒd {V —†}|j        | _        |W V — d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S r)  r2  r5  s     rH   r£   z,BetaAsyncStreamingToolRunner._handle_requestÄ  s  è è € ð 5�4”<Ô$Ô-Ô4ÐUÐU°t´|ÐUÀtÄ}ÐUÐUð 	ð 	ð 	ð 	ð 	ð 	ð 	ÐY_Ø!'Ô!9ˆDÔØˆLˆLˆLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ±AÁ
A Á#A N)rV   rR  rO  rF   rG   rH   rQ  rQ  Ã  s=   € € € € € ØØðð ð ñ Ôñ „Xðð ð rG   rQ  )UÚ
__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   Ú_base_clientr   Ú_tool_dispatchr    r!   r"   Ú_beta_functionsr#   r$   r%   r&   r'   r(   r)   Ú_stainless_helpersr+   r,   Ú_beta_compaction_controlr-   r.   r/   Ústreaming._beta_messagesr0   r1   Útypes.beta.parsed_beta_messager2   r3   r4   Ú types.beta.message_create_paramsr5   Ú'types.beta.beta_tool_result_block_paramr6   rŽ   r7   r8   r9   r;   Ú	getLoggerrB   rÌ   r=   rK   r„   r&  r/  r7  rL  rQ  rF   rG   rH   ú<module>rh     sý  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à €€€à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø )Ð )Ð )Ð )Ð )Ð )Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bØ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hØ LÐ LÐ LÐ LÐ LÐ LØ OÐ OÐ OÐ OÐ OÐ Oàð 5Ø4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð �7ØØ
Ø˜ÔÐ4°SÔ9Ð;RÐTpÐpôðñ ô Ð ð ˆg�mÑ$Ô$€à€gÔ˜Ñ!Ô!€ð5ð 5ð 5ð 5ð 5�Y eð 5ñ 5ô 5ð 5ðGSð GSð GSð GSð GS�WÐ-¨Ð>Ô?ñ GSô GSð GSðTH.ð H.ð H.ð H.ð H.˜Ð(8¸/Ð(IÔJÈGÐT_ÐapÐTpÔLqÐsvñ H.ô H.ð H.ðVð ð ð ð Ð'Ð(9¸/Ô(JÈOÐ([Ô\ñ ô ð ðð ð ð ð Ð0Ð1BÀ?Ô1SÐUdÐ1dÔeñ ô ð ðM4ð M4ð M4ð M4ð M4ØÐ(¨/Ð9Ô:¸GÀKÐQ`ÐD`Ô<aÐcfñM4ô M4ð M4ð`ð ð ð ð Ð-Ð.?ÀÔ.PÐRaÐ.aÔbñ ô ð ðð ð ð ð Ð#6Ð7MÈoÔ7^Ð`oÐ7oÔ#pñ ô ð ð ð rG   