ó
    ±"³jBk ã            	      ó  • % S SK Jr  S SKrS SKrS SKJrJrJrJ	r	J
r
  S SKJrJr  S SKJr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JrJrJr  S SKrS S	KJr  S S
K J!r!  S SK"J#r#  SSK$J%r%J&r&J'r'J(r(  SSK)J*r*  SSK+J,r,  SSK-J.r.  SSK'J/r0J1r1  SSK2J3r3  SSK4J5r5J6r6  SSK7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrV  SSKWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_  SSK`JaraJbrbJcrc  SSKdJereJfrfJgrgJhrh  SSKiJjrjJkrkJlrlJmrmJnrnJoro  SSKpJqrqJrrr  SSKsJtrt  SSKuJvrvJwrwJxrx  SSKyJzrzJ{r{  SSK|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‹  SS!KŒJ�r�JŽrŽ  S"S"S#S#S"S$SS%S&.r�S'\�S('         S–S) jr‘S—S* 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ž  S S,KŸ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¬J­r­J®r®J¯r¯J°r°J±r±J²r²J³r³J´r´JµrµJ¶r¶J·r·J¸r¸J¹r¹JºrºJ»r»J¼r¼J½r½J¾r¾J¿r¿JÀrÀJÁrÁJÂrÂJÃrÃJÄrÄJÅrÅJÆrÆJÇrÇJÈrÈJÉrÉJÊrÊJËrËJÌrÌJÍrÍJÎrÎJÏrÏJÐrÐJÑrÑJÒrÒJÓrÓJÔrÔJÕrÕJÖrÖJ×r×JØrØJÙrÙJÚrÚJÛrÛJÜrÜJÝrÝJÞrÞJßrßJàràJáráJârâJãrãJäräJåråJæræJçrçJèrèJéréJêrêJërëJìrìJíríJîrîJïrïJðrðJñrñJòròJóróJôrôJõrõJöröJ÷r÷JørøJùrùJúrúJûrûJürüJýrýJþrþJÿrÿ  S S.GK GJGr  S S.GKGJGr  S S.GKGJGr  S S.GKGJGr  S S.GK	GJGr
  S S.GKGJGr  S S/GKGJGr  S S.GKGJGr  S S0GKGJGr  \—\š4Gr\—\˜\™\š4Gr\˜\™4Gr\—4Gr\—4Gr\—\š4Gr\—\š4Gr\—\š\™4Gr\™4GrS2GrS3GrS4S50Gr S6\�S7'   S8Gr!S9Gr"S:Gr#S;Gr$S<Gr%\S˜S™S= jj5       Gr&G\Gr' G\'Gr( G\)" 1 S>k5      Gr*S?\�S@'    \SA   Gr+SB\�SC'   \SD   Gr,SB\�SE'   SAGr-SF\�SG'   SHGr.G\)" 1 SIk5      Gr/SJGr0\çGr1SB\�SK'     " SL SMG\25      Gr3 " SN SO\vSPSQ9Gr4 Sš     S›SR jjGr5SœSS jGr6S�ST jGr7      SžSU jGr8        SŸSV jGr9S SW jGr:SSPSX.       S¡SY jjGr;S¢SZ jGr<SSPSX.               S£S[ jjGr=S¤S\ jGr>    S¥S] jGr?    S¦S^ jGr@\" SPS_9 " S` Sa\~\t   5      5       GrA\" SPS_9 " Sb Sc\3\z   5      5       GrBSdGrCS§Se jGrD Sš           S¨Sf jjGrES©Sg jGrF\ " Sh Si\€5      5       GrG        SªSj jGrH        S«Sk jGrI\_GR”                  \[GR”                  \^GR”                  Sl.GrKSm\�Sn'       S¬So jGrL    S­Sp jGrM      S®Sq jGrN    S¯Sr jGrOS°Ss jGrPS±St jGrQS²Su jGrRSvGrS       S³Sw jGrTS´Sx jGrUSµSy jGrVSµSz jGrWSµS{ jGrXS¶S| jGrYS·S} jGrZS¸S~ jGr[      S¹S jGr\\!" \ü5      Gr]S€\�S�'   SºS‚ jGr^\!" \®5      Gr_Sƒ\�S„'         S»S… jGr`\!" G\5      GraS†\�S‡'         S¼Sˆ jGrb\!" G\
5      GrcS‰\�SŠ'         S½S‹ jGrdS¾SŒ jGre\!" G\5      GrfS�\�SŽ'   S¿S� jGrgSÀS� jGrh        SÁS‘ jGri        SÂS’ jGrj SÃS“SPS”.             SÄS• jjjGrkg! G\ a  GrG\" S15      G\eSGrGCff = f)Åé    )ÚannotationsN)ÚAsyncGeneratorÚAsyncIteratorÚCallableÚ	GeneratorÚMapping)ÚasynccontextmanagerÚcontextmanager)Ú	dataclassÚfieldÚreplace)ÚdatetimeÚ	timedelta)Úcached_property)ÚAnyÚLiteralÚ	TypeAliasÚ	TypeGuardÚcastÚoverload)Úget_current_span)ÚTypeAdapter)Úassert_neveré   )ÚModelHTTPErrorÚUnexpectedModelBehaviorÚ_utilsÚusage)Úto_httpx2_timeout)Ú
RunContext)Ú_NO_MATCHES_MESSAGE)Úguard_tool_call_idÚis_str_dict)ÚAbstractCapability)ÚModelAPIErrorÚ	UserError)ÚAudioUrlÚBinaryContentÚ
CachePointÚCompactionPartÚDocumentUrlÚFilePartÚFinishReasonÚImageUrlÚModelMessageÚModelRequestÚModelResponseÚModelResponsePartÚModelResponseStreamEventÚNativeToolCallPartÚNativeToolReturnPartÚNativeToolSearchCallPartÚNativeToolSearchReturnPartÚRetryPromptPartÚ
SpeechPartÚSystemPromptPartÚTextContentÚTextPartÚThinkingPartÚToolAvailabilityDeltaPartÚToolCallPartÚToolReturnPartÚToolSearchReturnPartÚUploadedFileÚUserPromptPartÚVideoUrlÚis_multi_modal_content)ÚSUPPORTED_NATIVE_TOOLSÚAbstractNativeToolÚAdvisorToolÚCodeExecutionToolÚMCPServerToolÚ
MemoryToolÚWebFetchToolÚWebSearchTool)ÚToolSearchArgsÚToolSearchMatchÚToolSearchTool)ÚDEFAULT_THINKING_TAGSÚModelProfileÚModelProfileSpecÚmerge_profile)ÚANTHROPIC_SAMPLING_PARAMSÚANTHROPIC_THINKING_BUDGET_MAPÚ!AnthropicCodeExecutionToolVersionÚAnthropicEffortÚAnthropicModelProfileÚresolve_anthropic_effort)ÚProviderÚinfer_provider)ÚAsyncAnthropicClient)ÚModelSettingsÚThinkingLevelÚmerge_model_settings)Ú
AgentDepsTÚToolDefinition)Údiscovered_tool_names_in_orderé   )ÚModelÚModelRequestParametersÚStreamedResponseÚToolVisibilityÚ_standing_system_prompt_countÚ+_suggest_known_model_id_from_provider_errorÚ_unconverted_speech_part_errorÚ,_unsynthesized_tool_availability_delta_errorÚcheck_allow_model_requestsÚdownload_itemÚget_user_agent)Úis_tool_result_only)ÚResolvedToolChoiceÚresolve_tool_choiceÚstopÚlengthÚ	tool_callÚcontent_filter)Ú
compactionÚend_turnÚ
max_tokensÚmodel_context_window_exceededÚstop_sequenceÚtool_useÚ
pause_turnÚrefusalz)dict[BetaStopReason, FinishReason | None]Ú_FINISH_REASON_MAPc                óä   • UR                   n[        U 5       Vs/ s HI  nX2;   d  M
  X#   R                  (       d  M  X#   R                  b  M0  UR	                  U5      S:X  d  MG  UPMK     sn$ s  snf )z¿Order revealed non-corpus deferred entries at the tail by their first reveal in history.

Deferred entries are outside Anthropic's cache key, so this is a determinism rule, not a cache rule.
Údeferred)Ú	tool_defsrc   Údefer_loadingÚwith_nativeÚvisibility_of)ÚmessagesÚmodel_request_parametersr‚   Únames       ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/models/anthropic.pyÚ_revealed_deferred_tool_orderrŠ   r   s   € ð )×2Ñ2€Iô 3°8Ô<óâ<ˆDØÑó 	ð ‰O×)Õ)ó 	ð ‰O×'Ñ'ó	 	ð
 %×2Ñ2°4Ó8¸JÑF÷ 	Ù<ñð ùò s   š	A-§A-¼A-ÁA-Á$A-c                óJ  • U  Vs0 s H  o"R                  S5      U_M     nnU Vs/ s H  oDU;   d  M
  UPM     nnU(       aN  [        U5      nU  Vs/ s H  o"R                  S5      U;  d  M  UPM     snU Vs/ s H  oCU   PM	     sn-   U SS& ggs  snf s  snf s  snf s  snf )zMMove revealed deferred definitions behind the request's stable tool segments.rˆ   N)ÚgetÚset)ÚtoolsÚrevealed_tool_orderÚtoolÚby_namerˆ   Úrevealed_namesÚrevealed_name_sets          r‰   Ú_append_revealed_tool_paramsr”   „   sª   € á27Ó8²%¨$�x‰x˜Ó Ò%±%€GÐ8Ù':ÓNÒ':˜tÀg¹o—dÑ':€NÐNÞÜ Ó/ÐÙ%*ÓX¢U˜T¯h©h°vÓ.>ÐFWÑ.W—D¡UÑXÙ&4ó\
Ú&4˜d�DŒM¡nñ\
ñ 
ˆ‰a‰ð ùò 9ùÚNùò Yùò \
s!   …B¦	B³BÁBÁ-BÁ9B )
Ú	NOT_GIVENÚAPIConnectionErrorÚAPIStatusErrorÚAsyncAnthropicBedrockÚAsyncAnthropicBedrockMantleÚAsyncAnthropicFoundryÚAsyncAnthropicVertexÚAsyncStreamÚOmitÚomit)ÚAnthropicBetaParam)^ÚBetaAdvisorTool20260301ParamÚBetaAdvisorToolResultBlockÚBetaAdvisorToolResultBlockParamÚBetaBase64PDFSourceParamÚ$BetaBashCodeExecutionToolResultBlockÚ)BetaBashCodeExecutionToolResultBlockParamÚBetaCacheControlEphemeralParamÚBetaCitationsConfigParamÚBetaCitationsDeltaÚ"BetaCodeExecutionTool20250825ParamÚ"BetaCodeExecutionTool20260120ParamÚ BetaCodeExecutionToolResultBlockÚ'BetaCodeExecutionToolResultBlockContentÚ%BetaCodeExecutionToolResultBlockParamÚ1BetaCodeExecutionToolResultBlockParamContentParamÚBetaCompactionBlockÚBetaCompactionBlockParamÚBetaCompactionContentBlockDeltaÚBetaContainerParamsÚBetaContainerUploadBlockParamÚBetaContentBlockÚBetaContentBlockParamÚ BetaContextManagementConfigParamÚBetaDirectCallerÚBetaFileDocumentSourceParamÚBetaFileImageSourceParamÚBetaImageBlockParamÚBetaInputJSONDeltaÚBetaJSONOutputFormatParamÚBetaMCPToolResultBlockÚBetaMCPToolUseBlockÚBetaMCPToolUseBlockParamÚBetaMemoryTool20250818ParamÚBetaMessageÚBetaMessageDeltaUsageÚBetaMessageParamÚBetaMessageTokensCountÚBetaMetadataParamÚBetaOutputConfigParamÚBetaPlainTextSourceParamÚBetaRawContentBlockDeltaEventÚBetaRawContentBlockStartEventÚBetaRawContentBlockStopEventÚBetaRawMessageDeltaEventÚBetaRawMessageStartEventÚBetaRawMessageStopEventÚBetaRawMessageStreamEventÚBetaRedactedThinkingBlockÚBetaRedactedThinkingBlockParamÚBetaRequestDocumentBlockParamÚ*BetaRequestMCPServerToolConfigurationParamÚ&BetaRequestMCPServerURLDefinitionParamÚBetaServerToolCallerÚBetaServerToolCaller20260120ÚBetaServerToolUseBlockÚBetaServerToolUseBlockParamÚBetaSignatureDeltaÚBetaStopReasonÚBetaTextBlockÚBetaTextBlockParamÚBetaTextDeltaÚ*BetaTextEditorCodeExecutionToolResultBlockÚ/BetaTextEditorCodeExecutionToolResultBlockParamÚBetaThinkingBlockÚBetaThinkingBlockBindingParamÚBetaThinkingBlockParamÚBetaThinkingConfigParamÚBetaThinkingDeltaÚ&BetaThinkingDroppedInputTransformationÚBetaTokenTaskBudgetParamÚBetaToolChoiceParamÚBetaToolParamÚBetaToolReferenceBlockParamÚ$BetaToolSearchToolBm25_20251119ParamÚ$BetaToolSearchToolRegex20251119ParamÚBetaToolSearchToolResultBlockÚ"BetaToolSearchToolResultBlockParamÚ"BetaToolSearchToolResultErrorParamÚ(BetaToolSearchToolSearchResultBlockParamÚBetaToolUnionParamÚBetaToolUseBlockÚBetaToolUseBlockParamÚ	BetaUsageÚBetaWebFetchTool20250910ParamÚBetaWebFetchTool20260209ParamÚBetaWebFetchToolResultBlockÚ BetaWebFetchToolResultBlockParamÚBetaWebSearchTool20250305ParamÚBetaWebSearchTool20260209ParamÚBetaWebSearchToolResultBlockÚ#BetaWebSearchToolResultBlockContentÚ!BetaWebSearchToolResultBlockParamÚ-BetaWebSearchToolResultBlockParamContentParamÚbeta_tool_result_block_param)ÚContent)ÚBetaUserLocationParam)Ú
ModelParamu‘   Please install `anthropic` to use the Anthropic model, you can use the `anthropic` optional group â€” `pip install "pydantic-ai-slim[anthropic]"`ztask-budgets-2026-03-13z$thinking-binding-controls-2026-08-01Úprefix_mismatch_behaviorÚ
drop_blockrà   Ú%_ANTHROPIC_DROP_STALE_THINKING_BLOCKSz.The block is bound to a different conversationÚ__pydantic_ai__Ú1anthropic_count_tokens_drop_stale_thinking_blocksúfiles-api-2025-04-14Úcompact_20260112c           	   #  ó8  #   •  S v •  g ! [          aã  nUR                  =nS:¼  a¸  UR                  nS n[        R                  " U5      (       ad  [        R                  " UR                  S5      =n5      (       a8  UR                  S5      S:X  a#  UR                  S5      SU  3:X  a  [        X5      n[        UU U[        UR                  R                  5      US9Ue[        XR                  S9UeS nAf[         a  n[        XR                  S9UeS nAff = f7f)	Né�  ÚerrorÚtypeÚnot_found_errorÚmessagezmodel: )Ústatus_codeÚ
model_nameÚbodyÚheadersÚsuggested_model_id)r  r  )r—   r  r  r   r#   rŒ   rj   r   ÚdictÚresponser  r%   r  r–   )r  Úmodel_id_namespaceÚer  r  r  r
  s          r‰   Ú_map_api_errorsr  U  s  é € ðMÜøÜó MØŸ=™=Ð(ˆK¨SÓ0Ø"#§&¡&ˆDØ!%ÐÜ×!Ò! $×'Ñ'¬F×,>Ò,>ÈÏÉÐQXÓHYÐ?Y¸u×,ZÑ,ZØ—9‘9˜VÓ$Ð(9Ó9¸e¿i¹iÈ	Ó>RÐX_Ð`jÐ_kÐVlÓ>lÜ)TÐUgÓ)tÐ&Ü Ø'Ø%ØÜ˜QŸZ™Z×/Ñ/Ó0Ø#5ñð ðô  z¿9¹9ÑEÈ1ÐLûÜó MÜ z¿9¹9ÑEÈ1ÐLûðMüs1   ‚D„	 ˆD‰
D“CC1Ã1DÃ>DÄDÄD>   úclaude-opus-4-0úclaude-sonnet-4-0úclaude-opus-4-20250514úclaude-3-haiku-20240307úclaude-sonnet-4-20250514úfrozenset[str]ÚDEPRECATED_ANTHROPIC_MODELS)Úcode_executionÚbash_code_executionÚtext_editor_code_executionr   Ú_AnthropicCodeExecutionToolName©r   r!  Ú-_AnthropicCodeExecutionProviderDetailToolNamez+tuple[_AnthropicCodeExecutionToolName, ...]Ú$_ANTHROPIC_CODE_EXECUTION_TOOL_NAMESÚanthropic_tool_name>   ÚtextÚimageÚdocumentr|   Útool_resultÚtool_additionÚserver_tool_useÚanthropic_callerÚAnthropicTaskBudgetc                  ó   • \ rS rSrSrSrg)Ú"AnthropicStaleThinkingBlockWarningi›  uX  Warning raised when Anthropic rejected a replayed thinking block and Pydantic AI retried without it.

Claude Fable 5.1 binds each thinking block to the conversation prefix that produced it and
rejects a replay once that prefix changes â€” which a dynamic
[instructions][pydantic_ai.Agent.instructions] function and a
[filtered toolset](../toolsets.md#filtering-tools) both do by design. Anthropic enforces the
check for accounts created on or after 2026-08-31; for older accounts it records the mismatch
and acts on it only if the request asks it to.

Pydantic AI therefore asks for nothing by default, so an older account keeps replaying its
reasoning untouched. Where the check is enforced, the rejected request is retried once with
`thinking.block_binding.prefix_mismatch_behavior='drop_block'`: the stale block is dropped, the
run continues, and later requests carrying that response history keep asking for the drop as
Anthropic requires. The drop is recorded on
[`ModelResponse.provider_details`][pydantic_ai.messages.ModelResponse.provider_details] and as
an `anthropic.input_transformations` span event.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r1  ó    r‰   r0  r0  ›  s   † ôr8  r0  c                  óÌ   • \ rS rSr% SrS\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'   Srg) ÚAnthropicModelSettingsi¯  z-Settings used for an Anthropic model request.rÅ   Úanthropic_metadatarâ   Úanthropic_thinkingzbool | Literal['5m', '1h']Ú anthropic_cache_tool_definitionsz Literal['auto', 'standard_only']Úanthropic_service_tierÚanthropic_cache_instructionsÚanthropic_cache_messagesÚanthropic_cachezAnthropicEffort | NoneÚanthropic_effortr.  Úanthropic_task_budgetz*BetaContainerParams | str | Literal[False]Úanthropic_containerz3AnthropicCodeExecutionToolVersion | Literal['auto']Ú%anthropic_code_execution_tool_versionÚboolÚanthropic_eager_input_streamingzlist[AnthropicBetaParam]Úanthropic_betaszLiteral['standard', 'fast']Úanthropic_speedr¶   Úanthropic_context_managementr1  N)r2  r3  r4  r5  r6  Ú__annotations__r7  r1  r8  r‰   r:  r:  ¯  sÌ   ‡ Ù7ð *Ó)ðð
 0Ó/ðð
 'AÓ@ðð =Ó<ðð
 #=Ó<ðð 9Ó8ðð 0Ó/ðð$ -Ó,ðð
 /Ó.ð	ð DÓCðð" ,_Ó^ðð &*Ó)ðð .Ó-ðð 1Ó0ðð #CÓBòr8  r:  F)Útotalc                óæ   • [          Vs0 s H  o R                  U5      =nc  M  X#_M     nnUb  XS'   U R                  S5      nU(       d  U$ [        U5      (       d  U$ 0 UEUEnUb  XS'   U$ s  snf )uy  Merge the sampling settings, and a `thinking` object the SDK cannot type, into `extra_body`.

`anthropic>=1` dropped `temperature`/`top_p`/`top_k` from the `messages.create()` signature, and
passing one is a `TypeError`. The API still takes them, so they ride in `extra_body` â€” the route
the SDK's own migration guide names â€” rather than being silently dropped. Models that reject them
never get here: `_drop_unsupported_sampling_settings` has already removed them.

An explicit `extra_body` entry wins over the setting of the same name, preserving the precedence
the SDK gave it while the parameters were still named arguments.
ÚthinkingÚ
extra_body)rU   rŒ   Ú_is_str_mapping)Úmodel_settingsÚthinking_overrideÚsettingÚvalueÚfieldsrO  Úmergeds          r‰   Ú_build_extra_bodyrW  I  s™   € õ '@óÚ&?˜7×M_ÑM_Ð`gÓMhÐDhÀE‹ˆŠÑ&?ð ð ð Ñ$Ø.ˆzÑØ×#Ñ# LÓ1€JÞØÐÜ˜:×&Ñ&ØˆØ%�Ð%˜*Ð%€FØÑ$ð /ˆzÑØ€Mùòs
   ‰A.¤A.c                ó    • U R                  S5      n[        U5      (       d  gUR                  S5      n[        U5      (       d  g[        U5      $ )u  The `thinking` object a caller hand-rolled in `extra_body`, if any.

`extra_body` is how a caller reaches a field the installed SDK cannot type yet, so it can carry
`thinking` â€” including a `block_binding` of their own, which must be honored rather than
retried over.
rO  NrN  )rŒ   rP  r  )rQ  rO  rN  s      r‰   Ú_extra_body_thinkingrY  h  sH   € ð  ×#Ñ# LÓ1€JÜ˜:×&Ñ&ØØ�~‰~˜jÓ)€HÜ˜8×$Ñ$ØÜ�‹>Ðr8  c                óR   • [        U [        5      (       d  g[        S U  5       5      $ )z8Whether a value is a mapping whose keys are all strings.Fc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7f©N)Ú
isinstanceÚstr)Ú.0Úkeys     r‰   Ú	<genexpr>Ú"_is_str_mapping.<locals>.<genexpr>|  s   é € Ð5ªu¨Œz˜#œs×#Ð#ªuùó   ‚)r]  r   Úall)rT  s    r‰   rP  rP  x  s#   € ä�eœW×%Ñ%ØÜÑ5©uÓ5Ó5Ð5r8  c                ón   • [        U 5      =nb  U$ [        U[        5      (       a  [        $ [	        U5      $ )zPResolve the thinking object that reaches the wire after `extra_body` precedence.)rY  r]  r�   ÚOMITr  )rQ  rN  Úcaller_thinkings      r‰   Ú_effective_thinkingrh    s5   € ô 0°Ó?Ð?ˆÑLØÐÜ˜h¬×-Ñ-Œ4ÐA´4¸³>ÐAr8  c                óš  • UR                   S:w  d  U R                  SS5      (       d  g[        U[        5      (       d  SU;   a  gUR                  n[
        R                  " U5      =(       a_    [
        R                  " UR                  S5      =n5      =(       a1    [        UR                  S5      =n[        5      =(       a	    [        U;   $ )a]  Whether Anthropic rejected a replayed thinking block that the request can be retried without.

Scoped to models that bind and to requests that set no `block_binding` of their own, through the
typed `thinking` config or through `extra_body`: an explicit `'error'` is a caller asking to
fail, and an explicit `'drop_block'` cannot produce this error.
r	  Úanthropic_binds_thinking_blocksFÚblock_bindingr
  r  )	r  rŒ   r]  r�   r  r   r#   r^  Ú_STALE_THINKING_BLOCK_MARKER)ÚprofilerN  r
  r  Úreportedr  s         r‰   Ú_is_stale_thinking_block_errorro  ˆ  s§   € ð ×Ñ˜CÓ w§{¡{Ð3TÐV[×'\Ñ'\ØÜ�h¤×%Ñ%¨/¸XÓ*EØØŸ*™*€Dä×Ò˜4Ó ÷ 	4Ü×Ò¨4¯8©8°GÓ+<Ð<˜xÓ=÷	4ä (§,¡,¨yÓ"9Ð9�w¼3Ó?÷	4ô )¨GÑ3ð	r8  c                óL   • [        U [        5      (       a  0 OU n0 UES[        0E$ )u"  The `thinking` object for the retried request, carrying the caller's own config plus the drop.

A binding model emits thinking blocks whether or not the request configured thinking, so the
retry usually has no `thinking` object for the binding to ride in â€” and the API accepts one
holding `block_binding` alone, which the SDK's discriminated union cannot express. Rather than
split the two cases, the retry always sends the whole object through `extra_body`, which reaches
the same JSON key without needing a `type` the caller never asked for.
rk  )r]  r�   r  )rN  Ú
configureds     r‰   Ú_drop_stale_thinking_blocksrr     s*   € ô +5°X¼t×*DÑ*D¡BÈ(€JØQˆjÐQ˜/Ô+PÑQÐQr8  ©Úcompaction_boundaryÚinclude_count_tokens_recoveryc               óF  • [        U 5       GH  nU(       az  [        U[        5      (       ae  UR                  (       aT  UR                  R	                  [
        5      n[        R                  " U5      (       a  UR	                  [        5      SL a    gX1L d&  [        U[        5      (       a  UR                  (       d  M±  UR                  R	                  S5      n[        U[        5      (       d  Mã  [        S [        [        [           U5       5       5      (       d  GM    g   g)zUWhether Anthropic already told us this conversation needs the drop on later requests.TÚinput_transformationsc              3  óº   #   • U  HQ  n[         R                  " U5      =(       a/    UR                  S 5      S:H  =(       a    UR                  S5      S:H  v •  MS     g7f)r  Úthinking_droppedÚreasonÚprefix_binding_mismatchN)r   r#   rŒ   )r_  Útransformations     r‰   ra  Ú9_history_dropped_stale_thinking_blocks.<locals>.<genexpr>¿  sb   é € ð 5
ò #F�ô ×Ò˜~Ó.÷ JØ×"Ñ" 6Ó*Ð.@Ñ@÷Jà×"Ñ" 8Ó,Ð0IÑIôJò #Fùs   ‚AAF)Úreversedr]  r0   ÚmetadatarŒ   Ú_PYDANTIC_AI_METADATA_KEYr   r#   Ú?_ANTHROPIC_COUNT_TOKENS_DROP_STALE_THINKING_BLOCKS_METADATA_KEYr1   Úprovider_detailsÚlistÚanyr   Úobject)r†   rt  ru  r  Ú	namespaceÚtransformationss         r‰   Ú&_history_dropped_stale_thinking_blocksrˆ  ­  sÛ   € ô ˜H×%ˆÞ(¬Z¸Ä×-NÑ-NÐSZ×Sc×ScØ '× 0Ñ 0× 4Ñ 4Ô5NÓ OˆIä×"Ò" 9×-Ñ-Ø—M‘MÔ"aÓbÐfjÒjáØÒ)´¸GÄ]×1SÑ1SÐ[b×[s×[sÙØ")×":Ñ":×">Ñ">Ð?VÓ"WˆÜ�o¤t×,Ó,´ñ 5
ô #'¤t¬F¡|°_Ô"Eó	5
÷ 2
ô 2
ñ ñ# &ð$ r8  c                ó&  • [        S [        U 5       5       S5      nUc  gUR                  =(       d    0 Ul        UR                  R                  [        5      n[
        R                  " U5      (       d  0 nX!R                  [        '   SU[        '   g)zTKeep a successful count-token recovery active for later counts of this conversation.c              3  óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr\  ©r]  r0   ©r_  r  s     r‰   ra  ÚO_mark_history_to_drop_stale_thinking_blocks_for_count_tokens.<locals>.<genexpr>Ë  s   é € ÐcÒ+= ÄÈGÔUa×Ab—G‘GÒ+=ùó   ‚(Ÿ	(NT)Únextr~  r  rŒ   r€  r   r#   r�  )r†   Úrequestr†  s      r‰   Ú<_mark_history_to_drop_stale_thinking_blocks_for_count_tokensr‘  É  s|   € äÑc¬8°HÔ+=ÓcÐeiÓj€GØ�ØØ×'Ñ'×-¨2€GÔØ×(Ñ(×,Ñ,Ô-FÓG€IÜ×Ò˜i×(Ñ(Øˆ	Ø6?×ÑÔ2Ñ3ØQU€IÔMÒNr8  c               óà   • U R                  SS5      =(       a.    [        U[        5      =(       d    SU;  =(       a    [        UUUS9nU(       d  X$SU4$ [	        U5      n[
        U[        1-  Xˆ4$ )zXResolve request parameters that keep a prior request-local drop active for this history.rj  Frk  rs  N)rŒ   r]  r�   rˆ  rr  rf  Ú _ANTHROPIC_THINKING_BINDING_BETA)	rm  r†   rN  Úeffective_thinkingÚbetasrt  ru  Úkeep_droppingrR  s	            r‰   Ú"_thinking_with_stale_block_historyr—  Ö  s   € ð 	�‰Ð5°uÓ=÷ 	
ÜÐ*¬DÓ1×^°_ÐL^Ñ5^÷	
ä2ØØ 3Ø*Gñ
ð ö Ø Ð&8Ð8Ð8Ü3Ð4FÓGÐÜ�Ô:Ð;Ñ;Ð=NÐaÐar8  c                ó@   • [         R                  " U < S3[        SS9  g )NuÆ   rejected a replayed thinking block: the conversation prefix changed between requests, which Anthropic enforces for accounts created on or after 2026-08-31. Pydantic AI retried with `prefix_mismatch_behavior='drop_block'`, so the run continued without that turn's reasoning. The cause is something earlier in the request that is not byte-stable between turns â€” commonly instructions carrying a per-request value such as a timestamp, or a tool added, removed or reordered mid-conversation. That same instability invalidates the prompt cache on every model and provider, where it raises nothing and silently re-charges the whole conversation at uncached rates, so this rejection is the loud version of a normally-silent cost. Making the prefix stable is the real fix; to skip the rejected request instead, ask for the drop yourself: `model_settings={'anthropic_thinking': {'type': 'adaptive', 'block_binding': {'prefix_mismatch_behavior': 'drop_block'}}}`. To keep the retry and silence this warning: `warnings.simplefilter('ignore', AnthropicStaleThinkingBlockWarning)`. See https://pydantic.dev/docs/ai/models/anthropic/#thinking-block-binding and https://platform.claude.com/docs/en/build-with-claude/preserved-thinkingr   ©Ú
stacklevel)ÚwarningsÚwarnr0  )r  s    r‰   Ú#_warn_stale_thinking_block_recoveryr�  ð  s'   € Ü‡M‚MØ‰.ð Sð 	Sô 	+Øó#r8  c                ó8  • U  Vs/ s H  oR                  5       PM     nn[        5       n[        US0 5      nUR                  5       (       aI  UR	                  S5      S:X  a4  UR                  SS[        R                  " U5      R                  5       0S9  U$ s  snf )a~  Report Anthropic's input transformations on the current span, and return them for `provider_details`.

A dropped thinking block is otherwise silent: the model answered without the reasoning we
replayed, and nothing in the response says so. `provider_details` keeps it inspectable after the
run; the span event surfaces it in the trace, on the model request that lost the reasoning.
Ú
attributeszgen_ai.operation.nameÚchatzanthropic.input_transformations)rŸ  )	Ú
model_dumpr   ÚgetattrÚis_recordingrŒ   Ú	add_eventÚpydantic_coreÚto_jsonÚdecode)r‡  r|  rn  ÚspanrŸ  s        r‰   Ú_report_input_transformationsr©    s•   € ñ CRÓRÂ/°×)Ñ)Ö+Á/€HÐRÜÓ€DÜ˜˜|¨RÓ0€JØ×Ñ×Ñ˜zŸ~™~Ð.EÓFÈ&ÓPØ�‰Ø-Ø9¼=×;PÒ;PÐQYÓ;Z×;aÑ;aÓ;cÐdð 	ñ 	
ð €Oùò Ss   …Bc                ó€   • U R                  S5      =n(       a  U$ U R                  S5      nUS:X  a  gUS:X  a  g[        $ )uµ  Resolve the value to send as `service_tier` on the Anthropic request.

Per-provider [`anthropic_service_tier`][pydantic_ai.models.anthropic.AnthropicModelSettings.anthropic_service_tier]
wins; otherwise the top-level [`service_tier`][pydantic_ai.settings.ModelSettings.service_tier] is mapped
(`'default'` â†’ `'standard_only'`, `'auto'` â†’ `'auto'`). `'flex'`/`'priority'` are dropped as Anthropic
does not expose them via this field.
r>  Úservice_tierÚautoÚdefaultÚstandard_only)rŒ   rf  )rQ  Úanthropic_tierÚunifieds      r‰   Ú_resolve_anthropic_service_tierr±    sL   € ð (×+Ñ+Ð,DÓEÐE€~ÕEØÐØ× Ñ  Ó0€GØ�&ÓØØ�)ÓØÜ€Kr8  )Úinitc                  ó”  ^ • \ rS rSr% Sr\" S15      r\" S15      rSrSr	\
" SS9rS\S'   \
" SS9rS	\S
'   SSSS.       SFU 4S jjjr\SGS j5       r\SHS j5       r\SIS j5       rSJS jr\SHS j5       r\SKU 4S jj5       r\SLU 4S jj5       r\SMS j5       r        SNS jr        SOS jr\ SP         SQS jj5       r      SRU 4S jjrSSS jr      STS jr \!          SUS j5       r"\!          SVS j5       r"          SWS jr"    SXS  jr#\$        SYS! j5       r%            SZS" 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,      SaS) jr-        SbS* jr.    ScS+ jr/SdS, jr0\$      SeS- j5       r1\$      SfS. j5       r2        SgS/ jr3      ShS0 jr4        SiS1 jr5\$SS2.         SjS3 jj5       r6SkSlS4 jjr7    SmS5 jr8      SnS6 jr9      SoS7 jr:      SpS8 jr; Sk     SqS9 jjr< Sk     SqS: jjr=\$SrS; j5       r>\$SsS< j5       r?\$StS= j5       r@\$      SuS> j5       rA    SvS? jrB        SwS@ jrC      SxSA jrD      SySB jrESzSC jrF\$      S{SD j5       rGSErHU =rI$ )|ÚAnthropicModeli.  zúA model that uses the Anthropic API.

Internally, this uses the [Anthropic Python client](https://github.com/anthropics/anthropic-sdk-python) to interact with the API.

Apart from `__init__`, all methods are private or match those of the base class.
Ú
standaloneÚby_referenceF)ÚreprÚAnthropicModelNameÚ_model_namezProvider[AsyncAnthropicClient]Ú	_providerÚ	anthropicN)Úproviderrm  Úsettingsc               óˆ   >• Xl         [        U[        5      (       a  [        US:X  a  SOU5      nX l        [
        TU ]  XCS9  g)a�  Initialize an Anthropic model.

Args:
    model_name: The name of the Anthropic model to use. List of model names available
        [here](https://docs.anthropic.com/en/docs/about-claude/models).
    provider: The provider to use for the Anthropic API. Can be either the string 'anthropic' or an
        instance of `Provider[AsyncAnthropicClient]`. Defaults to 'anthropic'.
    profile: The model profile to use. Defaults to a profile picked by the provider based on the model name.
        The default 'anthropic' provider will use the default `..profiles.anthropic.anthropic_model_profile`.
    settings: Default model settings for this model instance.
Úgatewayzgateway/anthropic)r½  rm  N)r¹  r]  r^  r\   rº  ÚsuperÚ__init__)Úselfr  r¼  rm  r½  Ú	__class__s        €r‰   rÁ  ÚAnthropicModel.__init__H  sB   ø€ ð& &Ôä�h¤×$Ñ$Ü%¸XÈÓ=RÑ&9ÐX`ÓaˆHØ!Œä‰Ñ (ÐÒ<r8  c                ó.   • U R                   R                  $ r\  )rº  Úclient©rÂ  s    r‰   rÆ  ÚAnthropicModel.clientc  s   € à�~‰~×$Ñ$Ð$r8  c                ó@   • [        U R                  R                  5      $ r\  )r^  rÆ  Úbase_urlrÇ  s    r‰   rÊ  ÚAnthropicModel.base_urlg  s   € ä�4—;‘;×'Ñ'Ó(Ð(r8  c                ó   • U R                   $ )zThe model name.©r¹  rÇ  s    r‰   r  ÚAnthropicModel.model_namek  ó   € ð ×ÑÐr8  c                óà   • [        U R                  U5      =(       d    0 nU R                  UR                  S5      UR                  S5      UR                  S5      UR                  S5      5      $ )zKResolve the longest retention requested by active Anthropic cache settings.rA  r?  r=  r@  )r`   r½  Ú_max_prompt_cache_retentionrŒ   )rÂ  rQ  r½  s      r‰   Úresolve_prompt_cache_retentionÚ-AnthropicModel.resolve_prompt_cache_retentionp  s^   € ä'¨¯©°~ÓF×LÈ"ˆØ×/Ñ/Ø�L‰LÐ*Ó+Ø�L‰LÐ7Ó8Ø�L‰LÐ;Ó<Ø�L‰LÐ3Ó4ó	
ð 	
r8  c                ó.   • U R                   R                  $ )zThe model provider.)rº  rˆ   rÇ  s    r‰   ÚsystemÚAnthropicModel.systemz  s   € ð �~‰~×"Ñ"Ð"r8  c                ó‚  >• [         TU ]  nU R                  R                  nUR	                  S[
        5      n[        U[        5      (       a
  U[        1-
  n[        U[        5      (       a
  U[        1-
  n[        U[        5      (       a
  U[        1-
  nUR	                  SS5      =(       a    [        U[        5      (       + n[        U[        UUUR	                  SS5      =(       a    [        U[         5      (       + UR	                  SS5      =(       a    [        U["        5      (       + S95      n[%        [        U5      $ )a£  The model profile.

Anthropic web-tool availability depends on both model support and the client/platform, so the
profile's `supported_native_tools` and `anthropic_supports_dynamic_filtering` are narrowed here
for clients that don't support them (e.g. Bedrock, Vertex). `supports_inline_system_prompts` is
narrowed the same way, and for the same reason: serving a `{'role': 'system'}` entry is a fact
about the transport as much as about the model. Thinking-block binding is likewise narrowed, but
by client class rather than by base URL: its beta and drop-block retry are verified against
Anthropic's Messages API, which a proxied or gateway `AsyncAnthropic` still reaches.
Úsupported_native_toolsÚ$anthropic_supports_dynamic_filteringFÚsupports_inline_system_promptsrj  )rØ  rÙ  rÚ  rj  )rÀ  rm  rº  rÆ  rŒ   rF   r]  Ú_WEB_SEARCH_UNSUPPORTED_CLIENTSrM   Ú_WEB_FETCH_UNSUPPORTED_CLIENTSrL   Ú_ADVISOR_UNSUPPORTED_CLIENTSrH   Ú'_WEB_TOOLS_20260209_UNSUPPORTED_CLIENTSrT   rY   Ú)_INLINE_SYSTEM_PROMPT_UNSUPPORTED_CLIENTSÚ%_THINKING_BINDING_UNSUPPORTED_CLIENTSr   )rÂ  Ú_profilerÆ  rØ  Úsupports_dynamic_filteringrÃ  s        €r‰   rm  ÚAnthropicModel.profile  s%  ø€ ô ‘7‘?ˆØ—‘×&Ñ&ˆØ!)§¡Ð.FÔH^Ó!_ÐÜ�fÔ=×>Ñ>Ø%;¼}¸oÑ%MÐ"Ü�fÔ<×=Ñ=Ø%;¼|¸nÑ%LÐ"Ü�fÔ:×;Ñ;Ø%;¼{¸mÑ%KÐ"Ø%-§\¡\Ð2XÐZ_Ó%`÷ &
ÔisØÔ;ój
ô f
Ð"ô !ØÜ!Ø'=Ø5Oð 08¯|©|Ð<\Ð^cÓ/d÷ 0VÜ" 6Ô+TÓUÔUØ08·±Ð=^Ð`eÓ0f÷ 1RÜ" 6Ô+PÓQÔQñ
ó
ˆô Ô)¨8Ó4Ð4r8  c                óŠ   >• [         TU ]  nU R                  nUb   [        UR                  [
        5      (       a  gUS:X  a  U$ S$ )zTThe effective addition mode, narrowed for transports without inline system messages.Nr¶  )rÀ  Útool_addition_moder¼  r]  rÆ  rß  )rÂ  Úmoder¼  rÃ  s      €r‰   rå  Ú!AnthropicModel.tool_addition_mode§  sD   ø€ ô ‰wÑ)ˆØ—=‘=ˆØÑ¤J¨x¯©Ô@i×$jÑ$jØØ˜~Ó-ˆtÐ7°4Ð7r8  c           	     ó^   • [        [        [        [        [        [
        [        [        15      $ )z4The set of builtin tool types this model can handle.)Ú	frozensetrM   rI   rL   rK   rJ   rP   rH   ©Úclss    r‰   rØ  Ú%AnthropicModel.supported_native_tools°  s&   € ô ÜÔ-¬|¼ZÌÔXfÔhsÐtó
ð 	
r8  c              ƒ  óB  #   • [        5         U R                  UU5      u  p#[        [        U=(       d    0 5      n U R	                  USX#5      I S h  v•N nU R                  XCU5      $  N! [         a¨  nS[        U5      ;   a“  U R	                  USX#5      I S h  v•N  nU IS h  v•N    U R                  XcU5      I S h  v•N  nU  S h  v•N  nM  
 UR                  5       sS S S 5      IS h  v•N    s S nA$ ! , IS h  v•N  (       d  f       e = fe S nAff = f7f)NFzStreaming is requiredT)
rm   Úprepare_requestr   r:  Ú_messages_createÚ_process_responseÚ
ValueErrorr^  Ú_process_streamed_responserŒ   )	rÂ  r†   rQ  r‡   r  r  ÚstreamÚstreamed_responseÚ_s	            r‰   r�  ÚAnthropicModel.request·  s  é € ô 	#Ô$Ø37×3GÑ3GØØ$ó4
Ñ0ˆô Ô4°n×6JÈÓKˆð	Ø!×2Ñ2°8¸UÀNÓm×mˆHØ×)Ñ)¨(ÈnÓ]Ð]ñ nøäó 	Ø&¬#¨a«&Ó0ð  $×4Ñ4°X¸tÀ^Ón×nÐn�ß!›6Ø.2×.MÑ.MØ¸.ó/÷ )ð )Ð%ñ $5÷ ð ˜aÙð $5à,×0Ñ0Ó2÷ "Ÿ6Ÿ6Ÿ6Ÿ6�6ð úˆEûð	üs²   ‚8D»A* ÁA(ÁA* Á'DÁ(A* Á*
DÁ4%DÂBÂDÂ%B(Â&DÂ*C<Ã CÃC<ÃCÃC
ÃCÃC<Ã$DÃ0C3Ã1DÃ6DÃ7DÃ<D	ÄDÄD	ÄDÄDÄDc              ƒ  óê   #   • [        5         U R                  UU5      u  p#U R                  U[        [        U=(       d    0 5      U5      I S h  v•N n[
        R                  " UR                  S9$  N"7f)N)Úinput_tokens)rm   rî  Ú_messages_count_tokensr   r:  r   ÚRequestUsagerø  )rÂ  r†   rQ  r‡   r  s        r‰   Úcount_tokensÚAnthropicModel.count_tokensÔ  sp   é € ô 	#Ô$Ø37×3GÑ3GØØ$ó4
Ñ0ˆð
 ×4Ñ4Ø”dÔ1°>×3GÀRÓHÐJbó
÷ 
ˆô ×!Ò!¨x×/DÑ/DÑEÐEñ	
ùs   ‚AA3ÁA1Á#A3c               ód  #   • [        5         U R                  UU5      u  p#[        [        U=(       d    0 5      nU R	                  USX#5      I S h  v•N nU IS h  v•N   U R                  XSU5      I S h  v•N 7v •  S S S 5      IS h  v•N   g  N= N4 N N! , IS h  v•N  (       d  f       g = f7f)NT)rm   rî  r   r:  rï  rò  )rÂ  r†   rQ  r‡   Úrun_contextr  s         r‰   Úrequest_streamÚAnthropicModel.request_streamæ  s�   é € ô 	#Ô$Ø37×3GÑ3GØØ$ó4
Ñ0ˆô Ô4°n×6JÈÓKˆØ×.Ñ.¨x¸¸~Óh×hˆß’8Ø×7Ñ7¸Ð\jÓk×kÓk÷ —8�8ñ iÙÙk÷ —8—8�8üsl   ‚AB0ÁBÁ
B0ÁBÁB0ÁBÁ5BÁ6BÁ=B0ÂBÂ	B0ÂB0ÂBÂB0ÂB-ÂBÂB-Â)B0c                ó  >• U R                   n[        U R                  U5      =(       d    0 nUR                  SS5      (       aF  UR                  S5      =n(       a.  UR                  S5      S:X  a  [	        U R
                  < S35      eUR                  SS5      nUR                  SS	5      n[        UR                  S5      UR                  S
5      US9nUS:H  =(       d    US:H  =(       a    U(       + n	UR                  (       a   U	(       a™  UR                  SS5      n
UR                  U
(       a  SOS5      nUR                  S:X  a]  UR                  (       dL  U
(       a  SOSnSU S3nUS:X  a  [	        U R
                  < SU 35      eU(       a  US-  n[	        SU 35      eUR                  U R                   R                  SS5      5      nUR                  S:X  aO  UR                  c   eUR                  R                  SL a  [	        S5      e[        U[        UR                  S	S9S9n[        TU ]=  X5      u  pÒUR                  SS5      (       a'  U(       a   0 UEnU R!                  U5        U=(       d    S nXÒ4$ )NÚ#anthropic_disallows_budget_thinkingFr<  r  Úenabledz£ does not support `anthropic_thinking={'type': 'enabled', 'budget_tokens': ...}`. Use `anthropic_thinking={'type': 'adaptive'}` and `anthropic_effort=...` instead.Ú$anthropic_supports_adaptive_thinkingÚ%anthropic_supports_forced_tool_choiceTrN  ©Úsupports_adaptive_thinkingÚadaptiveÚsupports_json_schema_outputÚnativeÚpromptedr�   ÚNativeOutputÚPromptedOutputzUse `output_type=z(...)` instead.z~ does not support output tools when a thinking setting is configured, because it rejects the forced tool choice they require. zP Alternatively, `anthropic_thinking={'type': 'adaptive'}` supports output tools.zPAnthropic does not support extended thinking and output tools at the same time. Údefault_structured_output_modez^Setting `strict=False` on `output_type=NativeOutput(...)` is not allowed for Anthropic models.)Ústrict)Úoutput_objectÚ%anthropic_disallows_sampling_settings)rm  r`   r½  rŒ   r&   r  Ú_effective_thinking_typeÚoutput_toolsÚwith_default_output_modeÚoutput_modeÚallow_text_outputr  r  r   rÀ  rî  Ú#_drop_unsupported_sampling_settings)rÂ  rQ  r‡   rm  rV  r<  r  Úsupports_forced_tool_choiceÚthinking_typeÚthinking_blocks_output_toolsr	  Úsuggested_output_typeÚremedyÚprepared_settingsÚfilteredrÃ  s                  €r‰   rî  ÚAnthropicModel.prepare_requestø  s¦  ø€ ð —,‘,ˆÜ% d§m¡m°^ÓD×JÈˆð �K‰KÐ=¸u×EÑEØ'-§z¡zÐ2FÓ'GÐGÐ#ÕGØ"×&Ñ& vÓ.°)Ó;äØ—?‘?Ñ%ð &dð dóð ð &-§[¡[Ð1WÐY^Ó%_Ð"Ø&-§k¡kÐ2YÐ[_Ó&`Ð#Ü0Ø�J‰JÐ+Ó,Ø�J‰J�zÓ"Ø'Añ
ˆð (5¸	Ñ'A÷ (
Ø˜ZÑ'×KÐ0KÔ,Kð 	%ð $×0×0Ö5QØ*1¯+©+Ð6SÐUZÓ*[Ð'Ø'?×'XÑ'XÞ7‘¸Zó(Ð$ð )×4Ñ4¸Ó>ÐG_×Gq×Gqö ;V©Ð[kÐ%Ø,Ð-BÐ,CÀ?ÐS�Ø  JÓ.Ü#ØŸ?™?Ñ-ð ._Ø_eÐ^fðhóð ö .ØÐpÑp�FÜØfÐgmÐfnÐoóð ð $<×#TÑ#TØ�L‰L×ÑÐ=¸vÓFó$
Ð ð $×/Ñ/°8Ó;Ø+×9Ñ9ÑEÐEÐEØ'×5Ñ5×<Ñ<ÀÒEÜØtóð ô (/Ø(¼Ð@X×@fÑ@fÐosÑ8tñ(Ð$ô 7<±gÑ6MÈnÓ6wÑ3ÐØ�;‰;Ð>À×FÑFÖK\Ø&;Ð):Ð&;ˆHØ×4Ñ4°XÔ>Ø (× 0¨DÐØ Ð:Ð:r8  c                ó4  • [          Vs1 s H  o"U;   d  M
  UiM     nnUR                  S5      n[        U5      (       aU  U[          Vs1 s H  o"U;   d  M
  UiM     sn-  nUR                  5        VVs0 s H  u  pVU[         ;  d  M  XV_M     snnUS'   [          H  nUR	                  US 5        M     U(       aJ  [          Vs/ s H  o"U;   d  M
  UPM     nn[
        R                  " SU SU R                  < S3[        SS9  g g s  snf s  snf s  snnf s  snf )NrO  zSampling parameters z are not supported by z!. These settings will be ignored.r   r™  )	rU   rŒ   r#   ÚitemsÚpopr›  rœ  r  ÚUserWarning)rÂ  rQ  rS  ÚdroppedrO  r`  rT  Úordereds           r‰   r  Ú2AnthropicModel._drop_unsupported_sampling_settingsG  s  € Ý*CÓaÒ*C˜wÐR`ÑG`—7Ñ*CˆÐaØ#×'Ñ'¨Ó5ˆ
Ü�z×"Ñ"ØÕ/HÓbÒ/H GÐWaÑLaŸÑ/HÑbÑbˆGà-7×-=Ñ-=Ô-?ô,Ú-?™z˜sÀ3ÔNgÑCg“
�’
Ñ-?ò,ˆN˜<Ñ(÷ 1ˆGØ×Ñ˜w¨Ö-ñ 1ö Ý.GÓ^Ò.G 7ÐV]ÑK]—wÑ.GˆGÐ^Ü�MŠMØ& w iÐ/EÀdÇoÁoÑEXÐXyÐzÜØóð ùò bùò cùó,ùò _s.   ‰	D–DÁ	D
ÁD
Á3DÂDÃ	DÃDc                óÌ   • UR                  S5      =n(       a  U$ UR                  nUb  USL a  [        $ U R                  R                  SS5      (       a  SS0$ S[        U   S.$ )z=Get the thinking parameter, falling back to unified thinking.r<  Fr  r  r  r  )r  Úbudget_tokens)rŒ   rN  rf  rm  rV   )rÂ  rQ  r‡   r<  rN  s        r‰   Ú_translate_thinkingÚ"AnthropicModel._translate_thinking[  st   € ð "0×!3Ñ!3Ð4HÓ!IÐIÐÕIØ%Ð%Ø+×4Ñ4ˆØÑ˜x¨5Ò0ÜˆKØ�<‰<×ÑÐBÀE×JÑJØ˜JÐ'Ð'Ø!Ô4QÐRZÑ4[Ñ\Ð\r8  c              ƒ  ó   #   • g 7fr\  r1  ©rÂ  r†   ró  rQ  r‡   s        r‰   rï  ÚAnthropicModel._messages_createj  ó
   é € ð 	ùó   ‚c              ƒ  ó   #   • g 7fr\  r1  r,  s        r‰   rï  r-  t  r.  r/  c              ƒ  ó  ^ ^^^^^^^^^^^ ^!#   • [        X5      nT R                  TU5      u  m!m T R                  T!UT5      u  m!mn[        T!U5        T!(       a"  [	        S T! 5       5      (       a  [        S5      eT R                  T5      u  mnT R                  XT5      I Sh  v•N u  mmT R                  UT5        T R                  TT5        T R                  TTT!TSLS9  T R                  UT5      mT R                  mT R                  TU5      n[        TU5      n	T R                  TTXU	5      u  n
mU
R!                  U5        T R#                  XT5      mT R%                  TT5        T R'                  UT5      u  p¼T R)                  U5      u  pÞ[+        TUUU	U
US9u  nnnn          S	UUUUUUUUU UUU U!4S jjnUn[-        T R.                  T R0                  R2                  5          U" X¿UU5      I Sh  v•N sSSS5        $  GNi N! [4         aŠ  nUR6                  S:X  a\  U(       aU  [9        S T 5       5      (       a>   U" SUUU5      I Sh  v•N  s SnAsSSS5        $ ! [4         a  nUnSn SnAOSnAff = f[;        TUU5      (       d  Ue SnAOSnAff = fU" U[<        U
[>        1-  [A        U	5      5      I Sh  v•N  n[C        T R.                  5        UsSSS5        $ ! , (       d  f       g= f7f)
z£Calls the Anthropic API to create a message.

This is the last step before sending the request to the API.
Most preprocessing has happened in `prepare_request()`.
c              3  óF   #   • U  H  oR                  S 5      SL v •  M     g7f)rƒ   TN©rŒ   ©r_  r�   s     r‰   ra  Ú2AnthropicModel._messages_create.<locals>.<genexpr>�  s   é € ÐMÂu¸tŸ™ /Ó2°dÕ:Âuùs   ‚!zŸAnthropic rejects a request whose wire tools all have `defer_loading=True`. Make at least one tool visible, or add a tool-search surface or capability catalog.N©Úautomatic_caching)rt  c              “  ó¢  >#   • TR                   R                  R                  R                  T
R	                  SS5      T=(       d    [
        TTR                  T=(       d    [
        T=(       d    [
        T	=(       d    [
        T=(       d    [
        [        U5      =(       d    [
        TT=(       d    [
        UT
R	                  S[
        5      [        T
R	                  S[        5      5      T
R	                  S[
        5      T=(       d    [
        U =(       d    [
        [        T
5      TR                  T
T5      T[        T
U5      S9I S h  v•N $  N7f)Nry   é   Ústop_sequencesÚtimeoutr;  )ry   rÕ  r†   ÚmodelrŽ   Útool_choiceÚmcp_serversÚoutput_configr•  ró  Úcache_controlrN  r:  r;  r  Úcontext_managementÚ	containerr«  ÚspeedÚextra_headersrO  )rÆ  Úbetar†   ÚcreaterŒ   rf  r¹  Úsortedr   r•   r±  Ú_effective_speedrW  )Úcontainer_paramrN  r•  rR  Úanthropic_messagesÚanthropic_profileÚauto_cache_controlrA  rD  r>  rQ  r?  rÂ  ró  Úsystem_promptr=  rŽ   s       €€€€€€€€€€€€€r‰   rF  Ú/AnthropicModel._messages_create.<locals>.create´  s  øé € ð Ÿ™×)Ñ)×2Ñ2×9Ñ9Ø)×-Ñ-¨l¸DÓAØ$×,¬Ø+Ø×&Ñ&Ø—mœtØ'×/¬4Ø'×/¬4Ø+×3¬tÜ˜U“m×+¤tØØ0×8´DØ!Ø-×1Ñ1Ð2BÄDÓIÜ)¨.×*<Ñ*<¸YÌ	Ó*RÓSØ'×+Ñ+Ð,@Ä$ÓGØ#5×#=¼Ø)×1¬TÜ<¸^ÓLØ×+Ñ+¨NÐ<MÓNØ+Ü,¨^Ð=NÓOð+ :ð ÷ ð ñ ùs   ƒEEÅEÅ	Eiô  c              3  óp   #   • U  H,  nUS      H  n[        U5      =(       a    US   S:H  v •  M!     M.     g7f)Úcontentr  Úcontainer_uploadN)r#   )r_  r  Úblocks      r‰   ra  r5  Ú  sA   é € ð â'9˜GØ%,¨YÕ%7˜Eô $ EÓ*×R¨u°V©}Ð@RÑ/RÔRá%7ñ SÚ'9ùs   ‚46)
rI  z BetaContainerParams | str | NonerN  úBetaThinkingConfigParam | Omitr•  úset[str]rR  údict[str, object] | NoneÚreturnú4BetaMessage | AsyncStream[BetaRawMessageStreamEvent])"rŠ   Ú_prepare_tools_and_tool_choiceÚ_add_native_toolsr”   rd  r&   Ú_build_automatic_cache_controlÚ_map_messageÚ!_apply_per_block_caching_fallbackÚ_apply_explicit_message_cachingÚ_limit_cache_pointsÚ_build_output_configrm  r)  rh  Ú_get_betas_and_extra_headersÚupdateÚ_add_compaction_paramsÚ+_validate_task_budget_vs_context_managementÚ_get_containerÚ&_stale_thinking_block_recovery_historyr—  r  r  rº  r  r—   r  r„  ro  rf  r“  rr  r�  )"rÂ  r†   ró  rQ  r‡   r�   Únative_tool_betasÚresolved_cache_ttlrN  r”  r•  rB  Úcontainer_from_historyÚrecovery_messagesrt  Úinitial_thinkingÚinitial_betasÚinitial_thinking_overrideÚinitial_effective_thinkingrF  Úretry_containerr
  Úfallback_errorÚresultrJ  rK  rL  rA  rD  r>  r?  rM  r=  rŽ   s"   ` ``                    @@@@@@@@@@r‰   rï  r-  ~  sU  ÿüé € ô <¸HÓ_ÐØ!×@Ñ@ÀÐQiÓjÑˆˆ{Ø04×0FÑ0FÀuÐNfÐhvÓ0wÑ-ˆˆ{Ð-Ü$ UÐ,?Ô@Þ”SÑMÁuÓM×MÑMÜðfóð ð
 26×1TÑ1TÐUcÓ1dÑ.ÐÐ.Ø26×2CÑ2CÀHÐhvÓ2w×,wÑ)ˆÐ)Ø×.Ñ.Ð/AÐCUÔVØ×,Ñ,¨^Ð=OÔPØ× Ñ ØÐ-¨uÐHZÐbfÐHfð 	!ñ 	
ð ×1Ñ1Ð2JÈNÓ[ˆØ ŸL™LÐØ×+Ñ+¨NÐ<TÓUˆÜ0°ÀÓJÐØ#×@Ñ@ØÐ-¨xÐSeó 
Ñˆˆ}ð 	�‰Ð&Ô'Ø!×8Ñ8¸È.ÓYÐØ×8Ñ8¸ÐI[Ô\Ø,0×,?Ñ,?ÀÈ.Ó,YÑ)ˆ	Ø15×1\Ñ1\Ð]eÓ1fÑ.Ðä.Ø!Ø!ØØ"ØØ$7ññ 	_Ð˜-Ð)BÐD^ð	Ø=ð	à4ð	ð ð	ð  8ð		ð
 B÷	÷ 	ó 	ð< $ˆÜ˜TŸ_™_¨d¯n©n×.OÑ.OÕPð Ù# IÀÐPiÓj×j÷ QÑPòy -xñ| køÜ!ó  à×%Ñ%¨Ó,Þ.Üñ á'9ó÷ ñ ð/Ù%+¨DÐ2BÀMÐSlÓ%m×mÐmÔm÷ QÑPøô *ó /ð !/˜Ø*.�ûð/úô 6Ð6GÐIcÐej×kÑkØ�Kô lûð% úñ* "ØÜØÔ9Ð:Ñ:Ü+Ð,>Ó?ó	÷ ð ˆFô 0°·±Ô@Ø÷? Q×P×Püsµ   �BLÂ%HÂ&ELÇ1K3Ç3HÈ HÈHÈLÈHÈ
J'È.J"ÉI.ÉIÉI.ÉJ'É K3É$
LÉ.
JÉ8JÉ<J"ÊJÊJ"ÊK3Ê"J'Ê'&K3ËKËK3Ë)
LË3
LË=Lc                ó^   • U R                  U5      nX!L a  US4$ [        S U 5       5      nX#4$ )zZThe wire-visible history and response whose metadata describes the compacted-away request.Nc              3  óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr\  )r]  r1   rŒ  s     r‰   ra  ÚHAnthropicModel._stale_thinking_block_recovery_history.<locals>.<genexpr>ÿ  s   é € ÐfÒ/? GÄ:ÈgÔWd×CeŸ™Ò/?ùrŽ  )Ú_trim_before_compactionr�  )rÂ  r†   Útrimmed_messagesÚboundarys       r‰   re  Ú5AnthropicModel._stale_thinking_block_recovery_historyô  sA   € ð  ×7Ñ7¸ÓAÐØÒ'Ø˜T�>Ð!ô
 ÑfÑ/?ÓfÓfˆØÐ)Ð)r8  c                óÂ   • [        S U  5       5      nU(       a  UR                  S5        UR                  S5      nU(       a  Uc  [        [        SS[
        0/05      nU$ )z¶Add compaction beta and default context_management when messages contain CompactionParts.

This ensures CompactionParts can be round-tripped even without AnthropicCompaction active.
c              3  ó˜   #   • U  H@  n[        U[        5      (       d  M  UR                    H  n[        U[        5      v •  M     MB     g 7fr\  )r]  r1   Úpartsr*   )r_  ÚmsgÚparts      r‰   ra  Ú8AnthropicModel._add_compaction_params.<locals>.<genexpr>  s<   é € ð #
Ú8@°ÄJÈsÔTa×DbÓ,Ðor×oxÕoxÐgkŒJ�tœ^×,Ð,ÑoxÑ,ºùs
   ‚A
Ÿ+A
úcompact-2026-01-12rJ  Úeditsr  )r„  ÚaddrŒ   r   r¶   Ú_ANTHROPIC_COMPACT_EDIT_TYPE)r†   r•  rQ  Úhas_compaction_partsrA  s        r‰   rb  Ú%AnthropicModel._add_compaction_params  so   € ô  #ñ #
Ù8@ó#
ó  
Ðö  Ø�I‰IÐ*Ô+Ø+×/Ñ/Ð0NÓOÐÞÐ$6Ñ$>Ü!%Ü0°7¸fÔFbÐ=cÐ<dÐ2eó"Ðð "Ð!r8  c                óR  ^^• [        UR                  S0 5      5      nUR                  S[        5       5        [	        5       nUR                  S5      (       a  UR                  S5        U R                  U5      b  UR                  [        5        [        U[        5      (       d  SU;   a  UR                  [        5        UR                  S5      S:X  a'  U R                  U5      (       a  UR                  S	5        UR                  S
5      =n(       a  UR                  S U 5       5        UR                  SS5      =n	(       aI  UR                  U	R                  S5       V
s1 s H  oªR                  5       =n(       d  M  UiM     sn
5        U R!                  U5      (       a  UR                  ["        5        TR$                   Vs0 s H  oÌR&                  U_M     snmU R(                  S:X  a,  [+        UU4S jU 5       5      (       a  UR                  S5        Xv4$ s  sn
f s  snf )a
  Prepare beta features list and extra headers for API request.

Handles merging custom `anthropic-beta` header from `extra_headers` into betas set,
auto-attaching the Files API beta when messages contain an Anthropic `UploadedFile`,
and ensuring `User-Agent` is set.
rD  z
User-AgentrJ  r~  Nrk  rI  Úfastzfast-mode-2026-02-01rH  c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr\  )r^  )r_  Úbs     r‰   ra  Ú>AnthropicModel._get_betas_and_extra_headers.<locals>.<genexpr><  s   é € Ð<Ò); Aœ˜QŸ˜Ò);ùó   ‚zanthropic-betaÚ,r¶  c              3  ó<  >#   • U  H‘  n[        U[        5      (       d  M  UR                    Hf  n[        U[        5      (       d  M  UR                    H;  nUTR
                  ;   =(       a     UT;   =(       a    TR                  U5      S :g  v •  M=     Mh     M“     g7f)ÚvisibleN)r]  r0   rz  r>   Útools_addedÚdeclared_tool_defsr…   )r_  r  r|  rˆ   Úfunction_tool_defsr‡   s       €€r‰   ra  rˆ  J  s¥   øé € ð 	=
ò $�Ü˜'¤<×0ó	Jð
  Ÿ��Ü˜$Ô 9×:óJð ×(Õ(�ð Ð,×?Ñ?Ñ?÷ JØÐ*Ñ*÷Jà(×6Ñ6°tÓ<À	ÑIôJñ )ñJñ
 &ñJò $ùs   ƒB #BÁABz(mid-conversation-tool-changes-2026-07-01)r  rŒ   Ú
setdefaultro   r�   r€  Ú_get_task_budgetÚ_ANTHROPIC_TASK_BUDGETS_BETAr]  r�   r“  Ú_client_supports_fast_speedra  r"  ÚsplitÚstripÚ%_messages_use_anthropic_uploaded_fileÚ_ANTHROPIC_FILES_API_BETAÚfunction_toolsrˆ   rå  r„  )rÂ  rQ  rK  r†   r‡   rN  rD  r•  Úbetas_from_settingÚbeta_headerrE  Ústripped_betaÚtool_defr�  s       `        @r‰   r`  Ú+AnthropicModel._get_betas_and_extra_headers  sØ  ù€ ô ˜^×/Ñ/°ÀÓDÓEˆØ× Ñ  ¬~Ó/?Ô@ä›%ˆà×ÑÐ<×=Ñ=Ø�I‰IÐ*Ô+Ø× Ñ  Ó0Ñ<Ø�I‰IÔ2Ô3ô ˜(¤D×)Ñ)¨oÀÓ.IØ�I‰IÔ6Ô7à×ÑÐ/Ó0°FÓ:¸t×?_Ñ?_Ð`q×?rÑ?rØ�I‰IÐ,Ô-à!/×!3Ñ!3Ð4EÓ!FÐFÐÕFØ�L‰LÑ<Ñ);Ó<Ô<à'×+Ñ+Ð,<¸dÓCÐCˆ;ÕCØ�L‰L°K×4EÑ4EÀcÔ4JÓnÒ4J¨D×`jÑ`jÓ`lÐOlÈ}ÓOlŸ-Ñ4JÑnÔoà×5Ñ5°h×?Ñ?Ø�I‰IÔ/Ô0ð G_×FmÒFmÓnÒFm¸(Ÿm™m¨XÒ5ÑFmÑnÐØ×"Ñ" nÓ4¼õ 	=
ñ $ó		=
÷ 	:
ñ 	:
ð �I‰IÐ@ÔAàÐ#Ð#ùò/ oùò os   Å#HÆHÇH$c                ó.  • U GH  n[        U[        5      (       d  M  UR                   Hã  n[        U[        5      (       ai  [        UR                  [
        5      (       dJ  UR                   H8  n[        U[        5      (       d  M  UR                  U R                  :X  d  M6        g   M�  [        U[        5      (       d  M˜  UR                  SS9 H8  n[        U[        5      (       d  M  UR                  U R                  :X  d  M6        g   Må     GM     g)u  Whether any normalized message contains an Anthropic-hosted `UploadedFile`.

Used to gate auto-attachment of the `files-api-2025-04-14` beta header.
Mirrors the per-item `provider_name == self.system` check the request
mappers (`_map_user_prompt`, `_map_message`'s `ToolReturnPart` branch)
already perform â€” so the beta is added exactly when the wire shape
requires it. `UploadedFile`s for other providers are intentionally
ignored here; they will raise the existing `UserError` later in the
request-mapping path.
TÚraw©ræ  F)r]  r0   rz  rC   rP  r^  rB   Úprovider_namerÕ  r@   Úcontent_items)rÂ  r†   r  r|  Úitems        r‰   r–  Ú4AnthropicModel._messages_use_anthropic_uploaded_fileX  sÌ   € ô  ˆGÜ˜g¤|×4Ñ4ÙØŸœ�Ü˜d¤N×3Ñ3¼JÀtÇ|Á|ÔUX×<YÑ<YØ $§¤˜Ü% d¬L×9Ó9¸d×>PÑ>PÐTX×T_ÑT_Õ>_Û#'ó !-ô   ¤n×5Ó5Ø $× 2Ñ 2¸Ð 2Ó >˜Ü% d¬L×9Ó9¸d×>PÑ>PÐTX×T_ÑT_Õ>_Û#'ó !?ô &ñ  ð r8  c                óÈ   • UR                  S5      nUS;   a  U R                  U5      (       a  U$ US:X  a(  [        R                  " SU R                   S3[
        SS9  [        $ )zbSpeed to send to the API, or OMIT when the model or client does not support the `speed` parameter.rI  )Ústandardr…  r…  z+anthropic_speed='fast' is not supported by z- on this client; the setting will be ignored.r   r™  )rŒ   r“  r›  rœ  r  r#  rf  )rÂ  rQ  rK  Úss       r‰   rH  ÚAnthropicModel._effective_speedq  sf   € ð ×ÑÐ0Ó1ˆØÐ$Ó$¨×)IÑ)IÐJ[×)\Ñ)\ØˆHØ�‹;Ü�MŠMØ=¸d¿o¹oÐ=NÐN{Ð|ÜØòô
 ˆr8  c                ór   • UR                  SS5      =(       a    [        U R                  [        5      (       + $ )zZFast mode is only available on the direct Anthropic API (not Bedrock, Vertex, or Foundry).Úanthropic_supports_fast_speedF)rŒ   r]  rÆ  Ú_FAST_MODE_UNSUPPORTED_CLIENTS)rÂ  rK  s     r‰   r“  Ú*AnthropicModel._client_supports_fast_speed€  s6   € à ×$Ñ$Ð%DÀeÓL÷ 
ÔU_Ø�K‰KÔ7óV
ô R
ð 	
r8  c                ó�  • UR                  S5      =nbK  USL a  g[        U[        5      (       a,  [        U5      S1:X  a  UR                  S5      =n(       a  US4$ US4$ U(       a`  [        US   [        5      (       aH  US   R
                  S:X  a5  US   R                  (       a   US   R                  R                  S5      S4$ g[        U5       Hq  n[        U[        5      (       d  M  UR                  U R                  :X  d  M6  UR                  (       d  MI  UR                  R                  S5      =n(       d  Mm  US4s  $    g)	uu  Resolve the `container` request parameter, and whether we resolved it from history.

The second element is `True` only for an id recovered by the history scan below. That is the
one container the caller never chose, so it is the only one we may drop and re-resolve when
the API rejects it. A user-set `anthropic_container` and a `pause_turn` reconnect id are
both deliberate and stay on the wire even when they fail.

The Anthropic SDK types `container` as `BetaContainerParams | str`, and the
live API accepts both forms *except* for one specific shape: a dict carrying
only `id` and nothing else, which is rejected with
`container: Input should be a valid string`. `{"skills": [...]}`,
`{"id": x, "skills": [...]}`, and the raw `"x"` string all work â€” only
`{"id": x}` alone is broken server-side.

So when the user passes that only-broken shape, we transparently unwrap it to
the string the server wants. Every other shape is passed through untouched so
the Skills path (`{"skills": ...}` / `{"id": ..., "skills": ...}`) keeps
working. History-based reuse is always sent as the raw id string since we
never have skills to attach there.
rD  F)NFÚidéÿÿÿÿÚ	suspendedÚcontainer_idT)
rŒ   r]  r  r�   r1   Ústater‚  r~  r¡  rÕ  )rÂ  r†   rQ  rB  ÚcidÚms         r‰   rd  ÚAnthropicModel._get_container†  s%  € ð. (×+Ñ+Ð,AÓBÐBˆIÑOØ˜EÒ!Ø"Ü˜)¤T×*Ñ*¬s°9«~À$ÀÓ/GÐT]×TaÑTaÐbfÓTgÐMgÈSÕMgØ˜E�zÐ!Ø˜eÐ#Ð#ö œ
 8¨B¡<´×?Ñ?ÀHÈRÁL×DVÑDVÐZeÓDeØ˜‰|×,×,Ø ‘|×4Ñ4×8Ñ8¸ÓHÈ%ÐOÐOØä˜(Ö#ˆAÜ˜!œ]×+Ó+°·±À4Ç;Á;Õ0NÐST×Se×SeÑSeØ×,Ñ,×0Ñ0°Ó@Ð@�3×@Ø ˜9Ò$ñ $ð r8  c              ƒ  óÆ  ^ ^^^^^^^^^^^#   • [        UUR                   Vs/ s H  n[        U[        5      (       d  M  UPM     snS9n[        UUR                   Vs/ s H  n[        U[        5      (       a  M  UPM     snS9n[        X5      nT R                  TU5      u  mmT R                  TUT5      u  mmn[        TU5        T R                  T5      u  mn	T R                  XT5      I S h  v•N u  mmT R                  U	T5        T R                  TT5        T R                  TTTTS LS9  T R                  UT5      mT R                  mT R!                  TU5      n
[#        TU
5      nT R%                  TTXU5      u  nmUR'                  U5        T R)                  XT5      mT R+                  TT5        T R-                  U5      u  pÞ[/        TUU
UUUSS9u  nnnn        SUUUUUUUUU UUU4S jjn[1        T R2                  T R4                  R6                  5          U" UUU5      I S h  v•N sS S S 5        $ s  snf s  snf  GN[ N! [8         a  n[;        TUU5      (       d  e  S nAOS nAff = fU" [<        U[>        1-  [A        U5      5      I S h  v•N  n[C        U5        [E        T R2                  5        UsS S S 5        $ ! , (       d  f       g = f7f)N)Únative_toolsr6  Trs  c              “  ó8  >#   • Ub  [        TU5      OTR                  S5      n[        TR                  [        5      (       aè  SSKJn  U" TR                  TR                  4T=(       d    [        TTR                  SS5      T=(       d    [        T=(       d    [        T
=(       d    [        [        U5      =(       d    [        T=(       d    [        T=(       d    [        U T=(       d    [        [        TR                  S[        5      5      TR                  TT5      T	US.6I S h  v•N $ TR                  R                  R                  R                  T=(       d    [        TTR                  T=(       d    [        T=(       d    [        T
=(       d    [        [        U5      =(       d    [        T=(       d    [        T=(       d    [        U T=(       d    [        [        TR                  S[        5      5      TR                  TT5      T	US9I S h  v•N $  Nï N7f)	NrO  rd   )Úcount_tokens_via_bedrockry   r9  r;  )rÕ  r†   ry   rŽ   r=  r>  r•  r?  r@  rN  rA  r;  rC  rD  rO  )rÕ  r†   r<  rŽ   r=  r>  r•  r?  r@  rN  rA  r;  rC  rD  rO  )rW  rŒ   r]  rÆ  r˜   Ú_anthropic_bedrock_count_tokensr¹  r¹  rf  rG  r   r•   rH  rE  r†   rû  )rN  r•  rR  rO  r¹  rJ  rK  rL  rA  rD  r>  rQ  r?  rÂ  rM  r=  rŽ   s        €€€€€€€€€€€€r‰   ÚcountÚ4AnthropicModel._messages_count_tokens.<locals>.countù  s«  øé € ð %Ñ0ô " .Ð2CÔDà#×'Ñ'¨Ó5ð ô
 ˜$Ÿ+™+Ô'<×=Ñ=ÝUá5Ø—K‘KØ×$Ñ$ðð )×0¬DØ/Ø-×1Ñ1°,ÀÓEØŸ-¤4Ø +× 3¬tØ +× 3¬tÜ  ›-×/¬4Ø"/×"7´4Ø"4×"<¼Ø%Ø'9×'A¼TÜ-¨n×.@Ñ.@ÀÌIÓ.VÓWØ×/Ñ/°Ð@QÓRØ"/Ø)ò#÷ ð ð( Ÿ™×)Ñ)×2Ñ2×?Ñ?Ø$×,¬Ø+Ø×&Ñ&Ø—mœtØ'×/¬4Ø'×/¬4Ü˜U“m×+¤tØ+×3¬tØ0×8´DØ!Ø#5×#=¼Ü)¨.×*<Ñ*<¸YÌ	Ó*RÓSØ×+Ñ+¨NÐ<MÓNØ+Ø%ð @ð ÷ ð ñ)ñ(ùs%   ƒD#HÄ&HÄ'C*HÈHÈHÈH)rN  rS  r•  rT  rR  rU  rV  rÄ   )#r   r·  r]  rK   rH   rŠ   rX  rY  r”   rZ  r[  r\  r]  r^  r_  rm  r)  rh  r`  ra  rb  rc  re  r—  r  r  rº  r  r—   ro  rf  r“  rr  r‘  r�  ) rÂ  r†   rQ  r‡   r�   Úcount_tokens_parametersÚmap_parametersr�   rf  rg  rN  r”  r•  ri  rt  rj  rk  rl  rm  r»  r
  rp  rJ  rK  rL  rA  rD  r>  r?  rM  r=  rŽ   s    ` `                   @@@@@@@@@@r‰   rù  Ú%AnthropicModel._messages_count_tokens±  s  ÿûé € ô #*Ø$Ø+C×+PÒ+PÓqÒ+P 4ÔT^Ð_cÔeo×TpŸ$Ñ+PÑqñ#
Ðô !Ø$Ø+C×+PÒ+PÓvÒ+P 4ÔXbÐcgÔit×XuŸ$Ñ+PÑvñ
ˆô <¸HÓUÐØ!×@Ñ@ÀÐQ_Ó`Ñˆˆ{ð 15×0FÑ0FÀuÐNeÐguÓ0vÑ-ˆˆ{Ð-Ü$ UÐ,?Ô@à15×1TÑ1TÐUcÓ1dÑ.ÐÐ.Ø26×2CÑ2CÀHÐ^lÓ2m×,mÑ)ˆÐ)Ø×.Ñ.Ð/AÐCUÔVØ×,Ñ,¨^Ð=OÔPØ× Ñ ØÐ-¨uÐHZÐbfÐHfð 	!ñ 	
ð ×1Ñ1Ð2JÈNÓ[ˆØ ŸL™LÐØ×+Ñ+¨NÐ<TÓUˆÜ0°ÀÓJÐØ#×@Ñ@ØÐ-¨xÐSeó 
Ñˆˆ}ð 	�‰Ð&Ô'Ø!×8Ñ8¸È.ÓYÐØ×8Ñ8¸ÐI[Ô\Ø15×1\Ñ1\Ð]eÓ1fÑ.Ðä.Ø!Ø!ØØ"ØØ$7Ø.2ññ 	_Ð˜-Ð)BÐD^ð1	Ø4ð1	àð1	ð  8ð1	ð $÷	1	÷ 1	ò 1	ôf ˜TŸ_™_¨d¯n©n×.OÑ.OÕPðÙ"Ð#3°]ÐD]Ó^×^÷ QÑPùòW rùò wò -nñd _øÜ!ó Ü5Ð6GÐIcÐej×kÑkØô lûðúñ !ÜØÔ9Ð:Ñ:Ü+Ð,>Ó?ó÷ ð ˆFô
 IÈÔRÜ/°·±Ô@Ø÷ Q×P×Püs–   ŽK!£I
Á I
ÁK!ÁI	
Á<I	
ÂA1K!Ã3IÃ4D3K!È'KÈ)IÈ6IÈ7IÈ:K!ÉIÉ
I:ÉI5É0KÉ5I:É:%KÊJ"Ê &KË
K!Ë
KËK!c                ó>  • / n0 nU R                  X#5      nUR                   Vs1 s HP  n[        U[        [        -  [
        -  [        -  [        -  [        -  [        -  5      (       d  MD  UR                  iMR     nnUR                   GH\  n[        U[        5      (       a$  UR                  [        UR                  S95        M=  [        U[        5      (       aX  UR                   U;  a  UR"                  U;  a  Mt  [%        XpR&                  5      n	X•U	R(                  '   UR                  U	5        Mª  [        U[        5      (       a&  UR                  [+        XpR&                  5      5        Må  [        U[        5      (       a'  UR                  [-        XpR&                  5      5        GM!  [        U[
        5      (       a'  UR                  [/        XpR&                  5      5        GM]  [        U[        5      (       a'  UR                  [1        XpR&                  5      5        GM™  [        U[        5      (       a'  UR                  [3        XpR&                  5      5        GMÕ  [        U[        5      (       a'  UR                  [5        XpR&                  5      5        GM  [        U[        5      (       a'  UR                  [7        XpR&                  5      5        GMM  [        U[8        5      (       a2  UR                  [;        SSUR<                  U R&                  S95        GM”  [        U[>        5      (       a;  UR                  [;        UR@                  URB                  U R&                  S95        GMä  [        U[D        5      (       a7  [G        XpR&                  5      n	X•U	R(                  '   UR                  U	5        GM0  [        U[H        5      (       aC  URK                  UR                  5      n	UR                  [M        XyU R&                  5      5        GMˆ  [        U[N        5      (       aD  UR                  [Q        UR                  U R&                  [S        URT                  5      S95        GMá  [        U[V        5      (       d   S[Y        U5       35       eUR                  [[        UR                   []        [^        [`        [b        4   URd                  5      UR"                  S95        GM_     S	n
S	nURf                  =n(       a  S
U0n[h        RK                  U5      n
URj                  bk  U=(       d    0 nURj                  Rl                  b  URj                  Rl                  US'   URj                  Rn                  b  URj                  Rn                  US'   URp                  (       a$  U=(       d    0 nURp                  R"                  US'   URr                  (       a#  U=(       d    0 n[u        URr                  5      US'   [w        U[y        XRz                  R                   U Rz                  R|                  U R~                  5      UR€                  UR"                  U Rz                  R                   U Rz                  R|                  U
URf                  S:X  a  SUS9	$ SUS9	$ s  snf )zAProcess a non-streamed response, and prepare a message to return.)rP  Úredacted_thinkingÚ )r®  rP  Ú	signaturer¡  )rP  rÃ  r¡  ©rP  r¡  r‚  zunexpected item type )Ú	tool_nameÚargsÚtool_call_idNÚfinish_reasonr~   Úrefusal_categoryr±  rw  r}   r°  Úcomplete)	rz  r   r  Úprovider_response_idr¡  Úprovider_urlrÈ  r²  r‚  )AÚ_get_enabled_server_tool_namesrP  r]  rù   rõ   r«   r¤   rÝ   rë   r¡   Útool_use_idrÚ   Úappendr<   r'  rÖ   rˆ   r®  Ú_map_server_tool_use_blockrÕ  rÇ  Ú!_map_web_search_tool_result_blockÚ"_map_tool_search_tool_result_blockÚ%_map_code_execution_tool_result_blockÚ*_map_bash_code_execution_tool_result_blockÚ1_map_text_editor_code_execution_tool_result_blockÚ _map_web_fetch_tool_result_blockÚ_map_advisor_tool_result_blockrÏ   r=   Údatarß   rN  rÃ  r¾   Ú_map_mcp_server_use_blockr½   rŒ   Ú_map_mcp_server_result_blockr¯   r*   Ú_compaction_provider_detailsÚencrypted_contentrð   r  r?   r   r  r^  r   ÚinputÚstop_reasonr   Ústop_detailsÚexplanationÚcategoryrB  rw  r©  r1   Ú
_map_usagerº  rÊ  r¹  r<  )rÂ  r  r‡   rQ  r!  Úbuiltin_tool_callsÚenabled_server_tool_namesr£  Úserver_tool_result_idsÚ	call_partrÈ  r‚  Úraw_finish_reasons                r‰   rð  Ú AnthropicModel._process_response<  s$  € ð *,ˆØ<>ÐØ$(×$GÑ$GÐH`Ó$qÐ!ð !×(Ò(ó"
â(�ÜØÜ,Ü-ñ.ä2ñ3ô 7ñ7ô =ñ	=ô
 0ñ0ô -ñ-÷	ó ˆD×ÔÙ(ð 	ð "
ð ×$Õ$ˆDÜ˜$¤×.Ñ.Ø—‘œX¨d¯i©iÑ8Ö9Ü˜DÔ"8×9Ñ9Ø—9‘9Ð$=Ó=À$Ç'Á'ÐQgÓBgÙÜ6°t¿[¹[ÓI�	Ø=F 9×#9Ñ#9Ñ:Ø—‘˜YÖ'Ü˜DÔ">×?Ñ?Ø—‘Ô>¸tÇ[Á[ÓQÖRÜ˜DÔ"?×@Ñ@Ø—‘Ô?ÀÇkÁkÓR×SÜ˜DÔ"B×CÑCØ—‘ÔBÀ4ÏÉÓU×VÜ˜DÔ"F×GÑGØ—‘ÔGÈÏkÉkÓZ×[Ü˜DÔ"L×MÑMØ—‘ÔNÈt×U`ÑU`Óa×bÜ˜DÔ"=×>Ñ>Ø—‘Ô=¸dÇKÁKÓP×QÜ˜DÔ"<×=Ñ=Ø—‘Ô;¸DÇ+Á+ÓN×OÜ˜DÔ";×<Ñ<Ø—‘Ü Ð$7ÀÈtÏyÉyÐhl×hsÑhsÑt÷ô ˜DÔ"3×4Ñ4Ø—‘œ\°$·-±-È4Ï>É>Ðim×itÑitÑu×vÜ˜DÔ"5×6Ñ6Ü5°d¿K¹KÓH�	Ø=F 9×#9Ñ#9Ñ:Ø—‘˜Y×'Ü˜DÔ"8×9Ñ9Ø.×2Ñ2°4×3CÑ3CÓD�	Ø—‘Ô9¸$È4Ï;É;ÓW×XÜ˜DÔ"5×6Ñ6Ø—‘Ü"Ø $§¡Ø&*§k¡kÜ)EÀd×F\ÑF\Ó)]ñ÷ô " $Ô(8×9Ñ9Ð_Ð=RÔSWÐX\ÓS]ÐR^Ð;_Ó_Ð9Ø—‘Ü Ø"&§)¡)Ü!¤$¤s¬C x¡.°$·*±*Ó=Ø%)§W¡Wñ÷ñ] %ðl .2ˆØ26ÐØ (× 4Ñ 4Ð4ÐÕ4Ø /Ð1BÐCÐÜ.×2Ñ2Ð3DÓEˆMØ× Ñ Ñ,Ø/×5°2ÐØ×$Ñ$×0Ñ0Ñ<Ø.6×.CÑ.C×.OÑ.OÐ  Ñ+Ø×$Ñ$×-Ñ-Ñ9Ø7?×7LÑ7L×7UÑ7UÐ Ð!3Ñ4Ø××Ø/×5°2ÐØ/7×/AÑ/A×/DÑ/DÐ˜^Ñ,Ø×)×)Ø/×5°2ÐÜ8UÐV^×VtÑVtÓ8uÐÐ4Ñ5äØÜ˜X§~¡~×':Ñ':¸D¿N¹N×<SÑ<SÐUY×UeÑUeÓfØ—~‘~Ø!)§¡ØŸ.™.×-Ñ-ØŸ™×0Ñ0Ø'Ø!)×!5Ñ!5¸Ó!E�+Ø-ñ

ð 
	
ð LVØ-ñ

ð 
	
ùòm"
s   ¤AZÁ+Zc                ó†  • U R                  / X5      u  n  nU Vs1 s H  nSU;   d  M  US   iM     nnUR                  S5        1 SknSU;   a  UR                  U5        U R                  R	                  SS5      (       a2  [        S UR                   5       5      (       a  UR                  U5        [        U5      $ s  snf )zéWire names that may legitimately appear in a `server_tool_use` block for this request.

Derived from the same `_add_native_tools` call that builds the request payload, so the
filter can't drift from what is actually sent to the API.
rˆ   Úmemory>   r  r   r!  r  rÙ  Fc              3  óP   #   • U  H  n[        U[        [        -  5      v •  M     g 7fr\  )r]  rM   rL   r4  s     r‰   ra  Ú@AnthropicModel._get_enabled_server_tool_names.<locals>.<genexpr>»  s$   é € ð S
ÚGl¸tŒJ�tœ]¬\Ñ9×:Ð:ÒGlùs   ‚$&)rY  Údiscardra  rm  rŒ   r„  r·  ré  )rÂ  r‡   rQ  r·  rõ  r�   rä  Úimplicit_code_execution_namess           r‰   rÍ  Ú-AnthropicModel._get_enabled_server_tool_names¨  sÍ   € ð "×3Ñ3°BÐ8PÓaÑˆ�a˜ñ ?KÓ$]ºl°dÈfÐX\Én£\ T¨&¤\¹lÐ!Ð$]à!×)Ñ)¨(Ô3â(oÐ%ØÐ8Ó8Ø%×,Ñ,Ð-JÔKà�<‰<×ÑÐBÀE×JÑJÌsñ S
ØG_×GlÒGlóS
÷ P
ñ P
ð &×,Ñ,Ð-JÔKÜÐ2Ó3Ð3ùò %^s
   ›
B>©	B>c              ƒ  ó†  #   • [         R                  " U5      n[        U R                  U R                  R
                  5         UR                  5       I S h  v•N nS S S 5        [        W[         R                  5      (       a  [        S5      e[        U[        5      (       d   eUR                  b  UR                  R                  OU R                  n[        UUUU R                  R                  U R                  R
                  U R                  R                  U R!                  X#5      S9$  NÖ! , (       d  f       NÚ= f7f)Nz5Streamed response ended without content or tool calls)r‡   r¹  Ú	_responseÚ_provider_nameÚ_model_id_namespaceÚ_provider_urlÚ_enabled_server_tool_names)r   ÚPeekableAsyncStreamr  r  rº  r  Úpeekr]  ÚUnsetr   rÌ   r  r<  ÚAnthropicStreamedResponserˆ   rÊ  rÍ  )rÂ  r  r‡   rQ  Úpeekable_responseÚfirst_chunkr  s          r‰   rò  Ú)AnthropicModel._process_streamed_responseÁ  sý   é € ô ×&Ò& xÓ0ð 	ô ˜TŸ_™_¨d¯n©n×.OÑ.OÕPØ 1× 6Ñ 6Ó 8×8ˆK÷ Qä�k¤6§<¡<×0Ñ0Ü)Ð*aÓbÐbä˜+Ô'?×@Ñ@Ð@Ð@ð 3>×2EÑ2EÑ2Q�[×(Ñ(×.Ò.ÐW[×WfÑWfˆ
ä(Ø%=Ø"Ø'ØŸ>™>×.Ñ.Ø $§¡× AÑ AØŸ.™.×1Ñ1Ø'+×'JÑ'JÐKcÓ'tñ
ð 	
ñ 9÷ QÕPüs1   ‚AEÁD0ÁD.ÁD0ÁCEÄ.D0Ä0
D>Ä:Ec           	     ó.  • UR                  SS5      nU R                  nUS:X  a  UR                  SS5      $ X#R                  SS5      ;  aI  SR                  S UR                  SS5       5       5      n[        S	U< S
U R                  < SU S35      eU$ )NrE  r¬  Ú-anthropic_default_code_execution_tool_versionÚ20250825Ú0anthropic_supported_code_execution_tool_versions)rÿ  z, c              3  ó*   #   • U  H	  nU< v •  M     g 7fr\  r1  )r_  Úsupported_versions     r‰   ra  ÚBAnthropicModel._get_code_execution_tool_version.<locals>.<genexpr>ê  s   é € ð +â)wÐ%ð %Ñ'Ô(Ú)wùs   ‚z'`anthropic_code_execution_tool_version=z` is not supported by model z. Supported versions are: Ú.)rŒ   rm  Újoinr&   r  )rÂ  rQ  Úversionrm  Úsupported_versionss        r‰   Ú _get_code_execution_tool_versionÚ/AnthropicModel._get_code_execution_tool_versionâ  s³   € ð !×$Ñ$Ð%LÈfÓUˆØ—,‘,ˆØ�fÓØ—;‘;ÐNÐPZÓ[Ð[ØŸ+™+Ð&XÐZgÓhÓhØ!%§¡ñ +à)0¯©Ð5gÐivÔ)wó+ó "Ðô Ø9¸'¹ÐD`Ø—?‘?Ñ%Ð%?Ð@RÐ?SÐSTðVóð ð ˆr8  c                óz   • [        U R                  [        5      (       a  US:X  a  [        S5      egU=(       d    S$ )zÙResolve which native tool-search variant to send.

`bm25` is the default, except on clients that don't support it (the legacy Bedrock
InvokeModel API), where `regex` is the default and an explicit `bm25` is rejected.
Úbm25z­ToolSearch(strategy='bm25') is not supported by the `AsyncAnthropicBedrock` client; use ToolSearch(strategy='regex') instead, or leave the strategy unset to use the default.Úregex)r]  rÆ  Ú%_BM25_TOOL_SEARCH_UNSUPPORTED_CLIENTSr&   )rÂ  Ústrategys     r‰   Ú_resolve_tool_search_strategyÚ,AnthropicModel._resolve_tool_search_strategyô  sA   € ô �d—k‘kÔ#H×IÑIØ˜6Ó!Üðpóð ð Ø×!˜6Ð!r8  c           	     ó  • U R                   (       a  [        SSS0U R                   D6OS nU(       a,  [        SSU R                  U R                  U R
                  US9$ [        SSU R                  U R                  U R
                  US9$ )Nr  ÚapproximateÚ
web_searchÚweb_search_20260209)rˆ   r  Úmax_usesÚallowed_domainsÚblocked_domainsÚuser_locationÚweb_search_20250305r1  )r  rÿ   rø   r  r  r  r÷   )r�   râ  r  s      r‰   Ú_map_web_search_toolÚ#AnthropicModel._map_web_search_tool  s�   € ð \`×[m×[mÔ-ÑW°=ÐWÀD×DVÑDVÒWÐswˆÞ%Ü1Ø!Ø*ØŸ™Ø $× 4Ñ 4Ø $× 4Ñ 4Ø+ñð ô .ØØ&Ø—]‘]Ø ×0Ñ0Ø ×0Ñ0Ø'ñ
ð 	
r8  c           
     ó@  • U R                   (       a  [        U R                   S9OS nU(       a9  [        SSU R                  U R                  U R
                  UU R                  S9S 4$ [        SSU R                  U R                  U R
                  UU R                  S9S4$ )N)r  Ú	web_fetchÚweb_fetch_20260209)rˆ   r  r  r  r  Ú	citationsÚmax_content_tokensÚweb_fetch_20250910zweb-fetch-2025-09-10)Úenable_citationsr§   rô   r  r  r  r   ró   )r�   râ  r  s      r‰   Ú_map_web_fetch_toolÚ"AnthropicModel._map_web_fetch_tool  s«   € ð PT×Od×OdÔ,°T×5JÑ5JÒKÐjnˆ	Þ%ä-Ø$Ø-Ø!Ÿ]™]Ø$(×$8Ñ$8Ø$(×$8Ñ$8Ø'Ø'+×'>Ñ'>ñð ðð ô *Ø Ø)ØŸ™Ø $× 4Ñ 4Ø $× 4Ñ 4Ø#Ø#'×#:Ñ#:ñð #ð
ð 	
r8  c                óJ  ^ • [        5       n/ nT R                  R                  SS5      nUR                   GH\  n[	        U[
        5      (       a"  UR                  T R                  Xv5      5        M;  [	        U[        5      (       aw  T R                  U5      nUR                  [        U5      5        UR                  (       a9  [        U 4S jUR                   5       5      (       a  UR                  S5        MÃ  MÅ  MÇ  [	        U[        5      (       a>  T R                  Xv5      u  pšUR                  U	5        U
b  UR                  U
5        GM  GM  [	        U[         5      (       aŠ  SUR"                   Vs1 s H  owR$                  iM     sn;  a  ['        S5      eU Vs/ s H  owR                  S5      S:w  d  M  UPM     nnUR                  [)        SSS	95        UR                  S
5        GM¹  [	        U[*        5      (       aj  UR,                  S:w  aW  T R/                  UR,                  5      S:X  a  UR                  [1        SSS95        GM  UR                  [3        SSS95        GM5  GM8  [	        U[4        5      (       a.  UR                  [7        U5      5        UR                  S5        GM{  [	        U[8        5      (       a¬  UR:                  (       a›  [=        SUR>                  UR:                  S9nUR@                  b*  [C        [E        UR@                  5      UR@                  S9US'   URF                  (       a  URF                  US'   UR                  U5        UR                  S5        GM<  ['        SURH                  RJ                   S35      e   XU4$ s  snf s  snf )NrÙ  Fc              3  óT   >#   • U  H  oR                   TR                  :H  v •  M     g 7fr\  )r¡  rÕ  )r_  ÚfilerÂ  s     €r‰   ra  Ú3AnthropicModel._add_native_tools.<locals>.<genexpr>K  s    øé € Ð%_ÒT^ÈD×&8Ñ&8¸D¿K¹KÖ&GÒT^ùs   ƒ%(r  rê  z;Native `MemoryTool` requires a 'memory' tool to be defined.rˆ   Úmemory_20250818©rˆ   r  zcontext-management-2025-06-27Úcustomr  Útool_search_tool_regex_20251119Útool_search_tool_regex©r  rˆ   Útool_search_tool_bm25_20251119Útool_search_tool_bm25zadvisor-tool-2026-03-01Úurl)r  rˆ   r1  )r  Úallowed_toolsÚtool_configurationÚauthorization_tokenzmcp-client-2025-04-04Ú`zN` is not supported by `AnthropicModel`. If it should be, please file an issue.)&r�   rm  rŒ   r·  r]  rM   rÏ  r  rI   r  Ú_map_code_execution_toolÚfilesr„  r€  rL   r#  rK   Údeclared_function_toolsrˆ   r&   rÀ   rP   r  r  rê   ré   rH   Ú_map_advisor_toolrJ   r1  rÓ   r®  r2  rÒ   rF  r4  rÃ  r2  )rÂ  rŽ   r‡   rQ  Úbeta_featuresr>  râ  r�   Útool_versionÚweb_fetch_toolÚbeta_featureÚmcp_server_url_definition_params   `           r‰   rY  Ú AnthropicModel._add_native_tools9  s
  ø€ ô #&£%ˆØDFˆØ%)§\¡\×%5Ñ%5Ð6\Ð^cÓ%dÐ"à,×9Õ9ˆDÜ˜$¤×.Ñ.Ø—‘˜T×6Ñ6°tÓXÖYÜ˜DÔ"3×4Ñ4Ø#×DÑDÀ^ÓT�Ø—‘Ô5°lÓCÔDð —:—:¤#Ô%_ÐTX×T^ÒT^Ó%_×"_Ñ"_Ø!×%Ñ%Ð&<Ö=ñ #`‘:ä˜D¤,×/Ñ/Ø/3×/GÑ/GÈÓ/iÑ,�Ø—‘˜^Ô,ØÑ+Ø!×%Ñ% l×3ò ,ä˜D¤*×-Ñ-ØÐ:R×:jÒ:jÓ#kÒ:j°$§I¤IÑ:jÑ#kÓkÜ#Ð$aÓbÐbá*/ÓPª% $·8±8¸FÓ3CÀxÑ3OŸ©%�ÐPØ—‘Ô8¸hÐM^Ñ_Ô`Ø×!Ñ!Ð"A×BÜ˜D¤.×1Ñ1ð —=‘= HÓ,Ø×9Ñ9¸$¿-¹-ÓHÈGÓSØŸ™Ü@Ø%FØ%=ñ÷ð Ÿ™Ü@Ø%EØ%<ñ÷ò -ô" ˜D¤+×.Ñ.Ø—‘Ô.¨tÓ4Ô5Ø×!Ñ!Ð";×<Ü˜D¤-×0Ñ0°T·X·XÜ2XØØŸ™ØŸ™ñ3Ð/ð
 ×%Ñ%Ñ1ÜLvÜ $ T×%7Ñ%7Ó 8Ø&*×&8Ñ&8ñMÐ3Ð4HÑIð ×+×+ØMQ×MeÑMeÐ3Ð4IÑJØ×"Ñ"Ð#BÔCØ×!Ñ!Ð"9×:äØ˜Ÿ™×/Ñ/Ð0Ð0~Ðóð ñ{ :ð@  =Ð0Ð0ùòa $lùò Qs   Å4NÆN Æ:N c           
     ó~  • UR                   n[        X5      nU R                  R                  SS5      nU R                  R                  SS5      nUS;   a  US:X  a  SS0OSS0nOúUS	:X  a  [	        UUUS
UUS9nU(       a  SS0OSS0nOÖ[        U[        5      (       a¶  Uu  pš[	        UUUUUS9nU	S	:X  a^  [        U
5      S:X  aO  U(       a  S[        [        U
5      5      S.nO|UR                  5        VVs0 s H  u  p¼Xº;   d  M  X¼_M     nnnSS0nOLUR                  5        VVs0 s H  u  p¼Xº;   d  M  X¼_M     nnnU	S:X  d  U(       d  SS0OSS0nO[        U5        U(       d  / S4$ UR                  5        Vs/ s H,  nU R                  XÑUR                  UR                  5      S9PM.     nnUR                  S5      =n(       aE  USL a  SOUn[!        U5       H-  nUR                  S5      SLd  M  U R#                  U5      US'     O   SU;   a  WS   S:w  a  US   (       + US'   UW4$ s  snnf s  snnf s  snf )zuDetermine which tools to send and the API tool_choice value.

Returns:
    A tuple of (filtered_tools, tool_choice).
r  Tr  F)r¬  Únoner¬  r  rA  Úrequiredztool_choice='required'©r  r  r„  rd   r�   r.  N)Ú
visibilityr=  Ú5mrƒ   r@  Úparallel_tool_callsÚdisable_parallel_tool_use)rŽ  rr   rm  rŒ   Ú_support_tool_forcingr]  ÚtupleÚlenr�  Úiterr!  r   ÚvaluesÚ_map_tool_definitionr…   rˆ   r~  Ú_build_cache_control)rÂ  rQ  r‡   r‚   Úresolved_tool_choicer  r  r=  ÚsupportsÚtool_choice_modeÚ
tool_namesÚkÚvÚtrŽ   Úcache_tool_defsÚttlr�   s                     r‰   rX  Ú-AnthropicModel._prepare_tools_and_tool_choice…  s†  € ð -×?Ñ?ˆ	Ü2°>Ó\ÐØ&*§l¡l×&6Ñ&6Ð7^Ð`dÓ&eÐ#Ø%)§\¡\×%5Ñ%5Ð6\Ð^cÓ%dÐ"ð  Ð#3Ó3à.BÀfÓ.L˜6 6Ñ*ÐSYÐ[aÐRb‰KØ! ZÓ/Ü,ØØ(Ø$Ø(Ø,GØ+EñˆHö .6˜6 5™/¸FÀFÐ;K‰KÜÐ,¬e×4Ñ4Ø+?Ñ(ÐÜ,ØØ(Ø$Ø,GØ+EñˆHð   :Ó-´#°j³/ÀQÓ2FÞØ+1¼4ÄÀZÓ@PÓ;QÑ"R‘Kð 3<·/±/Ô2CÔ WÒ2C©$¨!ÀqÁ£ ¢Ñ2C�IÑ WØ#)¨6Ð"2‘Kð /8¯o©oÔ.?ÔSÒ.?¡d aÀ1Á?›T˜QšTÑ.?�	ÑSØ2BÀfÓ2LÖT\˜v vÑ.ÐciÐkpÐbq‘äÐ-Ô.æØ�t�8ˆOð ×%Ñ%Ô'ó+
â'�ð ×%Ñ% aÐD\×DjÑDjÐkl×kqÑkqÓDrÐ%ÓsÙ'ð 	ð +
ð -×0Ñ0Ð1SÓTÐTˆ?ÕTØ/>À$Ò/F¡tÈOˆCÜ  ž�Ø—8‘8˜OÓ,°DÔ8Ø,0×,EÑ,EÀcÓ,J�D˜Ñ)Ùñ (ð
 ! NÓ2°{À6Ñ7JÈfÓ7TØ;IÐJ_Ñ;`Ô7`ˆKÐ3Ñ4à�kÐ!Ð!ùóI !Xùó Tùò+
s   Ã6H.ÄH.Ä&H4Ä5H4Å<3H:c              ƒ  óÀ&  ^#   • U R                  U5      n/ n/ nTR                   VVs/ s Hi  n[        U[        5      (       d  M  UR                  (       d  M-  UR                    H+  nUR
                  U R                  :X  d  M  UR                  PM-     Mk     nnn[        U4S jTR                   5       5      n	[        S TR                   5       5      n
[        TR                  5      nU R                  R                  SS5      nU R                  S:H  n[        S U 5       S5      n[        5       nTR                   Vs0 s H  ofR                   U_M     nnU GH  n[        U["        5      (       GaÇ  UUL a  [%        U5      OSn/ n/ n/ n/ n['        UR(                  5       GH°  u  nn[        U[*        5      (       aG  U(       a  UU:  a  UR-                  UR.                  5        MF  UR-                  UR.                  5        Mc  [        U[0        5      (       a¦  U R3                  U5        Sh  v•N n[        U[4        5      (       ad  U(       d  U(       a(  UR-                  [7        U5      UR8                  45        MT  U R;                  U=(       d    [=        U5      UR8                  S	9  M‚  UR-                  U5        M•  [        U[>        5      (       aŒ  U(       d
  [A        5       eURB                   Hh  nUR                  U5      nUU;   d  M  UU;  d  M$  Uc  M)  TRE                  U5      S
:w  d  M@  UR-                  SSUS.S.5        URG                  U5        Mj     GM¿  [        U[H        5      (       Ga?  / n[K        UX›5      u  nnU(       a2  [L        RN                  " [Q        US9SUSS9nUR-                  U5        GM  UbJ  U=(       d    [R        n [L        RN                  " [Q        US9S[U        U SS9/SS9nUR-                  U5        GMl  URW                  SSS9 GHK  n![        U![X        5      (       aÅ  U R[                  U!5        U!R\                  R_                  S5      (       a-  UR-                  [a        [c        U!R                  SS9SS95        Mw  U!R\                  R_                  S5      (       a-  UR-                  [e        [g        U!R                  SS9SS95        MÄ  [i        SU!R\                  < S35      e[k        U!5      (       a,  UR-                  U Rm                  U!S5      I Sh  v•N 5        GM  [        U![n        5      (       d  GM2  UR-                  [U        U!SS95        GMN     [L        RN                  " [Q        US9SU=(       d    S URp                  S!:H  S9nUR-                  U5        GM  [        U[r        5      (       a
  [u        5       e[        U[v        5      (       d  GMK  URx                  c  UR{                  5       n"[U        SU"S"9n#O,[L        RN                  " [Q        US9SUR{                  5       S#S9n#UR-                  U#5        GM³     Sn$U H>  u  n%n&U%[7        U5      :X  a  U&n$M  U R;                  USU% =(       d    [=        U5      U&S	9  M@     [7        U5      S:”  a  UR-                  [}        S$US%95        U(       d  U(       ad  U Vs/ s H  n[U        USS9PM     n'nU'R                  [�        S&U5      5        U$b  U R;                  U'U$S	9  UR-                  [}        S'U'S%95        GMÞ  GMá  [        U[‚        5      (       G
a  / n(UR(                   G	HÏ  n)[        U)[„        5      (       a8  U)R.                  (       a%  U(R-                  [U        U)R.                  SS95        MO  MQ  [        U)[†        5      (       a>  [‰        [Q        U)S9S(U)Rx                  U)R‹                  5       S)9n*U(R-                  U*5        M¤  [        U)[Œ        5      (       Ga  U)R
                  U R                  :X  ax  U)RŽ                  (       ag  U)R�                  S*:X  a&  U(R-                  [“        U)RŽ                  S*S+95        GM  U(R-                  [•        U)R.                  U)RŽ                  S,S-95        GML  U)R.                  (       a[  U R                  R                  S.[–        5      u  n+n,U(R-                  [U        S/R™                  U+U)R.                  U,/5      SS95        GM¸  GM»  [        U)[š        5      (       Gaš  U)R
                  U R                  :X  Ga|  [Q        U)S9n-U)Rx                  [œ        Rž                  :X  a:  [¡        U-S0S1U)R‹                  5       S)9n.[£        U.U)5        U(R-                  U.5        GMM  U)Rx                  [        Rž                  S2S34;   aE  [¥        U)5      n/[¡        U-S0U/U)R‹                  5       S)9n.[£        U.U)5        U(R-                  U.5        GM³  U)Rx                  [¦        Rž                  :X  a:  [¡        U-S0S4U)R‹                  5       S)9n.[£        U.U)5        U(R-                  U.5        GM  U)Rx                  [¨        Rž                  :X  aD  U
(       d  GM3  [¡        U-S0S5U)R‹                  5       S)9n.[£        U.U)5        U(R-                  U.5        GMm  U)Rx                  [ª        Rž                  :X  Ga  U)R¬                  =(       d    0 n0U0R                  S65      S7:X  d  [        U R®                  [°        5      (       a  S7OS8n1U1S7:X  a  S9OS:n2U)R‹                  5       n3S;U3;   az  U3R                  S;5      n4[        U4[²        5      (       a4  [�        S<U45       V5s/ s H  n5[        U5[n        5      (       d  M  U5PM     sn5O/ n6U1S7:X  a  S=OS>n7U7S?R™                  U65      0n8OU3n8[¡        U-S0U2U8S)9n.[£        U.U)5        U(R-                  U.5        GM¡  U)Rx                  R_                  [´        Rž                  5      (       a–  U)Rx                  R·                  S@SA5      SA   =n9(       am  U)R‹                  5       =n:(       aS  U:R                  SB5      =n;(       a8  U:R                  SC5      =n<b!  [¹        U-SDU9U;U<SE9n=U(R-                  U=5        GMY  GM\  GM_  GMb  GMe  GMh  GMk  [        U)[º        5      (       Gas  U)R
                  U R                  :X  GaU  [Q        U)S9n-U)Rx                  [œ        Rž                  SF4;   ai  [        U)R.                  [¼        [²        -  5      (       aC  [¿        U-SF[�        [À        U)R.                  5      SG9n>[£        U>U)5        U(R-                  U>5        GM.  U)Rx                  [        Rž                  SHS2S34;   aå  [        U)R.                  [¼        [²        -  5      (       a¿  [¥        U)5      =SI:X  a6    U(R-                  [Ã        U-SH[�        [Ä        U)R.                  5      SG95        GM¼  =S2:X  a6    U(R-                  [Ç        U-SJ[�        [È        U)R.                  5      SG95        GMø  S3:X  a5  U(R-                  [Ë        U-SK[�        [Ì        U)R.                  5      SG95        GM2  GM5  U)Rx                  [¦        Rž                  :X  ab  [        U)R.                  [¼        5      (       aC  [Ï        U-SL[�        [Ð        U)R.                  5      SG9n>[£        U>U)5        U(R-                  U>5        GMµ  U)Rx                  [¨        Rž                  :X  aa  U
(       aW  [        U)R.                  [¼        5      (       a5  U(R-                  [Ó        U-SM[�        [Ô        U)R.                  5      SG95        GM.  GM1  GM4  [        U)[Ö        5      (       a  U(R-                  [Ù        U)U-U5      5        GMh  U)Rx                  R_                  [´        Rž                  5      (       aX  [        U)R.                  [¼        5      (       a6  [�        SNU)R.                  5      n?U(R-                  [Û        S_U-SOSP.U?D65        GMë  GMî  GMñ  GMô  [        U)[Ü        5      (       a„  U)R
                  U R                  :X  ag  [ß        U)R.                  SQSR9n@U)R¬                  (       a.  U)R¬                  R                  SS5      b  U)R¬                  SS   W@SS'   U(R-                  W@5        G	MŠ  G	M�  [        U)[à        5      (       a  G	M¥  [        U)[r        5      (       a
  [u        5       e[ã        U)5        G	MÒ     [7        U(5      S:”  a  UR-                  [}        STU(S%95        GM  GM  [ã        U5        GM     [å        U5        [ç        U5        [é        U5        U(       a`  U HZ  nAUASU   S$:X  d  M  WASV   nB[        UB[²        5      (       d   e[ë        WB5      (       a  M<  U VCs/ s H  nCSWUCSX.PM
     nDnC/ WBQUDQWASV'   M\     U Rí                  UT5      nESYR™                  U5      nFUR                  SZ5      nGUE(       d  WG(       aú  / nHWF(       a  WHR-                  [U        SWFS"95        WE(       a,  WE H&  nIWHR-                  [U        SUIR.                  S"95        M(     WH(       a“  WG(       aŒ  WGS#L a  S[OWGn&WE(       a`  [        S\ WE 5       5      nJUJ(       a8  WF(       a  SAOSnK[ï        S] WE 5       5      nLULS:”  a	  WKWL-   SA-
  nMOWF(       a  SOSnMO[7        WH5      SA-
  nMOSnMWMb  U Rñ                  U&5      WHWM   S^'   WH(       a  WHU4$ WFU4$ s  snnf s  snf  GN
 GM¨   GNs  snf s  sn5f s  snCf 7f)`zFJust maps a `pydantic_ai.Message` to a `anthropic.types.MessageParam`.c              3  ó`   >#   • U  H#  nTR                  UR                  5      S :H  v •  M%     g7f)r�   N)r…   rˆ   )r_  rU  r‡   s     €r‰   ra  Ú.AnthropicModel._map_message.<locals>.<genexpr>ý  s,   øé € ð $
â<�ð %×2Ñ2°1·6±6Ó:¸jÖHÚ<ùs   ƒ+.c              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr\  )r]  rH   )r_  rU  s     r‰   ra  r[    s   é € ÐgÒAf¸AœZ¨¬;×7Ð7ÒAfùrc  rÚ  Fr¶  c              3  óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr\  r‹  )r_  r´  s     r‰   ra  r[    s   é € ÐSª8 a´zÀ!Ä\×7R§¡ª8ùrŽ  Nr   )rW  rŒ  r+  Útool_referencer.  )r  r�   )rU  r*  )rÎ  r  rP  Úis_errorr'  ©r'  r  r^  )ræ  Úwrap_if_errorúimage/r'  ©Úfile_idr  r(  ©Úsourcer  ©ztext/zapplication/r)  úUnsupported media type ú[ for Anthropic file upload. Only image and document (text/application) types are supported.ztool returnsrÂ  Úfailed)r  r'  TÚuser©ÚrolerP  úlist[BetaContentBlockParam]rÕ  r|   )r®  r  rˆ   rÝ  rÁ  )rØ  r  rN  )rN  rÃ  r  Úthinking_tagsÚ
r,  r  r   r!  r  Úadvisorr  r  r  r-  r0  Úqueriesz	list[Any]ÚpatternÚqueryÚ Ú:rd   rÅ  Ú	tool_argsÚmcp_tool_use)r®  r  Úserver_namerˆ   rÝ  Úweb_search_tool_result©rÎ  r  rP  Úcode_execution_tool_resultr  Úbash_code_execution_tool_resultÚ&text_editor_code_execution_tool_resultÚweb_fetch_tool_resultÚadvisor_tool_resultúdict[str, Any]Úmcp_tool_result)rÎ  r  rw   )rP  r  rÜ  Ú	assistantrm  rP  rQ  )r  rd  z

r?  rE  c              3  ó8   #   • U  H  oR                   v •  M     g 7fr\  ©Údynamic©r_  Úps     r‰   ra  r[  
  s   é € Ð%KÒ9J°A§i¦iÒ9Jùr‰  c              3  óJ   #   • U  H  oR                   (       a  M  S v •  M     g7f)rd   Nr…  r‡  s     r‰   ra  r[  
  s   é € Ð(WÒ4E¨qÏYÍY¯©Ò4Eùs   ‚#š	#r@  r1  )yrt  r·  r]  rI   r7  r¡  rÕ  rd  r„  r˜  r�   rŽ  rm  rŒ   rå  r�  rˆ   r0   ri   Ú	enumeraterz  r:   rÏ  rP  rC   Ú_map_user_promptr)   rJ  rW  Ú _add_cache_control_to_last_paramÚ_last_message_contentr>   rl   r�  r…   r€  r@   Ú'_build_custom_tool_search_replay_blocksrý   ÚBetaToolResultBlockParamÚ_guard_tool_call_idr!   rÛ   r¢  rB   Ú _validate_uploaded_file_providerÚ
media_typeÚ
startswithrº   r¹   rÑ   r¸   r&   rE   Ú_map_file_to_content_blockr^  Úoutcomer9   rk   r8   rÅ  Úmodel_responserÃ   Úextendr   r1   r<   r?   rñ   Úargs_as_dictr=   rÃ  r®  rÐ   rá   rQ   r  r4   rM   Úkindr×   Ú_add_anthropic_caller_paramÚ'_get_anthropic_code_execution_tool_namerL   rH   rP   r‚  rÆ  r  rƒ  rJ   r”  r¿   r5   r  rû   rü   r­   r®   r¥   Ú,BashCodeExecutionToolResultBlockParamContentrÞ   Ú2TextEditorCodeExecutionToolResultBlockParamContentrö   Ú#WebFetchToolResultBlockParamContentr¢   Ú"AdvisorToolResultBlockParamContentr7   Ú_build_tool_search_replay_blockr½   r*   r°   r,   r   Ú _drop_unpaired_native_tool_callsÚ(_place_system_messages_before_generationÚ_anchor_system_messagesÚ_is_tool_result_onlyÚ_get_instruction_partsÚsumrN  )NrÂ  r†   r‡   rQ  Úsystem_prompt_partsrJ  r�   r'  Úpending_container_uploadsÚdeferred_tools_activeÚadvisor_activeÚdeclared_tool_namesÚinline_system_promptsÚ supports_tool_availability_deltaÚleading_requestÚrendered_tool_additionsÚtool_defs_by_namer´  Ústanding_prompt_countÚuser_content_paramsÚmid_conversation_system_promptsÚtool_availability_blocksÚdeferred_cache_pointsÚ
part_indexÚrequest_partrP  rˆ   rœ  Útool_result_contentÚcustom_tool_refsÚcustom_empty_messageÚtool_result_block_paramÚempty_messager£  r'  Úretry_paramÚsystem_entry_cache_ttlÚ	marked_atrW  Úsystem_content_paramsÚassistant_content_paramsÚresponse_partÚtool_use_block_paramÚ	start_tagÚend_tagrÎ  Úserver_tool_use_block_paramr&  Údetailsr  Únative_nameÚ	args_dictÚraw_queriesÚqrr  Úwire_keyÚ
wire_inputÚ	server_idrÆ  rÅ  rw  Úmcp_tool_use_block_paramrR  Úmcp_contentÚcompaction_blockr  Úexistingrd  ÚextraÚinstruction_partsrM  Úcache_instructionsÚsystem_prompt_blocksr|  Úhas_dynamicÚnum_prefix_blocksÚ
num_staticÚcache_block_idxsN     `                                                                           r‰   r[  ÚAnthropicModel._map_messageÚ  s.  øé € ð ×/Ñ/°Ó9ˆØ)+ÐØ57Ðð
 1×=Ò=ô%
â=�Ü˜$Ô 1×2ó à7;·zµzó ð Ÿ
�
�Ø×!Ñ! T§[¡[Ñ0ó	 ˆD�LŒLñ #ñ Ù=ð 	"ñ %
ô. !$ô $
à-×<Ò<ó$
ó !
Ðô ÑgÐAY×AfÒAfÓgÓgˆô "Ð":×"MÑ"MÓNÐð !%§¡× 0Ñ 0Ð1QÐSXÓ YÐð ,0×+BÑ+BÀnÑ+TÐ(ÜÑS©8ÓSÐUYÓZˆÜ,/«EÐØ9Q×9`Ò9`ÓaÒ9`°ŸY™Y¨š_Ñ9`ÐÐaÜˆAÜ˜!œ\×*Ò*ØLMÐQ`ÒL`Ô(EÀaÔ(HÐfgÐ%ØCEÐ#Ø=?Ð/ØACÐ(ð PRÐ%Ü09¸!¿'¹'×0BÑ,�J Ü! ,Ô0@×AÑAÞ4¸
ÐEZÓ8ZØ/×6Ñ6°|×7KÑ7KÖLð
 <×BÑBÀ<×CWÑCWÖXÜ# L´.×AÑAØ-1×-BÑ-BÀ<Ô-P÷ D 'Ü)¨'´:×>Ñ>Þ#BÖF^Ø$9×$@Ñ$@Ä#ÐFYÓBZÐ\c×\gÑ\gÐAhÖ$ið %)×$IÑ$IØ(;×(hÔ?TÐUgÓ?hØ,3¯K©Kð %Jó %&ð
 !4× :Ñ :¸7Ö CÜ# LÔ2K×LÑLÞ?ô #OÓ"PÐPð %1×$<Ô$<˜DØ'8×'<Ñ'<¸TÓ'B˜Hà $Ð(;Õ ;Ø$(Ð0GÕ$GØ$,Ó$8Ø$<×$JÑ$JÈ4Ó$PÐT]Õ$]à 8× ?Ñ ?Ø-<ÐO_ÐimÑFnÑ$oô!"ð !8× ;Ñ ;¸DÖ Aô %=ô $ L´.×AÒAØZ\Ð+äAhØ(Ð*?óBÑ>Ð(Ð*>ö ,Ü6R×6kÒ6kÜ,?À,Ñ,OØ%2Ø(8Ø).ñ	7Ð3ð 0×6Ñ6Ð7NÔOÚ$Ø+Ñ7ð
 -A×,WÔDW˜MÜ6R×6kÒ6kÜ,?À,Ñ,OØ%2Ü);ÀÐU[Ñ)\Ð(]Ø).ñ	7Ð3ð 0×6Ñ6Ð7NÔOÚ$à$0×$>Ñ$>ÀEÐY^Ð$>Ô$_˜DÜ)¨$´×=Ñ=Ø $× EÑ EÀdÔ KØ#'§?¡?×#=Ñ#=¸h×#GÑ#GØ$7×$>Ñ$>Ü(;Ü3KÐTX×T`ÑT`ÐgmÑ3nØ18ñ)*ö%&ð &*§_¡_×%?Ñ%?Ð@Y×%ZÑ%ZØ$7×$>Ñ$>Ü(EÜ3NÐW[×WcÑWcÐjpÑ3qØ1;ñ)*ö%&ô +4Ø*AÀ$Ç/Á/ÑATð Ujð )jó+&ð %&ô "8¸×!=Ñ!=Ø 3× :Ñ :À×A`ÑA`ÐaeÐguÓAv×;v× wÜ!+¨D´#×!6Ô!6Ø 3× :Ñ :Ô;MÐSWÐ^dÑ;e× fñ3 %`ô6 3O×2gÒ2gÜ(;¸lÑ(KØ!.Ø$7×$=¸2Ø%1×%9Ñ%9¸XÑ%Eñ	3Ð/ð ,×2Ñ2Ð3J×KÜ# L´*×=Ñ=ä<Ó>Ð>Ü# L´/×BÔBØ'×1Ñ1Ñ9Ø#/×#>Ñ#>Ó#@˜DÜ*<À&ÈtÑ*T™Kä*F×*_Ò*_Ü,?À,Ñ,OØ%2Ø(4×(CÑ(CÓ(EØ)-ñ	+˜Kð ,×2Ñ2°;×?ñ[ 1Cðf FJÐ&Û&;‘N�I˜sØ ¤CÐ(;Ó$<Ó<Ø14Ò.à×=Ñ=Ø/°
°Ð;×hÔ?TÐUgÓ?hÐnqð >ó ñ	 '<ô Ð*Ó+¨aÓ/Ø&×-Ñ-Ô.>ÀFÐTgÑ.hÔiÞ2Ö6NáUtóJÚUtÈ'Ô*°¸fÔEÑUtð *ð Jð *×0Ñ0´Ð6SÐUmÓ1nÔoð .Ñ9Ø×=Ñ=Ð>SÐYoÐ=ÑpØ&×-Ñ-Ô.>ÀHÐVkÑ.l×mò 7Oô ˜Aœ}×-Ò-ð" ð! )ð" &'§W¥W�MÜ! -´×:Ñ:Ø(×0×0Ø4×;Ñ;Ô<NÐTa×TiÑTiÐpvÑ<wÖxñ 1ä# M´<×@Ñ@Ü/DÜ2°]ÑCØ!+Ø!.×!8Ñ!8Ø"/×"<Ñ"<Ó">ñ	0Ð,ð 1×7Ñ7Ð8LÖMÜ# M´<×@Ò@ð )×6Ñ6¸$¿+¹+ÓEÈ-×Ja×JaØ,×/Ñ/Ð3FÓFØ 8× ?Ñ ?Ü$BØ-:×-DÑ-DØ-@ñ%&÷!"ð !9× ?Ñ ?Ü$:Ø1>×1FÑ1FØ2?×2IÑ2IØ-7ñ%&÷!"ð +×2×2Ø15·±×1AÑ1AÀ/ÔShÓ1iÑ.˜I wØ4×;Ñ;Ü 2Ø)-¯©°I¸}×?TÑ?TÐV]Ð3^Ó)_Ðflñ!"÷ò 3ô $ MÔ3E×FÒFØ(×6Ñ6¸$¿+¹+ÔEÜ*=ÀÑ*N˜KØ,×6Ñ6¼-×:LÑ:LÓLÜ>YØ'2Ø):Ø)5Ø*7×*DÑ*DÓ*Fñ	?"Ð ;ô !<Ð<WÐYfÔ gØ 8× ?Ñ ?Ð@[× \Ø!.×!8Ñ!8Ü 1× 6Ñ 6Ø 5Ø <ð=ó "ô
 7^Ð^kÓ6lÐ 3Ü>YØ'2Ø):Ø)<Ø*7×*DÑ*DÓ*Fñ	?"Ð ;ô !<Ð<WÐYfÔ gØ 8× ?Ñ ?Ð@[× \Ø!.×!8Ñ!8¼L×<MÑ<MÓ!MÜ>YØ'2Ø):Ø)4Ø*7×*DÑ*DÓ*Fñ	?"Ð ;ô !<Ð<WÐYfÔ gØ 8× ?Ñ ?Ð@[× \Ø!.×!8Ñ!8¼K×<LÑ<LÓ!LÞ'5Ú$,Ü>YØ'2Ø):Ø)2Ø*7×*DÑ*DÓ*Fñ	?"Ð ;ô !<Ð<WÐYfÔ gØ 8× ?Ñ ?Ð@[× \Ø!.×!8Ñ!8¼N×<OÑ<OÔ!Oð
 +8×*HÑ*H×*NÈB ð (/§{¡{°:Ó'>À'Ó'IÜ'1°$·+±+Ô?d×'eÑ'eñ %,ð *0ð	 !)ð AIÈGÓ@SÑ$<ÐYpð !,ð -:×,FÑ,FÓ,H 	Ø#,°	Ó#9Ø2;·-±-À	Ó2J Kô ,6°kÄ4×+HÑ+Hô 59¸ÀkÔ4RÓ(iÒ4R¨qÔV`ÐabÔdg×Vh¯Ñ4RÒ(ià-/ð %,ð
 =EÈÓ<O©yÐU\ HØBJÈCÏHÉHÐU\ÓL]ÐA^¡Jà1: JÜ>YØ'2Ø):Ø)4Ø*4ñ	?"Ð ;ô !<Ð<WÐYfÔ gØ 8× ?Ñ ?Ð@[× \à -× 7Ñ 7× BÑ BÄ=×CUÑCU× VÑ VØ2?×2IÑ2I×2OÑ2OÐPSÐUVÓ2WÐXYÑ2ZÐ%Z YÕ%ZØ-:×-GÑ-GÓ-IÐ%I TÕ%IØ26·(±(¸;Ó2GÐ%G YÕ%GØ26·(±(¸;Ó2GÐ%G YÑ$Tä;SØ'2Ø)7Ø09Ø)2Ø*3ñ<"Ð 8ð !9× ?Ñ ?Ð@X× Yò %Uò &Hò &Jò &[ò !Wòk FôF $ MÔ3G×HÒHØ(×6Ñ6¸$¿+¹+ÔEÜ*=ÀÑ*N˜KØ,×6Ñ6Ü -× 2Ñ 2Ø 8ð;ó  ô #-¨]×-BÑ-BÄDÌ4ÁK×"PÑ"PÜ(IØ0;Ø)AÜ,0Ü(UØ(5×(=Ñ(=ó-&ñ)" ô !<¸EÀ=Ô QØ 8× ?Ñ ?À× FØ!.×!8Ñ!8Ü 1× 6Ñ 6Ø <Ø 5Ø <ð	=ó "ô
 #-¨]×-BÑ-BÄDÌ4ÁK×"PÑ"PÜ&MÈmÓ&\Þ)9Ø(@×(GÑ(GÜ,QØ<GØ5QÜ8<Ü4eØ4A×4IÑ4Ió92ñ-.÷	)*ö *?Ø(@×(GÑ(GÜ,UØ<GØ5VÜ8<Ü4`Ø4A×4IÑ4Ió92ñ-.÷	)*ô *FØ(@×(GÑ(GÜ,[Ø<GØ5]Ü8<Ü4fØ4A×4IÑ4Ió92ñ-.÷	)*ò *Fð "/×!8Ñ!8¼L×<MÑ<MÓ!MÔR\Ø -× 5Ñ 5´t÷Sñ Sô )IØ0;Ø)@Ü,0Ü(KØ(5×(=Ñ(=ó-&ñ)" ô !<¸EÀ=Ô QØ 8× ?Ñ ?À× FØ!.×!8Ñ!8¼K×<LÑ<LÓ!Lö $2´jÀ×AVÑAVÔX\×6]Ñ6]Ø$<×$CÑ$CÜ(GØ8CØ1FÜ48Ü0RØ0=×0EÑ0Eó5.ñ)*÷	%&ò 7^¢>ô ",¨MÔ;U×!VÑ!VØ 8× ?Ñ ?Ü$CÀMÐS^Ð`sÓ$t÷!"ð "/×!8Ñ!8×!CÑ!CÄM×DVÑDV×!WÑ!WÔ\fØ -× 5Ñ 5´t÷]ñ ]ô /3Ø$4Ø$1×$9Ñ$9ó/" ð !9× ?Ñ ?Ü$:ð %&Ø4?Ø->ñ%&ð +6ñ%&÷!"ò]Ò!Wòu FôP $ M´>×BÑBØ(×6Ñ6¸$¿+¹+ÓEÜ/GØ(5×(=Ñ(=ÀLñ0Ð,ð !.× >× >Ø$1×$BÑ$B×$FÑ$FÐGZÓ$[Ñ$gàHU×HfÑHfØ$7ñI"Ð 0Ð1DÑ Eð 5×;Ñ;Ð<L×Mò Fô $ M´8×<Ñ<âÜ# M´:×>Ñ>ä<Ó>Ð>ä$ ]×3ñO &-ôP Ð/Ó0°1Ó4Ø&×-Ñ-Ô.>ÀKÐYqÑ.r×sò 5ô ˜Q—ña ôd 	)Ð);Ô<Ü0Ð1CÔDÜÐ 2Ô3æ$Û-�Ø˜6‘? fÕ,Ø& yÑ1�HÜ% h´×5Ñ5Ð5Ð5Ü+¨H×5Ñ5Ù áXqóBÚXqÈWÐ!3ÀÔHÑXqð ð Bð *=¨8Ð)<°eÐ)<�G˜IÓ&ñ .ð !×7Ñ7¸ÐBZÓ[ÐØŸ™Ð$7Ó8ˆð
 ,×/Ñ/Ð0NÓOÐæÖ 2Ø=?Ð æØ$×+Ñ+Ô,>ÀFÐQ^Ñ,_Ô`æ Û-�DØ(×/Ñ/Ô0BÈÐUY×UaÑUaÑ0bÖcñ .ö $Ö(:Ø3EÈÒ3M©4ÐSe�ö %Ü"%Ñ%KÑ9JÓ%KÓ"K�KÞ"æ1>©AÀAÐ)Ü%(Ñ(WÑ4EÓ(WÓ%W˜
Ø%¨›>Ø.?À*Ñ.LÈqÑ.P™Oö 4A©aÀd™Oô +.Ð.BÓ*CÀaÑ*G™ð '(�Oà"Ñ.ØMQ×MfÑMfÐgjÓMkÐ(¨Ñ9¸/ÑJæ#Ø+Ð-?Ð?Ð?àÐ0Ð0Ð0ùóU%
ùòp bò.DÓ-PòT <wùòTJùòL )jùòZBùsæ   ƒ%AM¨AL:ÁAL:Á(AL:ÂAL:ÂB)AMÅAM ÅCAMÈ-AMÈ1AM
È2AMÈ5CAMÌAMÌAMÌAMÌ4G:AMÔ.AMÔ/AMÕBAM×/C*AMÛAMÛ-R AMîAMî*AMî0W6AMÁF*2AMÁGAMÁG+EAMÁMAMÁMAMÁMAMr6  c               óä  • U(       a  SOSn[        U [        5      (       a  [        S U  5       5      OSnU H  nSU;   d  M  US-  nM     XE-
  nUS:  a  [        SU SU S	35      e[	        U5       H{  nUS
   n	[        U	[
        5      (       a  M  [	        [        [        [           U	5      5       H8  n
[        [        [
        [        4   U
5      nSU;   d  M(  US:”  a  US-  nM5  US	 M:     M}     g)až  Limit the number of cache points in the request to Anthropic's maximum.

Anthropic enforces a maximum of 4 cache points per request. This method ensures
compliance by counting existing cache points and removing excess ones from messages.

When automatic_caching is enabled, the server-applied breakpoint uses 1 of the 4
available slots, so the budget for explicit breakpoints is reduced to 3.

Strategy:
1. Count cache points in system_prompt (can be multiple if list of blocks)
2. Count cache points in tools (can be in any position, not just last)
3. Raise UserError if system + tools already exceed the budget
4. Calculate remaining budget for message cache points
5. Traverse messages from newest to oldest, keeping the most recent cache points
   within the remaining budget
6. Remove excess cache points from older messages to stay within limit

Cache point priority (always preserved):
- System prompt cache points
- Tool definition cache points
- Message cache points (newest first, oldest removed if needed)

Raises:
    UserError: If system_prompt and tools combined already exceed the budget.
              This indicates a configuration error that cannot be auto-fixed.
é   é   c              3  ól   #   • U  H*  nS [        [        [        [        4   U5      ;   d  M&  Sv •  M,     g7f)r@  rd   N)r   r  r^  r   )r_  rR  s     r‰   ra  Ú5AnthropicModel._limit_cache_points.<locals>.<genexpr>X
  s*   é € Ð_š}�e°Ä4ÌÌSÔRUÈXÉÐX]ÓC^Ñ0^—‘š}ùs   ‚%4«	4r   r@  rd   z\Too many cache points for Anthropic request. System prompt and tool definitions already use z, cache points, which exceeds the maximum of r  rP  N)
r]  rƒ  r¦  r&   r~  r^  r   rµ   r  r   )rM  rJ  rŽ   r7  ÚMAX_CACHE_POINTSÚused_cache_pointsr�   Úremaining_budgetr  rP  rR  Ú
block_dicts               r‰   r^  Ú"AnthropicModel._limit_cache_points2
  s  € öD !2™1°qÐô
 ˜-¬×.Ñ.ô Ñ_™}Ó_Ô_àð 	ó ˆDØ $Õ&Ø! QÑ&Ò!ñ ð
 ,Ñ?ÐØ˜aÓÜðBØBSÐATð U0Ø0@Ð/AÀðDóð ô  Ð 2Ö3ˆGØ˜iÑ(ˆGÜ˜'¤3×'Ñ'Ùô "¤$¤tÔ,AÑ'BÀGÓ"LÖM�Ü!¤$¤s¬C x¡.°%Ó8�
à" jÕ0Ø'¨!Ó+Ø(¨AÑ-Ò(ð ' Ò7ó Nò 4r8  c                ó   • [        SUS9$ )z¡Build a cache control dict with the given TTL.

Args:
    ttl: The cache time-to-live ('5m' or '1h').

Returns:
    A cache control dict with the specified TTL.
Ú	ephemeral©r  rW  )r¦   )rÂ  rW  s     r‰   rN  Ú#AnthropicModel._build_cache_control|
  s   € ô .°;ÀCÑHÐHr8  c                ó  • UR                  S5      nUR                  S5      nU(       a  U(       a  [        S5      eU(       d  gUSL a  SOUn[        U R                  [        5      (       a  SU4$ U R                  U5      U4$ )a}  Resolve cache settings and build the top-level cache_control parameter.

Returns:
    A tuple of (top_level_param, resolved_ttl).
    top_level_param is the cache_control for the API (None on unsupported clients).
    resolved_ttl is the effective TTL (None if caching is not enabled), used by
    _apply_per_block_caching_fallback on clients that don't support automatic caching.
rA  r@  zH`anthropic_cache` and `anthropic_cache_messages` cannot both be enabled.©NNTrE  N)rŒ   r&   r]  rÆ  Ú_NON_AUTOMATIC_CACHING_CLIENTSrN  )rÂ  rQ  Ú
auto_cacheÚcache_messagesrW  s        r‰   rZ  Ú-AnthropicModel._build_automatic_cache_control‡
  s   € ð $×'Ñ'Ð(9Ó:ˆ
Ø'×+Ñ+Ð,FÓGˆæž.ÜÐfÓgÐgæØà+5¸Ò+=¡4À:ˆô �d—k‘kÔ#A×BÑBØ˜�9ÐØ×(Ñ(¨Ó-¨sÐ2Ð2r8  c                óv   • U(       a2  [        U R                  [        5      (       a  U R                  X!5        ggg)a  Apply per-block message caching as a fallback for automatic caching on unsupported platforms.

Bedrock and Vertex do not support the top-level `cache_control` parameter used by
`anthropic_cache` for automatic caching. As a fallback, this applies per-block
`cache_control` to the last content block of the last user message.

Args:
    resolved_ttl: The resolved TTL from `_build_automatic_cache_control`, or None
        if caching is not enabled.
    anthropic_messages: The list of Anthropic message params to apply fallback to.
N)r]  rÆ  rì  Ú_apply_message_cache_control)rÂ  Úresolved_ttlrJ  s      r‰   r\  Ú0AnthropicModel._apply_per_block_caching_fallback¥
  s/   € ö  œJ t§{¡{Ô4R×SÑSØ×-Ñ-Ð.@ÕOð Tˆ<r8  c                ój   • UR                  S5      =n(       a  USL a  SOUnU R                  X$5        gg)z§Apply per-block message caching when `anthropic_cache_messages` is enabled.

Mutually exclusive with `anthropic_cache` (enforced by `_build_automatic_cache_control`).
r@  TrE  N)rŒ   rñ  )rÂ  rQ  rJ  rî  rW  s        r‰   r]  Ú.AnthropicModel._apply_explicit_message_caching¸
  s>   € ð ,×/Ñ/Ð0JÓKÐKˆ>ÕKØ/=ÀÒ/E¡tÈ>ˆCØ×-Ñ-Ð.@ÕFð Lr8  c                óÐ   • US   nUS   n[        U[        5      (       a  [        SUU R                  U5      S9/US'   g[	        [
        [           U5      nU R                  XR5        g)a  Apply per-block `cache_control` to the last content block of the last message.

If the last block already has `cache_control` (e.g. from an explicit `CachePoint`),
it is left unchanged to preserve the user's chosen TTL.

Assumes `anthropic_messages` is non-empty.
r¯  rP  r'  )r  r'  r@  N)r]  r^  rÛ   rN  r   rƒ  rµ   Ú*_add_cache_control_to_last_cacheable_param)rÂ  rJ  rW  Úlast_messagerP  Úcontent_blockss         r‰   rñ  Ú+AnthropicModel._apply_message_cache_controlÅ
  so   € ð *¨"Ñ-ˆØ˜yÑ)ˆÜ�gœs×#Ñ#ä"ØØ Ø"&×";Ñ";¸CÓ"@ñð'ˆL˜Ò#ô "¤$Ô'<Ñ"=¸wÓGˆNØ×;Ñ;¸NÕPr8  c                ó¢   • [        U5       H@  n[        U5      (       d  M  SU;   a    g US   [        ;   d  M,  U R                  U5      US'     g    g )Nr@  r  )r~  r#   Ú _ANTHROPIC_CACHEABLE_PARAM_TYPESrN  )rÂ  ÚparamsrW  Úparams       r‰   r÷  Ú9AnthropicModel._add_cache_control_to_last_cacheable_paramß
  sQ   € ô ˜fÖ%ˆEÜ˜u×%Ñ%ÙØ %Ó'ÙØ�V‰}Ô @Õ@Ø)-×)BÑ)BÀ3Ó)G��oÑ&Ùò &r8  c                ó8   • [        XR                  U5      5        g)zýAdd cache control to the last content block param.

See https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching for more information.

Args:
    params: List of content block params to modify.
    ttl: The cache time-to-live ('5m' or '1h').
N)Ú_add_cache_control_paramrN  )rÂ  rý  rW  s      r‰   rŒ  Ú/AnthropicModel._add_cache_control_to_last_paramë
  s   € ô 	! ×)BÑ)BÀ3Ó)GÕHr8  c                ó8  • UR                  S5      (       a"  [        [        R                  " U 5      USS.SS9$ US:X  a'  [	        [        [        R                  " U 5      SSS9SS9$ US:X  a"  [	        [        U R                  S	5      US
S9SS9$ [        SU 35      e)Nrb  Úbase64©rØ  r’  r  r(  re  úapplication/pdfr)  ú
text/plainzutf-8r'  z5Unsupported binary content media type for Anthropic: )	r“  rº   ÚioÚBytesIOrÑ   r£   rÇ   r§  ÚRuntimeError)rØ  r’  s     r‰   Ú_map_binary_dataÚAnthropicModel._map_binary_dataø
  s¶   € à× Ñ  ×*Ñ*Ü&Ü "§
¢
¨4Ó 0À
ÐT\Ñ]Øñð ð Ð,Ó,Ü0Ü/ÜŸš DÓ)Ø0Ø!ñð
  ñð ð ˜<Ó'Ü0Ü/°T·[±[ÀÓ5IÐV`ÐgmÑnØñð ô
 Ð!VÐWaÐVbÐcÓdÐdr8  c              ƒ  óÈ   #   • U R                   (       a5  [        U SS9I S h  v•N n[        R                  US   U R                  5      $ [        SU R                  S.SS9$  N>7f)NÚbytes©Údata_formatrØ  r1  )r  r1  r(  re  )Úforce_downloadrn   r´  r  r’  rº   r1  )r£  Ú
downloadeds     r‰   Ú_map_image_urlÚAnthropicModel._map_image_url  sV   é € à××Ü,¨T¸wÑG×GˆJÜ!×2Ñ2°:¸fÑ3EÀtÇÁÓWÐWÜ"°5ÀÇÁÑ*JÐQXÑYÐYñ Hùs   ‚A"¡A ¢?A"c              ƒ  ó   #   • U R                   S:X  a]  U R                  (       a5  [        U SS9I S h  v•N n[        R	                  US   U R                   5      $ [        U R                  SS.SS9$ U R                   S	:X  a2  [        U S
S9I S h  v•N n[        [        US   U R                   S
S9SS9$ [        SU R                    35      e N˜ N>7f)Nr  r  r  rØ  r1  )r1  r  r)  re  r  r'  r  z!Unsupported document media type: )	r’  r  rn   r´  r  rÑ   r1  rÇ   r
  )r£  r  Údownloaded_items      r‰   Ú_map_document_urlÚ AnthropicModel._map_document_url  sÈ   é € à�?‰?Ð/Ó/Ø×"×"Ü#0°À7Ñ#K×K�
Ü%×6Ñ6°zÀ&Ñ7IÈ4Ï?É?Ó[Ð[Ü0ÀÇÁÐRWÑ8XÐ_iÑjÐjØ�_‰_ Ó,Ü$1°$ÀFÑ$K×KˆOÜ0Ü/°_ÀVÑ5LÐY]×YhÑYhÐouÑvØñð ô
 Ð!BÀ4Ç?Á?ÐBSÐTÓUÐUñ Lñ Lùs"   ‚/C±C
²ACÂCÂ=CÃCc              ƒ  ó4  #   • [        U [        5      (       ag  U R                  (       d  U R                  (       a*  [        R                  U R                  U R                  5      $ [        SU SU R                   35      e[        U [        5      (       a  [        R                  U 5      I Sh  v•N $ [        U [        5      (       a  [        R                  U 5      I Sh  v•N $ [        U [        5      (       a  [        SU 35      e[        SU 35      e Ng N77f)z>Map a multimodal file item to its Anthropic API content block.z-Unsupported binary content type in Anthropic z: Nz'AudioUrl is not supported in Anthropic z'VideoUrl is not supported in Anthropic )r]  r(   Úis_imageÚis_documentr´  r  rØ  r’  ÚNotImplementedErrorr.   r  r+   r  r'   )r£  Úcontexts     r‰   r”  Ú)AnthropicModel._map_file_to_content_block'  sá   é € ô �dœM×*Ñ*Ø�}�} × 0× 0Ü%×6Ñ6°t·y±yÀ$Ç/Á/ÓRÐRÜ%Ð(UÐV]ÐU^Ð^`Ðae×apÑapÐ`qÐ&rÓsÐsÜ˜œh×'Ñ'Ü'×6Ñ6°tÓ<×<Ð<Ü˜œk×*Ñ*Ü'×9Ñ9¸$Ó?×?Ð?Ü˜œh×'Ñ'Ü%Ð(OÐPWÈyÐ&YÓZÐZä%Ð(OÐPWÈyÐ&YÓZÐZñ =á?ùs$   ‚B*DÂ,DÂ-1DÃDÃ6DÄDc               óÈ  #   • [        UR                  [        5      (       a*  UR                  (       a  [        UR                  SS97v •  g g UR                   GH‚  n[        U[        [        -  5      (       a;  [        U[        5      (       a  UOUR                  nU(       a  [        USS97v •  MY  M[  [        U[
        5      (       a  U7v •  Mw  [        U[        5      (       a®  U R                  U5        UR                  R                  S5      (       a!  [        [        UR                  SS9SS97v •  MÞ  UR                  R                  S5      (       a"  [        [        UR                  SS9S	S97v •  GM   [        S
UR                  < S35      e[!        U5      (       a$  ["        R%                  US5      I S h  v•N 7v •  GMn  ['        S[)        U5       35      e   g  N$7f)Nr'  r`  rb  r'  rc  r(  re  rg  r)  rh  ri  zuser promptszUnsupported content type: )r]  rP  r^  rÛ   r;   r)   rB   r‘  r’  r“  rº   r¹   rd  rÑ   r¸   r&   rE   r´  r”  r
  r  )rÂ  r|  r£  r'  s       r‰   r‹  ÚAnthropicModel._map_user_prompt:  s„  é € ô �d—l‘l¤C×(Ñ(Ø�|�|Ü(¨d¯l©lÀÑHÔHð ð Ÿ��Ü˜d¤C¬+Ñ$5×6Ñ6Ü#-¨d´C×#8Ñ#8™4¸d¿l¹l�DÞÜ0°dÀÑHÕHñ ä ¤j×1Ñ1Ø•JÜ ¤l×3Ñ3Ø×9Ñ9¸$Ô?Ø—‘×1Ñ1°(×;Ñ;Ü1Ü#;ÀDÇLÁLÐW]Ñ#^Ø!(ñõ ð Ÿ™×3Ñ3Ð4M×NÑNÜ;Ü#>ÀtÇ|Á|ÐZ`Ñ#aØ!+ñö ô
 (Ø5°d·o±oÑ5Hð I^ð ^óð ô ,¨D×1Ñ1Ü .× IÑ IÈ$ÐP^Ó _×_Ö_ä&Ð)CÄDÈÃJÀ<Ð'PÓQÐQò7 %ñ2 `ùs   ‚F9G"Æ;G Æ<%G"c               ó.  • UR                   UR                  =(       d    SUR                  S.nUR                  (       a0  U R                  R                  SS5      (       a  UR                  US'   UR                  S5      (       a  SUS'   US	:X  a  SUS
'   U$ )zMMaps a `ToolDefinition` dataclass to an Anthropic `BetaToolParam` dictionary.rÂ  )rˆ   ÚdescriptionÚinput_schemar	  Fr  rG  TÚeager_input_streamingr�   rƒ   )rˆ   r"  Úparameters_json_schemar  rm  rŒ   )rÂ  ÚfrQ  rD  Ú
tool_params        r‰   rM  Ú#AnthropicModel._map_tool_definition_  sŠ   € ð —F‘FØŸ=™=×.¨BØ×4Ñ4ñ%
ˆ
ð
 �8�8˜Ÿ™×(Ñ(Ð)FÈ×NÑNØ#$§8¡8ˆJ�xÑ Ø×ÑÐ?×@Ñ@Ø26ˆJÐ.Ñ/Ø˜Ó#Ø*.ˆJ�Ñ'ØÐr8  c                ó
  • S nUR                   S:X  a(  UR                  c   eSUR                  R                  S.nUR                  S5      nUcn  U R                  R                  SS5      (       aM  [        UR                  [        5      (       a.  [        UR                  U R                  R                  SS5      S9nUb  U R                  XB5        U R                  U5      nUc  Uc  Uc  g 0 nUb  X6S	'   Ub  XFS
'   Ub  XVS'   U$ )Nr
  Újson_schema)r  ÚschemarB  Úanthropic_supports_effortFÚanthropic_supports_xhigh_effort)Úsupports_xhighÚformatÚeffortÚtask_budget)r  r  r*  rŒ   rm  r]  rN  r^  rZ   Ú%_validate_effort_vs_disabled_thinkingr‘  )rÂ  r‡   rQ  Úoutput_formatr0  r1  Úconfigs          r‰   r_  Ú#AnthropicModel._build_output_configt  s  € ð ;?ˆØ#×/Ñ/°8Ó;Ø+×9Ñ9ÑEÐEÐEØ%2Ð>V×>dÑ>d×>pÑ>pÑqˆMà)7×);Ñ);Ð<NÓ)Oˆð ‰NØ—‘× Ñ Ð!<¸e×DÑDÜÐ3×<Ñ<¼c×BÑBä-Ø(×1Ñ1Ø#Ÿ|™|×/Ñ/Ð0QÐSXÓYñˆFð
 ÑØ×6Ñ6°vÔNà×+Ñ+¨NÓ;ˆàÑ  V¡^¸Ñ8KØà(*ˆØÑ$Ø,�8ÑØÑØ%�8ÑØÑ"Ø$/�=Ñ!Øˆr8  c                óä   • US;  a  gU R                   R                  SS5      (       d  gUR                  S5      nUb  UR                  S5      S:w  a  g[        SU R                  < S	U< S
35      e)a!  Reject `xhigh`/`max` effort combined with explicitly disabled thinking.

Claude Opus 5 caps effort at `high` once thinking is disabled, while Claude Opus 4.8 accepts
every effort level in that combination. Fail fast with a helpful message rather than letting
the API return an opaque 400.
)ÚxhighÚmaxNÚ5anthropic_disallows_top_effort_when_thinking_disabledFr<  r  ÚdisabledúModel z$ does not support `anthropic_effort=zh` while `anthropic_thinking={'type': 'disabled'}`. Use an effort of 'high' or below, or enable thinking.)rm  rŒ   r&   r  )rÂ  r0  rQ  rN  s       r‰   r2  Ú4AnthropicModel._validate_effort_vs_disabled_thinkingš  sƒ   € ð Ð)Ó)ØØ�|‰|×ÑÐ WÐY^×_Ñ_ØØ!×%Ñ%Ð&:Ó;ˆØÑ˜xŸ|™|¨FÓ3°zÓAØÜØ�T—_‘_Ñ'Ð'KÈFÉ:ð Voð oó
ð 	
r8  c                ó¦   • UR                  S5      nUc  g U R                  R                  SS5      (       d  [        SU R                  < S35      eU$ )NrC  Úanthropic_supports_task_budgetsFr;  z‹ does not support `anthropic_task_budget`. See https://platform.claude.com/docs/en/build-with-claude/task-budgets for the supported models.)rŒ   rm  r&   r  )rÂ  rQ  r1  s      r‰   r‘  ÚAnthropicModel._get_task_budget¯  sa   € Ø$×(Ñ(Ð)@ÓAˆØÑØà�|‰|×ÑÐ AÀ5×IÑIÜØ˜Ÿ™Ñ+ð ,sð sóð ð
 Ðr8  c                óÞ   • U R                  S5      nUb  SU;  a  g [        U[        5      (       d  g UR                  S5      =(       d    Sn[        S U 5       5      (       a  [	        S5      eg )NrC  Ú	remainingr  r1  c              3  ó€   #   • U  H4  n[        U[        5      =(       a    UR                  S 5      [        :H  v •  M6     g7f)r  N)r]  r  rŒ   r�  )r_  r  s     r‰   ra  ÚMAnthropicModel._validate_task_budget_vs_context_management.<locals>.<genexpr>Ê  s0   é € ÐdÒ^cÐYZŒz˜!œTÓ"×T q§u¡u¨V£}Ô8TÑ'TÔTÒ^cùs   ‚<>u  `anthropic_task_budget.remaining` cannot be combined with `AnthropicCompaction`: Anthropic rejects this combination because server-side compaction tracks the budget itself. Use `remaining` for client-side budget tracking, or `AnthropicCompaction` for server-side compaction â€” not both.)rŒ   r]  r  r„  r&   )rQ  rA  r1  r  s       r‰   rc  Ú:AnthropicModel._validate_task_budget_vs_context_management¼  su   € ð %×(Ñ(Ð)@ÓAˆØÑ +°[Ó"@ØÜÐ,¬d×3Ñ3ØØ"×&Ñ& wÓ/×5°2ˆÜÑdÑ^cÓd×dÑdÜð;óð ð er8  )r¹  rº  )r  r¸  r¼  z@Literal['anthropic', 'gateway'] | Provider[AsyncAnthropicClient]rm  zModelProfileSpec | Noner½  úModelSettings | None)rV  r]   ©rV  r^  ©rV  r¸  )rQ  rE  rV  ztimedelta | None)rV  rY   )rV  zLiteral['by_reference'] | None)rV  z#frozenset[type[AbstractNativeTool]])r†   úlist[ModelMessage]rQ  rE  r‡   rf   rV  r1   )r†   rH  rQ  rE  r‡   rf   rV  úusage.RequestUsager\  )
r†   rH  rQ  rE  r‡   rf   rþ  zRunContext[Any] | NonerV  z AsyncGenerator[StreamedResponse])rQ  rE  r‡   rf   rV  z3tuple[ModelSettings | None, ModelRequestParameters])rQ  r^   rV  ÚNone)rQ  r:  r‡   rf   rV  râ   )
r†   rH  ró  zLiteral[True]rQ  r:  r‡   rf   rV  ú&AsyncStream[BetaRawMessageStreamEvent])
r†   rH  ró  zLiteral[False]rQ  r:  r‡   rf   rV  rÁ   )
r†   rH  ró  rF  rQ  r:  r‡   rf   rV  rW  )r†   rH  rV  z/tuple[list[ModelMessage], ModelResponse | None])r†   rH  r•  rT  rQ  r:  rV  ú'BetaContextManagementConfigParam | None)rQ  r:  rK  rY   r†   rH  r‡   rf   rN  údict[str, object] | OmitrV  ztuple[set[str], dict[str, str]])r†   rH  rV  rF  )rQ  r:  rK  rY   rV  z"Literal['standard', 'fast'] | Omit)rK  rY   rV  rF  )r†   rH  rQ  r:  rV  z-tuple[BetaContainerParams | str | None, bool])r†   rH  rQ  r:  r‡   rf   rV  rÄ   )r  rÁ   r‡   rf   rQ  r:  rV  r1   )r‡   rf   rQ  r:  rV  r  )r  rK  r‡   rf   rQ  r:  rV  rg   )rQ  r:  rV  rW   )r  zLiteral['bm25', 'regex'] | NonerV  zLiteral['bm25', 'regex'])r�   rM   râ  rF  rV  z?BetaWebSearchTool20260209Param | BetaWebSearchTool20250305Param)r�   rL   râ  rF  rV  zPtuple[BetaWebFetchTool20260209Param | BetaWebFetchTool20250910Param, str | None])rŽ   úlist[BetaToolUnionParam]r‡   rf   rQ  r:  rV  zWtuple[list[BetaToolUnionParam], list[BetaRequestMCPServerURLDefinitionParam], set[str]])rQ  r:  r‡   rf   rV  z;tuple[list[BetaToolUnionParam], BetaToolChoiceParam | None])r†   rH  r‡   rf   rQ  r:  rV  z=tuple[str | list[BetaTextBlockParam], list[BetaMessageParam]])
rM  zstr | list[BetaTextBlockParam]rJ  úlist[BetaMessageParam]rŽ   rN  r7  rF  rV  rJ  )rE  )rW  úLiteral['5m', '1h']rV  r¦   )rQ  r:  rV  zHtuple[BetaCacheControlEphemeralParam | None, Literal['5m', '1h'] | None])rò  zLiteral['5m', '1h'] | NonerJ  rO  rV  rJ  )rQ  r:  rJ  rO  rV  rJ  )rJ  rO  rW  rP  rV  rJ  )rý  rn  rW  rP  rV  rJ  )rØ  r  r’  r^  rV  ú3BetaImageBlockParam | BetaRequestDocumentBlockParam)r£  r.   rV  rº   )r£  r+   rV  rÑ   )r£  z<BinaryContent | ImageUrl | DocumentUrl | AudioUrl | VideoUrlr  r^  rV  rQ  )r|  rC   rV  z2AsyncGenerator[BetaContentBlockParam | CachePoint])r&  rb   rQ  r:  rD  rh   rV  rç   )r‡   rf   rQ  r:  rV  zBetaOutputConfigParam | None)r0  rX   rQ  r:  rV  rJ  )rQ  r:  rV  zAnthropicTaskBudget | None)rQ  r:  rA  rL  rV  rJ  )Jr2  r3  r4  r5  r6  ré  Úsupported_tool_deferral_modesÚsupported_tool_addition_modesÚ%compaction_requires_encrypted_contentÚ"compaction_retains_standing_promptr   r¹  rK  rº  rÁ  ÚpropertyrÆ  rÊ  r  rÒ  rÕ  r   rm  rå  ÚclassmethodrØ  r�  rû  r	   rÿ  rî  r  r)  r   rï  re  Ústaticmethodrb  r`  r–  rH  r“  rd  rù  rð  rÍ  rò  r  r  r  r#  rY  rX  r[  r^  rN  rZ  r\  r]  rñ  r÷  rŒ  r  r  r  r”  r‹  rM  r_  r2  r‘  rc  r7  Ú__classcell__)rÃ  s   @r‰   r´  r´  .  s¦  ø‡ ññ %.¨|¨nÓ$=Ð!Ù$-¨~Ð.>Ó$?Ð!ð -2Ð)Ø).Ð&á&+°Ñ&7€KÐ#Ó7Ù05¸5Ñ0A€IÐ-ÓAð VaØ+/Ø)-ñ=à&ð=ð Sð	=ð
 )ð=ð '÷=ð =ð6 ó%ó ð%ð ó)ó ð)ð ó ó ð ô
ð ó#ó ð#ð ö%5ó ð%5ðN ö8ó ð8ð ó
ó ð
ðà$ðð -ðð #9ð	ð
 
ôð:Fà$ðFð -ðFð #9ð	Fð
 
ôFð$ ð /3ðlà$ðlð -ðlð #9ð	lð
 ,ðlð 
*ôló ðlð"M;Ø2ðM;ØNdðM;à	<÷M;ô^ð(]à.ð]ð #9ð]ð 
!ô	]ð ðà$ðð ðð /ð	ð
 #9ðð 
0óó ðð ðà$ðð ðð /ð	ð
 #9ðð 
óó ððtà$ðtð ðtð /ð	tð
 #9ðtð 
>ôtðl*Ø*ð*à	8ô*ð ð"Ø$ð"àð"ð /ð"ð 
1ó	"ó ð"ð*>$à.ð>$ð 1ð>$ð %ð	>$ð
 #9ð>$ð +ð>$ð 
)ô>$ô@ð2Ø4ðØI^ðà	+ôô
ð)Ø*ð)Ø<Rð)à	6ô)ðVIà$ðIð /ðIð #9ð	Ið
 
 ôIðVj
àðj
ð #9ðj
ð /ð	j
ð
 
ôj
ðX4Ø(>ð4ØPfð4à	ô4ð2
à8ð
ð #9ð
ð /ð	
ð
 
ô
ðBØ4ðà	*ôô$"ð ð
Øð
Ø9=ð
à	Hó
ó ð
ð, ð
Øð
Ø8<ð
à	Yó
ó ð
ð<J1à'ðJ1ð #9ðJ1ð /ð	J1ð
 
aôJ1ðXS"à.ðS"ð #9ðS"ð 
Eô	S"ðjV	1à$ðV	1ð #9ðV	1ð /ð	V	1ð
 
GôV	1ðp ð #(ñG8Ø5ðG8à2ðG8ð (ðG8ð
  ðG8ð 
ôG8ó ðG8öR	Ið3Ø4ð3à	Qô3ð<Pà0ðPð 3ðPð 
ô	Pð&Gà.ðGð 3ðGð 
ô	GðQà2ðQð !ðQð 
ô	Qð6 OSð
Ø1ð
Ø8Kð
à	õ
ð OSðIØ1ðIØ8KðIà	õIð óeó ðeð. óZó ðZð óVó ðVð ð[ØJð[àð[ð 
=ó[ó ð[ð$#Ràð#Rð 
<ô#RðJàðð /ðð
 #ðð 
ôð*$Ø(>ð$ØPfð$à	%ô$ðL
Ø%ð
Ø7Mð
à	ô
ô*ð ðØ.ðàCðð 
óó ör8  r´  c                  óZ   • \ rS rSrSrSSSS.       SS jjrSS jr\SS	 j5       rS
r	g)ÚAnthropicCompactioniÓ  aÚ  Compaction capability for Anthropic models.

Configures automatic context management via Anthropic's `context_management`
API parameter. Compaction triggers server-side when input tokens exceed
the configured threshold.

Example usage:

```python {test="skip"}
from pydantic_ai import Agent
from pydantic_ai.models.anthropic import AnthropicCompaction

agent = Agent(
    'anthropic:claude-sonnet-4-6',
    capabilities=[AnthropicCompaction(token_threshold=100_000)],
)
```
iðI NF©Útoken_thresholdÚinstructionsÚpause_after_compactionc               ó(   • Xl         X l        X0l        g)as  Initialize the Anthropic compaction capability.

Args:
    token_threshold: Compact when input tokens exceed this threshold. Minimum 50,000.
    instructions: Custom instructions for the compaction summarization.
    pause_after_compaction: If `True`, the response will stop after the compaction block
        with `stop_reason='compaction'`, allowing explicit handling.
Nr\  )rÂ  r]  r^  r_  s       r‰   rÁ  ÚAnthropicCompaction.__init__è  s   € ð  /ÔØ(ÔØ&<Õ#r8  c                ó¨   ^• [         SU R                  S.S.mU R                  (       a  STS'   U R                  b  U R                  TS'   SU4S jjnU$ )	Nrø  )r  rT  )r  ÚtriggerTr_  r^  c                óœ  >• 0 nU R                   (       aj  [        [        [        [        4   U R                   5      R                  S5      n[        U[        5      (       a  0 [        [        [        [        4   U5      En[        [        [        [        [        4      UR                  S/ 5      5      n/ UQTPUS'   [        [        SU05      $ )NrJ  r  )	rQ  r   r  r^  r   rŒ   r]  rƒ  r^   )ÚctxÚexisting_cmÚraw_cmÚexisting_editsÚedits       €r‰   ÚresolveÚ7AnthropicCompaction.get_model_settings.<locals>.resolve  s«   ø€ ð +-ˆKØ×!×!Üœd¤3¬ 8™n¨c×.@Ñ.@ÓA×EÑEÐFdÓe�Ü˜f¤d×+Ñ+Ø"B¤T¬$¬s´C¨x©.¸&Ó%AÐ"B�KÜ!¤$¤t¬C´¨H¡~Ñ"6¸¿¹ÈÐQSÓ8TÓUˆNØ#: ^Ð#:°TÐ#:ˆK˜Ñ ÜœÐ(FÈÐ'TÓUÐUr8  )re  zRunContext[AgentDepsT]rV  r^   )r�  r]  r_  r^  )rÂ  rj  ri  s     @r‰   Úget_model_settingsÚ&AnthropicCompaction.get_model_settingsû  sZ   ø€ ä0Ø .¸×9MÑ9MÑNñ 
ˆð ×&×&Ø-1ˆDÐ)Ñ*Ø×ÑÑ(Ø#'×#4Ñ#4ˆD�Ñ ÷
	Vð ˆr8  c                ó   • g)Nr[  r1  rê  s    r‰   Úget_serialization_nameÚ*AnthropicCompaction.get_serialization_name  s   € à$r8  )r^  r_  r]  )r]  Úintr^  ú
str | Noner_  rF  rV  rJ  )rV  z1Callable[[RunContext[AgentDepsT]], ModelSettings])rV  rr  )
r2  r3  r4  r5  r6  rÁ  rl  rW  ro  r7  r1  r8  r‰   r[  r[  Ó  sX   † ñð,  'Ø#'Ø',ñ=ð ð=ð !ð	=ð
 !%ð=ð 
õ=ô&ð0 ó%ó ó%r8  r[  )rø  Úoutput_tokensÚcache_creation_input_tokensÚcache_read_input_tokensc                ó`  ^• 0 n[          H+  m[        [        U TS5      =n[        5      (       d  M'  X!T'   M-     U R                  nUb  UR
                  =n(       a  XAS'   U R                  nUb  UR                  =n(       a  XaS'   U R                  nU(       d  U$ U Vs/ s H  oˆR                  S:X  d  M  UPM     n	nU Vs/ s H  oˆR                  S:X  d  M  UPM     n
nU	(       d	  U
(       d  U$ [        U5      [        U	5      -
  [        U
5      -
  US'   U	(       a@  [        U	5      US'   [          H(  m[        U4S jU	 5       5      =n(       d  M!  X±S	T 3'   M*     U
(       a@  [        U
5      US
'   [          H(  m[        U4S jU
 5       5      =n(       d  M!  XÁST 3'   M*     U$ s  snf s  snf )aZ  Extract Anthropic usage into a flat dict, preserving the web search count and iteration totals.

Anthropic's top-level `input_tokens`/`output_tokens` exclude both compaction and advisor iteration
usage (see <https://docs.anthropic.com/en/docs/build-with-claude/compaction#understanding-usage>),
so they're kept as-is here and the iteration totals are recorded under `compaction_*` / `advisor_*`
keys. `_map_usage` sums the compaction totals back into the request totals at extraction time (which
also keeps streaming correct: the fixed totals set by the start event survive the merge with delta
events that only carry the top-level values). Advisor totals are deliberately NOT summed back, since
advisor tokens are billed at the advisor model's rates, not the executor's, and folding them into the
request totals would misprice the request via genai-prices.
NÚthinking_tokensÚweb_search_requestsrw   Úadvisor_messageÚmessage_iterationsÚcompaction_iterationsc              3  ó<   >#   • U  H  n[        UT5      v •  M     g 7fr\  ©r¢  ©r_  Úitr`  s     €r‰   ra  Ú)_extract_usage_details.<locals>.<genexpr>J  s   øé € Ð&XÒBW¸B¤w¨r°3×'7Ð'7ÒBWùó   ƒÚcompaction_Úadvisor_iterationsc              3  ó<   >#   • U  H  n[        UT5      v •  M     g 7fr\  r}  r~  s     €r‰   ra  r€  R  s   øé € Ð#RÒ?Q¸¤G¨B°×$4Ð$4Ò?Qùr�  Úadvisor_)Ú_COMPACTION_TOKEN_KEYSr]  r¢  rq  Úoutput_tokens_detailsrw  r,  rx  Ú
iterationsr  rJ  r¦  )Úresponse_usagerÇ  rT  r‡  rw  r,  rx  rˆ  r  r{  rƒ  Úcompaction_totalÚadvisor_totalr`  s                @r‰   Ú_extract_usage_detailsrŒ    s±  ø€ ð !€Gß%ˆÜ¤¨¸¸TÓ BÐB�uÄS×IÓIØ �C‹Lñ &ð +×@Ñ@ÐØÑ(ÐAV×AfÑAfÐ.f¨oÕ.fØ%4Ð!Ñ"ð
 %×4Ñ4€OØÑ"¸×?bÑ?bÐ(bÐ(;Õ(bØ)<Ð%Ñ&à×*Ñ*€JÞØˆá*4ÓPª* B¿¹À<Ñ8OŸR©*ÐÐPÙ'1ÓR¢z ·W±WÐ@QÑ5QŸ"¡zÐÐRÞ Ö);Øˆô %(¨
£O´cÐ:OÓ6PÑ$PÔSVÐWiÓSjÑ$j€GÐ Ñ!æÜ+.Ð/DÓ+EˆÐ'Ñ(ß)ˆCÜ#&Ô&XÑBWÓ&XÓ#XÐXÐ×XØ/?˜+ c UÐ+Ó,ñ *ö Ü(+Ð,>Ó(?ˆÐ$Ñ%÷ *ˆCÜ #Ô#RÑ?QÓ#RÓ RÐRˆ}×RØ,9˜( 3 %Ð(Ó)ñ *ð €Nùò/ QùÚRs   ÂF&Â5F&ÃF+ÃF+c                ó¶  • [        U [        5      (       a  U R                  nO„[        U [        5      (       aB  U R                  c  U=(       d    [        R
                  " 5       $ U R                  R                  nO-[        U [        5      (       a  U R                  nO[        U 5        U(       a  UR                  O0 [        W5      -  n[        U5      n[         H7  nUR                  SU 35      =n	(       d  M   UR                  US5      U	-   Xx'   M9     UR                  S5      =n
(       a  SU
0US'   [        R
                  R                  [        X7S9UUSUS9$ )Nr‚  r   rx  r,  )r<  r   r»  )r¼  rÌ  Úprovider_fallbackrÇ  )r]  rÁ   r   rÌ   r  rú  rË   r   rÇ  rŒ  r  r†  rŒ   Úextract)r  r¼  rÌ  r<  Úexisting_usager‰  rÇ  Úusage_for_extractionr`  Úcompaction_valuerx  s              r‰   râ  râ  X  s?  € ô �'œ;×'Ñ'Ø Ÿ™‰Ü	�GÔ5×	6Ñ	6Ø�?‰?Ñ"ð "×9¤U×%7Ò%7Ó%9Ð9Ø Ÿ™×.Ñ.‰Ü	�GÔ5×	6Ñ	6Ø Ÿ™‰ä�WÔö *8ˆ~×%Ò%¸RÔCYÐZhÓCiÑi€Gô ,0°«=Ðß%ˆØ&Ÿ{™{¨[¸¸Ð+>Ó?Ð?Ð×?Ø(<×(@Ñ(@ÀÀaÓ(HÐK[Ñ([Ð Ó%ñ &ð
 &Ÿk™kÐ*?Ó@Ð@ÐÕ@Ø3HÐJ]Ð2^ÐÐ.Ñ/ô ×Ñ×%Ñ%Ü�5Ñ5ØØ!Ø%Øð &ð ð r8  c                ó   • U b  SU 0$ g )NrÜ  r1  )rÜ  s    r‰   rÛ  rÛ  ‰  s   € ØÑ$Ø#Ð%6Ð7Ð7Ør8  c                  óä   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   \" \R                  S9r	S\S'   SS jr
SS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)rù  i�  z:Implementation of `StreamedResponse` for Anthropic models.r¸  r¹  z]_utils.PeekableAsyncStream[BetaRawMessageStreamEvent, AsyncStream[BetaRawMessageStreamEvent]]rñ  r^  rò  ró  rô  r  rõ  )Údefault_factoryr   Ú
_timestampc               óD  #   • [        U R                  U R                  5         S n[        5       n0 nU R                    S h  v•N n[        U[        5      (       Ga#  UR                  c  M.  [        X@R                  U R                  U R                  5      U l        UR                  R                  U l        UR                  R                  (       aG  U R                  =(       d    0 U l        UR                  R                  R                  U R                  S'   UR                  R                   (       aI  U R                  =(       d    0 U l        [#        UR                  R                   5      U R                  S'   GM?  GMB  [        U[$        5      (       GaP  UR&                  n[        U[(        5      (       aN  UR*                  (       a=  U R,                  R/                  UR0                  UR*                  S9 H  nU7v •  M
     GMÇ  [        U[2        5      (       aS  U R,                  R5                  UR0                  UR6                  UR8                  U R:                  S9 H  nU7v •  M
     GM/  [        U[<        5      (       aI  U R,                  R5                  UR0                  SUR>                  U R:                  S9 H  nU7v •  M
     GM�  [        U[@        5      (       av  U R,                  RC                  UR0                  URD                  [G        [H        [J        [L        4   URN                  5      =(       d    S UR                  S9nUb  U7v •  GM  GM  [        U[P        5      (       a�  URD                  U RR                  ;  a  URU                  UR0                  5        GMe  [W        XR:                  5      nXsURX                  '   U R,                  R[                  UR0                  []        US S9S	97v •  GMº  [        U[^        5      (       a=  U R,                  R[                  UR0                  [a        XR:                  5      S	97v •  GM  [        U[b        5      (       a=  U R,                  R[                  UR0                  [e        XR:                  5      S	97v •  GM^  [        U[f        5      (       a=  U R,                  R[                  UR0                  [i        XR:                  5      S	97v •  GM°  [        U[j        5      (       a=  U R,                  R[                  UR0                  [m        XR:                  5      S	97v •  GM  [        U[n        5      (       a=  U R,                  R[                  UR0                  [q        XR:                  5      S	97v •  GMT  [        U[r        5      (       a=  U R,                  R[                  UR0                  [u        XR:                  5      S	97v •  GM¦  [        U[v        5      (       a=  U R,                  R[                  UR0                  [y        XR:                  5      S	97v •  GMø  [        U[z        5      (       a»  [}        XR:                  5      nXsURX                  '   UR                  5       nUS S
 n	U	R�                  S5      (       d   SU	< S35       eU R,                  R[                  UR0                  []        US S9S	97v •  U R,                  RC                  UR0                  U	S9nUb  U7v •  GMÅ  GMÈ  [        U[‚        5      (       aY  UR…                  UR†                  5      nU R,                  R[                  UR0                  [‰        XU R:                  5      S	97v •  GM6  [        U[Š        5      (       aZ  U R,                  R[                  UR0                  [�        URŽ                  U R:                  [‘        UR’                  5      S9S	97v •  GM¥  GM¨  [        U[”        5      (       Ga�  UR0                  U;   a  GMÑ  [        UR–                  [˜        5      (       aG  U R,                  R/                  UR0                  UR–                  R*                  S9 H  nU7v •  M
     GM7  [        UR–                  [š        5      (       aR  U R,                  R5                  UR0                  UR–                  R6                  U R:                  S9 H  nU7v •  M
     GM¨  [        UR–                  [œ        5      (       aR  U R,                  R5                  UR0                  UR–                  R8                  U R:                  S9 H  nU7v •  M
     G	M  [        UR–                  [ž        5      (       aF  U R,                  RC                  UR0                  UR–                  R                   S9nUb  U7v •  G	M{  G	M~  [        UR–                  [¢        5      (       aŒ  UR–                  RŽ                  (       an  U R,                  R[                  UR0                  [�        UR–                  RŽ                  U R:                  [‘        UR–                  R’                  5      S9S	97v •  G
M&  G
M)  [        UR–                  [¤        5      (       a  G
MK  G
MN  [        U[¦        5      (       Ga+  [        X@R                  U R                  U R                  U R                  5      U l        UR–                  R¨                  =n
(       aQ  U R                  =(       d    0 U l        X R                  S'   [ª        R…                  U
5      U lV        U
S:X  a  SOSU lW        UR–                  R°                  b¶  U R                  =(       d    0 U l        UR–                  R°                  R²                  b-  UR–                  R°                  R²                  U R                  S'   UR–                  R°                  R´                  b-  UR–                  R°                  R´                  U R                  S'   UR–                  R                  (       aG  U R                  =(       d    0 U l        UR–                  R                  R                  U R                  S'   UR                   (       a?  U R                  =(       d    0 U l        [#        UR                   5      U R                  S'   GMŒ  GM�  [        U[¶        5      (       Ga  UR0                  U;   a  UR¹                  UR0                  5        OÑ[        U[z        5      (       a-  U R,                  RC                  UR0                  SS9nUb  U7v •  O�[        U[P        5      (       az  URD                  S;   aj  U R,                  R»                  UR0                  5      n[        U[¼        5      (       a0  U R,                  R[                  UR0                  [¿        U5      S	97v •  S nGM§  [        U[À        5      (       d  GM¿  S nGMÄ   GNÀ
 S S S 5        g ! , (       d  f       g = f7f)Nr±  rw  )Úvendor_part_idrP  )r˜  rP  rÃ  r¡  rÁ  )r˜  r®  rÃ  r¡  )r˜  rÅ  rÆ  rÇ  ©rÆ  )r˜  r|  éýÿÿÿz"tool_args":z	Expected z to end in `"tool_args":`)r˜  rÆ  rÄ  )r˜  rP  r¡  )r˜  rÃ  r¡  rÈ  r}   r°  rÊ  r~   rÉ  Ú}©r-  r0  )ar  r¹  ró  r�   rñ  r]  rÌ   r  râ  rò  rô  Ú_usager®  rË  rB  r‚  rw  r©  rÉ   Úcontent_blockrÚ   r'  Ú_parts_managerÚhandle_text_deltaÚindexrß   Úhandle_thinking_deltarN  rÃ  r¡  rÏ   rØ  rð   Úhandle_tool_call_deltarˆ   r   r  r^  r   rÝ  rÖ   rõ  r€  rÐ  rÇ  Úhandle_partr   rù   rÑ  rë   rÒ  r«   rÓ  r¤   rÔ  rÝ   rÕ  rõ   rÖ  r¡   r×  r¾   rÙ  Úargs_as_json_strÚendswithr½   rŒ   rÎ  rÚ  r¯   r*   rP  rÛ  rÜ  rÈ   ÚdeltarÜ   rã   rØ   r»   Úpartial_jsonr±   r¨   rË   rÞ  r   rÈ  r²  rß  rà  rá  rÊ   ÚremoveÚget_part_by_vendor_idr6   Ú(_finalize_streamed_tool_search_call_partrÍ   )rÂ  Úcurrent_blockÚignored_server_tool_use_indicesrã  ÚeventÚevent_Úmaybe_eventræ  Ú	args_jsonÚargs_json_deltarç  rÒ  s               r‰   Ú_get_event_iteratorÚ-AnthropicStreamedResponse._get_event_iterator›  s{  é € Ü˜T×-Ñ-¨t×/GÑ/GÕHØ59ˆMÜ8;»Ð+à@BÐØ#Ÿ~š~÷ u)�eÜ˜eÔ%=×>Ò>Ø—}‘}Ñ,ñ !Ü",¨U×4GÑ4GÈ×I[ÑI[Ð]a×]mÑ]mÓ"n�D”KØ05·±×0@Ñ0@�DÔ-Ø—}‘}×.×.Ø04×0EÑ0E×0KÈ˜Ô-Ø@EÇÁ×@WÑ@W×@ZÑ@Z˜×-Ñ-¨nÑ=ð —}‘}×:×:Ø04×0EÑ0E×0KÈ˜Ô-ÜIfØ!ŸM™M×?Ñ?óJ˜×-Ñ-Ð.EÔFò ;ô   Ô'D×EÒEØ$)×$7Ñ$7�MÜ! -´×?Ñ?ÀM×DV×DVØ&*×&9Ñ&9×&KÑ&KØ+0¯;©;À×@RÑ@Rð 'Ló '˜Fð #)�Lô'ô $ MÔ3D×EÑEØ&*×&9Ñ&9×&OÑ&OØ+0¯;©;Ø$1×$:Ñ$:Ø&3×&=Ñ&=Ø*.×*<Ñ*<ð	 'Pó '˜Fð #)�Lô'ô $ MÔ3L×MÑMØ&*×&9Ñ&9×&OÑ&OØ+0¯;©;Ø2Ø&3×&8Ñ&8Ø*.×*<Ñ*<ð	 'Pó '˜Fð #)�Lô'ô $ MÔ3C×DÑDØ&*×&9Ñ&9×&PÑ&PØ+0¯;©;Ø&3×&8Ñ&8Ü!%¤d¬3´¨8¡n°m×6IÑ6IÓ!J×!RÈdØ)6×)9Ñ)9ð	 'Qð '˜ð 'Ñ2Ø"-Ö-ò 3ä# MÔ3I×JÑJØ(×-Ñ-°T×5TÑ5TÓTð
 <×?Ñ?ÀÇÁÔLÚ$Ü$>¸}×N`ÑN`Ó$a˜	ØEN¨9×+AÑ+AÑBð #×1Ñ1×=Ñ=Ø+0¯;©;Ü!(¨¸Ñ!>ð >ð ö ô $ MÔ3O×PÑPØ"×1Ñ1×=Ñ=Ø+0¯;©;Ü!BÀ=×RdÑRdÓ!eð >ð ö ô $ MÔ3P×QÑQØ"×1Ñ1×=Ñ=Ø+0¯;©;Ü!CÀM×SeÑSeÓ!fð >ð ö ô $ MÔ3S×TÑTð #×1Ñ1×=Ñ=Ø+0¯;©;Ü!FÀ}×VhÑVhÓ!ið >ð ö ô $ MÔ3W×XÑXØ"×1Ñ1×=Ñ=Ø+0¯;©;Ü!KÈM×[mÑ[mÓ!nð >ð ö ô $ MÔ3]×^Ñ^Ø"×1Ñ1×=Ñ=Ø+0¯;©;Ü!RÐS`×btÑbtÓ!uð >ð ö ô $ MÔ3N×OÑOØ"×1Ñ1×=Ñ=Ø+0¯;©;Ü!AÀ-×QcÑQcÓ!dð >ð ö ô $ MÔ3M×NÑNð #×1Ñ1×=Ñ=Ø+0¯;©;Ü!?À×OaÑOaÓ!bð >ð ö ô $ MÔ3F×GÑGÜ$=¸m×M_ÑM_Ó$`˜	ØEN¨9×+AÑ+AÑBà$-×$>Ñ$>Ó$@˜	à*3°C°R¨.˜Ø.×7Ñ7¸×GÑGð Ø'¨Ñ':Ð:SÐTóÐGð #×1Ñ1×=Ñ=Ø+0¯;©;¼WÀYÐUYÑ=Zð >ð ó ð '+×&9Ñ&9×&PÑ&PØ+0¯;©;Ø!0ð 'Qð '˜ð 'Ñ2Ø"-Ö-ò 3ä# MÔ3I×JÑJØ$6×$:Ñ$:¸=×;TÑ;TÓ$U˜	Ø"×1Ñ1×=Ñ=Ø+0¯;©;Ü!=¸mÐX\×XjÑXjÓ!kð >ð ö ô $ MÔ3F×GÑGØ"×1Ñ1×=Ñ=Ø+0¯;©;Ü!/Ø(5×(=Ñ(=Ø.2×.@Ñ.@Ü1MÈm×NmÑNmÓ1nñ"ð >ð ö ò Hô   Ô'D×EÒEØ—{‘{Ð&EÓEÚ Ü! %§+¡+¬}×=Ñ=Ø&*×&9Ñ&9×&KÑ&KØ+0¯;©;ÀÇÁ×@PÑ@Pð 'Ló '˜Fð #)�Lô'ô $ E§K¡KÔ1B×CÑCØ&*×&9Ñ&9×&OÑ&OØ+0¯;©;Ø$)§K¡K×$8Ñ$8Ø*.×*<Ñ*<ð 'Pó '˜Fð
 #)�Lô'ô $ E§K¡KÔ1C×DÑDØ&*×&9Ñ&9×&OÑ&OØ+0¯;©;Ø&+§k¡k×&;Ñ&;Ø*.×*<Ñ*<ð 'Pó '˜Fð
 #)�Lô'ô $ E§K¡KÔ1C×DÑDØ&*×&9Ñ&9×&PÑ&PØ+0¯;©;Ø!&§¡×!9Ñ!9ð 'Qð '˜ð 'Ñ2Ø"-Ö-ò 3ä# E§K¡KÔ1P×QÑQØ Ÿ;™;×.×.à"&×"5Ñ"5×"AÑ"AØ/4¯{©{Ü%3Ø,1¯K©K×,?Ñ,?Ø26×2DÑ2DÜ5QÐRW×R]ÑR]×RoÑRoÓ5pñ&"ð #Bð #ö ò /ô $ E§K¡KÔ1C×DÑDÚò Eô   Ô'?×@Ò@Ü",Ø×2Ñ2°D×4FÑ4FÈ×HXÑHXÐZ^×ZeÑZeó#�D”Kð -2¯K©K×,CÑ,CÐCÐ(ÕCØ04×0EÑ0E×0KÈ˜Ô-ØAR×-Ñ-¨oÑ>Ü-?×-CÑ-CÐDUÓ-V˜Ô*Ø4EÈÓ4U¡[Ð[e˜œ
Ø—{‘{×/Ñ/Ñ;Ø04×0EÑ0E×0KÈ˜Ô-Ø Ÿ;™;×3Ñ3×?Ñ?ÑKØ?D¿{¹{×?WÑ?W×?cÑ?c˜D×1Ñ1°)Ñ<Ø Ÿ;™;×3Ñ3×<Ñ<ÑHØHMÏÉ×H`ÑH`×HiÑHi˜D×1Ñ1Ð2DÑEØ—{‘{×,×,Ø04×0EÑ0E×0KÈ˜Ô-Ø@EÇÁ×@UÑ@U×@XÑ@X˜×-Ñ-¨nÑ=Ø×2×2ð 15×0EÑ0E×0KÈ˜Ô-ÜIfØ!×7Ñ7óJ˜×-Ñ-Ð.EÔFò 3ô   Ô'C×DÒDØ—{‘{Ð&EÓEØ7×>Ñ>¸u¿{¹{ÕKÜ# MÔ3F×GÑGØ&*×&9Ñ&9×&PÑ&PØ+0¯;©;Ø!$ð 'Qð '˜ð 'Ñ2Ø"-Ó-øÜ# MÔ3I×JÑJÈ}×OaÑOað fó Pð $(×#6Ñ#6×#LÑ#LÈUÏ[É[Ó#Y˜Ü% hÔ0H×IÑIØ"&×"5Ñ"5×"AÑ"AØ/4¯{©{Ü%MÈhÓ%Wð #Bð #ó ð %)“MÜ Ô'>×?Ô?Ø$(“Mòku)˜~÷ I×HÖHüsF   ‚!x £x¾xÁxÁxÁv2x÷=xøxøxø	x ø
xøx c              ƒ  óh   #   • U R                   R                  R                  5       I S h  v•N   g  N7fr\  )rñ  rf  ÚcloserÇ  s    r‰   Úclose_streamÚ&AnthropicStreamedResponse.close_stream˜  s!   é € Ø�n‰n×#Ñ#×)Ñ)Ó+×+Ó+ùs   ‚(2ª0«2c                ó   • U R                   $ )z#Get the model name of the response.rÍ  rÇ  s    r‰   r  Ú$AnthropicStreamedResponse.model_name›  rÏ  r8  c                ó   • U R                   $ )zGet the provider name.)rò  rÇ  s    r‰   r¡  Ú'AnthropicStreamedResponse.provider_name   s   € ð ×"Ñ"Ð"r8  c                ó   • U R                   $ )zGet the provider base URL.)rô  rÇ  s    r‰   rÌ  Ú&AnthropicStreamedResponse.provider_url¥  s   € ð ×!Ñ!Ð!r8  c                ó   • U R                   $ )z"Get the timestamp of the response.)r–  rÇ  s    r‰   Ú	timestampÚ#AnthropicStreamedResponse.timestampª  s   € ð �‰Ðr8  )r�  rÈ  r‚  rË  r²  N)rV  z'AsyncIterator[ModelResponseStreamEvent])rV  rJ  rG  rF  )rV  r   )r2  r3  r4  r5  r6  rK  r   r   Únow_utcr–  r³  r·  rV  r  r¡  rÌ  rÀ  r7  r1  r8  r‰   rù  rù  �  s˜   ‡ áDà#Ó#ØlÓlØÓØÓØÓØ .Ó.Ù °·±Ñ@€J�Ó@ô{)ôz,ð ó ó ð ð ó#ó ð#ð ó"ó ð"ð óó ór8  rù  c                óÆ   • U(       d  g[        U [        5      (       d  gU R                   Vs/ s H  nUS   U;   d  M  [        US   SS9PM     nnX@R                  4$ s  snf )u8  Tool-search replay payload for the Anthropic `tool_result` block.

Reads the typed [`ToolSearchReturnContent`][pydantic_ai.messages.ToolSearchReturnContent]
off `part.content` (the local `search_tools` return shape) and unpacks it into:

* `tool_references`: matched tools, ready to be wrapped in `BetaToolReferenceBlockParam`s.
* `empty_message`: fallback text to send when no matches were found (Anthropic
  rejects an empty `tool_result` content list).

Returns `(None, None)` when the current request withholds no tool schemas â€” nothing for a
reference to unhide â€” or when this isn't a typed `search_tools` return; the caller then falls
through to the default text-formatting path. Fires for any active tool-search strategy (default
native, named native, or custom callable), so cross-provider history (e.g. a prior local turn on
Google) gets re-shaped into Anthropic's "client-side" tool_search wire when the current turn runs
on Anthropic. Both flavors live in one helper because the wire shape is the same: `tool_use` +
`tool_result` with `tool_reference` content blocks.

`declared_tool_names` filters the references against the tools currently in
`function_tools` on the wire â€” Anthropic rejects `tool_reference` entries for
tools not in the request's `tools` list (e.g. an MCP server that failed to
register this turn).
rë  rˆ   r^  ©rÅ  r  )r]  rA   Údiscovered_toolsrè   r  )r·  r©  r«  ÚmatchÚrefss        r‰   rŽ  rŽ  °  sv   € ö2 !ØÜ�lÔ$8×9Ñ9Øð "×2Ò2óâ2ˆEØ�‰=Ð/Ñ/ó 	TÔ#¨e°F©mÐBRÔSÙ2ð 	ð ð
 ×%Ñ%Ð%Ð%ùòs
   ­A¾Ac                ó  • U R                   =(       d    0 nUR                  S5      b  [        SUS   S9nO<U R                   Vs/ s H  nUS   U;   d  M  [	        US   SS9PM     nn[        SUS9n[        US	US
9$ s  snf )uû  Reconstruct an Anthropic tool-search result block for history replay.

Reads the cross-provider
[`ToolSearchReturnContent`][pydantic_ai.messages.ToolSearchReturnContent] off
`content` and any error fields the parse-time mapper stashed on `provider_details`.

`declared_tool_names` filters references against the tools currently in
`function_tools` on the wire â€” Anthropic rejects `tool_reference` entries for
tools not in the request's `tools` list (e.g. an MCP server that failed to
register this turn).
Ú
error_codeÚtool_search_tool_result_error)r  rÉ  rˆ   r^  rÄ  Útool_search_tool_search_result)r  Útool_referencesÚtool_search_tool_resultr{  )r‚  rŒ   rí   rÅ  rè   rî   rì   )rÂ  rÎ  r«  ÚerrÚinnerrÆ  Ú	tool_refss          r‰   r   r   Õ  s®   € ð ×
(Ñ
(×
.¨B€Cà
‡w�wˆ|ÓÑ(ô 3Ø0Ø˜<Ñ(ñ
‰ð '×7Ò7ó
â7�Ø�V‰}Ð 3Ñ3ó XÔ'°%¸±-ÐFVÔWÙ7ð 	ð 
ô
 9Ø1Ø%ñ
ˆô .ØØ&Øñð ùò
s   ÁA=ÁA=©r  r  r  zdict[str, str]Ú*_BUILTIN_TOOL_KIND_BY_SERVER_TOOL_USE_NAMEc                ó   • [         U 0$ r\  )Ú*_ANTHROPIC_CODE_EXECUTION_TOOL_NAME_DETAIL)rÅ  s    r‰   Ú/_anthropic_code_execution_tool_provider_detailsrÕ    s   € ô 7¸	ÐBÐBr8  c                óV   • U b  U R                   S:X  a  0 $ [        U R                  SS90$ )NÚdirectÚjsonr   )r  Ú$_ANTHROPIC_SERVER_TOOL_CALLER_DETAILr¡  )Úcallers    r‰   Ú"_anthropic_caller_provider_detailsrÛ    s2   € ð �~˜Ÿ™¨Ó0Øˆ	Ü0°&×2CÑ2CÈÐ2CÐ2PÐQÐQr8  c                óž   • UR                   c  g UR                   R                  [        5      n[        R                  " U5      (       d  g X S'   g )NrÚ  )r‚  rŒ   rÙ  r   r#   )rR  r|  rÚ  s      r‰   rš  rš    sG   € ð ×ÑÑ$Øà×"Ñ"×&Ñ&Ô'KÓL€FÜ×Ò˜f×%Ñ%Øð
 ˆ(‚Or8  c                ó*  • U R                   (       a@  U R                   R                  [        5      n[        U[        5      (       a  U[
        ;   a  U$ U R                  S;   a  [        [        U R                  5      $ [        U [        5      (       aƒ  [        R                  " U R                  5      (       a^  U R                  R                  S5      n[        U[        5      (       a.  UR                  S5      (       a  gUR                  S5      (       a  gg)Nr#  r  r   r!  r  )r‚  rŒ   rÔ  r]  r^  r%  rÅ  r   r"  r5   r   r#   rP  r“  )r|  rÅ  Úcontent_types      r‰   r›  r›  '  sÎ   € ð ××Ø×)Ñ)×-Ñ-Ô.XÓYˆ	Ü�i¤×%Ñ%¨)Ô7[Ó*[ØÐà‡~�~ÐNÓNÜÔ3°T·^±^ÓDÐDä�$Ô,×-Ñ-´&×2DÒ2DÀTÇ\Á\×2RÑ2RØ—|‘|×'Ñ'¨Ó/ˆÜ�l¤C×(Ñ(Ø×&Ñ&Ð'<×=Ñ=Ø,Ø×(Ñ(Ð)E×FÑFØ3àr8  c                ó^   • U =S:X  a    [        SSS9$ S:X  a
  [        SSS9$  [        U 5        g )Nrÿ  r  Úcode_execution_20250825r*  Ú20260120Úcode_execution_20260120)r©   rª   r   )r  s    r‰   r6  r6  =  s4   € Ø
ÞÜ5Ð;KÐRkÑlÐlÜÜ5Ð;KÐRkÑlÐlØÜ˜Õ!r8  c                óè   • [        SSU R                  S9nU R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  [        SU R                  S9US'   U$ )	NÚadvisor_20260301rq  )r  rˆ   r<  r  ry   rç  rè  Úcaching)r    r<  r  ry   rå  r¦   )r�   rþ  s     r‰   r9  r9  G  so   € Ü(Ð.@ÀyÐX\×XbÑXbÑc€EØ‡}�}Ñ Ø ŸM™MˆˆjÑØ‡�Ñ"Ø"Ÿo™oˆˆlÑØ‡|�|ÑÜ9¸{ÐPT×P\ÑP\Ñ]ˆˆiÑØ€Lr8  c           
     ó4  • [        [        [        [        4   U R                  5      =(       d    S nU R
                  S;   ab  [        U R
                     n[        UUUU R                  [        U R                  5      =(       d    S S9nU R
                  S:X  a
  SSS.Ul        U$ U R
                  S;   aV  [        X R
                  5      nSU R
                  S	:X  a  S
OS0[        U R                  5      En[        UUU R                  US9$ U R
                  S:X  aE  [        U[        R                  UU R                  0 [!        S5      E[        U R                  5      ES9$ U R
                  S:X  aE  [        U[        R                  UU R                  0 [!        S5      E[        U R                  5      ES9$ U R
                  S:X  aA  [        U["        R                  UU R                  [        U R                  5      =(       d    S S9$ [%        U R
                  5        g )NrÑ  )r¡  rÅ  rÆ  rÇ  r‚  r  ÚcodeÚpython)Úcode_arg_nameÚcode_arg_languagerœ  r  r-  r  r  )r¡  rÆ  rÇ  r‚  r   r!  rq  )r   r  r^  r   rÝ  rˆ   rÒ  r4   r®  rÛ  rÚ  Úotel_metadataÚ_normalize_tool_search_argsr6   rI   r™  rÕ  rH   r   )r£  r¡  rw  r™  r|  Únormalized_argsr‚  s          r‰   rÐ  rÐ  R  sï  € Ü”Tœ#œs˜(‘^ T§Z¡ZÓ0×8°D€IØ‡y�yÐAÓAÜ9¸$¿)¹)ÑDˆÜ!Ø'ØØØŸ™Ü?ÀÇÁÓL×TÐPTñ
ˆð �9‰9Ð(Ó(Ø39ÐPXÑ!YˆDÔØˆØ‡y�yÐGÓGô
 6°iÇÁÓKˆà 4§9¡9Ð0HÓ#H™Èfð,
ä0°·±Ó=ð,
Ðô (Ø'Ø ØŸ™Ø-ñ	
ð 	
ð ‡y�yÐ)Ó)Ü!Ø'Ü'×,Ñ,ØØŸ™ðÜAÐBWÓXðä4°T·[±[ÓAðñ	
ð 		
ð ‡y�yÐ0Ó0Ü!Ø'Ü'×,Ñ,ØØŸ™ðÜAÐB^Ó_ðä4°T·[±[ÓAðñ	
ð 		
ð ‡y�y�IÓô "Ø'Ü!×&Ñ&ØØŸ™Ü?ÀÇÁÓL×TÐPTñ
ð 	
ô �—‘Õr8  r  c                ó¬   • U (       d  [        S5      e[        [        [        [        4   U S   5      nUS   [
        ;  a  [        SUS    35      eXS'   g)z¨Attach an already-built `cache_control` to the last content block param.

See https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching for more information.
a  CachePoint cannot be the first content in a user message - there must be previous content to attach the CachePoint to. To cache system instructions or tool definitions, use the `anthropic_cache_instructions` or `anthropic_cache_tool_definitions` settings instead.r¯  r  z,Cache control not supported for param type: r@  N)r&   r   r  r^  r   rü  )rý  r@  Ú
last_params      r‰   r  r  ž  sd   € ö Üð_ó
ð 	
ô ”dœ3¤˜8‘n f¨R¡jÓ1€JØ�&ÑÔ!AÓAÜÐFÀzÐRXÑGYÐFZÐ[Ó\Ð\à"/ˆÒr8  c                óV   • U (       d  / $ U S   S   n[        U[        5      (       a  U$ / $ )aj  The content blocks of the last rendered message, or an empty list if there's nothing to attach to.

Only used to give a leading `CachePoint` somewhere to land. A `str` content body can't carry
`cache_control`, and neither can a conversation that hasn't rendered a message yet, so both return
empty and let the caller raise the error that explains the situation.
r¯  rP  )r]  rƒ  )rJ  rP  s     r‰   r�  r�  ´  s4   € ö Øˆ	Ø  Ñ$ YÑ/€Gô ! ¬$×/Ñ/ˆ7Ð7°RÐ7r8  c                óæ  • [        5       nU  H“  nUS   n[        U[        5      (       d   eU Hn  n[        U[        5      (       a  UR	                  UR
                  5        M5  [        U5      (       d  MG  UR                  S5      =nc  M]  UR	                  U5        Mp     M•     Sn[        [        U 5      S-
  SS5       GH©  nX   nUS   n[        U[        5      (       d   e/ nU GH1  nUn	[        U[        5      (       d  [        U5      (       d  UR                  U	5        M>  US   S;   =(       a    US	   U;  n
UR                  S
5      S;   nU
(       a°  U(       a  U(       a¢  UR                  S5      =nb‹  / nU SU  Vs/ s H  oîS   PM	     snU/-    HW  n[        U[        5      (       d   eU H7  nUn[        U5      (       d  M  US   [        ;   d  M&  UR                  U5        M9     MY     U(       a  [        XÜ5        GM   UR                  U	5        GM4     [        U5      [        U5      :w  a  U(       d  X	 GM‚  X‚S'   U=(       a    US   S:H  =(       a    [        U5      nGM¬     gs  snf )a¤  Drop native tool calls that Anthropic will reject without a rendered result.

A result can arrive in a later response, or exist as a `NativeToolReturnPart` but fail to render.
Anthropic accepts an unpaired native call only while every later message is a user turn containing
only concurrent client-tool results. That shape is `_is_tool_result_only`, shared with the
`container_upload` injection so the two cannot drift.
rP  rÎ  NTrd   r¯  r  )r,  rx  r®  rˆ   )r0  r-  r@  rm  rk  )r�   r]  rƒ  r½   r€  rÎ  r#   rŒ   ÚrangerJ  rÏ  rü  r  r¤  )rJ  Úreturned_native_tool_call_idsr  rP  rR  rÎ  Úsuffix_is_tool_result_onlyr¡  ÚkeptÚblock_paramÚunpairedÚtool_searchr@  ÚcarriersÚpreceding_messageÚpreceding_contentrþ  Úparam_values                     r‰   r¡  r¡  Ã  s`  € ô /2«eÐ!Û%ˆØ˜)Ñ$ˆÜ˜'¤4×(Ñ(Ð(Ð(ÛˆEÜ˜%Ô!7×8Ñ8Ø-×1Ñ1°%×2CÑ2CÖDÜ˜U×#Ó#¸¿	¹	À-Ó8PÐ)P¨Ó(]Ø-×1Ñ1°+Ö>ó	 ñ &ð "&ÐÜ”sÐ-Ó.°Ñ2°B¸×;ˆØ$Ñ+ˆØ˜)Ñ$ˆÜ˜'¤4×(Ñ(Ð(Ð(Ø,.ˆÜˆEàˆKÜ˜%Ô!7×8Ñ8ÄÈE×@RÑ@RØ—‘˜KÔ(Ùð �f‘Ð!DÑD÷ EØ˜$‘KÐ'DÑDð ð  Ÿ)™) FÓ+Ð/bÑbˆKÞÖ!;¾{ð &+§Y¡Y¨Ó%?Ð?�MÑLØ<>�HàN`ÐagÐbgÑNhó.ÚNhÐ9J¨)Ô4ÑNhñ.à˜ô.Ð)ô  *Ð*;¼T×BÑBÐBÐBÛ%6˜Eà*/˜KÜ*¨5×1Ó1°e¸F±mÔGgÕ6gØ (§¡°Ö <ó	 &7ñ	.ö  Ü0°ÔIÚØ�K‰K˜×$ñA ôD ˆt‹9œ˜G›Ó$Þð 'Ð-ÚØ!%�IÑð '×c¨7°6©?¸fÑ+D×cÔI]Ð^bÓIcó 	#ò_ <ùò2.s   ÆI.c                óØ   • [        [        U 5      S-
  SS5       HM  nX   S   S:w  a  M  US:”  a  XS-
     S   S;   a  M&  U R                  U[        S[	        [
        SS	9/S
95        MO     g)u³  Give each `system` section a user turn to follow, if it doesn't already have one.

This runs *after* `_place_system_messages_before_generation`, on final positions, because an
entry's predecessor isn't known until the slide has finished with it. Anchoring while mapping
instead put the anchor between an assistant `tool_use` and the `tool_result` that answers it,
whenever the two were separated by a system-only request: the slide then moved the entry past the
result and left the anchor stranded, and the API rejects that with `tool_use ids were found
without tool_result blocks immediately after`. Deciding here, the same history needs no anchor at
all â€” the entry lands behind the tool result, which is a user turn.

Walking in reverse keeps the untouched indexes valid. A `system` entry behind another only has to
satisfy the rule as a section, so it defers to the entry ahead of it. An assistant turn ending in
a server tool result is a legal predecessor too, but it gets an anchor anyway rather than a live
verification we can't cheaply record: the cost is one wasted turn in a shape that needs a response
truncated right after a server tool call, and the alternative is an unproven exception.
rd   r¯  rm  rÕ  r   )rk  rÕ  rk  r'  r`  rl  N)rò  rJ  ÚinsertrÃ   rÛ   Ú_USER_ANCHOR_TEXT)rJ  r¡  s     r‰   r£  r£  
  s|   € ô" ”sÐ-Ó.°Ñ2°B¸Ö;ˆØÑ$ VÑ,°Ó8ÙØ�1‹9Ð+°A©IÑ6°vÑ>ÐBTÓTÙØ×!Ñ!ØÔ#¨Ô:LÔRcÐjpÑ:qÐ9rÑsö	
ò <r8  c                óP  • [        [        U 5      S-
  SS5       H‰  nX   S   S:w  a  M  US-   nU[        U 5      :  a,  X   S   S:X  a!  US-  nU[        U 5      :  a  X   S   S:X  a  M!  X!S-   :X  a  MZ  [        X5        U R                  US-
  U R	                  U5      5        M‹     g)uö  Move each `system` entry to just before the assistant turn it governs.

A `{'role': 'system'}` entry is accepted only immediately before an assistant turn or at the end
of the array. An entry that a *user* turn ended up behind is therefore illegal where it stands â€”
which can't be decided while mapping, because a `ModelResponse` whose parts all drop out (an
empty `TextPart`, an orphan tool-search call) renders to nothing, so reading ahead in the message
list calls placements legal that the wire rejects.

Sliding it forward past those user turns rather than degrading it keeps it an operator
instruction. It costs nothing semantically: an instruction only ever governs the generation that
follows it, and that's the same assistant turn either way â€” the entry just stops matching the
position it was authored at. This is the same trade the mapping loop makes inside a single
request, where `[user, system, user]` parts render as `user, user, system`.

Only *user* turns are hopped over, so an earlier instruction stops behind a later one instead of
overtaking it and inverting the order they were given in. A `system` entry directly after another
is a placement the API accepts â€” the group as a whole still precedes the generation.

Walking in reverse keeps the indexes still to be visited valid, since moving an entry later never
disturbs anything before it. The mapping loop is the only thing that emits the `system` role, so
scanning for it finds exactly the entries it wrote, with no bookkeeping to keep in step.
rd   r¯  rm  rÕ  rk  N)rò  rJ  Ú_leave_cache_boundary_behindrþ  r"  )rJ  r¡  Útargets      r‰   r¢  r¢  %  s½   € ô. ”sÐ-Ó.°Ñ2°B¸Ö;ˆØÑ$ VÑ,°Ó8ÙØ˜‘ˆØ”sÐ-Ó.Ó.Ð3EÑ3MÈfÑ3UÐY_Ó3_Ø�a‰KˆFð ”sÐ-Ó.Ó.Ð3EÑ3MÈfÑ3UÐY_Õ3_à˜Q‘YÓÙÜ$Ð%7Ô?Ø×!Ñ! &¨1¡*Ð.@×.DÑ.DÀUÓ.KÖLò <r8  c                óÚ   • X   S   n[        U[        5      (       d  g[        [        [        [
        4   US   5      nUR                  SS5      =nc  g[        [        U SU 5      U5        g)u%  Keep a sliding `system` entry's cache boundary at the position it was authored at.

A `CachePoint` that ends a request lands on the entry's final block, because the entry renders
after the request's user blocks even though the instruction was authored before them. Carrying it
along on the slide would drag the boundary over the turns the entry hops and cache content nobody
marked, so the boundary stays and the entry travels without it. What that costs is the instruction
itself, which is the one thing that can't be both inside the boundary and after the turns it now
follows; the cached prefix stays a prefix of what was authored before the marker.

The block it moves to is the end of the message the entry currently sits behind â€” which the entry
is about to stop sitting behind â€” so an unmoved entry never reaches here and never loses its
boundary. `_add_cache_control_param` raises if that block can't carry one, or if there's nothing
behind the entry at all, which is the same `CachePoint` with nothing to attach to that the mapping
loop raises on.
rP  Nr¯  r@  )	r]  rƒ  r   r  r^  r   r"  r  r�  )rJ  r¡  rP  Ú
last_blockr@  s        r‰   r  r  H  sk   € ð  !Ñ'¨	Ñ2€GÜ�gœt×$Ñ$ØÜ”dœ3¤˜8‘n g¨b¡kÓ2€JØ#Ÿ™¨¸Ó>Ð>ˆÑGØÜÔ2Ð3EÀfÀuÐ3MÓNÐP]Õ^r8  c                óˆ   • US:X  a  SOSnU =(       d    0 R                  US5      n[        U[        5      (       a  U/O/ nSU0$ )aÃ  Normalize an Anthropic `tool_search_tool_*.input` payload into `ToolSearchArgs`.

Wire keys differ by variant: bm25 emits `{"query": "..."}`, regex emits
`{"pattern": "..."}`. Both map to the cross-provider canonical
`{"queries": [...]}` shape. Used by both the non-streaming `_process_response` path
(which has the full input at once) and the streaming finalizer (which has only
accumulated JSON-string deltas to reparse at content_block_stop time).
r-  rs  rt  rÂ  rr  )rŒ   r]  r^  )rw  rÅ  rÌ  rŸ  rr  s        r‰   rì  rì  a  sI   € ð &Ð)AÓA‰yÀw€HØ�?˜×
Ñ
 ¨"Ó
-€CÜ! #¤s×+Ñ+ˆs‰e°€GØ�wÐÐr8  c                ó¦  • [        U R                  [        5      (       a  U $ [        U R                  [        5      (       a=   [	        [        [        [
        4   [        R                  " U R                  5      5      nOSnU R                  =(       d    0 R                  S5      nUS:X  a  SOSn[        U [        X5      S9$ ! [         a    Sn NOf = f)aU  Finalize a streamed tool-search call's args.

Converts a `NativeToolSearchCallPart` whose `args` accumulated as a JSON string
(via `BetaInputJSONDelta`) into the canonical dict shape produced by the
non-streaming path. Already-canonical dict args (typed `ToolSearchArgs`) pass
through unchanged; `None` finalizes to an empty `queries` list.
Nr  r  r-  r0  r™  )r]  rÆ  r  r^  r   r   r¥  Ú	from_jsonrñ  r‚  rŒ   r   rì  )r|  Úparsedr  rÅ  s       r‰   r«  r«  p  s³   € ô �$—)‘)œT×"Ñ"ØˆÜ�$—)‘)œS×!Ñ!ð	Ü,0´´c¼3°h±Ä×AXÒAXÐY]×YbÑYbÓAcÓ,d‰Fð
 ˆð ×%Ñ%×+¨×0Ñ0°Ó<€HØ,4¸Ó,?Ñ(ÐE\€IÜ�4Ô9¸&ÓLÑMÐMøô ó 	àŠFð	ús   Á;C ÃCÃCc                ó   • U R                   nSn/ nUR                  S:X  a)  UR                   Vs/ s H  nSUR                  0PM     nnOUR                  UR
                  S.n[        USU0U R                  US9$ s  snf )a�  Map a tool-search result block into a typed [`NativeToolSearchReturnPart`][pydantic_ai.messages.NativeToolSearchReturnPart].

Writes a cross-provider [`ToolSearchReturnContent`][pydantic_ai.messages.ToolSearchReturnContent] to `content` (no
provider-shape smuggling) and stashes the Anthropic-specific error fields on
`provider_details` so we can faithfully reconstruct the original block on replay.
NrË  rˆ   )rÉ  Úerror_messagerÅ  )r¡  rP  rÇ  r‚  )rP  r  rÌ  rÅ  rÉ  r
  r7   rÎ  )r£  r¡  rR  r‚  ÚmatchesÚrefs         r‰   rÒ  rÒ  Š  s�   € ð �L‰L€EØ.2ÐØ%'€GØ‡z�zÐ5Ó5Ø6;×6KÒ6KÓLÒ6K¨s�F˜CŸM™MÓ*Ñ6KˆÐLˆà*/×*:Ñ*:ÈU×M`ÑM`ÑaÐÜ%Ø#Ø# WÐ-Ø×%Ñ%Ø)ñ	ð ùò Ms   ¯A;z0TypeAdapter[BetaWebSearchToolResultBlockContent]Ú!web_search_tool_result_content_tac           	     ó¼   • [        U[        R                  [        R	                  U R
                  SS9U R                  [        U R                  5      =(       d    S S9$ ©NrØ  r   ©r¡  rÅ  rP  rÇ  r‚  )	r5   rM   r™  r  Údump_pythonrP  rÎ  rÛ  rÚ  ©r£  r¡  s     r‰   rÑ  rÑ  §  sM   € ÜØ#Ü×$Ñ$Ü1×=Ñ=¸d¿l¹lÐQWÐ=ÐXØ×%Ñ%Ü;¸D¿K¹KÓH×PÈDñð r8  z4TypeAdapter[BetaCodeExecutionToolResultBlockContent]Ú%code_execution_tool_result_content_tac           	     ó‚   • [        U[        R                  [        R	                  U R
                  SS9U R                  S9$ ©NrØ  r   ©r¡  rÅ  rP  rÇ  )r5   rI   r™  r  r  rP  rÎ  r  s     r‰   rÓ  rÓ  ¶  s>   € ô  Ø#Ü#×(Ñ(Ü5×AÑAÀ$Ç,Á,ÐU[ÐAÐ\Ø×%Ñ%ñ	ð r8  z4TypeAdapter[BashCodeExecutionToolResultBlockContent]Ú*bash_code_execution_tool_result_content_tac           	     ó–   • [        U[        R                  [        R	                  U R
                  SS9U R                  [        S5      S9$ )NrØ  r   r   r  )r5   rI   r™  r  r  rP  rÎ  rÕ  r  s     r‰   rÔ  rÔ  Æ  sG   € ô  Ø#Ü#×(Ñ(Ü:×FÑFÀtÇ|Á|ÐZ`ÐFÐaØ×%Ñ%ÜHÐI^Ó_ñð r8  z:TypeAdapter[TextEditorCodeExecutionToolResultBlockContent]Ú1text_editor_code_execution_tool_result_content_tac           	     ó–   • [        U[        R                  [        R	                  U R
                  SS9U R                  [        S5      S9$ )NrØ  r   r!  r  )r5   rI   r™  r  r  rP  rÎ  rÕ  r  s     r‰   rÕ  rÕ  ×  sG   € ô  Ø#Ü#×(Ñ(ÜA×MÑMÈdÏlÉlÐagÐMÐhØ×%Ñ%ÜHÐIeÓfñð r8  c           	     ó²   • [        U[        R                  U R                  R	                  SS9U R
                  [        U R                  5      =(       d    S S9$ r  )r5   rL   r™  rP  r¡  rÎ  rÛ  rÚ  r  s     r‰   rÖ  rÖ  ã  sJ   € ÜØ#Ü×#Ñ#à—‘×'Ñ'¨VÐ'Ð4Ø×%Ñ%Ü;¸D¿K¹KÓH×PÈDñð r8  z*TypeAdapter[AdvisorToolResultBlockContent]Úadvisor_tool_result_content_tac           	     ó‚   • [        U[        R                  [        R	                  U R
                  SS9U R                  S9$ r  )r5   rH   r™  r  r  rP  rÎ  r  s     r‰   r×  r×  ñ  s=   € ô  Ø#Ü×"Ñ"Ü.×:Ñ:¸4¿<¹<ÈfÐ:ÐUØ×%Ñ%ñ	ð r8  c                óæ   • [        USR                  [        R                  U R                  /5      SU R
                  [        [        [        [        4   U R                  5      S.U R                  S9$ )Nrv  Ú	call_tool)ÚactionrÅ  rw  )r¡  rÅ  rÆ  rÇ  )r4   r  rJ   r™  ry  rˆ   r   r  r^  r   rÝ  r®  r  s     r‰   rÙ  rÙ  ý  s]   € ÜØ#Ø—(‘(œM×.Ñ.°×0@Ñ0@ÐAÓBà!ØŸ™Üœd¤3¬ 8™n¨d¯j©jÓ9ñ
ð
 —W‘Wñ	ð 	r8  c           	     ó�   • [        UU(       a  UR                  O[        R                  U R	                  SSS1S9U R
                  S9$ )NrØ  rP  r_  )ræ  Úincluder  )r5   rÅ  rJ   r™  r¡  rÎ  )r£  ræ  r¡  s      r‰   rÚ  rÚ  
  sE   € ô  Ø#Þ)2�)×%Ò%¼×8JÑ8JØ—‘ V°iÀÐ5L�ÐMØ×%Ñ%ñ	ð r8  c               ól   • U (       a  U R                  S5      nUS;   a  U$ S$ U(       a  U(       a  S$ S$ g)uÓ  Resolve the effective Anthropic thinking type for the output-tool and tool-forcing guards.

Extended thinking (`{'type': 'enabled'}`) is incompatible with forced tool use and Tool Output;
adaptive thinking is compatible with both. Unified thinking maps to `adaptive` when the profile
advertises it and to `enabled` otherwise â€” the same mapping `_translate_thinking` uses to build
the wire payload. Returns `'enabled'`, `'adaptive'`, or `None` when thinking is off.
r  )r  r  Nr  r  r3  )r<  Úunified_thinkingr  r  s       r‰   r  r    s=   € ö Ø*×.Ñ.¨vÓ6ˆØ -Ð1HÓ Hˆ}ÐRÈdÐRÞÞ7ˆzÐF¸YÐFØr8  TrC  c               óŒ  • [        U R                  S5      UR                  =(       d    U R                  S5      US9nU(       a  US:w  a  gU R                  S5      nUS:X  d  [        U[        5      (       a2  U(       d  [        SU S	35      eU(       a  S
OSn[        SU SU 35      eUS:X  d  [        U[        5      (       a  gg)aõ  A forced `tool_choice` ('required'/specific tool) isn't always compatible with Anthropic.

Extended thinking rejects forcing (adaptive thinking does not), and some models
(Claude Fable 5.1, Claude Mythos 5.1) reject it unconditionally.
We only raise an error if the user explicitly set a forcing value; a forcing value that came
from the `tool_choice` resolution logic falls back softly to 'auto'.
Ref: https://platform.claude.com/docs/en/agents-and-tools/tool-use/implement-tool-use#forcing-tool-use
r<  rN  r  r  Tr=  rB  zAnthropic does not support z* for this model. Use `tool_choice='auto'`.zK Alternatively, `anthropic_thinking={'type': 'adaptive'}` supports forcing.rÂ  zF with extended thinking. Disable thinking or use `tool_choice='auto'`.F)r  rŒ   rN  r]  rƒ  r&   rI  )	rQ  r‡   rO  r  r  r  r  Úexplicit_choiceÚadaptive_hints	            r‰   rH  rH  *  sÛ   € ô& -Ø×ÑÐ/Ó0Ø ×)Ñ)×K¨^×-?Ñ-?À
Ó-KØ#=ñ€Mö # }¸	Ó'AØà$×(Ñ(¨Ó7€OØ˜*Ó$¬
°?ÄD×(IÑ(IÞ*ÜÐ9¸'¸ÐBlÐmÓnÐnö *ñ Zàð 	ô
 Ø)¨'¨ð 3<Ø<I¸?ðLó
ð 	
ð
 ˜zÓ)¬ZÐ8LÌe×-TÑ-TØàr8  )r†   rH  r‡   rf   rV  ú	list[str])rŽ   rN  r�   r(  rV  rJ  )r»  )r  r^  r  r^  rV  zGenerator[None]r\  )rQ  r:  rR  rU  rV  zobject | None)rQ  r:  rV  rU  )rT  r…  rV  zTypeGuard[Mapping[str, object]])rQ  r:  rN  rS  rV  rM  )rm  rR   rN  rM  r
  r—   rV  rF  )rN  rM  rV  zdict[str, object])r†   rH  rt  úModelResponse | Noneru  rF  rV  rF  )r†   rH  rV  rJ  )rm  rY   r†   rH  rN  rS  r”  rM  r•  rT  rt  r)  ru  rF  rV  zctuple[BetaThinkingConfigParam | Omit, set[str], dict[str, object] | None, dict[str, object] | Omit])r  r^  rV  rJ  )r‡  z,list[BetaThinkingDroppedInputTransformation]rV  zlist[dict[str, Any]])rQ  r:  rV  z'Literal['auto', 'standard_only'] | Omit)r‰  z!BetaUsage | BetaMessageDeltaUsagerV  zdict[str, int])r  zABetaMessage | BetaRawMessageStartEvent | BetaRawMessageDeltaEventr¼  r^  rÌ  r^  r<  r^  r�  zusage.RequestUsage | NonerV  rI  )rÜ  rr  rV  údict[str, Any] | None)r·  r@   r©  rF  r«  rT  rV  z;tuple[list[BetaToolReferenceBlockParam] | None, str | None])rÂ  r7   rÎ  r^  r«  rT  rV  rì   )rÅ  r$  rV  z8dict[str, _AnthropicCodeExecutionProviderDetailToolName])rÚ  zMBetaDirectCaller | BetaServerToolCaller | BetaServerToolCaller20260120 | NonerV  r�  )rR  zbBetaServerToolUseBlockParam | BetaWebSearchToolResultBlockParam | BetaWebFetchToolResultBlockParamr|  ú)NativeToolCallPart | NativeToolReturnPartrV  rJ  )r|  r+  rV  r"  )r  rW   rV  rï   )r�   rH   rV  r    )r£  rÖ   r¡  r^  rV  r4   )rý  rn  r@  r¦   rV  rJ  )rJ  rO  rV  rn  )rJ  rO  rV  rJ  )rJ  rO  r¡  rq  rV  rJ  )rw  r*  rÅ  r^  rV  rN   )r|  r6   rV  r6   )r£  rë   r¡  r^  rV  r7   )r£  rù   r¡  r^  rV  r5   )r£  r«   r¡  r^  rV  r5   )r£  r¤   r¡  r^  rV  r5   )r£  rÝ   r¡  r^  rV  r5   )r£  rõ   r¡  r^  rV  r5   )r£  r¡   r¡  r^  rV  r5   )r£  r¾   r¡  r^  rV  r4   )r£  r½   ræ  zNativeToolCallPart | Noner¡  r^  rV  r5   )r<  zBetaThinkingConfigParam | Noner$  zThinkingLevel | Noner  rF  rV  z%Literal['enabled', 'adaptive'] | None)zforcing specific tools)rQ  r:  r‡   rf   rO  rq   r  r^  r  rF  r  rF  rV  rF  (l  Ú
__future__r   Ú_annotationsr  r›  Úcollections.abcr   r   r   r   r   Ú
contextlibr	   r
   Údataclassesr   r   r   r   r   Ú	functoolsr   Útypingr   r   r   r   r   r   r¥  Úopentelemetry.tracer   Úpydanticr   Útyping_extensionsr   rÂ  r   r   r   r   Ú_httpr   Ú_run_contextr    Ú_tool_searchr!   r"   r�  r#   Úcapabilities.abstractr$   Ú
exceptionsr%   r&   r†   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r·  rF   rG   rH   rI   rJ   rK   rL   rM   Únative_tools._tool_searchrN   rO   rP   ÚprofilesrQ   rR   rS   rT   Úprofiles.anthropicrU   rV   rW   rX   rY   rZ   Ú	providersr[   r\   Úproviders.anthropicr]   r½  r^   r_   r`   rŽ   ra   rb   Útoolsets._tool_searchrc   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   Ú_anthropic_containersrp   r¤  Ú_tool_choicerq   rr   r   rK  rŠ   r”   r»  r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rf  Ú$anthropic.types.anthropic_beta_paramrŸ   Úanthropic.types.betar    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   r÷   rø   rù   rú   rû   rü   rý   Ú3anthropic.types.beta.beta_advisor_tool_result_blockrþ   ÚAdvisorToolResultBlockContentÚ9anthropic.types.beta.beta_advisor_tool_result_block_paramrŸ  Ú?anthropic.types.beta.beta_bash_code_execution_tool_result_blockÚ'BashCodeExecutionToolResultBlockContentÚEanthropic.types.beta.beta_bash_code_execution_tool_result_block_paramrœ  ÚFanthropic.types.beta.beta_text_editor_code_execution_tool_result_blockÚ-TextEditorCodeExecutionToolResultBlockContentÚLanthropic.types.beta.beta_text_editor_code_execution_tool_result_block_paramr�  Ú-anthropic.types.beta.beta_user_location_paramrÿ   Ú;anthropic.types.beta.beta_web_fetch_tool_result_block_paramrž  Úanthropic.types.model_paramr   ÚImportErrorÚ_import_errorrì  r«  rà  r  rÛ  rÜ  rÞ  rÝ  rß  r’  r“  r  rl  r€  r�  r—  r�  r  ÚLatestAnthropicModelNamesr¸  ré  r  r"  r$  r%  rÔ  rü  rÙ  r.  ÚWarningr0  r:  rW  rY  rP  rh  ro  rr  rˆ  r‘  r—  r�  r©  r±  r´  r[  r†  rŒ  râ  rÛ  rù  rŽ  r   r™  rÒ  rÕ  rÛ  rš  r›  r6  r9  rÐ  rÿ  r  r�  r¡  r£  r¢  r  rì  r«  rÒ  r  rÑ  r  rÓ  r  rÔ  r  rÕ  rÖ  r  r×  rÙ  rÚ  r  rH  r1  r8  r‰   Ú<module>rU     så  ðÞ 2ã 	Û ß WÕ Wß :ß 1Ñ 1ß (Ý %ß E× Eã Ý 0Ý  Ý *ç EÓ EÝ %Ý %Ý .ß KÝ 6ß 1÷ ÷  ÷  ÷  ÷  ÷  ÷  ÷  ñ  ÷B	÷ 	ó 	÷ñ ÷
 \Ó [÷÷ ÷ 1Ý 6ß IÑ Iß .Ý B÷÷ ÷ ñ õ Oß Að ØØØ%-ØØØØñ	AÐ Ð=ó 	ðØ ðØ<Rðàôô$
ðJ÷÷ ÷ õ H÷_÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷ _÷@ð ÷ð ÷ð ÷ð ÷ð ÷ð ÷ TÐS÷ð ÷ 7Ð6ð #8Ð9MÐ!NÑ àØØØð	"Ñ ð  Øð)Ñ %ð *?Ð(@Ñ %ð $9Ð":Ñ Ø"7Ð9MÐ!NÑ Ø+@ÐBVÐ*WÑ 'ð
 !6Ð7KÐMbÐcÑ ð .CÐ,DÑ )à8Ñ Ø#IÑ  ØHbÐdpÐGqÑ %Ð'DÓ qØOÑ Ø-Ñ ØBuÑ ?Ø2Ñ Ø1Ñ ð õMó ñMñ, 'Ñ Ø 3á.Ñ ðò /8ò	ó/Ñ ˜^ó ð fà-4ØIñ.Ñ  ó ð <CÐCvÑ;wÑ -¨yÓ wðUÑ $Ð&Qó ð
 .CÑ *ò
 $-Ú`ó$Ñ  ð (:Ñ $à!9Ñ �YÓ 9Ø Dô©õ ô(W˜]°%ó Wðv [_ðØ*ðØ?Wðàöõ>õ 6ðBØ*ðBØ6TðBàõBðØðà&ðð ðð 
õ	õ0
Rð  15Ø*/ñ	Ø ðð .ðð $(ð	ð
 
öõ8
Vð( 15Ø*/ñbØ"ðbà ðbð -ðbð 1ð	bð
 ðbð .ðbð $(ðbð iöbõ4ð,ØAðàõð(Ø*ðà,õñ( �Ñôa"�UÐ/Ñ0ó a"ó ña"ñHE �ÑôA%Ð,¨ZÑ8ó A%ó ñA%ðH uÑ õ:ðD 15ð.ØNð.àð.ð ð.ð ð	.ð
 .ð.ð ö.õbð ô]Ð 0ó ]ó ñ]ð@	"&Ø ð"&Ø9=ð"&ØT\ð"&à@õ"&ðJ&Ø-ð&Ø<?ð&ØV^ð&à'õ&ðT  ×$Ò$Ø'×,Ò,Ø×"Ò"ñ>Ñ *¨Nó ðCØ<ðCà=õCðRØYðRàõRðØmðà
3ðð 
õð"Ø
3ðà$õõ,"õõ>ðB Ñ ðð0Ø'ð0Ø8Vð0à	õ0õ,8õD
õN
õ6 MõF_õ2 õNð4Ø
'ðØ8;ðàõñ0 WbØ'óWÑ !Ð#Só õ
ñ _jØ+ó_Ñ %Ð'[ó ð
Ø
*ðØ;>ðàõñ doÙ+ódÑ *Ð,`ó ð
	Ø
.ð	Ø?Bð	àõ	ñ Ñ=Ó>ñ 2Ð3mó ð
	Ø
4ð	ØEHð	àõ	õñ NYÑYvÓMwÑ Ð JÓ wõ	õ
ðØ
 ðØ-FðØWZðàõðØ6ðà*ðð !%ð	ð
 +õð2 ,ð	-ð )-Ø',ñ-Ø*ð-à4ð-ð -ð-ð ð	-ð "&ð-ð !%ð-ð 
÷-ð -øñkx ô Ú
ð	eóñ ðýðús   ÆD/W* ×*X×2W=×=X