
    .hw                       d dl mZ d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZ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# d
dl$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z*m+Z+m,Z, d
dl-m.Z.m/Z/m0Z0m1Z1 d
dl2m3Z3m4Z4 d
dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d
dl@mAZA d
dlBmBZB d
dlCmDZD d
dlEmFZF d
dlGmHZHmIZI d
dlJmKZKmLZL d
dlMmNZNmOZOmPZPmQZQ d
dlRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d
dlZm[Z[m\Z\ e
rd
dl]m^Z^  G d d          Z_ e_            Z` e#dd          Zae G d  d!                      Zbe G d" d#                      Zce G d$ d%                      Zde G d& d'                      Zee G d( d)                      Zfe G d* d+                      Zge G d, d-                      Zhe G d. d/                      Zie G d0 d1                      Zjd>d7Zk G d8 d9          Zl G d: d;          Zm G d< d=          ZndS )?    )annotationsN)	Awaitable)	dataclassfield)TYPE_CHECKINGAnycast)ResponseComputerToolCallResponseFileSearchToolCallResponseFunctionToolCallResponseFunctionWebSearchResponseOutputMessage)	ActionClickActionDoubleClick
ActionDragActionKeypress
ActionMoveActionScreenshotActionScroll
ActionType
ActionWait)ComputerCallOutput)ResponseReasoningItem   )AgentToolsToFinalOutputResult)AgentOutputSchemaBase)AsyncComputerComputer)AgentsExceptionModelBehaviorError	UserError)InputGuardrailInputGuardrailResultOutputGuardrailOutputGuardrailResult)HandoffHandoffInputData)
HandoffCallItemHandoffOutputItemItemHelpersMessageOutputItemModelResponseReasoningItemRunItemToolCallItemToolCallOutputItemTResponseInputItem)RunHooks)logger)ModelSettings)ModelTracing)RunContextWrapperTContext)RunItemStreamEventStreamEvent)ComputerToolFunctionToolFunctionToolResultTool)	SpanErrorTracefunction_spanget_current_traceguardrail_spanhandoff_spantrace)_coro_error_tracing)	RunConfigc                      e Zd ZdS )QueueCompleteSentinelN__name__
__module____qualname__     M/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/agents/_run_impl.pyrJ   rJ   G   s        DrP   rJ   Fis_final_outputfinal_outputc                  D    e Zd ZU  ee          Zded<   	 dd
ZddZdS )AgentToolUseTracker)default_factoryzlist[tuple[Agent, list[str]]]agent_to_toolsagent
Agent[Any]
tool_names	list[str]returnNonec                    t          fd| j        D             d           }|r|d                             |           d S | j                            |f           d S )Nc              3  4   K   | ]}|d          k    |V  dS r   NrO   .0itemrY   s     rQ   	<genexpr>z3AgentToolUseTracker.add_tool_use.<locals>.<genexpr>V   2      WWtd1gQVFVFVdFVFVFVFVWWrP   r   )nextrX   extendappend)selfrY   r[   existing_datas    `  rQ   add_tool_usez AgentToolUseTracker.add_tool_useU   st    WWWWt/BWWWY]^^ 	<!##J/////&&z':;;;;;rP   boolc                    t          fd| j        D             d           }|d uot          |d                   dk    S )Nc              3  4   K   | ]}|d          k    |V  dS ra   rO   rb   s     rQ   re   z5AgentToolUseTracker.has_used_tools.<locals>.<genexpr>]   rf   rP   r   r   )rg   rX   len)rj   rY   rk   s    ` rQ   has_used_toolsz"AgentToolUseTracker.has_used_tools\   sM    WWWWt/BWWWY]^^D(FSq1A-B-BQ-FFrP   N)rY   rZ   r[   r\   r]   r^   )rY   rZ   r]   rm   )	rL   rM   rN   r   listrX   __annotations__rl   rq   rO   rP   rQ   rV   rV   P   se         49E$4O4O4ONOOOO`< < < <G G G G G GrP   rV   c                  $    e Zd ZU ded<   ded<   dS )ToolRunHandoffr'   handoffr   	tool_callNrL   rM   rN   rs   rO   rP   rQ   ru   ru   a   s*         ''''''rP   ru   c                  $    e Zd ZU ded<   ded<   dS )ToolRunFunctionr   rw   r<   function_toolNrx   rO   rP   rQ   rz   rz   g   *         ''''rP   rz   c                  $    e Zd ZU ded<   ded<   dS )ToolRunComputerActionr
   rw   r;   computer_toolNrx   rO   rP   rQ   r~   r~   m   r|   rP   r~   c                  J    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ddZdS )ProcessedResponselist[RunItem]	new_itemslist[ToolRunHandoff]handoffslist[ToolRunFunction]	functionslist[ToolRunComputerAction]computer_actionsr\   
tools_usedr]   rm   c                D    t          | j        | j        | j        g          S N)anyr   r   r   rj   s    rQ   has_tools_to_runz"ProcessedResponse.has_tools_to_run{   s+     %
 
 	
rP   N)r]   rm   )rL   rM   rN   rs   r   rO   rP   rQ   r   r   s   sf         """"$$$$1111	
 	
 	
 	
 	
 	
rP   r   c                      e Zd ZU ded<   dS )NextStepHandoffrZ   	new_agentNrx   rO   rP   rQ   r   r      s         rP   r   c                      e Zd ZU ded<   dS )NextStepFinalOutputr   outputNrx   rO   rP   rQ   r   r      s         KKKKKrP   r   c                      e Zd ZdS )NextStepRunAgainNrK   rO   rP   rQ   r   r      s        DrP   r   c                  d    e Zd ZU ded<   	 ded<   	 ded<   	 ded<   	 ded	<   	 edd            ZdS )SingleStepResultstr | list[TResponseInputItem]original_inputr-   model_responser   pre_step_itemsnew_step_itemsz8NextStepHandoff | NextStepFinalOutput | NextStepRunAgain	next_stepr]   c                     | j         | j        z   S )z`Items generated during the agent run (i.e. everything generated after
        `original_input`).)r   r   r   s    rQ   generated_itemsz SingleStepResult.generated_items   s     "T%888rP   N)r]   r   )rL   rM   rN   rs   propertyr   rO   rP   rQ   r   r      s         2222 "!!!2!!!!2!!!!3GGGG 9 9 9 X9 9 9rP   r   tracing_disabledrm   trace_include_sensitive_datar]   r6   c                R    | rt           j        S |rt           j        S t           j        S r   )r6   DISABLEDENABLEDENABLED_WITHOUT_DATA)r   r   s     rQ   get_model_tracing_implr      s/      1$$	% 1##00rP   c                  .   e Zd ZedDd            ZedEd            ZedFd!            ZedGd&            ZedHd)            ZedId-            Z	edJd0            Z
edKd1            ZedLd7            ZedMd;            ZedNd?            ZedOdB            ZdCS )PRunImplrY   Agent[TContext]r   r   r   r   new_responser-   processed_responser   output_schemaAgentOutputSchemaBase | NonehooksRunHooks[TContext]context_wrapperRunContextWrapper[TContext]
run_configrH   r]   r   c       	          K   t          |          }g }
|
                    |j                   t          j        |                     ||j        |||	          |                     ||j        |||	                     d {V \  }}|
                    d |D                        |
                    |           |j	        x}r$| 
                    ||||
|||||		  	         d {V S |                     ||||	           d {V }|j        rq|j        r|j        t          u rt          |j                  |_        |j        t!          j        d           |                     |||||
|j        ||           d {V S d |
D             }|rt'          j        |d	         j                  nd }|rN|                                s:|r8|                    |          }|                     |||||
|||           d {V S |r|                                r9|                                s%|                     |||||
|pd
||           d {V S t3          ||||
t5                                S )N)rY   	tool_runsr   r   config)rY   actionsr   r   r   c                    g | ]	}|j         
S rO   )run_item)rc   results     rQ   
<listcomp>z:RunImpl.execute_tools_and_side_effects.<locals>.<listcomp>   s    NNN6vNNNrP   )	rY   r   r   r   r   run_handoffsr   r   r   )rY   tool_resultsr   r   zhModel returned a final output of None. Not raising an error because we assumeyou know what you're doing.)rY   r   r   r   r   rT   r   r   c                <    g | ]}t          |t                    |S rO   )
isinstancer,   )rc   rd   s     rQ   r   z:RunImpl.execute_tools_and_side_effects.<locals>.<listcomp>  s(    ```$JtM^<_<_````rP    r   r   r   r   r   )rr   rh   r   asynciogatherexecute_function_tool_callsr   execute_computer_actionsr   r   execute_handoffs"_check_for_final_output_from_toolsrS   output_typestrrT   r4   errorexecute_final_outputr+   extract_last_textraw_itemis_plain_textvalidate_jsonr   r   r   )clsrY   r   r   r   r   r   r   r   r   r   function_resultscomputer_resultsr   check_tool_usemessage_itemspotential_final_output_textrT   s                     rQ   execute_tools_and_side_effectsz&RunImpl.execute_tools_and_side_effects   s     " n--(*0:;;; 4;>++,6 /! ,   ((*; /! )  4
 4
 .
 .
 .
 .
 .
 .
**  	NN=MNNNOOO./// .66< 	-----)) /% . 
 
 
 
 
 
 
 
 
  #EE)+	  F  
  
 
 
 
 
 
 
 ) 	$ O(9S(@(@.1.2M.N.N+*22  
 11-)--+8 / 2 	 	 	 	 	 	 	 	 	 a`.``` JW`K)-*;*DEEE\` 	$  !	!<!<!>!> !	C^ !	(667RSSL11-)--) / 2 	 	 	 	 	 	 	 	 	 	!.!<!<!>!>	$5577	 11-)--8>B / 2 	 	 	 	 	 	 	 	 	 $-+--*,,   rP   rZ   tool_use_trackerrV   model_settingsr5   c                n    |j         du r+|                    |          rt          j        |d          S |S )znResets tool choice to None if the agent has used tools and the agent's reset_tool_choice
        flag is True.TN)tool_choice)reset_tool_choicerq   dataclassesreplace)r   rY   r   r   s       rQ   maybe_reset_tool_choicezRunImpl.maybe_reset_tool_choice?  sB     "d**/?/N/Nu/U/U*&~4HHHHrP   	all_tools
list[Tool]responser   list[Handoff]c                  g }g }g }g }	g }
d |D             }d |D             }t          d |D             d           }|j        D ]0}t          |t                    r&|                    t          ||                     nt          |t                    r;|                    t          ||                     |
                    d           nlt          |t                    r;|                    t          ||                     |
                    d           nt          |t                    r%|                    t          ||                     nt          |t                    r|                    t          ||                     |
                    d           |s2t          j        t          di 	                     t          d
          |	                    t!          ||                     n;t          |t"                    s&t%          j        dt)          |                      t          |t"                    s|
                    |j                   |j        |v rW|                    t-          ||                     t/          |||j                           }|                    |           |j        |vrIt          j        t          dd|j        i	                     t          d|j         d|j                   |                    t          ||                     |                    t1          |||j                                      2t3          ||||	|
          S )Nc                    i | ]
}|j         |S rO   )	tool_namerc   rv   s     rQ   
<dictcomp>z2RunImpl.process_model_response.<locals>.<dictcomp>[  s    JJJgw('JJJrP   c                H    i | ]}t          |t                    |j        | S rO   )r   r<   namerc   tools     rQ   r   z2RunImpl.process_model_response.<locals>.<dictcomp>\  s,    ```DDR^A_A_`	4```rP   c              3  D   K   | ]}t          |t                    |V  d S r   )r   r;   r   s     rQ   re   z1RunImpl.process_model_response.<locals>.<genexpr>]  s1      [[tJt\<Z<Z[d[[[[[[rP   )r   rY   file_search
web_searchcomputer_usezComputer tool not foundmessagedataz7Model produced computer action without a computer tool.)rw   r   z"Unexpected output type, ignoring: )rw   rv   zTool not foundr   zTool z not found in agent )rw   r{   )r   r   r   r   r   )rg   r   r   r   ri   r,   r   r0   r   r   r.   r
   rG   attach_error_to_current_spanr?   r!   r~   r   r4   warningtyper   r)   ru   rz   r   )r   rY   r   r   r   r   itemsr   r   r   r   handoff_mapfunction_mapr   r   rv   s                   rQ   process_model_responsezRunImpl.process_model_responseK  s     "	 "
JJJJJ``I```[[y[[[]abbo =	 =	F&"788 .eLLLMMMMF$>?? \6GGGHHH!!-0000F$=>> \6GGGHHH!!,////F$9:: ]F%HHHIIIIF$<== \6GGGHHH!!.111$ 	"?!$=!#     -Q   !'')F-XXX     (@AA RDLLRRSSS f&>?? fk*** {k))_fEJJJKKK($'4   ##G,,,, ;l22"?!$4"-v{!;     --bV[-b-bV[V`-b-bccc\6GGGHHH  #"(&26;&?      !!-!
 
 
 	
rP   r   r   r   list[FunctionToolResult]c                  K   d	fd}g }|D ]-}|j         }	|                     ||	|j                             .t          j        |  d {V }
fdt          ||
          D             S )
N	func_toolr<   rw   r   r]   r   c                  K   t          | j                  5 }j        r|j        |j        _        	 t          j        	                    |           j	        rj	                            |           nt          j                    |                     |j                             d {V \  }}}t          j        	                    | |          j	        rj	                            | |          nt          j                               d {V  n|# t          $ ro}t          j        t#          d| j        t%          |          d                     t'          |t(                    r|t+          d| j         d|           |d }~ww xY wj        r||j        _        d d d            n# 1 swxY w Y   |S )NzError running tool)r   r   r   zError running tool z: )rA   r   r   	arguments	span_datainputr   r   on_tool_startr   rF   noop_coroutineon_invoke_toolon_tool_end	ExceptionrG   r   r?   r   r   r    r"   r   )
r   rw   span_fn_r   erY   r   r   r   s
         rQ   run_single_toolz<RunImpl.execute_function_tool_calls.<locals>.run_single_tool  s`      y~.. "6'6 B.7.AG%+X)0++OUINN  %{8EK55ouiXXX!&!5!7!7!00)BUVV* * $ $ $ $ $ $LAq& ".))/5)VTT  %{8EK33OUIW]^^^!&!5!7!7          ! 	X 	X 	X"?!$8/8~A!O!O     "!_55  #$O).$O$OA$O$OPPVWW	X 6 6/5G%,E"6 "6 "6 "6 "6 "6 "6 "6 "6 "6 "6 "6 "6 "6 "6F Ms6   F6C(DF6
F%A*FFF66F:=F:c                    g | ]Q\  }}t          |j        |t          |t          j        |j        t          |                                         RS )r   r   rY   )r   r   r   )r=   r{   r1   r+   tool_call_output_itemrw   r   )rc   tool_runr   rY   s      rQ   r   z7RunImpl.execute_function_tool_calls.<locals>.<listcomp>  s|     
 
 
 !& ++!(>x?QSVW]S^S^__    
 
 
rP   )r   r<   rw   r   r]   r   )r{   ri   rw   r   r   zip)r   rY   r   r   r   r   r  tasksr  r{   resultss    ` ```     rQ   r   z#RunImpl.execute_function_tool_calls  s      &	 &	 &	 &	 &	 &	 &	 &	 &	P ! 	M 	MH$2MLL8JKKLLLL.......
 
 
 
 %(	7$;$;
 
 
 	
rP   r   r   c          
        K   g }|D ]:}|                     t                              |||||           d {V            ;|S )N)rY   actionr   r   r   )ri   ComputerActionexecute)r   rY   r   r   r   r   r  r  s           rQ   r   z RunImpl.execute_computer_actions  s       "$ 		 		FNN$,,!$3! -            rP   r   r   r   c       	        t  K   t          |          dk    }
|
r,d|                    fd|dd          D                        |d         }t          j                  5 }|j        }|                    ||j        j                   d {V }|j        |j        _	        |
r2d |D             }|
                    t          dd|i	                     |                    t          t          j        |j        |                    |                    |
                     t#          j        |                    ||          j        rj                            ||          nt+          j                               d {V  |j        p
|	r|	j        nd }|r`t3          j        d           t7          t9          |t:                    rt=          |          n|t=          |          t=          |                    }t?          |          s8tA          j!        |t          dddi	                     tE          d|            ||          }t9          |t6                    s8tA          j!        |t          dddi	                     tE          d|           t9          |j#        tH                    r|j#        nt;          |j#                  }t;          |j%                  }t;          |j&                  }d d d            n# 1 swxY w Y   tO          ||||tQ          |                    S )Nr   z.Multiple handoffs detected, ignoring this one.c           	     d    g | ],}t          t          j        |j                             -S )r  )r1   r+   r  rw   )rc   rv   rY   output_messages     rQ   r   z,RunImpl.execute_handoffs.<locals>.<listcomp>  sZ     	 	 	   '-!,!B#-~" " $  	 	 	rP   r   )
from_agentc                &    g | ]}|j         j        S rO   )rv   
agent_namer   s     rQ   r   z,RunImpl.execute_handoffs.<locals>.<listcomp>,  s    #[#[#[7GO$>#[#[#[rP   zMultiple handoffs requestedrequested_agentsr   )rY   r   source_agenttarget_agent)contextr  to_agent)rY   sourcezFiltering inputs for handoff)input_historypre_handoff_itemsr   zInvalid input filterdetailsznot callable()zInvalid input filter: zInvalid input filter resultznot a HandoffInputDatazInvalid input filter result: r   ))rp   rh   rD   r   rv   on_invoke_handoffrw   r  r  r"  	set_errorr?   ri   r*   r+   r  get_transfer_messager   r   
on_handoffr   rF   r  input_filterhandoff_input_filterr4   debugr(   r   rr   tuplecallablerG   attach_error_to_spanr"   r$  r   r%  r   r   r   )r   rY   r   r   r   r   r   r   r   r   multiple_handoffsactual_handoffspan_handoffrv   r   r  r+  handoff_input_datafilteredr  s    `                 @rQ   r   zRunImpl.execute_handoffs  sz       --1 	MN!!	 	 	 	 	 $0#3	 	 	   &aUZ000 W	:L$,G*1*C*C!9!C+ + % % % % % %I /8nL"+  	#[#[l#[#[#[ && =.0@     !!!(>&044Y??  "'!*  
 
 
 .  +$& !   {0EK**''$ +    -//        $ #/ 3=G
//4   #:;<<<%5!.$77#(%"7"7"7'&+N&;&;#N33& & &"  -- M"7$!$:"+-=!>     $$K\$K$KLLL'<(:;;!(,<== P"7$!$A"+-E!F     $$NH$N$NOOO "("8#>>6H**h455 
 "&h&@!A!A!%h&8!9!9oW	: W	: W	: W	: W	: W	: W	: W	: W	: W	: W	: W	: W	: W	: W	:r  )'))%i00
 
 
 	
s   #JLLLrT   r   c          	        K   |                      ||||           d {V  t          ||||t          |                    S )Nr   )run_final_output_hooksr   r   )	r   rY   r   r   r   r   rT   r   r   s	            rQ   r   zRunImpl.execute_final_output  sb       ((UUUUUUUUU)'))),77
 
 
 	
rP   c                   K   t          j        |                    |||          |j        r|j                            |||          nt          j                               d {V  d S r   )r   r   on_agent_endr   on_endrF   r  )r   rY   r   r   rT   s        rQ   r7  zRunImpl.run_final_output_hooks  s       n|DD{(EK|DDD%''	
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
rP   	guardrailInputGuardrail[TContext]r  r!  r$   c                   K   t          |                                          5 }|                    |||           d {V }|j        j        |j        _        |cd d d            S # 1 swxY w Y   d S r   rC   get_namerunr   tripwire_triggeredr  	triggered)r   rY   r;  r  r!  span_guardrailr   s          rQ   run_single_input_guardrailz"RunImpl.run_single_input_guardrail  s       I..0011 	^$==w????????F171QN$.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   5A&&A*-A*OutputGuardrail[TContext]agent_outputr&   c                   K   t          |                                          5 }|                    |||           d {V }|j        j        |j        _        |cd d d            S # 1 swxY w Y   d S )N)rY   rF  r!  r>  )r   r;  rY   rF  r!  rC  r   s          rQ   run_single_output_guardrailz#RunImpl.run_single_output_guardrail  s       I..0011 	^$==u<Y`=aaaaaaaaF171QN$.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6A''A+.A+step_resultqueue2asyncio.Queue[StreamEvent | QueueCompleteSentinel]c                l   |j         D ]*}t          |t                    rt          |d          }nt          |t                    rt          |d          }nt          |t
                    rt          |d          }nt          |t                    rt          |d          }ntt          |t                    rt          |d          }nMt          |t                    rt          |d          }n&t          j
        dt          |                      d }|r|                    |           ,d S )	Nmessage_output_created)rd   r   handoff_requestedhandoff_occuredtool_calledtool_outputreasoning_item_createdzUnexpected item type: )r   r   r,   r9   r)   r*   r0   r1   r.   r4   r   r   
put_nowait)r   rI  rJ  rd   events        rQ   stream_step_result_to_queuez#RunImpl.stream_step_result_to_queue  sL     . 	( 	(D$ 122 *;STTTD/22 *;NOOOD"344 
*;LMMMD,// *=IIID"455 *=IIID-00 *;STTTDT

DDEEE (  '''%	( 	(rP   r   r   c                 K   |st           S |j        dk    rt           S |j        dk    rt          d|d         j                  S t	          |j        t
                    rW|j                            dg           }|D ](}|j        j        |v rt          d|j                  c S )t          dd          S t          |j                  r|t          j        |j                  r:t          t          t                   |                    ||                     d{V S t          t          |                    ||                    S t          j        d	|j                    t!          d	|j                   )
zReturns (i, final_output).run_llm_againstop_on_first_toolTr   rR   stop_at_tool_namesFNzInvalid tool_use_behavior: )_NOT_FINAL_OUTPUTtool_use_behaviorr   r   r   dictgetr   r   r/  inspectiscoroutinefunctionr	   r   r4   r   r"   )r   rY   r   r   r   namestool_results          rQ   r   z*RunImpl._check_for_final_output_from_tools  s       	%$$"o55$$$(<<<+ $<?3I    /66 	+//0DbIIE+  #(E113(,;;M      2 ,EPTUUUUe-.. 		*5+BCC !67++O\JJ        
 ,e.E.EoWc.d.d   	L53JLLMMMOe6MOOPPPrP   N)rY   r   r   r   r   r   r   r-   r   r   r   r   r   r   r   r   r   rH   r]   r   )rY   rZ   r   rV   r   r5   r]   r5   )rY   rZ   r   r   r   r-   r   r   r   r   r]   r   )rY   r   r   r   r   r   r   r   r   rH   r]   r   )rY   r   r   r   r   r   r   r   r   rH   r]   r   )rY   r   r   r   r   r   r   r   r   r-   r   r   r   r   r   r   r   rH   r]   r   )rY   r   r   r   r   r-   r   r   r   r   rT   r   r   r   r   r   r]   r   )rY   r   r   r   r   r   rT   r   )
rY   rZ   r;  r<  r  r   r!  r   r]   r$   )
r;  rE  rY   rZ   rF  r   r!  r   r]   r&   )rI  r   rJ  rK  )
rY   r   r   r   r   r   r   rH   r]   r   )rL   rM   rN   classmethodr   r   r   r   r   r   r   r7  rD  rH  rU  r   rO   rP   rQ   r   r      s       A A A [AF 	 	 	 [	 X
 X
 X
 [X
t C
 C
 C
 [C
J    [0 ~
 ~
 ~
 [~
@ 
 
 
 [
. 
 
 
 [
 
 
 
 [
 
 
 
 [
 ( ( ( [(2 &Q &Q &Q [&Q &Q &QrP   r   c                  (    e Zd ZdZddZddZd ZdS )TraceCtxManagerzSCreates a trace only if there is no current trace, and manages the trace lifecycle.workflow_namer   trace_id
str | Nonegroup_idmetadatadict[str, Any] | Nonedisabledrm   c                Z    d | _         || _        || _        || _        || _        || _        d S r   )rE   re  rf  rh  ri  rk  )rj   re  rf  rh  ri  rk  s         rQ   __init__zTraceCtxManager.__init__  s3     $(
*    rP   r]   c                    t                      }|sMt          | j        | j        | j        | j        | j                  | _        | j                            d           | S )N)re  rf  rh  ri  rk  T)mark_as_current)rB   rE   re  rf  rh  ri  rk  start)rj   current_traces     rQ   	__enter__zTraceCtxManager.__enter__  se    )++ 	3"0  DJ JT222rP   c                N    | j         r| j                             d           d S d S )NT)reset_current)rE   finish)rj   exc_typeexc_valexc_tbs       rQ   __exit__zTraceCtxManager.__exit__+  s5    : 	2JD11111	2 	2rP   N)
re  r   rf  rg  rh  rg  ri  rj  rk  rm   )r]   rd  )rL   rM   rN   __doc__rm  rr  ry  rO   rP   rQ   rd  rd    sQ        ]]! ! ! !   2 2 2 2 2rP   rd  c                  V    e Zd Zedd            Zedd            Zedd            ZdS )r  rY   r   r  r~   r   r   r   r   r   rH   r]   r/   c          
       K   t          |j        j        t                    r%|                     |j        j        |j                  n$|                     |j        j        |j                  }t          j        |	                    |||j                  |j
        r!|j
        	                    |||j                  nt          j                    |           d {V \  }}}t          j        |                    |||j        |          |j
        r"|j
                            |||j        |          nt          j                               d {V  d| }	t          ||	t          |j        j        d|	dd                    S )Nzdata:image/png;base64,computer_screenshot)r   	image_urlcomputer_call_output)call_idr   r   )rY   r   r   )r   r   computerr   _get_screenshot_asyncrw   _get_screenshot_syncr   r   r  r   rF   r  r  r1   r   r  )
r   rY   r  r   r   r   output_funcr
  r   r~  s
             rQ   r  zComputerAction.execute1  s      &.7GG[C%%f&:&CVEUVVV))&*>*GIYZZ 	 %^8LMM ;,))/5&BVWWW)++
 
 
 
 
 
 
 
1f nouf6JFSS ;,''@TV\]]])++
 
 	
 	
 	
 	
 	
 	
 	
 6V55	!'(01!*  ,  
 
 
 	
rP   r  r   rw   r
   r   c                  K   |j         }t          |t                    r(|                    |j        |j        |j                   nt          |t                    r"|                    |j        |j                   nft          |t                    r&|
                    d |j        D                        n+t          |t                    r|                    |j                   nt          |t                    r!|                    |j        |j                   nt          |t"                    r|                                 nt          |t&                    r-|                    |j        |j        |j        |j                   nYt          |t.                    r|                    |j                   n)t          |t4                    r|                                 |                                S )Nc                *    g | ]}|j         |j        fS rO   xyrc   ps     rQ   r   z7ComputerAction._get_screenshot_sync.<locals>.<listcomp>o  s     ;;;!AC:;;;rP   r  r   r   clickr  r  buttonr   double_clickr   dragpathr   keypresskeysr   mover   
screenshotr   scrollscroll_xscroll_yr   r   textr   waitr   r  rw   r  s       rQ   r  z#ComputerAction._get_screenshot_syncc  s      !fk** 	NN68VXv}==== 122 	!!&(FH5555
++ 	MM;;v{;;;<<<<// 	fk****
++ 		MM&(FH---- 011 	!!!!-- 	OOFHfhQQQQ
++ 	MM&+&&&&
++ 	MMOOO""$$$rP   r   c                j  K   |j         }t          |t                    r.|                    |j        |j        |j                   d {V  nt          |t                    r(|                    |j        |j                   d {V  nt          |t                    r,|
                    d |j        D                        d {V  nPt          |t                    r"|                    |j                   d {V  nt          |t                    r'|                    |j        |j                   d {V  nt          |t"                    r|                                 d {V  nt          |t&                    r3|                    |j        |j        |j        |j                   d {V  net          |t.                    r!|                    |j                   d {V  n/t          |t4                    r|                                 d {V  |                                 d {V S )Nc                *    g | ]}|j         |j        fS rO   r  r  s     rQ   r   z8ComputerAction._get_screenshot_async.<locals>.<listcomp>  s      A A A!#qs A A ArP   r  r  s       rQ   r  z$ComputerAction._get_screenshot_async  sm      !fk** 	"..68V]CCCCCCCCCC 122 	"''&(;;;;;;;;;;
++ 	"-- A AV[ A A ABBBBBBBBBB// 	"##FK0000000000
++ 		"--&(3333333333 011 	"%%''''''''''-- 	"//&(FHfovWWWWWWWWWW
++ 	"--,,,,,,,,,,
++ 	"--//!!!!!!!((*********rP   N)rY   r   r  r~   r   r   r   r   r   rH   r]   r/   )r  r   rw   r
   r]   r   )r  r   rw   r
   r]   r   )rL   rM   rN   rb  r  r  r  rO   rP   rQ   r  r  0  ss        /
 /
 /
 [/
b % % % [%6 + + + [+ + +rP   r  )r   rm   r   rm   r]   r6   )o
__future__r   r   r   r^  collections.abcr   r   r   typingr   r   r	   openai.types.responsesr
   r   r   r   r   2openai.types.responses.response_computer_tool_callr   r   r   r   r   r   r   r   r   +openai.types.responses.response_input_paramr   .openai.types.responses.response_reasoning_itemr   rY   r   r   rF  r   r  r   r   
exceptionsr    r!   r"   r;  r#   r$   r%   r&   r   r'   r(   r   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   	lifecycler3   r4   r   r5   models.interfacer6   run_contextr7   r8   stream_eventsr9   r:   r   r;   r<   r=   r>   tracingr?   r@   rA   rB   rC   rD   rE   utilrF   rG   r@  rH   rJ   QUEUE_COMPLETE_SENTINELrZ  rV   ru   rz   r~   r   r   r   r   r   r   r   rd  r  rO   rP   rQ   <module>r     sv   " " " " " "       % % % % % % ( ( ( ( ( ( ( ( + + + + + + + + + +             
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 K J J J J J P P P P P P 2 2 2 2 2 2 2 2 / / / / / / - - - - - - - - F F F F F F F F F F c c c c c c c c c c c c / / / / / / / /                                     ) ) ) ) ) ) * * * * * * 4 4 4 4 4 4 4 4 : : : : : : : : F F F F F F F F F F F F                  ( ' ' ' ' ' ' ' 	 	 	 	 	 	 	 	 0/11 ,,UQUVVV  G G G G G G G G  ( ( ( ( ( ( ( (
                
                
 
 
 
 
 
 
 
 
&                 	 	 	 	 	 	 	 	 9 9 9 9 9 9 9 901 1 1 1N	Q N	Q N	Q N	Q N	Q N	Q N	Q N	Qb"2 "2 "2 "2 "2 "2 "2 "2Ji+ i+ i+ i+ i+ i+ i+ i+ i+ i+rP   