
    Cj_|                       % S SK Jr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	  S SK
JrJrJrJrJrJrJr  S SKrS SKJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!  S SK"J#r#  S SK$J%r%J&r&  S S	K'J(r(  S S
K)J*r*  S SK+J,r,J-r-J.r.J/r/  S SK0J1r1J2r2J3r3J4r4J5r5  S SK6J7r7  S SKJ8r8  S SK9J:r:  SSK;J<r<J=r=J>r>  SSK?J@r@JArA  SSKBJBrB  SSKCJDrDJErEJFrFJGrGJHrHJIrI  SSKJJKrK  SSKLJMrM  \(       a  SSKNJOrO  \rP \rQ \rR \rS \" S\R\Q-  \T\U\4   -  S9rV\ \T\U\4   -  rWS\XS'   \!\T\U\4   -  rYS\XS'   \Z" 5       r[\ " S S\\V   \R                  5      5       r]\ " S S \]\   5      5       r^\ " S! S"\]\W   5      5       r_\ " S# S$\]\Y   5      5       r`    SFS% jraSGS& jrbSHS' jrcSIS( jrdSJS) jre\ " S* S+\]\   5      5       rf\ " S, S-\]\Q   5      5       rg\\-  \-  \-  \4-  \#-  \1-  \2-  \T\U\4   -  rhS\XS.'    \ " S/ S0\]\   5      5       ri\-\,-  \.-  \-  \T\U\4   -  rjS\XS1'   \ " S2 S3\]\   5      5       rk\ " S4 S5\]\7   5      5       rl\ " S6 S7\]\5   5      5       rm\ " S8 S9\]\3   5      5       rn\ " S: S;\]\/   5      5       ro\ " S< S=\]\Q   5      5       rp\\4-  \3-  \2-  \T\U\4   -  rqS\XS>'   \ " S? S@\]\   5      5       rr\^\_-  \`-  \f-  \g-  \i-  \k-  \l-  \m-  \n-  \o-  \p-  \r-  rsS\XSA'    \R                  R                   " SB SC5      5       rt " SD SE5      rug)K    )annotationsN)Mapping)	dataclassfield)TYPE_CHECKINGAnyGenericLiteral	TypeAliasTypeVarcast)ResponseResponseComputerToolCallResponseFileSearchToolCall#ResponseFunctionShellToolCallOutputResponseFunctionToolCallResponseFunctionWebSearchResponseInputItemParamResponseOutputItemResponseOutputMessageResponseOutputRefusalResponseOutputTextResponseStreamEventResponseToolSearchCallResponseToolSearchOutputItem)ResponseCodeInterpreterToolCall)'ResponseFunctionCallOutputItemListParam#ResponseFunctionCallOutputItemParam)ResponseInputFileContentParam)ResponseInputImageContentParam)ComputerCallOutputFunctionCallOutputLocalShellCallOutputMcpApprovalResponse)ImageGenerationCallLocalShellCallMcpApprovalRequestMcpCallMcpListTools)ResponseReasoningItem)	BaseModel)assert_never   )FunctionToolLookupKeyget_function_tool_lookup_keytool_trace_name)AgentsExceptionModelBehaviorError)logger)
ToolOriginToolOutputFileContentToolOutputImageToolOutputTextValidToolOutputPydanticModels(ValidToolOutputPydanticModelsTypeAdapter)Usage)_to_dump_compatible)AgentT)boundr   ToolSearchCallRawItemToolSearchOutputRawItemc                     ^  \ rS rSr% S\S'    S\S'    \" SSSS9rS	\S
'   SS jrSU 4S jjrSS jr	SS jr
SS jrSrU =r$ )RunItemBaseZ   
Agent[Any]agentr=   raw_itemFNinitreprdefault(weakref.ReferenceType[Agent[Any]] | None
_agent_refc                N    [         R                  " U R                  5      U l        g N)weakrefrefrE   rL   selfs    ^/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/agents/items.py__post_init__RunItemBase.__post_init__k   s    !++djj1    c                R   > US:X  a  U R                  SS5      $ [        TU ]	  U5      $ )NrE   rL   _get_agent_via_weakrefsuper__getattribute__rR   name	__class__s     rS   r[   RunItemBase.__getattribute__o   s-    7?..wEEw'--rV   c                    SU R                   ;  a  gU R                   S   nUc  gUb  [        R                  " U5      OSU l        SU R                   S'   g)zIRelease the strong reference to the agent while keeping a weak reference.rE   N)__dict__rO   rP   rL   )rR   rE   s     rS   release_agentRunItemBase.release_agentt   sL    $--'g&=050A'++e,t!%grV   c                    [         R                  U S5      nUR                  U[        5      nU[        L a  [         R                  X5      $ Ub  U$ [         R                  X5      nUb  U" 5       nUb  U$ g )Nra   )objectr[   get_MISSING_ATTR_SENTINEL)rR   	attr_nameref_namedatavaluerP   rE   s          rS   rY   "RunItemBase._get_agent_via_weakref   sv     &&tZ8$:;****4;;L%%d5?EE rV   c                
   [        U R                  [        5      (       a  U R                  $ [        U R                  [        5      (       a  U R                  R	                  SS9$ [        S[        U R                  5       35      e)HConverts this item into an input item suitable for passing to the model.Texclude_unsetUnexpected raw item type: )
isinstancerF   dictr+   
model_dumpr1   typerQ   s    rS   to_input_itemRunItemBase.to_input_item   sc    dmmT**== y11==++$+??!$>tDMM?R>S"TUUrV   )rL   returnNoner]   strry   r   )rh   r|   ri   r|   ry   r   ry   TResponseInputItem)__name__
__module____qualname____firstlineno____annotations__r   rL   rT   r[   rb   rY   rv   __static_attributes____classcell__r^   s   @rS   rB   rB   Z   sT    ?K
 <A<J8 2.
	&"	V 	VrV   rB   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
MessageOutputItem   z"Represents a message from the LLM.r   rF   message_output_itemzLiteral['message_output_item']ru    Nr   r   r   r   __doc__r   ru   r   r   rV   rS   r   r      s    ,##*+@D
(@rV   r   c                  >    \ rS rSr% SrS\S'    SrS\S'   SS jrS	rg
)ToolSearchCallItem   zDRepresents a Responses API tool search request emitted by the model.r?   rF   tool_search_call_itemz Literal['tool_search_call_item']ru   c                ,    [        U R                  5      $ )zDConvert the tool search call into a replayable Responses input item._tool_search_item_to_input_itemrF   rQ   s    rS   rv    ToolSearchCallItem.to_input_item       .t}}==rV   r   Nr}   	r   r   r   r   r   r   ru   rv   r   r   rV   rS   r   r      s    N##W-DD
*D>rV   r   c                  >    \ rS rSr% SrS\S'    SrS\S'   SS jrS	rg
)ToolSearchOutputItem   z5Represents the output of a Responses API tool search.r@   rF   tool_search_output_itemz"Literal['tool_search_output_item']ru   c                ,    [        U R                  5      $ )zFConvert the tool search output into a replayable Responses input item.r   rQ   s    rS   rv   "ToolSearchOutputItem.to_input_item   r   rV   r   Nr}   r   r   rV   rS   r   r      s    ?%%Y/HD
,H>rV   r   c                    [        U [        5      (       a  [        U 5      nO<[        U [        5      (       a  U R                  SS9nO[	        S[        U 5       35      eUR                  SS5        [        [        U5      $ )zLStrip output-only tool_search fields before replaying items back to the API.Tro   rq   
created_byN)	rr   rs   r+   rt   r1   ru   popr   r~   )rF   payloads     rS   r   r      sn     (D!!x.	Hi	(	(%%D%9 :4>:JKLLKKd#"G,,rV   c                x   [        U [        5      (       a  U R                  S5      O[        U SS5      nUS;   a  [	        U 5      $ [        U [        5      (       a  [        [        [        U 5      5      $ [        U [        5      (       a  [        [        U R                  SS95      $ [        S[        U 5       35      e)zLConvert an output item into replayable input, normalizing tool_search items.ru   N>   tool_search_calltool_search_outputTro   rq   )rr   rs   rf   getattrr   r   r~   r+   rt   r1   ru   )rF   	item_types     rS   _output_item_to_input_itemr      s     !+8T : :VRXZ^@_  >>.x88(D!!&X77(I&&&(;(;$(;(OPP
6tH~6FG
HHrV   c                p    [        U 5      nUR                  S5      n[        U[        5      (       a  X!S'   U$ )Nru   )rs   rf   rr   r|   )rF   copiedcopied_types      rS   _copy_tool_search_mappingr      s2    (^F**V$K+s##$vMrV   c                j   [        U [        5      (       a  U $ [        U [        5      (       aU  [        U 5      nUR	                  S5      S:w  a  [        SUR	                  S5      < 35      e [        R                  " U5      $ [        S[        U 5       35      e! [        R                   a    Us $ f = f)zOPrefer the typed SDK tool_search call model while tolerating partial snapshots.ru   r   z'Unexpected tool search call item type: )
rr   r   r   r   rf   r1   model_validatepydanticValidationErrorru   rF   r   s     rS    coerce_tool_search_call_raw_itemr      s    (233(G$$*84::f!33!$KFJJW]L^Ka"bcc	)88@@ CDNCST
UU '' 	M	   ,B B21B2c                j   [        U [        5      (       a  U $ [        U [        5      (       aU  [        U 5      nUR	                  S5      S:w  a  [        SUR	                  S5      < 35      e [        R                  " U5      $ [        S[        U 5       35      e! [        R                   a    Us $ f = f)zQPrefer the typed SDK tool_search output model while tolerating partial snapshots.ru   r   z)Unexpected tool search output item type: )
rr   r   r   r   rf   r1   r   r   r   ru   r   s     rS   "coerce_tool_search_output_raw_itemr      s    (899(G$$*84::f!55!;FJJv<N;QR 	/>>vFF Ed8nEUV
WW '' 	M	r   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
HandoffCallItemi	  z?Represents a tool call for a handoff from one agent to another.r   rF   handoff_call_itemzLiteral['handoff_call_item']ru   r   Nr   r   rV   rS   r   r   	  s    I&&J)<D
&<rV   r   c                     ^  \ rS rSr% SrS\S'    S\S'    S\S'    SrS	\S
'   \" SSSS9rS\S'   \" SSSS9r	S\S'   SU 4S jjr
SU 4S jjrSU 4S jjrSrU =r$ )HandoffOutputItemi  z#Represents the output of a handoff.r~   rF   rD   source_agenttarget_agenthandoff_output_itemzLiteral['handoff_output_item']ru   FNrG   rK   _source_agent_ref_target_agent_refc                   > [         TU ]  5         [        R                  " U R                  5      U l        [        R                  " U R                  5      U l        g rN   )rZ   rT   rO   rP   r   r   r   r   )rR   r^   s    rS   rT   HandoffOutputItem.__post_init__-  s<    !(T->->!?!(T->->!?rV   c                   > US:X  a  U R                  SS5      $ US:X  a  U R                  SS5      $ [        TU ]	  U5      $ )Nr   r   r   r   rX   r\   s     rS   r[   "HandoffOutputItem.__getattribute__3  sM    >! ..~?RSS>!..~?RSSw'--rV   c                T  > [         TU ]  5         SU R                  ;   a<  U R                  S   nUb  [        R                  " U5      U l        S U R                  S'   SU R                  ;   a=  U R                  S   nUb  [        R                  " U5      U l        S U R                  S'   g g )Nr   r   )rZ   rb   ra   rO   rP   r   r   )rR   r   r   r^   s      rS   rb   HandoffOutputItem.release_agent=  s    T]]*==8L')0\)B&,0DMM.)T]]*==8L')0\)B&,0DMM.) +rV   )r   r   rx   r{   )r   r   r   r   r   r   ru   r   r   r   rT   r[   rb   r   r   r   s   @rS   r   r     s    -  F*0+@D
(@BGC? 
 CHC? @.1 1rV   r   ToolCallItemTypesc                  b    \ rS rSr% SrS\S'    SrS\S'   SrS	\S
'    SrS	\S'    Sr	S\S'   Sr
g)ToolCallItemi[  zDRepresents a tool call e.g. a function call or computer action call.r   rF   tool_call_itemzLiteral['tool_call_item']ru   N
str | NonedescriptiontitleToolOrigin | Nonetool_originr   )r   r   r   r   r   r   ru   r   r   r   r   r   rV   rS   r   r   [  sA    N!&6D
#6"K"CE:F%)K")QrV   r   ToolCallOutputTypesc                  h   ^  \ rS rSr% SrS\S'    S\S'    SrS\S	'   S
rS\S'    SU 4S jjrSr	U =r
$ )ToolCallOutputItemiw  z%Represents the output of a tool call.r   rF   r   outputtool_call_output_itemz Literal['tool_call_output_item']ru   Nr   r   c                l  > [        U R                  [        5      (       Ga  [        U R                  5      nUR                  S5      nUS:X  a  [        U5      nUR	                  SS5        UR	                  SS5        UR	                  SS5        UR                  S5      n[        U[
        5      (       ac  U H]  n[        U[        5      (       d  M  UR                  S5      n[        U[        5      (       d  MB  UR                  S5      S	:X  d  MY  XTS'   M_     [        [        U5      $ [        TU ]%  5       $ )
a@  Converts the tool output into an input item for the next model turn.

Hosted tool outputs (e.g. shell/apply_patch) carry a `status` field for the SDK's
book-keeping, but the Responses API does not yet accept that parameter. Strip it from the
payload we send back to the model while keeping the original raw item intact.
ru   shell_call_outputstatusNshell_outputprovider_datar   outcomeexit)
rr   rF   rs   rf   r   listr   r~   rZ   rv   )rR   r   payload_typeoutputsentryr   r^   s         rS   rv    ToolCallOutputItem.to_input_item  s     dmmT**4==)G";;v.L22w-Hd+ND1OT2!++h/gt,,!()%66$"'))I"6%gt44&{{62f<3:i 0 ") *G44w$&&rV   r   r}   )r   r   r   r   r   r   ru   r   rv   r   r   r   s   @rS   r   r   w  s?    /!!&K .ED
*D%)K")Q' 'rV   r   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
ReasoningItemi  zRepresents a reasoning item.r*   rF   reasoning_itemzLiteral['reasoning_item']ru   r   Nr   r   rV   rS   r   r     s    &##!&6D
#6rV   r   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
MCPListToolsItemi  z1Represents a call to an MCP server to list tools.r)   rF   mcp_list_tools_itemzLiteral['mcp_list_tools_item']ru   r   Nr   r   rV   rS   r   r     s    ;&+@D
(@rV   r   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
MCPApprovalRequestItemi  z&Represents a request for MCP approval.r'   rF   mcp_approval_request_itemz$Literal['mcp_approval_request_item']ru   r   Nr   r   rV   rS   r   r     s    0  '1LD
.LrV   r   c                  4    \ rS rSr% SrS\S'    SrS\S'   Srg	)
MCPApprovalResponseItemi  z1Represents a response to an MCP approval request.r$   rF   mcp_approval_response_itemz%Literal['mcp_approval_response_item']ru   r   Nr   r   rV   rS   r   r     s    ;!!(2ND
/NrV   r   c                  2    \ rS rSr% SrSrS\S'   S	S jrSrg)
CompactionItemi  z4Represents a compaction item from responses.compact.compaction_itemzLiteral['compaction_item']ru   c                    U R                   $ )rn   )rF   rQ   s    rS   rv   CompactionItem.to_input_item  s    }}rV   r   Nr}   )	r   r   r   r   r   ru   r   rv   r   r   rV   rS   r   r     s    >'8D
$8rV   r   ToolApprovalRawItemc                     \ rS rSr% SrS\S'    SrS\S'    \" SS	SS
9rS\S'    Sr	S\S'   Sr
S\S'    SrS\S'    \" SS	SS
9rS\S'    SS jrS S jrS!S jr\S"S j5       r\S"S j5       r\S"S j5       rS"S jr\S"S j5       rS#S jrSrg)$ToolApprovalItemi  z2Tool call that requires approval before execution.r   rF   Nr   	tool_nameFT)rJ   kw_onlyrI   bool_allow_bare_name_aliastool_approval_itemzLiteral['tool_approval_item']ru   tool_namespacer   r   zFunctionToolLookupKey | Nonetool_lookup_keyc                   U R                   c~  [        U R                  [        5      (       a!  U R                  R	                  S5      U l         O>[        U R                  S5      (       a  U R                  R                  U l         OSU l         U R                  cp  [        U R                  [        5      (       a  U R                  R	                  S5      nO[        U R                  SS5      n[        U[        5      (       a  UOSU l        U R                  c  [        U R                  [        5      (       a  U R                  R	                  S5      nO[        U R                  SS5      nUS:X  a\  U R                   bN  U R                  b  U R                  U R                   :w  a&  [        U R                   U R                  5      U l
        ggggg)z5Populate tool_name from the raw item if not provided.Nr]   	namespaceru   function_call)r   rr   rF   rs   rf   hasattrr]   r   r   r|   r   r/   )rR   r   raw_types      rS   rT   ToolApprovalItem.__post_init__  sY   >>!$--..!%!2!26!://!%!3!3!%&$--.. MM--k:	#DMM;E	/9)S/I/I)tD'$--..==,,V4"4==&$?O+NN.((0D4G4G4>>4Y'CNN''($ 5Z / , (rV   c                ,    [         R                  U 5      $ )z<Hash by object identity to keep distinct approvals separate.)re   __hash__rQ   s    rS   r  ToolApprovalItem.__hash__  s    t$$rV   c                    XL $ )z%Equality is based on object identity.r   )rR   others     rS   __eq__ToolApprovalItem.__eq__   s
    }rV   c                   U R                   (       a  U R                   $ [        U R                  [        5      (       a>  U R                  R	                  S5      =(       d    U R                  R	                  S5      nO5[        U R                  SS5      =(       d    [        U R                  SS5      nUb  [        U5      $ S$ )zGReturn the tool name from tool_name or raw_item (backwards compatible).r]   r   N)r   rr   rF   rs   rf   r   r|   rR   	candidates     rS   r]   ToolApprovalItem.name$  s     >>>>!dmmT**))&1ST]]5F5F{5SIvt< {DAI "+!6s9~@D@rV   c                    U R                   c  g[        U R                   U R                  5      =(       d    U R                   $ )zNReturn a display-friendly tool name, collapsing synthetic deferred namespaces.N)r   r0   r   rQ   s    rS   qualified_nameToolApprovalItem.qualified_name1  s1     >>!t~~t/B/BCUt~~UrV   c                   Sn[        U R                  [        5      (       a\  U R                  R                  S5      nUc=  U R                  R                  S5      =(       d    U R                  R                  S5      nO[	        U R                  S5      (       a  U R                  R
                  nOk[	        U R                  S5      (       d  [	        U R                  S5      (       a5  [        U R                  SS5      =(       d    [        U R                  SS5      nUc  g[        U[        5      (       a  U$  [        R                  " U5      $ ! [        [        4 a    [        U5      s $ f = f)z6Return tool call arguments if present on the raw item.N	argumentsparamsinput)rr   rF   rs   rf   r   r  r   r|   jsondumps	TypeError
ValueErrorr  s     rS   r  ToolApprovalItem.arguments8  s    !%	dmmT**))+6I  MM--h7U4==;L;LW;U	T]]K00//IT]]H--1P1Px> 'wCI i%%	"::i((:& 	"y>!	"s   7E E+*E+c                $   [        U R                  [        5      (       a=  U R                  R                  S5      =(       d    U R                  R                  S5      $ [	        U R                  SS5      =(       d    [	        U R                  SS5      $ ))Return call identifier from the raw item.call_ididN)rr   rF   rs   rf   r   rQ   s    rS   _extract_call_id!ToolApprovalItem._extract_call_idO  sc    dmmT**==$$Y/J4==3D3DT3JJt}}i6\'$--QUW[:\\rV   c                "    U R                  5       $ )r  )r  rQ   s    rS   r  ToolApprovalItem.call_idU  s     $$&&rV   c                    [        S5      e)zHToolApprovalItem should never be sent as input; raise to surface misuse.z}ToolApprovalItem cannot be converted to an input item. These items should be filtered out before preparing input for the API.)r1   rQ   s    rS   rv   ToolApprovalItem.to_input_itemZ  s    U
 	
rV   )r   r   r   rx   )ry   int)r  re   ry   r   )ry   r   r}   )r   r   r   r   r   r   r   r   r   ru   r   r   r   rT   r  r  propertyr]   r  r  r  r  rv   r   r   rV   rS   r   r     s    <!!J Iz S#(5#QDQ` +?D
'>!%NJ%G%)K")N495O1 
 ]>% 
A 
A V V " ",] ' '
rV   r   RunItemc                  T    \ rS rSr% S\S'    S\S'    S\S'    SrS\S	'    SS
 jrSrg)ModelResponseit  zlist[TResponseOutputItem]r   r:   usager   response_idN
request_idc                X    U R                    Vs/ s H  n[        U5      PM     sn$ s  snf )zPConvert the output into a list of input items suitable for passing to the model.)r   r   )rR   its     rS   to_input_itemsModelResponse.to_input_items  s&    
 :>E2*2.EEEs   'r   )ry   list[TResponseInputItem])r   r   r   r   r   r(  r+  r   r   rV   rS   r%  r%  t  s3    %%NL1 "J
!UFrV   r%  c                      \ rS rSr\SS j5       r\SS j5       r\SS j5       r\    SS j5       r\SS j5       r	\SS j5       r
\      SS j5       r\SS	 j5       r\    SS
 j5       r\    SS j5       rSrg)ItemHelpersi  c                "   [        U[        5      (       d  gUR                  (       d  gUR                  S   n[        U[        5      (       a  UR                  $ [        U[
        5      (       a  UR                  $ [        S[        U5       35      e)z9Extracts the last text content or refusal from a message. zUnexpected content type: )	rr   r   contentr   textr   refusalr2   ru   clsmessagelast_contents      rS   extract_last_content ItemHelpers.extract_last_content  sz     '#899r*l$677$$$&;<<'''$'@lAS@T%UVVrV   c                    [        U[        5      (       aB  UR                  (       d  gUR                  S   n[        U[        5      (       a  UR                  $ g)zHExtracts the last text content from a message, if any. Ignores refusals.Nr2  rr   r   r3  r   r4  r6  s      rS   extract_last_textItemHelpers.extract_last_text  sG     g455??"??2.L,(:;;#(((rV   c                    [        U[        5      (       d  gSnUR                   H1  n[        U[        5      (       d  M  X#R                  =(       d    S-  nM3     U=(       d    S$ )zCExtracts all text content from a message, if any. Ignores refusals.Nr1  r=  )r7  r8  r4  content_items       rS   extract_textItemHelpers.extract_text  sW     '#899#OOL,(:;; ))/R/ , |trV   c                x    [        U[        5      (       a  USS./$ [        [        [           [        U5      5      $ )zDConverts a string or list of input items into a list of input items.user)r3  role)rr   r|   r   r   r~   r;   )r7  r  s     rS   input_to_new_input_list#ItemHelpers.input_to_new_input_list  sC    
 eS!!  %"  D+,.A%.HIIrV   c                p    SnU H-  n[        U[        5      (       d  M  X R                  U5      -  nM/     U$ )zFConcatenates all the text content from a list of message output items.r1  )rr   r   text_message_output)r7  itemsr4  items       rS   text_message_outputs ItemHelpers.text_message_outputs  s;     D$ 122//55  rV   c                    SnUR                   R                   H(  n[        U[        5      (       d  M  X#R                  -  nM*     U$ )z@Extracts all the text content from a single message output item.r1  )rF   r3  rr   r   r4  )r7  r8  r4  rL  s       rS   rJ  ItemHelpers.text_message_output  s@     $$,,D$ 233		! - rV   c                D    U R                  U5      nUR                  USS.$ )a  Creates a tool call output item from a tool call and its output.

Accepts either plain values (stringified) or structured outputs using
input_text/input_image/input_file shapes. Structured outputs may be
provided as Pydantic models or dicts, or an iterable of such items.
function_call_output)r  r   ru   )_convert_tool_outputr  )r7  	tool_callr   converted_outputs       rS   r   !ItemHelpers.tool_call_output_item  s0     33F; !((&*
 	
rV   c                |   [        U[        [        -  5      (       ab  U Vs/ s H  o R                  U5      PM     nn[	        U5      (       a'  U Vs/ s H  nUc  M  U R                  U5      PM     sn$ [        U5      $ U R                  U5      nU(       a  U R                  U5      /$ [        U5      $ s  snf s  snf )zLConverts a tool return value into an output acceptable by the Responses API.)rr   r   tuple/_maybe_get_output_as_structured_function_outputall*_convert_single_tool_output_pydantic_modelr|   )r7  r   rL  maybe_converted_output_listmaybe_converted_outputs        rS   rS   ItemHelpers._convert_tool_output  s     fdUl++V\+V\dCCDIV\ ( + .// !< ; ICBB4H ;  6{"%(%X%XY_%`"%FFG]^__6{"!+s   B4B9B9c                   [        U[        [        -  [        -  5      (       a  U$ [        U[        5      (       a  SU;  a  g  [
        R                  " U5      $ g ! [        R                   a    [        R                  " S5         g f = f)Nru   z/dict was not a valid tool output pydantic model)rr   r7   r6   r5   rs   r9   validate_pythonr   r   r3   debug)r7  r   s     rS   rY  ;ItemHelpers._maybe_get_output_as_structured_function_output  s|     fn>AVVWWM%%V#?OOPVWW
 	 ++ NOs   A *BBc                p   [        U[        5      (       a  SUR                  S.$ [        U[        5      (       aZ  SS0nUR                  b  UR                  US'   UR
                  b  UR
                  US'   UR                  b  UR                  US'   U$ [        U[        5      (       av  SS0nUR                  b  UR                  US	'   UR                  b  UR                  US
'   UR
                  b  UR
                  US'   UR                  b  UR                  US'   U$ [        U5        [        SU 35      e)N
input_text)ru   r4  ru   input_image	image_urlfile_iddetail
input_file	file_datafile_urlfilenamezUnexpected tool output type: )rr   r7   r4  r6   rf  rg  rh  r5   rj  rk  rl  r,   r  )r7  r   resultresult_files       rS   r[  6ItemHelpers._convert_single_tool_output_pydantic_model  s*    fn--(&++>>00 7=m5LF+&,&6&6{#~~)$*NNy!}}(#)==x M 566 ;A,9OK++1+;+;K(**0//J'~~))/I&**0//J' <VHEFFrV   r   N)r8  TResponseOutputItemry   r|   )r8  rp  ry   r   )r  zstr | list[TResponseInputItem]ry   r-  )rK  zlist[RunItem]ry   r|   )r8  r   ry   r|   )rT  r   r   r   ry   r"   )r   r   ry   z-str | ResponseFunctionCallOutputItemListParam)r   r   ry   z$ValidToolOutputPydanticModels | None)r   r8   ry   r   )r   r   r   r   classmethodr:  r>  rB  rG  rM  rJ  r   rS  rY  r[  r   r   rV   rS   r/  r/    s   W W 	 	  & J2J	!J J     
0
:=
	
 
$ # #0 	- " G2G	,G GrV   r/  )rF   z/ToolSearchCallRawItem | ToolSearchOutputRawItemry   r~   )rF   r   ry   r~   )rF   zMapping[str, Any]ry   zdict[str, Any])rF   r   ry   r?   )rF   r   ry   r@   )v
__future__r   abcr  rO   collections.abcr   dataclassesr   r   typingr   r   r	   r
   r   r   r   r   openai.types.responsesr   r   r   r   r   r   r   r   r   r   r   r   r   r   :openai.types.responses.response_code_interpreter_tool_callr   Dopenai.types.responses.response_function_call_output_item_list_paramr   r   8openai.types.responses.response_input_file_content_paramr   9openai.types.responses.response_input_image_content_paramr    0openai.types.responses.response_input_item_paramr!   r"   r#   r$   +openai.types.responses.response_output_itemr%   r&   r'   r(   r)   .openai.types.responses.response_reasoning_itemr*   r+   typing_extensionsr,   _tool_identityr.   r/   r0   
exceptionsr1   r2   r3   toolr4   r5   r6   r7   r8   r9   r&  r:   
util._jsonr;   rE   r<   	TResponser~   rp  TResponseStreamEventrs   r|   r=   r?   r   r@   re   rg   ABCrB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#  r%  r/  r   rV   rS   <module>r     s   " 
   # ( Q Q Q      c d   Q  * ` ` ;    +	 =+  K(  G*  HC*-??$sCx.PQ#9DcN#J y J%ADcN%R  R    >V'!*cgg >V >VB A$9: A A 
>%:; 
> 
> 
>;'>? 
> 
>-=--I VX" =k":; = = 61$67 61 61t  !    	
 &&   38n 9 
 / R;s# R R&  ** 38n	 Y  +'S) +' +'\ 7K 56 7 7 A{<0 A A M[);< M M Ok*=> O O [!34   w&);;nLtTWY\T\~] Y 
 
{3' 
 
F   	
     	 
     % 
F F  F2oG oGrV   