
    iT%                         d Z ddlZddlZddlmZmZmZ ddlmZm	Z	 ddl
mZ ddlmZmZmZmZ dd	lmZ dd
lmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ  G d d      Z y)Internal client implementation.    N)AsyncGeneratorAsyncIterableAsyncIterator)asdictreplace)Any   )ClaudeAgentOptions	HookEventHookMatcherMessage   )parse_message)Query)MaterializedResumeapply_materialized_optionsbuild_mirror_batchermaterialize_resume_session)validate_session_store_options)	Transport)SubprocessCLITransportc                       e Zd ZdZddZdeeee   f   dee	eee	e
f      f   fdZ	 dde	eee	e
f      z  ded	edz  dee   fd
Zde	eee	e
f      z  ded	edz  dedz  deedf   f
dZy)InternalClientr   returnNc                      y)zInitialize the internal client.N )selfs    h/volume1/homes/robertsu/coba/app/.venv/lib/python3.12/site-packages/claude_agent_sdk/_internal/client.py__init__zInternalClient.__init__   s        hooksc                 2   i }|j                         D ]  \  }}g ||<   |D ]r  }t        |d      r|j                  ndt        |d      r|j                  ng d}t        |d      r|j                  |j                  |d<   ||   j                  |       t  |S )z4Convert HookMatcher format to internal Query format.matcherNr"   )r$   r"   timeout)itemshasattrr$   r"   r%   append)r   r"   internal_hookseventmatchersr$   internal_matchers          r   !_convert_hooks_to_internal_formatz0InternalClient._convert_hooks_to_internal_format"   s     ;=${{}OE8$&N5!# 3:'92MwSW.5gw.GW]]R4  7I.7??3N29//$Y/u%,,-=> $  - r!   promptoptions	transportc                  K   t        |       |t        |       d{   nd}| j                  ||||      }	 |2 3 d{   }| 7 ,7 6 	 	 |j                          d{  7   |;|j	                          d{  7   y# ||j	                          d{  7   w w xY wy# 	 |j                          d{  7   ||j	                          d{  7   w w # ||j	                          d{  7   w w xY wxY ww)z,Process a query through transport and Query.N)r   r   _process_query_inneraclosecleanup)r   r.   r/   r0   materializedinnermsgs          r   process_queryzInternalClient.process_query4   s     	'w/ :C9J,W555PT 	 ))&'9lS	1" c	 6U1lln$$
  +&..000  +&..000 ,+1lln$$
  +&..000 ,<+&..000 ,s   DADB) A AAB) DAB) B %A(&B +D BDB%B B%%D)D+C!>C?C!DCD!C?7C:8C??DDr5   c                &  K   |}|j                   r?t        |t              rt        d      |j                  rt        d      t        |d      }|t        ||      }||}nt        ||      }|j                          d {    i }|j                  rjt        |j                  t              rP|j                  j                         D ]3  \  }}	t        |	t              s|	j                  d      dk(  s,|	d   ||<   5 d }
|j                  }t        |t              r7|j                  d      d	k(  r#|j                  d
      }t        |t              r|}
d }|j                  r_|j                  j                         D ci c]6  \  }}|t!        |      j                         D ci c]  \  }}|	|| c}}8 }}}}}t#        t$        j&                  j                  dd            }t)        |dz  d      }t+        |d|j                   |j,                  r| j/                  |j,                        nd ||||
|j0                  	      |j2                  Qdt4        dt        dd ffd}j7                  t9        |j2                  ||j:                  ||j<                               	 j?                          d {    jA                          d {    t        |t              rYddd|dd d}|jC                  tE        jF                  |      dz          d {    jI                  jK                                n0t        |tL              r jI                  jO                  |             jQ                         2 3 d {   }tS        |      }|| 7 c c}}w c c}}}}w 7 7 7 7 /6 	 jU                          d {  7   jW                          y # jU                          d {  7   jW                          w xY ww)Nzmcan_use_tool callback requires streaming mode. Please provide prompt as an AsyncIterable instead of a string.zccan_use_tool callback cannot be used with permission_prompt_tool_name. Please use one or the other.stdio)permission_prompt_tool_name)r.   r/   typesdkinstancepresetexclude_dynamic_sections CLAUDE_CODE_STREAM_CLOSE_TIMEOUT60000g     @@g      N@T)	r0   is_streaming_modecan_use_toolr"   sdk_mcp_serversinitialize_timeoutagentsr@   skillskeyerrorr   c                 2   K   j                  | |       y wN)report_mirror_error)rI   rJ   querys     r   _on_mirror_errorz=InternalClient._process_query_inner.<locals>._on_mirror_error   s     ))#u5s   )storer5   envon_error
flush_modeuser )rolecontent)r<   
session_idmessageparent_tool_use_id
),rD   
isinstancestr
ValueErrorr;   r   r   r   connectmcp_serversdictr&   getsystem_promptboolrG   r   intosenvironmaxr   r"   r-   rH   session_storer	   set_transcript_mirror_batcherr   rQ   session_store_flushstart
initializewritejsondumps
spawn_taskwait_for_result_and_end_inputr   stream_inputreceive_messagesr   closeclose_receive_stream)r   r.   r/   r0   r5   configured_optionschosen_transportrE   nameconfigr@   spedsagents_dict	agent_defkvinitialize_timeout_msrF   rO   user_messagedatarY   rN   s                          @r   r2   z#InternalClient._process_query_inner[   s     %&#& U  22 3  ")g!V#!;"L"
  (5*  &&((( ))j**D/
 !3 > > D D Fffd+

60Be0K,2:,>OD) !G 15 --b$BFF6Nh$>&&34C#t$+.( $$ (:'@'@'F'F'H'HOD) y(9(?(?(AS(A1Q]q!t(ASS'H   !$JJNN=wG!
 !!6!?F
 &"+88!'' 889K9Q9QR+1%=%,,
 ++76C 6 6 6 //$,::!-*..-1EE	)++- ""$$$ &#& #"$(.6B*.	  ',,TZZ-E-LMMM  !D!D!FGFM2  !3!3F!;< $446 "d'-&!M{ 	)0 TZ   % N"6 ++-&&( ++-&&(s   BPNAP"P7BP%N'
(
N!3N!8N'
>C)P(O# ;N/<O# N1AO# N3A$O# N7N5N7	O# O# P!N'
'P/O# 1O# 3O# 5N77O# 9POP#P7O:8PP)r   NrL   )__name__
__module____qualname____doc__r    ra   r   listr   r]   r	   r-   r   r   r   r   r   r8   r   r   r2   r   r!   r   r   r      s    ).)T+%667	c4S#X''	(, '+	%1mDcN33%1 $%1 t#	%1
 
w	%1NK)mDcN33K) $K) t#	K)
 )4/K) 
	&K)r!   r   )!r   ro   rf   collections.abcr   r   r   dataclassesr   r   typingr	   typesr   r   r   r   message_parserr   rN   r   session_resumer   r   r   r   session_store_validationr   r0   r   transport.subprocess_clir   r   r   r!   r   <module>r      sN    %  	 H H '   *   E   <J) J)r!   