
    i3                         d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  ej8                  e      Zdee ef   dedz  fd	Z!y)
z-Message parser for Claude Code SDK responses.    N)Any   )MessageParseError)AssistantMessageContentBlockDeferredToolUseHookEventMessageMessageMirrorErrorMessageRateLimitEventRateLimitInfoResultMessageServerToolResultBlockServerToolUseBlockStreamEventSystemMessageTaskNotificationMessageTaskProgressMessageTaskStartedMessage	TextBlockThinkingBlockToolResultBlockToolUseBlockUserMessagedatareturnc                 $   t        | t              s#t        dt        |       j                   d|       | j                  d      dk(  r| j                  d      dv rl| j                  d      xs( | j                  d      xs | j                  d	      xs d
}t        | d   || | j                  d      | j                  d            S | j                  d      }|st        d|       |xdk(  r 	 | j                  d      }| j                  d      }| j                  d      }t        | d   d   t              rg }| d   d   D ]  }|d   xdk(  r  |j                  t        |d                ,xdk(  r( |j                  t        |d   |d   |d                Ydk(  s^|j                  t        |d   |j                  d      |j                  d                    t        ||||      S t        | d   d   |||      S xd"k(  r 	 g }	| d   d   D ]  }|d   xdk(  r  |	j                  t        |d                -xd#k(  r$ |	j                  t        |d#   |d$   %             Vxdk(  r( |	j                  t        |d   |d   |d                xdk(  r@ |	j                  t        |d   |j                  d      |j                  d                   xd&k(  r( |	j                  t        |d   |d   |d                d'k(  s|	j                  t!        |d   |d   (              t#        |	| d   d)   | j                  d      | j                  d*      | d   j                  d+      | d   j                  d      | d   j                  d,      | j                  d      | j                  d      -	      S xdk(  r 	 | d   }
|
xd/k(  r> t%        |
| | d0   | d1   | d   | d   | j                  d      | j                  d2      3      S xd4k(  rB t'        |
| | d0   | d1   | d+   | d   | d   | j                  d      | j                  d5      6	      S xd7k(  rF t)        |
| | d0   | d8   | d9   | d:   | d   | d   | j                  d      | j                  d+      ;
      S d<k(  r.t+        |
| | j                  d=      | j                  d*d
      >      S 	 t-        |
| ?      S xdAk(  r 	 | j                  dB      }t/        d^i d| d   dC| dC   dD| dD   d| d   dE| dE   d| d   d,| j                  d,      dF| j                  dF      d+| j                  d+      dA| j                  dA      dG| j                  dG      dH| j                  dI      dJ| j                  dJ      dB|rt1        |d   |d   |d         nd!dK| j                  dK      dL| j                  dL      d| j                  d      S xdNk(  r) 	 t3        | d   | d   | dO   | j                  d      P      S dRk(  r	 | dS   }t5        t7        |d8   |j                  dT      |j                  dU      |j                  dV      |j                  dW      |j                  dX      |j                  dY      |Z      | d   | d   [      S 	 t8        j;                  d]|       y!# t        $ r}t        d | |       |d!}~ww xY w# t        $ r}t        d.| |       |d!}~ww xY w# t        $ r}t        d@| |       |d!}~ww xY w# t        $ r}t        dM| |       |d!}~ww xY w# t        $ r}t        dQ| |       |d!}~ww xY w# t        $ r}t        d\| |       |d!}~ww xY w)_a  
    Parse message from CLI output into typed Message objects.

    Args:
        data: Raw message dictionary from CLI output

    Returns:
        Parsed Message object

    Raises:
        MessageParseError: If parsing fails or message type is unrecognized
    z.Invalid message data type (expected dict, got )typesystemsubtype)hook_startedhook_response
hook_event	hook_namehook_event_name 
session_iduuid)r!   r&   r   r(   r)   zMessage missing 'type' fielduserparent_tool_use_idtool_use_resultmessagecontenttext)r/   tool_useidnameinput)r1   r2   r3   tool_resulttool_use_idis_error)r5   r.   r6   )r.   r)   r+   r,   z(Missing required field in user message: N	assistantthinking	signature)r8   r9   server_tool_useadvisor_tool_result)r5   r.   modelerrorusagestop_reason)	r.   r<   r+   r=   r>   
message_idr?   r(   r)   z-Missing required field in assistant message: task_startedtask_iddescription	task_type)r!   r   rB   rC   r)   r(   r5   rD   task_progresslast_tool_name)	r!   r   rB   rC   r>   r)   r(   r5   rF   task_notificationstatusoutput_filesummary)
r!   r   rB   rH   rI   rJ   r)   r(   r5   r>   mirror_errorkey)r!   r   rL   r=   )r!   r   z*Missing required field in system message: resultdeferred_tool_useduration_msduration_api_ms	num_turnstotal_cost_usdstructured_outputmodel_usage
modelUsagepermission_denialserrorsapi_error_statusz*Missing required field in result message: stream_eventevent)r)   r(   rZ   r+   z0Missing required field in stream_event message: rate_limit_eventrate_limit_inforesetsAtrateLimitTypeutilizationoverageStatusoverageResetsAtoverageDisabledReason)rH   	resets_atrate_limit_typer_   overage_statusoverage_resets_atoverage_disabled_reasonraw)r\   r)   r(   z4Missing required field in rate_limit_event message: z!Skipping unknown message type: %s )
isinstancedictr   r   __name__getr	   listappendr   r   r   r   KeyErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   loggerdebug)r   r&   message_typer+   r,   r)   user_content_blocksblockecontent_blocksr!   deferredinfos                p/volume1/homes/robertsu/coba/app/.venv/lib/python3.12/site-packages/claude_agent_sdk/_internal/message_parser.pyparse_messager{   "   s    dD!<T$Z=P=P<QQRS
 	
 xx8#(; @ )
 HH\" xx$xx)* 	 	  O+xx-&!
 	
 88F#L >EE
+%)XX.B%C""&((+<"=xx'd9oi8$?>@'!%i!;#Fm!' 3 : :$-5=$A!" ", 3 : :$0+0;-26].3Gn%&!" "/ 3 : :$349-4H05		)0D16:1F%&!" "<, ' 3!+=(7	  # OI6'9$3	  ;57!)_Y7E-#*11)v2OP'*11 --2:->.3K.@!" (*11 ,',T{).v*/.!" +*11 /05m0D,1IIi,@-2YYz-B!" /*11 2',T{).v*/.!" 3*11 505m0D,1),<!"I 8V (*y/'2'+xx0D'E((7+y/--g6#I2248 $Y 3 3M B#xx5&)
 
  7y/'1$+!%$(O(,](;!%f'+L'9(,(?&*hh{&;	  	 )2$+!%$(O(,](;"&w-!%f'+L'9(,(?+/884D+E
  
 -6$+!%$(O#'>(,](;$(O!%f'+L'9(,(?"&((7"3   (1$+!% $"&((7B"7	   ,$+!%   88$78$  O $] 3 %)):$; "*-	
 #;/  $L1 !% 7 $(88,<#= ((7+  88H- '+hh/B&C !% 6 (,xx0D'E&   '6#D>%f-&w/' )*  88H-+, &*XX.@%A-. &)/ < 
"f#L1w-'+xx0D'E	   -.%$1#H~"&((:"6(,(A$(HH]$;'+xx'@*.((3D*E049P0Q 	% f#L1 &  LL<lKK  '>qcBD|  'CA3Gt  '@DdB  '@Dd  'FqcJD,  'J1#NPTs   /B0[  A[ /[ D[- B0[- 	A\ A\ A
\ $1\ \ ,D\/ &] -B]1 	[*[%%[*-	\6\\	\,\''\,/	]8]]	].]))].1	^:^

^)"__doc__loggingtypingr   _errorsr   typesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	getLoggerrl   rq   rk   strr{   ri       rz   <module>r      se    3   '     0 
		8	$\S#X \7T> \r   