
    f3fim              	           d Z ddlmZ dedefdZdedefdZdedeeeef      deeeef      fd	Zd
edeeef   fdZ	y)zBMessage processing and content serialization for Claude Agent SDK.    )Anycontentreturnc                    | yt        | t              r| S t        | t              rg }| D ]r  }t        |t              r7|j	                  d      dk(  s(|j                  |j	                  dd             Jt        |d      sW|j                  t        |dd             t |rdj                  |      S t        |       S t        |       S )z5Extract text content from tool result content blocks. typetext
)	
isinstancestrlistdictgetappendhasattrgetattrjoin)r   textsitems      o/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langsmith/integrations/claude_agent_sdk/_messages.py_extract_tool_result_textr      s    '3'4  	8D$%88F#v-LL&"!56v&WT6267	8 $)tyy:c'l:w<    c                 F   t        | t              s| S g }| D ]  }t        |      j                  }|dk(  r |j	                  dt        |dd      d       >|dk(  r,|j	                  dt        |dd      t        |dd      d       o|d	k(  r8|j	                  d
t        |dd      t        |dd      t        |dd      d       |dk(  rEt        |dd      }t        |      }|j	                  dt        |dd      |t        |dd      d       |j	                  |       	 |S )zNConvert SDK content blocks into serializable dicts using explicit type checks.	TextBlockr	   r   )r   r	   ThinkingBlockthinking	signature)r   r   r   ToolUseBlocktool_useidNnameinput)r   r    r!   r"   ToolResultBlockr   tool_resulttool_use_idis_errorF)r   r%   r   r&   )r   r   r   __name__r   r   r   )r   resultblock
block_typetool_contentcontent_texts         r   flatten_content_blocksr-      s?   gt$F )!%[))
 $MM"#E626 ?*MM& 'z2 >!(R!@ >)MM&!%t4#E648$UGT:	 ,,"5)T:L4\BLMM)#*5-#F+ 'z5 A	 MM% S)!T Mr   prompthistoryc                 L    t        | t              r| dd}|r|g|S |gS |xs g S )z3Construct a combined prompt + history message list.user)r   role)r   r   )r.   r/   entrys      r   build_llm_inputr4   K   s7    &#"F3$+  8%8=br   msgc                 l    ddl m}m} t        | dd      si S  || j                        }|r ||      S i S )z?Normalize and merge token usage metrics from a `ResultMessage`.   )extract_usage_metadatasum_anthropic_tokensusageN)_usager8   r9   r   r:   )r5   r8   r9   metricss       r   !extract_usage_from_result_messager=   S   s7    D3&	$SYY/G,3(;;r   N)
__doc__typingr   r   r   r-   r   r   r4   r=    r   r   <module>rA      s    H s s $0C 0C 0fC $tCH~*> 4SRUXCW <3 <4S> <r   