
    ̺iic                       S SK Jr  S SKrS SKrS SKJrJr  S SKJrJ	r	J
r
JrJrJrJrJrJrJrJr  S SKJrJr  S SKJrJr  S SKrSSKJrJrJrJr  SS	KJ r J!r!  SS
K"J#r#J$r$  SSK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.  SSK/J0r0J1r1J2r2  SSK3J4r4J5r5  SSK6J7r7J8r8J9r9  SSK:J;r;  SSK<J=r=  \(       a  SSK>J?r?J@r@  \" S\\'\	   \)\	   \+\,4   S9rA\" S5      rB\R                  " \D5      rE " S S\SS9rF " S S\\A\74   5      rG " S S\G\(\74   \\B\74   \5      rH " S  S!\H\8\7   \74   5      rI " S" S#\H\4\7   \74   5      rJ " S$ S%\G\*\74   \\B\74   \5      rK " S& S'\K\8\7   \74   5      rL " S( S)\K\5\7   \74   5      rMg)*    )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                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
rg)RequestOptions:   zHeaders | Noneextra_headerszQuery | Noneextra_queryzBody | None
extra_bodyz'float | httpx.Timeout | None | NotGiventimeout N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r>       _/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/anthropic/lib/tools/_beta_runner.pyr8   r8   :   s    !!44rE   r8   F)totalc                  d    \ rS rSrSSS.           S	S jjr    S
S jrSS jrSS jrSrg)BaseToolRunnerA   Nmax_iterationscompaction_controlc                  U Vs0 s H  ofR                   U_M     snU l        0 UESUS    Vs/ s H  owPM     sn0EU l        [        U R                  R	                  5       UR                  S5      S9nU(       a&  0 UEUR                  S5      =(       d    0 En	0 UESU	0EnX l        SU l        S U l        X@l	        SU l
        XPl        g s  snf s  snf )Nmessages)toolsrO   r:   Fr   )name_tools_by_name_paramsr'   valuesget_options_messages_modified_cached_tool_call_response_max_iterations_iteration_count_compaction_control)
selfparamsoptionsrP   rL   rM   toolmessagehelper_headermerged_headerss
             rF   __init__BaseToolRunner.__init__B   s     <AA54yy$5AG
G
z0BC0BW0BCG
 0%%,,.ZZ
+
 VV'++o2N2TRTVNBB/>BG"'CG'- !#5 # B Ds
   C	Cc                T    [        U5      (       a  U" U R                  5      nXl        g)z
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)callablerS   )r\   r]   s     rF   set_messages_params"BaseToolRunner.set_messages_params^   s"     FDLL)FrE   c                   ^ U Vs/ s H3  n[        U[        5      (       a  UR                  UR                  S.OUPM5     snmSU l        U R                  U4S j5        SU l        gs  snf )zAdd 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                "   > 0 U ES/ U S   QTQ0E$ )NrO   r>   )r]   message_paramss    rF   <lambda>0BaseToolRunner.append_messages.<locals>.<lambda>y   s"    YfYj2XF:4F2X2XYrE   N)
isinstancer   rk   rl   rW   rg   rX   )r\   rO   r`   rn   s      @rF   append_messagesBaseToolRunner.append_messagesm   sn     $2
# CMWVaBbBbW\\goo>hoo#2
 #'  Y	
 +/'2
s   :A'c                T    U R                   b  U R                  U R                   :  a  gg)NTF)rY   rZ   r\   s    rF   _should_stopBaseToolRunner._should_stop}   s'    +0E0EI]I]0]rE   )rX   r[   rZ   rY   rW   rV   rS   rR   )r]   -ParseMessageCreateParamsBase[ResponseFormatT]r^   r8   rP   zIterable[AnyFunctionToolT]rL   
int | NonerM   CompactionControl | NonereturnNone)r]   zParseMessageCreateParamsBase[ResponseFormatT] | Callable[[ParseMessageCreateParamsBase[ResponseFormatT]], ParseMessageCreateParamsBase[ResponseFormatT]]r{   r|   )rO   z5BetaMessageParam | ParsedBetaMessage[ResponseFormatT]r{   r|   r{   bool)	r?   r@   rA   rB   rc   rg   rr   rv   rD   r>   rE   rF   rI   rI   A   so     &*7;6 >6  	6
 *6 #6 56 
68s 
	/ rE   rI   c                     ^  \ rS rSrSSS.             SU 4S jjjrSS jrSS jr\\SS j5       5       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rU =r$ )BaseSyncToolRunner   NrK   c               l   > [         TU ]  UUUUUS9  X@l        U R                  5       U l        S U l        g N)r]   r^   rP   rL   rM   superrc   _client__run__	_iterator_last_messager\   r]   r^   rP   clientrL   rM   	__class__s          rF   rc   BaseSyncToolRunner.__init__   sG     	)1 	 	
   	rE   c                6    U R                   R                  5       $ N)r   __next__ru   s    rF   r   BaseSyncToolRunner.__next__   s    ~~&&((rE   c              #  :   #    U R                    H  nUv   M	     g 7fr   r   r\   items     rF   __iter__BaseSyncToolRunner.__iter__   s     NNDJ #s   c              #     #    [        5       e7fr   NotImplementedErrorru   s    rF   _handle_request"BaseSyncToolRunner._handle_request         "##   c                   ^
 U R                   b  U R                   S   (       d  gU R                  5       nSnUbn  UR                  R                  UR                  R                  =(       d    S-   UR                  R
                  =(       d    S-   nX1R                  R                  -   nU R                   R                  S[        5      nX$:  a  g[        R                  SU SU S35        U R                   R                  SU R                  S   5      n[        U R                  S	   5      nUS
   S   S:X  ae  US
   S    Vs/ s H3  n[        U[        5      (       d  M  UR                  S5      S:w  d  M1  UPM5     nnU(       a  XS
   S'   OUR                  5         / UQ[!        SU R                   R                  S["        5      S9PnU R$                  R&                  R(                  R+                  UUU R                  S   SS0S9n	[        R                  SU	R                  R                   35        [        U	R,                  5      S   m
T
R.                  S:w  a  [1        S5      eU R3                  U
4S j5        gs  snf )z
Check token usage and compact messages if threshold exceeded.
Returns True if compaction was performed, False otherwise.
enabledFr   context_token_thresholdToken usage  has exceeded the threshold of . Performing compaction.modelrO   rk   	assistantrl   typetool_useusersummary_promptrj   
max_tokensX-Stainless-Helper
compactionr   rO   r   r:   &Compaction complete. New token usage: text1Compaction response content is not of type 'text'c                8   > 0 U ESSSTR                   S./S./0E$ NrO   r   r   )r   r   rj   r   r]   first_contents    rF   ro   7BaseSyncToolRunner._check_and_compact.<locals>.<lambda>   =      & )/(5(:(:$
rE   Tr[   _get_last_messageusageinput_tokenscache_creation_input_tokenscache_read_input_tokensoutput_tokensrU   r(   loginforS   listrq   dictpopr   r)   r   betarO   createrl   r   
ValueErrorrg   r\   r`   tokens_usedtotal_input_tokens	thresholdr   rO   blocknon_tool_blocksresponser   s             @rF   _check_and_compact%BaseSyncToolRunner._check_and_compact   sa   
 ##+43K3KI3V((***==<<AC==88=A? 
 -}}/J/JJK,,001JL]^	" 	<},KI;Vnop((,,Wdll76KLZ01B<;.
 &b\)44EeT* /4yy/@J/N 4   *9Y'

00445EG]^
 <<$$--44||L1/>	 5 
 	9(..:V:V9WXYX--.q1'PQQ  	
  cs    I;I;4I;c              #  ~  #    U R                  5       (       Gd  U R                  5        nUv   U R                  5       nUc   eU R                  5       nUb0  UR                  b#  UR                  R
                  U R                  S'   S S S 5        U =R                  S-  sl        U R                  5       (       dL  U R                  5       nUc  [        R                  S5        g U R                  (       d  U R                  WU5        SU l        S U l        U R                  5       (       d  GM  g g ! , (       d  f       N= f7fN	containerr   z;Tool call was not requested, exiting from tool runner loop.Frv   r   r   _get_last_assistant_messager   idrS   rZ   r   generate_tool_call_responser   debugrW   rr   rX   r\   r   r`   last_assistant_messager   s        rF   r   BaseSyncToolRunner.__run__   s    ##%%%%'4
002*** *.)I)I)K&)5:P:Z:Z:f0F0P0P0S0SDLL- ( !!Q&! **,,;;=#II[\..(((;&+D#.2D+1 ##%%''s$   'D=AD,B!D=*D=,
D:6D=c                F    [        U 5        U R                  5       nUc   eU$ )
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   r\   last_messages     rF   
until_doneBaseSyncToolRunner.until_done  s,    
 	d#--/'''rE   c                    U R                   b!  [        R                  S5        U R                   $ U R                  5       nXl         U$ )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.rX   r   r   _generate_tool_call_responser\   r   s     rF   r   .BaseSyncToolRunner.generate_tool_call_response"  sB     **6II<=222446*2'rE   c           
        U R                  5       nU(       d  g U Vs/ s H  o"R                  S:X  d  M  UPM     nnU(       d  g / nU H  nU R                  R                  UR                  5      nUc|  [
        R                  " SUR                   S[        U R                  R                  5       5       S3[        SS9  UR                  SUR                  SUR                   S	3S
S.5        M   UR                  UR                  5      nUR                  SUR                  US.5        M     SUS.$ s  snf ! [         a6  nUR                  SUR                  UR                  S
S.5         S nAGM+  S nAf[          aV  n["        R%                  SUR                   3US9  UR                  SUR                  ['        U5      S
S.5         S nAGM  S nAff = f)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   
stackleveltool_resultError: Tool '' not foundTr   tool_use_idrl   is_errorr   r   rl   #Error occurred while calling tool: exc_infor   rj   #_get_last_assistant_message_contentr   rR   rU   rQ   warningswarnr   keysUserWarningappendr   callinputr   rl   	Exceptionr   	exceptionrepr	r\   rl   r   tool_use_blocksresultsr   r_   resultexcs	            rF   r   /BaseSyncToolRunner._generate_tool_call_response0  s   ::<.5RgUz9Q5gR24'H&&**8==9D|X]]O ,((,T-@-@-E-E-G(H'I Jmn     -'/{{%28==/#M$(	 8>>2hkk^def/ (X 733e S<   -'/{{#&;;$(	   	 CDII;OZ]^ -'/{{#'9$(	 	s/   D3D30:D88
G*E33G A
GGc                n    [        U R                  5      (       a  U R                  5       $ U R                  $ r   rf   r   ru   s    rF   r   $BaseSyncToolRunner._get_last_messagei  s.    D&&''%%''!!!rE   c                p    U R                  5       nUb!  UR                  S:w  d  UR                  (       d  g U$ Nr   r   rk   rl   r   s     rF   r   .BaseSyncToolRunner._get_last_assistant_messagen  s4    --/<#4#4#C<K_K_rE   c                B    U R                  5       nUc  g UR                  $ r   r   rl   r\   r   s     rF   r   6BaseSyncToolRunner._get_last_assistant_message_contentu  s&    !%!A!A!C!)%---rE   rX   r   r   r   rW   )r]   rx   r^   r8   rP   zIterable[BetaRunnableTool]r   r2   rL   ry   rM   rz   r{   r|   r{   r6   )r{   zIterator[RunnerItemT]r}   r{   z"ParsedBetaMessage[ResponseFormatT]r{   zBetaMessageParam | Noner{   z)ParsedBetaMessage[ResponseFormatT] | Noner{   z4list[ParsedBetaContentBlock[ResponseFormatT]] | None)r?   r@   rA   rB   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   __classcell__r   s   @rF   r   r      s     &*7; >  	
 *  # 5 
 0)   Rh3674r"
. .rE   r   c                  2    \ rS rSr\\SS j5       5       rSrg)BetaToolRunneri}  c              #     #    U R                   R                  R                  R                  " S0 U R                  DU R
                  D6nXl        Uv   g 7fNr>   r   r   rO   parserS   rV   r   r\   r`   s     rF   r   BetaToolRunner._handle_request~  sB      ,,##,,22ST\\ST]]S$s   AAr   N)r{   z,Iterator[ParsedBetaMessage[ResponseFormatT]]r?   r@   rA   rB   r   r   r   rD   r>   rE   rF   r   r   }  s      rE   r   c                  2    \ rS rSr\\SS j5       5       rSrg)BetaStreamingToolRunneri  c              #     #    U R                   R                  R                  R                  " S0 U R                  DU R
                  D6 nUR                  U l        Uv   S S S 5        g ! , (       d  f       g = f7fr"  r   r   rO   streamrS   rV   get_final_messager   r\   r-  s     rF   r   'BetaStreamingToolRunner._handle_request  sW      \\''..OOOSY!'!9!9DL POOs   AA9	A(	A9(
A62A9r'  N)r{   z,Iterator[BetaMessageStream[ResponseFormatT]]r(  r>   rE   rF   r*  r*    s      rE   r*  c                     ^  \ rS rSrSSS.             SU 4S jjjrSS jrSS jr\\SS j5       5       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rU =r$ )BaseAsyncToolRunneri  NrK   c               l   > [         TU ]  UUUUUS9  X@l        U R                  5       U l        S U l        g r   r   r   s          rF   rc   BaseAsyncToolRunner.__init__  sG     	)1 	 	
 
 	 	rE   c                R   #    U R                   R                  5       I S h  vN $  N7fr   )r   	__anext__ru   s    rF   r6  BaseAsyncToolRunner.__anext__  s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr   r   r   s     rF   	__aiter__BaseAsyncToolRunner.__aiter__  s     .. 	$J	.s   #!!#!#c                  #    [        5       e7fr   r   ru   s    rF   r   #BaseAsyncToolRunner._handle_request  r   r   c                2  ^
#    U R                   b  U R                   S   (       d  gU R                  5       I Sh  vN nSnUbn  UR                  R                  UR                  R                  =(       d    S-   UR                  R
                  =(       d    S-   nX1R                  R                  -   nU R                   R                  S[        5      nX$:  a  g[        R                  SU SU S35        U R                   R                  S	U R                  S	   5      n[        U R                  S
   5      nUS   S   S:X  ae  US   S    Vs/ s H3  n[        U[        5      (       d  M  UR                  S5      S:w  d  M1  UPM5     nnU(       a  XS   S'   OUR                  5         / UQ[!        SU R                   R                  S["        5      S9PnU R$                  R&                  R(                  R+                  UUU R                  S   SS0S9I Sh  vN n	[        R                  SU	R                  R                   35        [        U	R,                  5      S   m
T
R.                  S:w  a  [1        S5      eU R3                  U
4S j5        g GNTs  snf  N7f)r   Nr   Fr   r   r   r   r   r   rO   r   rk   r   rl   r   r   r   r   rj   r   r   r   r   r   r   r   c                8   > 0 U ESSSTR                   S./S./0E$ r   r   r   s    rF   ro   8BaseAsyncToolRunner._check_and_compact.<locals>.<lambda>  r   rE   Tr   r   s             @rF   r   &BaseAsyncToolRunner._check_and_compact  sv    
 ##+43K3KI3V..00**==<<AC==88=A? 
 -}}/J/JJK,,001JL]^	" 	<},KI;Vnop((,,Wdll76KLZ01B<;.
 &b\)44EeT* /4yy/@J/N 4   *9Y'

00445EG]^
 **33::||L1/>	 ; 
 
 	9(..:V:V9WXYX--.q1'PQQ  	
  U 12&
s<   6JJDJ
J'J>JBJJA:JJc                 #    U R                  5       (       GdC  U R                  5        IS h  vN nU7v   U R                  5       I S h  vN nUc   eU R                  5       I S h  vN nUb0  UR                  b#  UR                  R
                  U R                  S'   S S S 5      IS h  vN   U =R                  S-  sl        U R                  5       I S h  vN (       dT  U R                  5       I S h  vN nUc  [        R                  S5        g U R                  (       d  U R                  WU5        SU l        S U l        U R                  5       (       d  GMB  g g  GN0 GN N N! , IS h  vN  (       d  f       N= f N N7fr   r   r   s        rF   r   BaseAsyncToolRunner.__run__  s:    ##%%++--
 $ 6 6 88*** 04/O/O/Q)Q&)5:P:Z:Z:f0F0P0P0S0SDLL- .- !!Q&! 00222!%!A!A!CC#II[\..(((;&+D#.2D+1 ##%%-8 *R .--- 3Cs   +FEFE'
E E''E#(7E'F*E%+,FFF4F5A#FF E'#E'%F'E>-E0.E>:FFc                v   #    [        U 5      I Sh  vN   U R                  5       I Sh  vN nUc   eU$  N# N7f)r   N)r   r   r   s     rF   r   BaseAsyncToolRunner.until_done(  s@     
 %T***!3355''' 	+5s   959799c                   #    U R                   b!  [        R                  S5        U R                   $ U R                  5       I Sh  vN nXl         U$  N7f)r   Nr   r   r   s     rF   r   /BaseAsyncToolRunner.generate_tool_call_response2  sM      **6II<=222::<<*2' =s   AAAAc                   #    [        U R                  5      (       a  U R                  5       I S h  vN $ U R                  $  N7fr   r  ru   s    rF   r   %BaseAsyncToolRunner._get_last_messageA  s9     D&&''++---!!! .s   .AAAc                   #    U R                  5       I S h  vN nUb!  UR                  S:w  d  UR                  (       d  g U$  N+7fr  r  r   s     rF   r   /BaseAsyncToolRunner._get_last_assistant_messageF  s?     !3355<#4#4#C<K_K_	 6s   AA,Ac                ^   #    U R                  5       I S h  vN nUc  g UR                  $  N7fr   r  r  s     rF   r   7BaseAsyncToolRunner._get_last_assistant_message_contentM  s2     '+'G'G'I!I!)%---	 "Js   -+-c           
       #    U R                  5       I S h  vN nU(       d  g U Vs/ s H  o"R                  S:X  d  M  UPM     nnU(       d  g / nU H  nU R                  R                  UR                  5      nUc|  [
        R                  " SUR                   S[        U R                  R                  5       5       S3[        SS9  UR                  SUR                  SUR                   S	3S
S.5        M   UR                  UR                  5      I S h  vN nUR                  SUR                  US.5        M     SUS.$  GN/s  snf  N4! [         a6  nUR                  SUR                  UR                  S
S.5         S nAGM8  S nAf[          aV  n["        R%                  SUR                   3US9  UR                  SUR                  ['        U5      S
S.5         S nAGM  S nAff = f7f)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   rj   r   r  s	            rF   r   0BaseAsyncToolRunner._generate_tool_call_responseT  s    @@BB.5RgUz9Q5gR24'H&&**8==9D|X]]O ,((,T-@-@-E-E-G(H'I Jyz     -'/{{%28==/#M$(	 #yy88hkk^def/ (X 733m C S8 9  -'/{{#&;;$(	   	 CDII;OZ]^ -'/{{#'9$(	 	su   G0EG0EEB5G0:EE#E<
G0G0E
G-*F
G0
G-A
G(!G0(G--G0r  )r]   rx   r^   r8   rP   zIterable[BetaAsyncRunnableTool]r   r3   rL   ry   rM   rz   r{   r|   r  )r{   zAsyncIterator[RunnerItemT]r}   r  r  r  r  )r?   r@   rA   rB   rc   r6  r9  r   r   r   r   r   r   r   r   r   r   r   rD   r  r  s   @rF   r2  r2    s     &*7; >  	
 /  # 5 
 40   Rh36"
.74 74rE   r2  c                  2    \ rS rSr\\SS j5       5       rSrg)BetaAsyncToolRunneri  c                  #    U R                   R                  R                  R                  " S0 U R                  DU R
                  D6I S h  vN nXl        U7v   g  N7fr"  r#  r%  s     rF   r   #BetaAsyncToolRunner._handle_request  sK      ))2288Y4<<Y4==YY$ Zs   A
AAAr'  N)r{   z1AsyncIterator[ParsedBetaMessage[ResponseFormatT]]r?   r@   rA   rB   r   r   r   rD   r>   rE   rF   rP  rP    s      rE   rP  c                  2    \ rS rSr\\SS j5       5       rSrg)BetaAsyncStreamingToolRunneri  c               2  #    U R                   R                  R                  R                  " S0 U R                  DU R
                  D6 IS h  vN nUR                  U l        U7v   S S S 5      IS h  vN   g  N+ N! , IS h  vN  (       d  f       g = f7fr"  r,  r/  s     rF   r   ,BetaAsyncStreamingToolRunner._handle_request  sc      <<$$--44Ut||Ut}}UUY_!'!9!9DL VUUUUUsH   ABA9BA=(B3A;4B;B=BBBBr'  N)r{   z6AsyncIterator[BetaAsyncMessageStream[ResponseFormatT]]rS  r>   rE   rF   rU  rU    s      rE   rU  )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   rI   r   r   r*  r2  rP  rU  r>   rE   rF   <module>rj     s   "   #    ; 1  4 4 C 7   9 b b P h h L O4 
4S9;RTpp  m$!5Ye 5?W->? ?Dw.(8/(IJGT_apTpLqsv w.t'(9/(JO([\ 01B?1SUd1de |4(/9:GKQ`D`<acf|4~-.?.PRa.ab #67Mo7^`o7o#p rE   