§
    ‰eîi2¯  ã                  óD  — d Z ddlmZ ddlZddl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mZmZ ddlmZ  ej        e¦  «        Z ej        dej        ¦  «        Zdd	œd8d„Zd9d„Zd:d;d„Zd<d„Z	 d=d>d„Zd=d?d „Zh d!£Zd"d#œd@d&„ZdAd(„ZdBd*„Z d+d,œdCd1„Z!dDd3„Z"dDd4„Z#dEd7„Z$dS )Fu‚  Codex Responses API adapter.

Pure format-conversion and normalization logic for the OpenAI Responses API
(used by OpenAI Codex, xAI, GitHub Models, and other Responses-compatible endpoints).

Extracted from run_agent.py to isolate Responses API-specific logic from the
core agent loop. All functions are stateless â€” they operate on the data passed
in and return transformed results.
é    )ÚannotationsN)ÚSimpleNamespace)ÚAnyÚDictÚListÚOptional)ÚDEFAULT_AGENT_IDENTITYz)(?:^|[\s>|])to=functions\.[A-Za-z_][\w.]*Úuser©ÚroleÚcontentr   r   ÚstrÚreturnúList[Dict[str, Any]]c               óÐ  — |dk    rdnd}t          | t          ¦  «        sg S g }| D �]¾}t          |t          ¦  «        r|r|                     ||dœ¦  «         Œ3t          |t          ¦  «        sŒIt          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         }|dv rE|                     d¦  «        }t          |t          ¦  «        r|r|                     ||dœ¦  «         ŒÚ|d	v rà|                     d
¦  «        }|                     d¦  «        }t          |t          ¦  «        r,|                     d¦  «        }	|                     d|¦  «        }n|}	t          |	t          ¦  «        r|	s�Œdd|	dœ}
t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |
d<   |                     |
¦  «         �ŒÀ|S )uÕ  Convert chat-style multimodal content to Responses API input parts.

    Input:  ``[{"type":"text"|"image_url", ...}]`` (native OpenAI Chat format)
    Output: ``[{"type":"input_text"|"output_text"|"input_image", ...}]`` (Responses format)

    The ``role`` parameter controls the text content type:
    - ``"user"`` (default) â†’ ``"input_text"``
    - ``"assistant"`` â†’ ``"output_text"``

    The Responses API rejects ``input_text`` inside assistant messages and
    ``output_text`` inside user messages, so callers MUST pass the correct
    role for the message being converted.

    Returns an empty list when ``content`` is not a list or contains no
    recognized parts â€” callers fall back to the string path.
    Ú	assistantÚoutput_textÚ
input_text©ÚtypeÚtextr   Ú >   r   r   r   r   >   Ú	image_urlÚinput_imager   ÚdetailÚurlr   ©r   r   )Ú
isinstanceÚlistr   ÚappendÚdictÚgetÚstripÚlower)r   r   Ú	text_typeÚ	convertedÚpartÚptyper   Ú	image_refr   r   Ú
image_parts              ú?/home/div/.hermes/hermes-agent/agent/codex_responses_adapter.pyÚ _chat_content_to_responses_partsr,   /   s   € ð" "&¨Ò!4Ð!4��¸,€IÝ�g�tÑ$Ô$ð Øˆ	Ø&(€IØð )ñ )ˆÝ�d�CÑ Ô ð 	Øð DØ× Ò ¨)¸TÐ!BÐ!BÑCÔCÐCØÝ˜$¥Ñ%Ô%ð 	ØÝ�D—H’H˜VÑ$Ô$Ð*¨Ñ+Ô+×1Ò1Ñ3Ô3×9Ò9Ñ;Ô;ˆØÐ9Ð9Ð9Ø—8’8˜FÑ#Ô#ˆDÝ˜$¥Ñ$Ô$ð D¨ð DØ× Ò ¨)¸TÐ!BÐ!BÑCÔCÐCØØÐ0Ð0Ð0ØŸš Ñ-Ô-ˆIØ—X’X˜hÑ'Ô'ˆFÝ˜)¥TÑ*Ô*ð  Ø—m’m EÑ*Ô*�Ø"Ÿš x°Ñ8Ô8��à�Ý˜c¥3Ñ'Ô'ð ¨sð ÙØ2?ÈcÐ)RÐ)RˆJÝ˜&¥#Ñ&Ô&ð 6¨6¯<ª<©>¬>ð 6Ø'-§|¢|¡~¤~�
˜8Ñ$Ø×Ò˜ZÑ(Ô(Ð(ùØÐó    c                óú  — | €dS t          | t          ¦  «        r| S t          | t          ¦  «        �r*g }d}| D ]Ü}t          |t          ¦  «        r|r|                     |¦  «         Œ/t          |t          ¦  «        sŒEt          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         }|dv rB|                     d¦  «        }t          |t          ¦  «        r|r|                     |¦  «         ŒÓ|dv r|dz  }ŒÝd	                     |¦  «                             ¦   «         }|rd
|› d|dk    rdnd› d�}|r|› d	|› �n|}|S 	 t          | ¦  «        S # t          $ r Y dS w xY w)u¹  Return a short text summary of a user message for logging/trajectory.

    Multimodal messages arrive as a list of ``{type:"text"|"image_url", ...}``
    parts from the API server.  Logging, spinner previews, and trajectory
    files all want a plain string â€” this helper extracts the first chunk of
    text and notes any attached images.  Returns an empty string for empty
    lists and ``str(content)`` for unexpected scalar types.
    Nr   r   r   >   r   r   r   r   >   r   r   é   Ú Ú[z imageÚsÚ])
r   r   r   r    r!   r"   r#   r$   ÚjoinÚ	Exception)r   Ú	text_bitsÚimage_countr'   r(   r   ÚsummaryÚnotes           r+   Ú_summarize_user_message_for_logr:   b   sÎ  € ð €ØˆrÝ�'�3ÑÔð ØˆÝ�'�4Ñ Ô ñ Ø!ˆ	ØˆØð 	!ð 	!ˆDÝ˜$¥Ñ$Ô$ð Øð +Ø×$Ò$ TÑ*Ô*Ð*ØÝ˜d¥DÑ)Ô)ð ØÝ˜Ÿš Ñ(Ô(Ð.¨BÑ/Ô/×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?ˆEØÐ=Ð=Ð=Ø—x’x Ñ'Ô'�Ý˜d¥CÑ(Ô(ð +¨Tð +Ø×$Ò$ TÑ*Ô*Ð*øØÐ6Ð6Ð6Ø˜qÑ �øØ—(’(˜9Ñ%Ô%×+Ò+Ñ-Ô-ˆØð 	?ØL�{ÐLÐL°ÀÒ1AÐ1A¨#¨#ÀrÐLÐLÐLˆDØ-4Ð>˜Ð)Ð) Ð)Ð)Ð)¸$ˆGØˆðÝ�7‰|Œ|ÐøÝð ð ð Øˆrˆrðøøøs   ÅE, Å,
E:Å9E:Úfn_nameÚ	argumentsÚindexÚintc                ó¦   — | › d|› d|› �}t          j        |                     dd¬¦  «        ¦  «                             ¦   «         dd…         }d|› �S )u  Generate a deterministic call_id from tool call content.

    Used as a fallback when the API doesn't provide a call_id.
    Deterministic IDs prevent cache invalidation â€” random UUIDs would
    make every API call's prefix unique, breaking OpenAI's prompt cache.
    ú:úutf-8Úreplace)ÚerrorsNé   Úcall_)ÚhashlibÚsha256ÚencodeÚ	hexdigest)r;   r<   r=   ÚseedÚdigests        r+   Ú_deterministic_call_idrL   �   sd   € ð Ð+Ð+˜	Ð+Ð+ EÐ+Ð+€DÝŒ^˜DŸKšK¨¸	˜KÑBÔBÑCÔC×MÒMÑOÔOÐPSÐQSÐPSÔT€FØ�6ÐÐÐr-   Úraw_idú#tuple[Optional[str], Optional[str]]c                ó4  — t          | t          ¦  «        sdS |                      ¦   «         }|sdS d|v rI|                     dd¦  «        \  }}|                     ¦   «         pd}|                     ¦   «         pd}||fS |                     d¦  «        rd|fS |dfS )z8Split a stored tool id into (call_id, response_item_id).)NNÚ|r/   NÚfc_)r   r   r#   ÚsplitÚ
startswith)rM   ÚvalueÚcall_idÚresponse_item_ids       r+   Ú_split_responses_tool_idrW   ›   s´   € å�f�cÑ"Ô"ð ØˆzØ�LŠL‰NŒN€EØð ØˆzØ
ˆe€|€|Ø$)§K¢K°°QÑ$7Ô$7Ñ!ˆÐ!Ø—-’-‘/”/Ð) TˆØ+×1Ò1Ñ3Ô3Ð;°tÐØÐ(Ð(Ð(Ø×Ò˜ÑÔð Ø�Uˆ{ÐØ�$ˆ;Ðr-   rU   rV   úOptional[str]c                ór  — t          |t          ¦  «        r+|                     ¦   «         }|                     d¦  «        r|S | pd                     ¦   «         }|                     d¦  «        r|S |                     d¦  «        r:t	          |¦  «        t	          d¦  «        k    rd|t	          d¦  «        d…         › �S t          j        dd|¦  «        }|                     d¦  «        r|S |                     d¦  «        r:t	          |¦  «        t	          d¦  «        k    rd|t	          d¦  «        d…         › �S |rd|dd…         › �S |p(t          |pd¦  «        pt          j        ¦   «         j	        }t          j        |                     d¦  «        ¦  «                             ¦   «         dd…         }d|› �S )	zCBuild a valid Responses `function_call.id` (must start with `fc_`).rQ   r   rE   Nz[^A-Za-z0-9_-]é0   rA   é   )r   r   r#   rS   ÚlenÚreÚsubÚuuidÚuuid4ÚhexrF   Úsha1rH   rI   )rU   rV   Ú	candidateÚsourceÚ	sanitizedrJ   rK   s          r+   Ú"_derive_responses_function_call_idrf   ¬   s¶  € õ
 Ð"¥CÑ(Ô(ð Ø$×*Ò*Ñ,Ô,ˆ	Ø×Ò Ñ&Ô&ð 	ØÐàˆm˜×"Ò"Ñ$Ô$€FØ×Ò˜ÑÔð ØˆØ×Ò˜Ñ!Ô!ð -¥c¨&¡k¤kµC¸±L´LÒ&@Ð&@Ø,�V�C ™LœL˜M˜MÔ*Ð,Ð,Ð,å”Ð(¨"¨fÑ5Ô5€IØ×Ò˜EÑ"Ô"ð ØÐØ×Ò˜GÑ$Ô$ð 0­¨Y©¬½#¸g¹,¼,Ò)FÐ)FØ/�Y�s 7™|œ|˜}˜}Ô-Ð/Ð/Ð/Øð &Ø%�Y˜s ˜s”^Ð%Ð%Ð%àÐD•SÐ)Ð/¨RÑ0Ô0ÐDµD´J±L´LÔ4D€DÝŒ\˜$Ÿ+š+ gÑ.Ô.Ñ/Ô/×9Ò9Ñ;Ô;¸C¸R¸CÔ@€FØ�ˆ>ˆ>Ðr-   ÚtoolsúOptional[List[Dict[str, Any]]]c                ó„  — | sdS g }| D ]´}t          |t          ¦  «        r|                     di ¦  «        ni }|                     d¦  «        }t          |t          ¦  «        r|                     ¦   «         sŒn|                     d||                     dd¦  «        d|                     ddi d	œ¦  «        d
œ¦  «         Œµ|pdS )zIConvert chat-completions tool schemas to Responses function-tool schemas.NÚfunctionÚnameÚdescriptionr   FÚ
parametersÚobject)r   Ú
properties©r   rk   rl   Ústrictrm   )r   r!   r"   r   r#   r    )rg   r&   ÚitemÚfnrk   s        r+   Ú_responses_toolsrt   Í   så   € àð Øˆtà&(€IØð ð ˆÝ)3°D½$Ñ)?Ô)?ÐGˆT�XŠX�j "Ñ%Ô%Ð%ÀRˆØ�vŠv�f‰~Œ~ˆÝ˜$¥Ñ$Ô$ð 	¨D¯JªJ©L¬Lð 	ØØ×ÒØØØŸ6š6 -°Ñ4Ô4ØØŸ&š& ¸ÐPRÐ/SÐ/SÑTÔTð
ð 
ñ 	ô 	ð 	ð 	ð Ð˜Ðr-   >   Ú	completedÚ
incompleteÚin_progressru   )ÚdefaultrT   rx   c               óâ   — t          | t          ¦  «        rY|                      ¦   «                              ¦   «                              dd¦  «                             dd¦  «        }|t
          v r|S |S )a%  Normalize a Responses assistant message status for replay.

    The API accepts completed/incomplete/in_progress on replayed assistant
    output messages.  Preserve those exactly (modulo case/hyphen spelling) so
    incomplete Codex continuation turns don't get falsely marked completed.
    Ú-Ú_r0   )r   r   r#   r$   rB   Ú_RESPONSE_MESSAGE_STATUSES)rT   rx   Ústatuss      r+   Ú#_normalize_responses_message_statusr~   é   se   € õ �%�ÑÔð Ø—’‘”×$Ò$Ñ&Ô&×.Ò.¨s°CÑ8Ô8×@Ò@ÀÀcÑJÔJˆØÕ/Ð/Ð/ØˆMØ€Nr-   Úmessagesc                óæ  ‡!— g }t          ¦   «         }| D �]Û}t          |t          ¦  «        sŒ|                     d¦  «        }|dk    rŒ5|dv �r§|                     dd¦  «        }t          |t          ¦  «        r=t          ||¬¦  «        }|dk    rdnd	Š!d                     ˆ!fd
„|D ¦   «         ¦  «        }ng }|�t          |¦  «        nd}|dk    �rî|                     d¦  «        }d}	t          |t          ¦  «        r—|D ]”}
t          |
t          ¦  «        r}|
                     d¦  «        rh|
                     d¦  «        }|r||v rŒHd„ |
                     ¦   «         D ¦   «         }| 	                    |¦  «         |r| 
                    |¦  «         d}	Œ•|                     d¦  «        }d}t          |t          ¦  «        �r|D �]}t          |t          ¦  «        sŒ|                     d¦  «        dk    s|                     d¦  «        dk    rŒL|                     d¦  «        }t          |t          ¦  «        sŒwg }|D ]©}t          |t          ¦  «        sŒt          |                     d¦  «        pd¦  «                             ¦   «         }|dvrŒS|                     dd¦  «        }|€d}t          |t          ¦  «        st          |¦  «        }| 	                    d|dœ¦  «         Œª|s�Œ)ddt          |                     d¦  «        ¦  «        |dœ}|                     d¦  «        }t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d<   |                     d¦  «        }t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d<   | 	                    |¦  «         |dz  }�Œ|dk    rnb|r| 	                    d|dœ¦  «         nG|                     ¦   «         r| 	                    d|dœ¦  «         n|	r| 	                    dddœ¦  «         |                     d¦  «        }t          |t          ¦  «        �rP|D �]L}t          |t          ¦  «        sŒ|                     di ¦  «        }|                     d ¦  «        }t          |t          ¦  «        r|                     ¦   «         sŒnt          |                     d¦  «        ¦  «        \  }}|                     d!¦  «        }t          |t          ¦  «        r|                     ¦   «         s|}t          |t          ¦  «        r|                     ¦   «         s¦t          |t          ¦  «        rP|                     d"¦  «        r;t          |¦  «        t          d"¦  «        k    rd#|t          d"¦  «        d…         › �}nAt          |                     d$d%¦  «        ¦  «        }t!          ||t          |¦  «        ¦  «        }|                     ¦   «         }|                     d$d%¦  «        }t          |t          ¦  «        rt#          j        |d¬&¦  «        }n$t          |t          ¦  «        st          |¦  «        }|                     ¦   «         pd%}| 	                    d'|||d(œ¦  «         �ŒN�Œ¬|r| 	                    ||dœ¦  «         n| 	                    ||dœ¦  «         �Œá|d)k    rô|                     d*¦  «        }t          |¦  «        \  }} t          |t          ¦  «        r|                     ¦   «         s=t          |t          ¦  «        r(|                     ¦   «         r|                     ¦   «         }t          |t          ¦  «        r|                     ¦   «         s�ŒŸ| 	                    d+|t          |                     dd¦  «        pd¦  «        d,œ¦  «         �ŒÝ|S )-z>Convert internal chat-style messages to Responses input items.r   Úsystem>   r
   r   r   r   r   r   r   r   c              3  óv   •K  — | ]3}|                      d ¦  «        ‰k    ¯|                      dd¦  «        V — Œ4dS )r   r   r   N)r"   )Ú.0Úpr%   s     €r+   ú	<genexpr>z4_chat_messages_to_responses_input.<locals>.<genexpr>  sO   øè è € ð 'ð 'Ø*+ÀÇÂÀfÁÄÐQZÒ@ZÐ@Z�A—E’E˜& "Ñ%Ô%Ð@ZÐ@ZÐ@ZÐ@Zð'ð 'r-   NÚcodex_reasoning_itemsFÚencrypted_contentÚidc                ó&   — i | ]\  }}|d k    ¯||“ŒS )rˆ   © )rƒ   ÚkÚvs      r+   ú
<dictcomp>z5_chat_messages_to_responses_input.<locals>.<dictcomp>  s#   € Ð*TÐ*TÐ*T±D°A°qÈ!ÈtÊ)È)¨1¨aÈ)È)È)r-   TÚcodex_message_itemsr   r   Úmessage>   r   r   r   r   r}   ©r   r   r}   r   Úphaser/   ©r   r   Ú
tool_callsrj   rk   rU   rQ   rE   r<   ú{}©Úensure_asciiÚfunction_call©r   rU   rk   r<   ÚtoolÚtool_call_idÚfunction_call_output©r   rU   Úoutput)Úsetr   r!   r"   r   r,   r4   r   Úitemsr    Úaddr#   r~   rW   rS   r\   rL   ÚjsonÚdumps)"r   rŸ   Úseen_item_idsÚmsgr   r   Úcontent_partsÚcontent_textÚcodex_reasoningÚhas_codex_reasoningÚriÚitem_idÚreplay_itemrŽ   Úreplayed_message_itemsÚraw_itemÚraw_content_partsÚnormalized_content_partsr'   Ú	part_typer   r‘   r“   Útcrs   r;   Úembedded_call_idÚembedded_response_item_idrU   Ú	_raw_argsr<   Úraw_tool_call_idr{   r%   s"                                    @r+   Ú!_chat_messages_to_responses_inputr¶   ÷   sV  ø€ à"$€EÝ™œ€Màð eñ eˆÝ˜#�tÑ$Ô$ð 	ØØ�wŠw�v‰ŒˆØ�8ÒÐØàÐ(Ð(Ñ(Ø—g’g˜i¨Ñ,Ô,ˆGÝ˜'¥4Ñ(Ô(ð KÝ @ÀÈtÐ TÑ TÔ T�Ø-1°[Ò-@Ð-@˜M˜MÀl�	Ø!Ÿwšwð 'ð 'ð 'ð 'Ø/<ð'ñ 'ô 'ñ  ô  ��ð !#�Ø/6Ð/B�s 7™|œ|˜|È�à�{Ò"Ñ"ð #&§'¢'Ð*AÑ"BÔ"B�Ø&+Ð#Ý˜o­tÑ4Ô4ð 7Ø-ð 7ð 7˜Ý% b­$Ñ/Ô/ð 7°B·F²FÐ;NÑ4OÔ4Oð 7Ø&(§f¢f¨T¡l¤l˜GØ&ð )¨7°mÐ+CÐ+CØ (ð
 +UÐ*T¸B¿HºH¹J¼JÐ*TÑ*TÔ*T˜KØ!ŸLšL¨Ñ5Ô5Ð5Ø&ð ;Ø -× 1Ò 1°'Ñ :Ô :Ð :Ø26Ð/øð '*§g¢gÐ.CÑ&DÔ&DÐ#Ø)*Ð&ÝÐ1µ4Ñ8Ô8ñ (4Ø$7ð '4ñ '4˜Ý)¨(µDÑ9Ô9ð %Ø$Ø#Ÿ<š<¨Ñ/Ô/°9Ò<Ð<ÀÇÂÈVÑ@TÔ@TÐXcÒ@cÐ@cØ$Ø,4¯LªL¸Ñ,CÔ,CÐ)Ý)Ð*;½TÑBÔBð %Ø$à35Ð0Ø$5ð cð c˜DÝ#-¨dµDÑ#9Ô#9ð )Ø (Ý(+¨D¯HªH°VÑ,<Ô,<Ð,BÀÑ(CÔ(C×(IÒ(IÑ(KÔ(K˜IØ(Ð0GÐGÐGØ (Ø#'§8¢8¨F°BÑ#7Ô#7˜DØ#˜|Ø') Ý#-¨dµCÑ#8Ô#8ð 1Ý'*¨4¡y¤y Ø4×;Ò;À]Ð\`Ð<aÐ<aÑbÔbÐbÐbà7ð %Ù$ð %.Ø$/Ý&IÈ(Ï,Ê,ÐW_ÑJ`ÔJ`Ñ&aÔ&aØ'?ð	'ð '˜ð #+§,¢,¨tÑ"4Ô"4˜Ý% g­sÑ3Ô3ð @¸¿º¹¼ð @Ø07·²±´˜K¨Ñ-Ø (§¢¨WÑ 5Ô 5˜Ý% e­SÑ1Ô1ð A°e·k²k±m´mð AØ38·;²;±=´=˜K¨Ñ0ØŸš [Ñ1Ô1Ð1Ø.°!Ñ3Ð.Ñ.à)¨AÒ-Ð-ØØ"ð 
GØ—L’L¨+À-Ð!PÐ!PÑQÔQÐQÐQØ!×'Ò'Ñ)Ô)ð GØ—L’L¨+À,Ð!OÐ!OÑPÔPÐPÐPØ(ð Gð —L’L¨+À"Ð!EÐ!EÑFÔFÐFà ŸWšW \Ñ2Ô2�
Ý˜j­$Ñ/Ô/ñ 'Ø(ð &ñ &˜Ý)¨"­dÑ3Ô3ð %Ø$ØŸVšV J°Ñ3Ô3˜Ø"$§&¢&¨¡.¤.˜Ý)¨'µ3Ñ7Ô7ð %¸w¿}º}¹¼ð %Ø$åF^ØŸFšF 4™LœLñGô GÑCÐ(Ð*Cð #%§&¢&¨Ñ"3Ô"3˜Ý)¨'µ3Ñ7Ô7ð 7¸w¿}º}¹¼ð 7Ø&6˜GÝ)¨'µ3Ñ7Ô7ð 	a¸w¿}º}¹¼ð 	aå *Ð+DÅcÑ JÔ Jðaà$=×$HÒ$HÈÑ$OÔ$Oðaõ %(Ð(AÑ$BÔ$BÅSÈÁZÄZÒ$OÐ$Oà*ZÐ2KÍCÐPUÉJÌJÈKÈKÔ2XÐ*ZÐ*Z  å,/°·²°{ÀDÑ0IÔ0IÑ,JÔ,J 	Ý*@ÀÈ)ÕUXÐY^ÑU_ÔU_Ñ*`Ô*` Ø")§-¢-¡/¤/˜à$&§F¢F¨;¸Ñ$=Ô$=˜	Ý% iµÑ6Ô6ð 7Ý(,¬
°9È5Ð(QÑ(QÔ(Q˜I˜IÝ!+¨IµsÑ!;Ô!;ð 7Ý(+¨I©¬˜IØ$-§O¢OÑ$5Ô$5Ð$=¸˜	àŸšØ$3Ø'.Ø$+Ø)2ð	&ð &ñ ô ð ñ ñ ð ð FØ—’ d°}ÐEÐEÑFÔFÐFÐFà—’ d°|ÐDÐDÑEÔEÐEÙà�6Š>ˆ>Ø"Ÿwšw ~Ñ6Ô6ÐÝ1Ð2BÑCÔC‰JˆG�QÝ˜g¥sÑ+Ô+ð 7°7·=²=±?´?ð 7ÝÐ.µÑ4Ô4ð 7Ð9I×9OÒ9OÑ9QÔ9Qð 7Ø.×4Ò4Ñ6Ô6�GÝ˜g¥sÑ+Ô+ð °7·=²=±?´?ð ÙØ�LŠLØ.Ø"Ý˜cŸgšg i°Ñ4Ô4Ð:¸Ñ;Ô;ðð ñ ô ð ùð €Lr-   Ú	raw_itemsc                óZ  — t          | t          ¦  «        st          d¦  «        ‚g }t          ¦   «         }t	          | ¦  «        D �]e\  }}t          |t
          ¦  «        st          d|› d�¦  «        ‚|                     d¦  «        }|dk    �r^|                     d¦  «        }|                     d¦  «        }t          |t          ¦  «        r|                     ¦   «         st          d|› d�¦  «        ‚t          |t          ¦  «        r|                     ¦   «         st          d|› d	�¦  «        ‚|                     d
d¦  «        }t          |t
          ¦  «        rt          j
        |d¬¦  «        }n$t          |t          ¦  «        st          |¦  «        }|                     ¦   «         pd}|                     d|                     ¦   «         |                     ¦   «         |dœ¦  «         �Œ¨|dk    r¼|                     d¦  «        }t          |t          ¦  «        r|                     ¦   «         st          d|› d�¦  «        ‚|                     dd¦  «        }	|	€d}	t          |	t          ¦  «        st          |	¦  «        }	|                     d|                     ¦   «         |	dœ¦  «         �Œj|dk    rÄ|                     d¦  «        }
t          |
t          ¦  «        r˜|
r–|                     d¦  «        }t          |t          ¦  «        r|r||v r�ŒÎ|                     |¦  «         d|
dœ}|                     d¦  «        }t          |t          ¦  «        r||d<   ng |d<   |                     |¦  «         �Œ4|dk    �r2|                     d¦  «        }|dk    rt          d|› d�¦  «        ‚|                     d¦  «        }t          |t          ¦  «        st          d|› d�¦  «        ‚g }t	          |¦  «        D ]¸\  }}t          |t
          ¦  «        st          d|› d|› d�¦  «        ‚|                     d¦  «        }|d vrt          d|› d|› d!|›d"�¦  «        ‚|                     d#d¦  «        }|€d}t          |t          ¦  «        st          |¦  «        }|                     d$|d%œ¦  «         Œ¹|st          d|› d&�¦  «        ‚ddt          |                     d'¦  «        ¦  «        |d(œ}|                     d¦  «        }t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d<   |                     d)¦  «        }t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d)<   |                     |¦  «         �Œm|                     d¦  «        }|d*v �rÇ|                     dd¦  «        }|€d}t          |t          ¦  «        �rY|dk    rd$nd+}g }t	          |¦  «        D �]"\  }}t          |t          ¦  «        r|r|                     ||d%œ¦  «         Œ6t          |t
          ¦  «        st          d|› d,|› d-�¦  «        ‚t          |                     d¦  «        pd¦  «                             ¦   «                              ¦   «         }|d.v rV|                     d#d¦  «        }t          |t          ¦  «        st          |pd¦  «        }|                     ||d%œ¦  «         �Œ|d/v rñ|                     d0d¦  «        }|                     d1¦  «        }t          |t
          ¦  «        r-|                     d2d¦  «        }|                     d1|¦  «        }n|}t          |t          ¦  «        st          |pd¦  «        }d3|d4œ}t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d1<   |                     |¦  «         �Œøt          d|› d,|› d!|                     d¦  «        ›d"�¦  «        ‚|                     ||d5œ¦  «         �Œt          |t          ¦  «        st          |¦  «        }|                     ||d5œ¦  «         �ŒNt          d|› d6|›d7|›d8�¦  «        ‚|S )9Nz4Codex Responses input must be a list of input items.zCodex Responses input[ú] must be an object.r   r—   rU   rk   z#] function_call is missing call_id.z ] function_call is missing name.r<   r”   Fr•   r˜   r›   z*] function_call_output is missing call_id.r�   r   rœ   Ú	reasoningr‡   rˆ   ©r   r‡   r8   r�   r   r   z+] message items must have role='assistant'.r   z&] message item must have content list.z] message content[>   r   r   ú] has unsupported type ú.r   r   r   z3] message item must contain at least one text part.r}   r�   r‘   >   r
   r   r   z
].content[z] must be an object or string.>   r   r   r   >   r   r   r   r   r   r   r   r’   z#] has unsupported item shape (type=z, role=z).)r   r   Ú
ValueErrorrž   Ú	enumerater!   r"   r   r#   r¡   r¢   r    r    r~   r$   )r·   Ú
normalizedÚseen_idsÚidxrr   Ú	item_typerU   rk   r<   r�   Ú	encryptedrª   Úreasoning_itemr8   r   r   Únormalized_contentÚpart_idxr'   r°   r   Únormalized_itemr‘   r%   Ú	validatedr(   r)   r   r   r*   s                                 r+   Ú_preflight_codex_input_itemsrÊ   ª  sN	  € Ý�i¥Ñ&Ô&ð QÝÐOÑPÔPÐPà')€JÝ‘E”E€HÝ˜yÑ)Ô)ð g
ñ g
‰	ˆˆTÝ˜$¥Ñ%Ô%ð 	QÝÐO°cÐOÐOÐOÑPÔPÐPà—H’H˜VÑ$Ô$ˆ	Ø˜Ò'Ñ'Ø—h’h˜yÑ)Ô)ˆGØ—8’8˜FÑ#Ô#ˆDÝ˜g¥sÑ+Ô+ð d°7·=²=±?´?ð dÝ Ð!b¸#Ð!bÐ!bÐ!bÑcÔcÐcÝ˜d¥CÑ(Ô(ð a°·
²
±´ð aÝ Ð!_¸#Ð!_Ð!_Ð!_Ñ`Ô`Ð`àŸš ¨dÑ3Ô3ˆIÝ˜)¥TÑ*Ô*ð +Ý œJ y¸uÐEÑEÔE�	�	Ý 	­3Ñ/Ô/ð +Ý 	™NœN�	Ø!ŸšÑ)Ô)Ð1¨TˆIà×Òà+Ø&Ÿ}š}™œØ ŸJšJ™LœLØ!*ð	ð ñô ð ñ àÐ.Ò.Ð.Ø—h’h˜yÑ)Ô)ˆGÝ˜g¥sÑ+Ô+ð k°7·=²=±?´?ð kÝ Ð!i¸#Ð!iÐ!iÐ!iÑjÔjÐjØ—X’X˜h¨Ñ+Ô+ˆFØˆ~Ø�Ý˜f¥cÑ*Ô*ð %Ý˜V™œ�à×Òà2Ø&Ÿ}š}™œØ$ðð ñô ð ñ à˜Ò#Ð#ØŸšÐ!4Ñ5Ô5ˆIÝ˜)¥SÑ)Ô)ð 2¨ið 2ØŸ(š( 4™.œ.�Ý˜g¥sÑ+Ô+ð *°ð *Ø (Ð*Ð*Ù Ø—L’L Ñ)Ô)Ð)Ø*5ÈIÐ!VÐ!V�ð
 Ÿ(š( 9Ñ-Ô-�Ý˜g¥tÑ,Ô,ð 3Ø07�N 9Ñ-Ð-à02�N 9Ñ-Ø×!Ò! .Ñ1Ô1Ð1Ùà˜	Ò!Ñ!Ø—8’8˜FÑ#Ô#ˆDØ�{Ò"Ð"Ý Ð!j¸#Ð!jÐ!jÐ!jÑkÔkÐkØ—h’h˜yÑ)Ô)ˆGÝ˜g¥tÑ,Ô,ð gÝ Ð!e¸#Ð!eÐ!eÐ!eÑfÔfÐfØ!#ÐÝ"+¨GÑ"4Ô"4ð Qð Q‘�˜$Ý! $­Ñ-Ô-ð Ý$Øf°ÐfÐfÈÐfÐfÐfñô ð ð !ŸHšH VÑ,Ô,�	ØÐ$;Ð;Ð;Ý$Øw°ÐwÐwÈÐwÐwÐirÐwÐwÐwñô ð ð —x’x ¨Ñ+Ô+�Ø�<Ø�DÝ! $­Ñ,Ô,ð %Ý˜t™9œ9�DØ"×)Ò)°=È$Ð*OÐ*OÑPÔPÐPÐPØ%ð tÝ Ð!r¸#Ð!rÐ!rÐ!rÑsÔsÐsà!Ø#Ý=¸d¿hºhÀxÑ>PÔ>PÑQÔQØ-ð	/ð /ˆOð —h’h˜t‘n”nˆGÝ˜'¥3Ñ'Ô'ð 8¨G¯MªM©O¬Oð 8Ø(/¯ª©¬� Ñ%Ø—H’H˜WÑ%Ô%ˆEÝ˜%¥Ñ%Ô%ð 9¨%¯+ª+©-¬-ð 9Ø+0¯;ª;©=¬=� Ñ(Ø×Ò˜oÑ.Ô.Ð.Ùà�xŠx˜ÑÔˆØÐ(Ð(Ñ(Ø—h’h˜y¨"Ñ-Ô-ˆGØˆØ�Ý˜'¥4Ñ(Ô(ñ *ð .2°[Ò-@Ð-@˜M˜MÀl�	Ø24�	Ý&/°Ñ&8Ô&8ð  ñ  ‘N�H˜dÝ! $­Ñ,Ô,ð !Øð PØ%×,Ò,°iÈÐ-NÐ-NÑOÔOÐOØ Ý% d­DÑ1Ô1ð Ý(Øl°SÐlÐlÀHÐlÐlÐlñô ð õ   §¢¨Ñ 0Ô 0Ð 6°BÑ7Ô7×=Ò=Ñ?Ô?×EÒEÑGÔG�EØÐ EÐEÐEØ#Ÿxšx¨°Ñ3Ô3˜Ý)¨$µÑ4Ô4ð 3Ý#& t z¨r¡?¤?˜DØ!×(Ò(°)ÀTÐ)JÐ)JÑKÔKÐKÑKØÐ">Ð>Ð>Ø$(§H¢H¨[¸"Ñ$=Ô$=˜	Ø!%§¢¨(Ñ!3Ô!3˜Ý% iµÑ6Ô6ð ,Ø"+§-¢-°°rÑ":Ô":˜CØ%.§]¢]°8¸VÑ%DÔ%D˜F˜Fà"+˜CÝ)¨#­sÑ3Ô3ð 1Ý"% c i¨R¡.¤.˜CØ>KÐZ]Ð5^Ð5^˜
Ý% f­cÑ2Ô2ð B°v·|²|±~´~ð BØ39·<²<±>´>˜J xÑ0Ø!×(Ò(¨Ñ4Ô4Ð4Ñ4å(Øz°SÐzÐzÀHÐzÐzÐei×emÒemÐntÑeuÔeuÐzÐzÐzñô ð ð ×!Ò!¨4¸IÐ"FÐ"FÑGÔGÐGÙÝ˜g¥sÑ+Ô+ð 'Ý˜g™,œ,�à×Ò t¸Ð@Ð@ÑAÔAÐAÙåØk SÐkÐkÈYÐkÐkÐaeÐkÐkÐkñ
ô 
ð 	
ð Ðr-   F)Úallow_streamÚ
api_kwargsrË   ÚboolúDict[str, Any]c          	     óp  ‡ ‡— t          ‰ t          ¦  «        st          d¦  «        ‚h d£}ˆ fd„|D ¦   «         }|r3t          dd                     t	          |¦  «        ¦  «        › d�¦  «        ‚‰                      d¦  «        }t          |t          ¦  «        r|                     ¦   «         st          d¦  «        ‚|                     ¦   «         }‰                      d	¦  «        }|€d
}t          |t          ¦  «        st          |¦  «        }|                     ¦   «         pt          }t          ‰                      d¦  «        ¦  «        }‰                      d¦  «        }d }|��Út          |t          ¦  «        st          d¦  «        ‚g }t          |¦  «        D �]£\  }	}
t          |
t          ¦  «        st          d|	› d�¦  «        ‚|
                     d¦  «        dk    r)t          d|	› d|
                     d¦  «        ›d�¦  «        ‚|
                     d¦  «        }|
                     d¦  «        }t          |t          ¦  «        r|                     ¦   «         st          d|	› d�¦  «        ‚t          |t          ¦  «        st          d|	› d�¦  «        ‚|
                     dd
¦  «        }|€d
}t          |t          ¦  «        st          |¦  «        }|
                     dd¦  «        }t          |t          ¦  «        st          |¦  «        }|                     d|                     ¦   «         |||dœ¦  «         �Œ¥‰                      dd¦  «        }|durt          d¦  «        ‚h d£Š|||ddœ}|�||d<   ‰                      d¦  «        }t          |t          ¦  «        r||d<   ‰                      d ¦  «        }t          |t          ¦  «        r||d <   ‰                      d!¦  «        }t          |t          ¦  «        r+|                     ¦   «         r|                     ¦   «         |d!<   ‰                      d"¦  «        }t          |t          t          f¦  «        r|d#k    rt          |¦  «        |d"<   ‰                      d$¦  «        }t          |t          t          f¦  «        rt          |¦  «        |d$<   d%D ]}‰                      |¦  «        }|�|||<   Œ‰                      d&¦  «        }|�¦t          |t          ¦  «        st          d'¦  «        ‚i }|                     ¦   «         D ]d\  }}t          |t          ¦  «        r|                     ¦   «         st          d(¦  «        ‚|€Œ@t          |¦  «        ||                     ¦   «         <   Œe|r||d&<   |rI‰                      d)¦  «        }|�|d*urt          d+¦  «        ‚|d*u rd*|d)<   ‰                     d)¦  «         nd)‰ v rt          d,¦  «        ‚t	          ˆfd-„‰ D ¦   «         ¦  «        }|r&t          d.d                     |¦  «        › d�¦  «        ‚|S )/Nz'Codex Responses request must be a dict.>   ÚinputÚmodelÚinstructionsc                ó   •— g | ]}|‰v¯|‘Œ	S rŠ   rŠ   )rƒ   ÚkeyrÌ   s     €r+   ú
<listcomp>z/_preflight_codex_api_kwargs.<locals>.<listcomp>e  s#   ø€ Ð@Ð@Ð@�s¨#°ZÐ*?Ð*?ˆsÐ*?Ð*?Ð*?r-   z3Codex Responses request missing required field(s): z, r½   rÑ   z;Codex Responses request 'model' must be a non-empty string.rÒ   r   rÐ   rg   z=Codex Responses request 'tools' must be a list when provided.zCodex Responses tools[r¹   r   rj   r¼   rk   rm   z] is missing a valid name.z] is missing valid parameters.rl   rq   Frp   Ústorez6Codex Responses contract requires 'store' to be false.>   rÐ   rÑ   rÖ   rg   Úincluderº   ÚtemperatureÚtool_choicerÒ   Úservice_tierÚextra_headersÚprompt_cache_keyÚmax_output_tokensÚparallel_tool_calls)rÑ   rÒ   rÐ   rÖ   rº   r×   rÚ   rÝ   r   rØ   )rÙ   rÞ   rÜ   rÛ   z:Codex Responses request 'extra_headers' must be an object.zGCodex Responses request 'extra_headers' keys must be non-empty strings.ÚstreamTz/Codex Responses 'stream' must be true when set.zKCodex Responses stream flag is only allowed in fallback streaming requests.c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S ©NrŠ   )rƒ   rÔ   Úallowed_keyss     €r+   r…   z._preflight_codex_api_kwargs.<locals>.<genexpr>â  s-   øè è € ÐMÐM °SÀÐ5LÐ5L˜Ð5LÐ5LÐ5LÐ5LÐMÐMr-   z2Codex Responses request has unsupported field(s): )r   r!   r¾   r4   Úsortedr"   r   r#   r	   rÊ   r   r¿   rÍ   r    r>   ÚfloatrŸ   r    )rÌ   rË   ÚrequiredÚmissingrÑ   rÒ   Únormalized_inputrg   Únormalized_toolsrÂ   r™   rk   rm   rl   rq   rÖ   rÀ   rº   r×   rÚ   rÝ   rØ   Úpassthrough_keyÚvalrÛ   Únormalized_headersrÔ   rT   rß   Ú
unexpectedrâ   s   `                             @r+   Ú_preflight_codex_api_kwargsrí   \  s»  øø€ õ
 �j¥$Ñ'Ô'ð DÝÐBÑCÔCÐCà1Ð1Ð1€HØ@Ð@Ð@Ð@˜hÐ@Ñ@Ô@€GØð nÝÐlÈtÏyÊyÕY_Ð`gÑYhÔYhÑOiÔOiÐlÐlÐlÑmÔmÐmà�NŠN˜7Ñ#Ô#€EÝ�e�SÑ!Ô!ð X¨¯ª©¬ð XÝÐVÑWÔWÐWØ�KŠK‰MŒM€Eà—>’> .Ñ1Ô1€LØÐØˆÝ�l¥CÑ(Ô(ð )Ý˜<Ñ(Ô(ˆØ×%Ò%Ñ'Ô'ÐAÕ+A€Lå3°J·N²NÀ7Ñ4KÔ4KÑLÔLÐà�NŠN˜7Ñ#Ô#€EØÐØÑÝ˜%¥Ñ&Ô&ð 	^ÝÐ\Ñ]Ô]Ð]ØÐÝ" 5Ñ)Ô)ð 	ñ 	‰IˆC�Ý˜d¥DÑ)Ô)ð UÝ Ð!S¸#Ð!SÐ!SÐ!SÑTÔTÐTØ�xŠx˜ÑÔ :Ò-Ð-Ý Ð!k¸#Ð!kÐ!kÐVZ×V^ÒV^Ð_eÑVfÔVfÐ!kÐ!kÐ!kÑlÔlÐlà—8’8˜FÑ#Ô#ˆDØŸš ,Ñ/Ô/ˆJÝ˜d¥CÑ(Ô(ð [°·
²
±´ð [Ý Ð!Y¸#Ð!YÐ!YÐ!YÑZÔZÐZÝ˜j­$Ñ/Ô/ð _Ý Ð!]¸#Ð!]Ð!]Ð!]Ñ^Ô^Ð^àŸ(š( =°"Ñ5Ô5ˆKØÐ"Ø �Ý˜k­3Ñ/Ô/ð /Ý! +Ñ.Ô.�à—X’X˜h¨Ñ.Ô.ˆFÝ˜f¥dÑ+Ô+ð &Ý˜f™œ�à×#Ò#à&Ø ŸJšJ™LœLØ#.Ø$Ø",ðð ñô ð ñ ð �NŠN˜7 EÑ*Ô*€EØ�EÐÐÝÐQÑRÔRÐRðð ð €Lð Ø$Ø!Øð	"ð "€Jð Ð#Ø.ˆ
�7Ñð —’˜{Ñ+Ô+€IÝ�)�TÑ"Ô"ð ,Ø"+ˆ
�;ÑØ�nŠn˜YÑ'Ô'€GÝ�'�4Ñ Ô ð (Ø 'ˆ
�9ÑØ—>’> .Ñ1Ô1€LÝ�,¥Ñ$Ô$ð :¨×);Ò);Ñ)=Ô)=ð :Ø%1×%7Ò%7Ñ%9Ô%9ˆ
�>Ñ"ð #ŸšÐ':Ñ;Ô;ÐÝÐ#¥c­5 \Ñ2Ô2ð AÐ7HÈ1Ò7LÐ7LÝ*-Ð.?Ñ*@Ô*@ˆ
Ð&Ñ'Ø—.’. Ñ/Ô/€KÝ�+¥¥U˜|Ñ,Ô,ð 7Ý$)¨+Ñ$6Ô$6ˆ
�=Ñ!ð Vð .ð .ˆØ�nŠn˜_Ñ-Ô-ˆØˆ?Ø*-ˆJ�Ñ'øà—N’N ?Ñ3Ô3€MØÐ Ý˜-­Ñ.Ô.ð 	[ÝÐYÑZÔZÐZØ-/ÐØ'×-Ò-Ñ/Ô/ð 	9ð 	9‰JˆC�Ý˜c¥3Ñ'Ô'ð l¨s¯yªy©{¬{ð lÝ Ð!jÑkÔkÐkØˆ}ØÝ.1°%©j¬jÐ˜sŸyšy™{œ{Ñ+Ð+Øð 	=Ø*<ˆJ�Ñ'àð hØ—’ Ñ)Ô)ˆØÐ &°Ð"4Ð"4ÝÐNÑOÔOÐOØ�Tˆ>ˆ>Ø#'ˆJ�xÑ Ø×Ò˜Ñ"Ô"Ð"Ð"Ø	�ZÐ	Ð	ÝÐfÑgÔgÐgåÐMÐMÐMÐM zÐMÑMÔMÑMÔM€JØð 
ÝØYÀÇÂÈ:ÑAVÔAVÐYÐYÐYñ
ô 
ð 	
ð Ðr-   rr   c                óT  — t          | dd¦  «        }t          |t          ¦  «        sdS g }|D ]U}t          |dd¦  «        }|dvrŒt          |dd¦  «        }t          |t          ¦  «        r|r|                     |¦  «         ŒVd                     |¦  «                             ¦   «         S )z<Extract assistant text from a Responses message output item.r   Nr   r   >   r   r   r   ©Úgetattrr   r   r   r    r4   r#   )rr   r   Úchunksr'   r(   r   s         r+   Ú_extract_responses_message_textrò   ï  s·   € å�d˜I tÑ,Ô,€GÝ�g�tÑ$Ô$ð Øˆrà€FØð  ð  ˆÝ˜˜f dÑ+Ô+ˆØÐ/Ð/Ð/ØÝ�t˜V TÑ*Ô*ˆÝ�d�CÑ Ô ð 	  Tð 	 Ø�MŠM˜$ÑÔÐøØ�7Š7�6‰?Œ?× Ò Ñ"Ô"Ð"r-   c                ó¤  — t          | dd¦  «        }t          |t          ¦  «        rmg }|D ]?}t          |dd¦  «        }t          |t          ¦  «        r|r|                     |¦  «         Œ@|r'd                     |¦  «                             ¦   «         S t          | dd¦  «        }t          |t          ¦  «        r|r|                     ¦   «         S dS )zAExtract a compact reasoning text from a Responses reasoning item.r8   Nr   Ú
r   rï   )rr   r8   rñ   r'   r   s        r+   Ú!_extract_responses_reasoning_textrõ      sÙ   € å�d˜I tÑ,Ô,€GÝ�'�4Ñ Ô ð -ØˆØð 	$ð 	$ˆDÝ˜4 ¨Ñ.Ô.ˆDÝ˜$¥Ñ$Ô$ð $¨ð $Ø—’˜dÑ#Ô#Ð#øØð 	-Ø—9’9˜VÑ$Ô$×*Ò*Ñ,Ô,Ð,Ý�4˜ Ñ&Ô&€DÝ�$�ÑÔð  ð Ø�zŠz‰|Œ|ÐØˆ2r-   Úresponseútuple[Any, str]c                ól  — t          | dd¦  «        }t          |t          ¦  «        r|sÁt          | dd¦  «        }t          |t          ¦  «        rŒ|                     ¦   «         rxt
                               dt          |                     ¦   «         ¦  «        ¦  «         t          dddt          d|                     ¦   «         ¬¦  «        g¬	¦  «        g}|| _	        nt          d
¦  «        ‚t          | dd¦  «        }t          |t          ¦  «        r'|                     ¦   «                              ¦   «         }nd}|dv rqt          | dd¦  «        }t          |t          ¦  «        r%|                     d¦  «        pt          |¦  «        }n|rt          |¦  «        nd|› d�}t          |¦  «        ‚g }g }g }g }	g }
|dv }d}d}|D �]K}t          |dd¦  «        }t          |dd¦  «        }t          |t          ¦  «        r'|                     ¦   «                              ¦   «         }nd}|dv rd}|dk    rät          |dd¦  «        }d}t          |t          ¦  «        r3|                     ¦   «                              ¦   «         }|dv rd}n|dv rd}t          |¦  «        }|rv|                     |¦  «         ddt!          |¦  «        d|dœgd	œ}t          |dd¦  «        }t          |t          ¦  «        r|r||d<   |r||d<   |	                     |¦  «         �ŒS|dk    �rt#          |¦  «        }|r|                     |¦  «         t          |dd¦  «        }t          |t          ¦  «        r¹|r·d|dœ}t          |dd¦  «        }t          |t          ¦  «        r|r||d<   t          |dd¦  «        }t          |t          ¦  «        rJg }|D ]@}t          |dd¦  «        }t          |t          ¦  «        r|                     d|dœ¦  «         ŒA||d<   |                     |¦  «         �Œa|dk    �rr|dv r�Œnt          |dd ¦  «        pd }t          |d!d"¦  «        }t          |t          ¦  «        st%          j        |d¬#¦  «        }t          |d$d¦  «        }t          |dd¦  «        } t)          | ¦  «        \  }!}"t          |t          ¦  «        r|                     ¦   «         r|n|!}#t          |#t          ¦  «        r|#                     ¦   «         st+          ||t          |
¦  «        ¦  «        }#|#                     ¦   «         }#t          | t          ¦  «        r| nd}$t-          |#|$¦  «        }$|
                     t          |#|#|$d%t          ||¬&¦  «        ¬'¦  «        ¦  «         �ŒÚ|d(k    �rjt          |dd ¦  «        pd }t          |d)d"¦  «        }t          |t          ¦  «        st%          j        |d¬#¦  «        }t          |d$d¦  «        }t          |dd¦  «        } t)          | ¦  «        \  }!}"t          |t          ¦  «        r|                     ¦   «         r|n|!}#t          |#t          ¦  «        r|#                     ¦   «         st+          ||t          |
¦  «        ¦  «        }#|#                     ¦   «         }#t          | t          ¦  «        r| nd}$t-          |#|$¦  «        }$|
                     t          |#|#|$d%t          ||¬&¦  «        ¬'¦  «        ¦  «         �ŒMd*                     d+„ |D ¦   «         ¦  «                             ¦   «         }%|%sJt1          | d¦  «        r:t          | dd ¦  «        }t          |t          ¦  «        r|                     ¦   «         }%d}&|%rC|
sAt2                               |%¦  «        r'd}&t
                               d,|%dd-…         ¦  «         d }%t          |%|
|r'd.                     |¦  «                             ¦   «         nddd|pd|	pd¬/¦  «        }'|
rd0}(n|&rd1}(n|s|r|sd1}(n	|r|%sd1}(nd2}(|'|(fS )3zENormalize a Responses API object to an assistant_message-like object.r�   Nr   z`Codex response has empty output but output_text is present (%d chars); synthesizing output item.r�   r   ru   r   r�   z&Responses API returned no output itemsr}   >   ÚfailedÚ	cancelledÚerrorzResponses API returned status 'ú'>   Úqueuedrv   rw   Fr   Tr‘   >   ÚanalysisÚ
commentary>   ÚfinalÚfinal_answerrˆ   rº   r‡   r»   r8   r   Úsummary_textr—   rk   r   r<   r”   r•   rU   rj   )rk   r<   )rˆ   rU   rV   r   rj   Úcustom_tool_callrÐ   rô   c                ó   — g | ]}|¯|‘ŒS rŠ   rŠ   )rƒ   r„   s     r+   rÕ   z-_normalize_codex_response.<locals>.<listcomp>¨  s   € Ð:Ð:Ð: !¸Ð:˜AÐ:Ð:Ð:r-   zÌCodex response contains leaked tool-call text in assistant content (no structured function_call items). Treating as incomplete so the continuation path can re-elicit a proper tool call. Leaked snippet: %ri,  z

)r   r“   rº   Úreasoning_contentÚreasoning_detailsr†   rŽ   r“   rv   Ústop)rð   r   r   r   r#   ÚloggerÚdebugr\   r   r�   ÚRuntimeErrorr$   r!   r"   rò   r    r~   rõ   r¡   r¢   rW   rL   rf   r4   ÚhasattrÚ_TOOL_CALL_LEAK_PATTERNÚsearchÚwarning))rö   r�   Úout_textÚresponse_statusÚ	error_objÚ	error_msgr¥   Úreasoning_partsÚreasoning_items_rawÚmessage_items_rawr“   Úhas_incomplete_itemsÚsaw_commentary_phaseÚsaw_final_answer_phaserr   rÃ   Úitem_statusÚ
item_phaseÚnormalized_phaseÚmessage_textÚraw_message_itemrª   Úreasoning_textrÄ   r­   r8   Úraw_summaryr'   r   r;   r<   Úraw_call_idÚraw_item_idr²   r{   rU   rV   Ú
final_textÚleaked_tool_call_textÚassistant_messageÚfinish_reasons)                                            r+   Ú_normalize_codex_responser&    s[	  € å�X˜x¨Ñ.Ô.€FÝ�f�dÑ#Ô#ð I¨6ð Iõ ˜8 ]°DÑ9Ô9ˆÝ�h¥Ñ$Ô$ð 	I¨¯ªÑ)9Ô)9ð 	IÝ�LŠLð,Ý-0°·²Ñ1AÔ1AÑ-BÔ-Bñô ð õ &Ø [¸Ý(¨mÀ(Ç.Â.ÑBRÔBRÐSÑSÔSÐTðñ ô ð ˆFð %ˆHŒOˆOåÐGÑHÔHÐHå˜h¨°$Ñ7Ô7€OÝ�/¥3Ñ'Ô'ð Ø)×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ˆˆàˆàÐ1Ð1Ð1Ý˜H g¨tÑ4Ô4ˆ	Ý�i¥Ñ&Ô&ð 	nØ!Ÿš iÑ0Ô0ÐBµC¸	±N´NˆIˆIà*3Ðm�˜I™œ˜Ð9mÐ[jÐ9mÐ9mÐ9mˆIÝ˜9Ñ%Ô%Ð%à!€MØ!#€OØ02ÐØ.0ÐØ€JØ*Ð.UÐUÐØ ÐØ"Ðàð eñ eˆÝ˜D &¨$Ñ/Ô/ˆ	Ý˜d H¨dÑ3Ô3ˆÝ�k¥3Ñ'Ô'ð 	Ø%×+Ò+Ñ-Ô-×3Ò3Ñ5Ô5ˆKˆKàˆKàÐAÐAÐAØ#'Ð à˜	Ò!Ð!Ý   w°Ñ5Ô5ˆJØ#ÐÝ˜*¥cÑ*Ô*ð 2Ø#-×#3Ò#3Ñ#5Ô#5×#;Ò#;Ñ#=Ô#=Ð Ø#Ð'AÐAÐAØ+/Ð(Ð(Ø%Ð)BÐBÐBØ-1Ð*Ý:¸4Ñ@Ô@ˆLØð ;Ø×$Ò$ \Ñ2Ô2Ð2à%Ø'ÝAÀ+ÑNÔNØ)6ÀÐ MÐ MÐNð	4ð 4Ð õ " $¨¨dÑ3Ô3�Ý˜g¥sÑ+Ô+ð 5°ð 5Ø-4Ð$ TÑ*Ø#ð AØ0@Ð$ WÑ-Ø!×(Ò(Ð)9Ñ:Ô:Ð:ùØ˜+Ò%Ñ%Ý>¸tÑDÔDˆNØð 7Ø×&Ò& ~Ñ6Ô6Ð6õ   Ð&9¸4Ñ@Ô@ˆIÝ˜)¥SÑ)Ô)ð 5¨ið 5Ø$/ÀiÐPÐP�Ý! $¨¨dÑ3Ô3�Ý˜g¥sÑ+Ô+ð -°ð -Ø%,�H˜T‘Nå! $¨	°4Ñ8Ô8�Ý˜g¥tÑ,Ô,ð 6Ø"$�KØ 'ð Wð W˜Ý& t¨V°TÑ:Ô:˜Ý% d­CÑ0Ô0ð WØ'×.Ò.¸ÐPTÐ/UÐ/UÑVÔVÐVøØ*5�H˜YÑ'Ø#×*Ò*¨8Ñ4Ô4Ð4ùØ˜/Ò)Ñ)ØÐEÐEÐEÙÝ˜d F¨BÑ/Ô/Ð5°2ˆGÝ  k°4Ñ8Ô8ˆIÝ˜i­Ñ-Ô-ð FÝ œJ y¸uÐEÑEÔE�	Ý! $¨	°4Ñ8Ô8ˆKÝ! $¨¨dÑ3Ô3ˆKÝ":¸;Ñ"GÔ"GÑÐ˜aÝ%/°½SÑ%AÔ%AÐoÀk×FWÒFWÑFYÔFYÐo�k�kÐ_oˆGÝ˜g¥sÑ+Ô+ð V°7·=²=±?´?ð VÝ0°¸)ÅSÈÁ_Ä_ÑUÔU�Ø—m’m‘o”oˆGÝ.8¸ÅcÑ.JÔ.JÐT˜{˜{ÐPTÐÝAÀ'ÐK[Ñ\Ô\ÐØ×Ò�oØØØ!1ØÝ(¨gÀÐKÑKÔKðñ ô ñ ô ð ñ ð Ð,Ò,Ñ,Ý˜d F¨BÑ/Ô/Ð5°2ˆGÝ  g¨tÑ4Ô4ˆIÝ˜i­Ñ-Ô-ð FÝ œJ y¸uÐEÑEÔE�	Ý! $¨	°4Ñ8Ô8ˆKÝ! $¨¨dÑ3Ô3ˆKÝ":¸;Ñ"GÔ"GÑÐ˜aÝ%/°½SÑ%AÔ%AÐoÀk×FWÒFWÑFYÔFYÐo�k�kÐ_oˆGÝ˜g¥sÑ+Ô+ð V°7·=²=±?´?ð VÝ0°¸)ÅSÈÁ_Ä_ÑUÔU�Ø—m’m‘o”oˆGÝ.8¸ÅcÑ.JÔ.JÐT˜{˜{ÐPTÐÝAÀ'ÐK[Ñ\Ô\ÐØ×Ò�oØØØ!1ØÝ(¨gÀÐKÑKÔKðñ ô ñ ô ð ùð —’Ð:Ð: }Ð:Ñ:Ô:Ñ;Ô;×AÒAÑCÔC€JØð *�' (¨MÑ:Ô:ð *Ý˜8 ]°BÑ7Ô7ˆÝ�h¥Ñ$Ô$ð 	*Ø!ŸšÑ)Ô)ˆJð& "ÐØð ˜*ð Õ)@×)GÒ)GÈ
Ñ)SÔ)Sð Ø $ÐÝ�ŠðUð �t˜�tÔñ		
ô 	
ð 	
ð ˆ
å'ØØØ:IÐS�&—+’+˜oÑ.Ô.×4Ò4Ñ6Ô6Ð6ÈtØØØ1Ð9°TØ-Ð5°ðñ ô Ðð ð Ø$ˆˆØ	ð Ø$ˆˆØ	ð Ð"6ð Ð?Uð Ø$ˆˆØ	ð 	 Zð 	ð %ˆˆàˆØ˜mÐ+Ð+r-   )r   r   r   r   r   r   )r   r   r   r   )r   )r;   r   r<   r   r=   r>   r   r   )rM   r   r   rN   rá   )rU   r   rV   rX   r   r   )rg   rh   r   rh   )rT   r   rx   r   r   r   )r   r   r   r   )r·   r   r   r   )rÌ   r   rË   rÍ   r   rÎ   )rr   r   r   r   )rö   r   r   r÷   )%Ú__doc__Ú
__future__r   rF   r¡   Úloggingr]   r_   Útypesr   Útypingr   r   r   r   Úagent.prompt_builderr	   Ú	getLoggerÚ__name__r  ÚcompileÚ
IGNORECASEr  r,   r:   rL   rW   rf   rt   r|   r~   r¶   rÊ   rí   rò   rõ   r&  rŠ   r-   r+   ú<module>r1     sD  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 7Ð 7Ð 7Ð 7Ð 7Ð 7à	ˆÔ	˜8Ñ	$Ô	$€ð %˜"œ*Ø0Ø„Mñô Ð ð CIð 0ð 0ð 0ð 0ð 0ð 0ðf&ð &ð &ð &ðZ	ð 	ð 	ð 	ð 	ðð ð ð ð& '+ðð ð ð ð ðBð ð ð ð ð2 HÐGÐGÐ ð GRð ð ð ð ð ð ðlð lð lð lðfoð oð oð oðj ðLð Lð Lð Lð Lð Lðf#ð #ð #ð #ð"ð ð ð ð*R,ð R,ð R,ð R,ð R,ð R,r-   