
    iV	              	       x    S r SSKJr  S\S\4S jrS\S\\\\4      S\\\\4      4S jrS	\S\\\4   4S
 jrg)zBMessage processing and content serialization for Claude Agent SDK.    )Anycontentreturnc                 J   [        U [        5      (       d  U $ / nU  GH  n[        U5      R                  nUS:X  a!  UR	                  S[        USS5      S.5        M@  US:X  a-  UR	                  S[        USS5      [        USS5      S.5        Ms  US	:X  a9  UR	                  S
[        USS5      [        USS5      [        USS5      S.5        M  US:X  a9  UR	                  S[        USS5      [        USS5      [        USS5      S.5        M  UR	                  U5        GM     U$ )zNConvert SDK content blocks into serializable dicts using explicit type checks.	TextBlocktext )typer   ThinkingBlockthinking	signature)r
   r   r   ToolUseBlocktool_useidNnameinput)r
   r   r   r   ToolResultBlocktool_resulttool_use_idr   is_errorF)r
   r   r   r   )
isinstancelistr
   __name__appendgetattr)r   resultblock
block_types       k/home/james-whalen/.local/lib/python3.13/site-packages/langsmith/integrations/claude_agent_sdk/_messages.pyflatten_content_blocksr       s.   gt$$F%[))
 $MM"#E626 ?*MM& 'z2 >!(R!@ >)MM&!%t4#E648$UGT:	 ,,MM)#*5-#F&ui> 'z5 A	 MM% M N M    prompthistoryc                 j    [        U [        5      (       a  U SS.nU(       a  U/UQ$ U/$ U=(       d    / $ )z3Construct a combined prompt + history message list.user)r   role)r   str)r"   r#   entrys      r   build_llm_inputr)   6   s:    &#"F3$+  8%8=br!   msgc                     SSK JnJn  [        U SS5      (       d  0 $ U" U R                  5      nU(       a  U" U5      $ 0 $ )z=Normalize and merge token usage metrics from a ResultMessage.   )extract_usage_metadatasum_anthropic_tokensusageN)_usager-   r.   r   r/   )r*   r-   r.   metricss       r   !extract_usage_from_result_messager2   >   s:    D3&&	$SYY/G,3(;;r!   N)	__doc__typingr   r    r   dictr'   r)   r2    r!   r   <module>r7      so    H -C -C -`C $tCH~*> 4SRUXCW <3 <4S> <r!   