+
    iHàj!O ã                  ó
  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ]P>                  ! ] 4      t!]PD                  ! RRR7      t#R]$R&   Rt%R R lt&RR~RR/R R llt'R R lt(R R lt)R R lt*R R lt+RR R llt,R RR!R"/R# R$ llt-].! 0 R€m4      t/R�t0].! R* ]0 4       4      R+R,0,          t1]/R-R.0,          t2R%R/R&R0R)R1/t3R%R2R&R0/t4R'R(0t5R%R3R)R4/t6R5 R6 lt7R7 R8 lt8R9 R: lt9R; R< lt:R= R> lt;R? R@ lt<RA RB lt=RC RD lt>RE RF lt?R‚RG RH llt@RI RJ ltARKtBRLtCRM RN ltDRO RP ltERQ RR ltFRS RT ltGRU RV ltHRW RX ltIRY RZ ltJRR[ R\ lltKR] R^ ltLR_ R` ltMRaR"/Rb Rc lltNRd Re ltORRf Rg lltP].! 0 Rƒm4      tQRh Ri ltRRj Rk ltSRl Rm ltTRn Ro ltU ! Rp Rq4      tVRrRRsRRtRRuRRvRRwR/Rx Ry lltWRz R{ ltXR„R| R} lltY. R…OtZR# )†u  Codex API runtime â€” App Server and Responses-API streaming paths. Every entry point takes the parent
AIAgent first: ``run_codex_app_server_turn`` drives one ``codex app-server`` subprocess turn;
``run_codex_stream`` runs one streaming Codex Responses call.)ÚannotationsN)Úsuppress)ÚSimpleNamespace)ÚAnyÚCallableÚDictÚList)Úclaim_stream_writerÚstream_writer_is_current)ÚHERMES_TOOLS_MCP_SERVER_NAME)Úbypass_sdk_request_transform)Úbuffer_connect_exhausted_notice)Úset_usage_anchorÚcodex_watchdog_state©Údefaultz"contextvars.ContextVar[Any | None]Ú_codex_watchdog_state_varg       @c               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚfloat© )Úformats   "Ú8/home/ubuntu/.hermes/hermes-agent/agent/codex_runtime.pyÚ__annotate__r       s   € ÷ )ñ )˜uñ )ó    c                 óT  €  ^ RI Hp  V ! 4       P                  R4      p\        V\        4      '       d   VP                  R4      MRp\        V\
        \        34      '       d,   \        V\        4      '       g   \        R\        V4      4      # \        #   \         d	     \        # i ; i)u¥  ``agent.stream_drain_timeout`` (seconds) â€” how long the post-terminal SSE drain may block.

The drain is a courtesy to Relay's finalizer, never a correctness requirement: ``final`` is fully
assembled before it starts. A relay that never closes the socket after ``response.completed`` would
otherwise wedge the turn until the idle watchdog discards the already-billed response (#103864).
``0`` skips the drain entirely.
)Úload_config_readonlyÚagentÚstream_drain_timeoutNg        )Úhermes_cli.configr   ÚgetÚ
isinstanceÚdictÚintr   ÚboolÚmaxÚ	ExceptionÚ_DEFAULT_STREAM_DRAIN_TIMEOUT)r   Ú	agent_cfgÚvalues      r   Ú_stream_drain_timeoutr+       s‹   € ðÝ:Ù(Ó*×.Ñ.¨wÓ7ˆ	Ü9CÀIÌt×9TÒ9T�	—‘Ð4Ô5ÐZ^ˆÜ�eœc¤5˜\×*Ò*´:¸eÄT×3JÒ3JÜ�sœE %›LÓ)Ð)ô )Ð(øô ô ØÜ(Ð(ðús   ‚BB ÂB'Â&B'ÚargsÚkwargsc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   ÚfnúCallable | NoneÚfail_msgÚstrÚ	fail_argsr   r,   Útupler-   údict | Noner   )r   s   "r   r   r   3   s0   € ÷ :ñ :�oð :°ð :À#ð :ÈUð :Ðalñ :r   c               ó�   € V f   R#  T ! T/ T;'       g    / B  R#   \          d    \        P                  ! T.TO5RR/   R# i ; i)zVInvoke an optional display/debug callback; a buggy hook must never tear down the turn.NÚexc_infoT)r'   ÚloggerÚdebug)r/   r1   r,   r-   r3   s   &&$$*r   Ú_call_guardedr:   3   sG   € à	‚zÙð:Ù
ˆDÐ#�V—\�\˜rÔ#øÜô :Ü�Š�XÐ9 	Ò9°DÕ9ð:ús   ˆ • œ%AÁAc               ó    € V ^8„  d   QhRRRR/# )r   ÚerrorÚBaseExceptionr   ztuple[int | None, str]r   )r   s   "r   r   r   =   s   € ÷ >ñ >¨-ð >Ð<Rñ >r   c           	     ó  € Rp. pT p\        4       pVEeF   \        V4      V9  Ed5   \        V4      ^8  Ed$   VP                  \        V4      4       VP	                  \        V4      P                  4       Vf˜   Rp\        \        4      ;_uu_ 4        \        \        VRR4      RR4      pRRR4       \        V\        4      '       d   \        VP                  R4      4      pM,\        V\        \        \        34      '       d   \        V4      pVP                   RJ ;'       d    VP"                  '       * pV'       d   VP$                  MVP                   pEKJ  VRP'                  V4      3#   + '       g   i     LÊ; i)z²(serialized request bytes, exception class chain); the buffered ``httpx.Request`` content
on OpenAI connection errors gives the exact byte count without logging payloads or URLs.NÚrequestÚcontentúutf-8z <- )ÚsetÚidÚlenÚaddÚappendÚtypeÚ__name__r   r'   Úgetattrr"   r2   ÚencodeÚbytesÚ	bytearrayÚ
memoryviewÚ	__cause__Ú__suppress_context__Ú__context__Újoin)r<   Úrequest_body_bytesÚexception_classesÚcurrentÚseenr@   Úimplicit_chains   &      r   Ú_codex_request_failure_detailsrW   =   s%  € ð &*ÐØ#%ÐØ$)€GÜ“U€DØ
Ó
¤" W£+°TÕ"9¼cÀ$»iÈ!½mØ�‰”�G“ÔØ× Ñ ¤ g£×!7Ñ!7Ô8ØÒ%ØˆGÜœ)×$Õ$Ü!¤'¨'°9¸dÓ"CÀYÐPTÓU�÷ %ä˜'¤3×'Ò'Ü%(¨¯©¸Ó)@Ó%AÑ"Ü˜G¤e¬Y¼
Ð%C×DÒDÜ%(¨£\Ð"Ø ×*Ñ*¨dÐ2×WÐW¸7×;WÑ;WÔ7Wˆß)7�'×%Ò%¸W×=NÑ=N‹Ø˜vŸ{™{Ð+<Ó=Ð=Ð=÷ %×$ús   ÂE.Å.E>	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Ú
api_kwargsr#   Úattemptr$   Úattemptsr   r   )r   s   "r   r   r   T   s)   € ÷ "1ñ "1°ð "1¸sð "1Ècð "1ÐVZñ "1r   c                ó   € ^ RI Hp ^ RIHp V P	                  R4      p\        V\        4      '       g   V # \        \        P                  ! V\        R7      P                  R4      4      pWcP                  8:  d   V # . ^ r‡V F·  p	\        V	\        4      '       d(   V	P	                  R4      R8X  d   V	P	                  R4      MR	p
\        V
\        4      '       dO   T! T
R
\        V	P	                  R4      ;'       g    R4      W3P                  R7      pWº8w  d   / V	CRV/CV^,           r‰VP                  V	4       K¹  	  V'       g)   \         P#                  RWW`P	                  R4      4       V # \        \        P                  ! V\        R7      P                  R4      4      p\         P#                  RWW†VV P	                  R4      4       / V CRV/C# )a  #95429 criterion 3: a reconnect after an attempt that produced no stream event must not resend
a pathological payload unchanged. Inline ``function_call_output`` strings over the per-result
threshold (results that escaped commit-time persistence) are spilled through the standard
policy -- bounded preview + recoverable ``<persisted-output>`` reference -- and ONE log line
records the size delta. When nothing is prunable the resend is logged as unchanged. The
caller's kwargs are never mutated; only the retried wire payload changes.)ÚDEFAULT_BUDGET)Úmaybe_persist_tool_resultÚinputr   rA   rG   Úfunction_call_outputÚoutputNÚcodex_zero_event_retryÚcall_idÚcall)r@   Ú	tool_nameÚtool_use_idÚconfigÚ	thresholdz‚Codex zero-event retry (attempt %s/%s): no prunable tool output; resending payload unchanged (serialized_input_bytes=%s, model=%s)ÚmodelzˆCodex zero-event retry (attempt %s/%s): spilled %d oversized tool output(s) before reconnect, serialized_input_bytes=%s -> %s (model=%s))Útools.budget_configr]   Útools.tool_result_storager^   r!   r"   ÚlistrD   ÚjsonÚdumpsr2   rJ   Úturn_budgetr#   Údefault_result_sizerF   r8   Úwarning)rY   rZ   r[   r]   r^   ÚitemsÚbeforeÚpruned_itemsÚprunedÚitemra   ÚreplacedÚafters   &&&          r   Ú_prune_zero_event_retry_payloadry   T   s”  € õ 3ÝCà�N‰N˜7Ó#€EÜ�eœT×"Ò"ØÐÜ”—’˜E¬3Ô/×6Ñ6°wÓ?Ó@€FØ×+Ñ+Ô+ØÐØ˜q�&ÛˆÜ'1°$¼×'=Ò'=À$Ç(Á(È6ÓBRÐVlÔBl�—‘˜(Ô#ÐrvˆÜ�fœc×"Ò"Ù0¸ÐKcÜ=@ÀÇÁÈ)ÓAT×A^ÐA^ÐX^Ó=_Ø8F×RtÑRtôvˆHð Ô!Ø; $Ð;¨°(Ñ;¸VÀa½Z�fØ×Ñ˜DÖ!ñ ÷ Ü�‰ð IØJQÐ]c×esÑesÐt{Óe|ô	~àÐÜ”—
’
˜<´Ô5×<Ñ<¸WÓEÓF€EÜ
‡N�Nð @ØAHÐTZÐdiØ—>‘> 'Ó*ô,ð 1ˆjÐ0˜' <Ñ0Ð0r   c               ó    € V ^8„  d   QhRRRR/# )r   r*   r   r   r$   r   )r   s   "r   r   r   y   s   € ÷ ñ ˜Sð  Sñ r   c                ó’  € \        V \        4      '       d   ^ # \        V \        4      '       d   \        V ^ 4      # \        V \        4      '       d   \        \        V 4      ^ 4      # \        V \
        4      '       d8   \        \        4      ;_uu_ 4        \        \        V 4      ^ 4      uuRRR4       # ^ #   + '       g   i     ^ # ; i©é    N)r"   r%   r$   r&   r   r2   r   Ú
ValueError)r*   s   &r   Ú_coerce_usage_intr   y   s†   € Ü�%œ×ÒÙÜ�%œ×ÒÜ�5˜!‹}ÐÜ�%œ×ÒÜ”3�u“:˜qÓ!Ð!Ü�%œ×Òä”j×!Õ!Ü”s˜5“z 1Ó%÷ "Ò!á÷ "Ö!áús   ÂB5Â5C	c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r1   r2   Ú
fail_extrar   ÚcountszCallable[[], dict]r   ÚNoner   )r   s   "r   r   r   ‡   s0   € ÷ Cñ C¨ð C¸3ð CÐHZð CÐ_cñ Cr   c               ó†  € V P                   '       d   V P                  '       g   R#  V P                  '       g   V P                  4        ^ RIHp V P                   P                  ! V P                  3RV! V 4      /V! 4       B  R#   \         d0   p\        P                  ! YP                  .TOTN5!    Rp?R# Rp?ii ; i)z©Enqueue per-call accounting for the SessionDB background writer. ``counts`` is built
lazily inside the guarded try so a stub agent without a session DB is never touched.N)Ú_agent_session_sourceÚsource)
Ú_session_dbÚ
session_idÚ_session_db_createdÚ_ensure_db_sessionÚagent.turn_usager…   Úqueue_token_countsr'   r8   r9   )r   r1   r‚   r�   r…   Úexcs   &&$*  r   Ú_queue_token_countsrŽ   ‡   sŸ   € ð ××Ð %×"2×"2Ð"2ÙðCØ×(×(Ð(Ø×$Ñ$Ô&Ý:Ø×Ñ×,Ò,¨U×-=Ñ-=ÑoÑF[Ð\aÓFbÐoÑflÓfnÔoøÜô CÜ�Š�X×/Ñ/ÐB°*ÐB¸c×BÒBûðCús   ¨B ºA
B ÂC Â$B;Â;C c               ó   € V ^8„  d   QhRR/# )r   r   údict[str, Any]r   )r   s   "r   r   r   •   s   € ÷ CNñ CNÀ.ñ CNr   c                ó  a aaaa€ S ;P                   ^,          un         \        VRR4      p\        S RR4      pV 3R lo\        V\        4      '       d	   V'       gm   Ve%   \        VRR4      '       d   VP	                  / 4       Ve-   \        \        VRR4      4      '       d   VP                  4        \        S RV3R	 lR
7       / # ^ RIH	pH
p \        VP                  R4      4      pV! \        ^ \        VP                  R4      4      V,
          4      \        VP                  R4      4      V^ \        VP                  R4      4      VR7      pVP                  p	\        VP                  R4      4      ;'       g    VP                  p
R$ Uu/ uF  q»\        W‹4      bK  	  upoRV	RVP                   RV
/SCpVeC    VP	                  V4       \        VRR4      p\        V\"        4      '       d   V^ 8”  d   WÔn        \        V\,        4      '       d)   ^ RIHpHp V! W˜P                   V4      pVe
   V! S V4       VP5                  4        F*  w  pp\7        S RV 2\        S RV 24      V,           4       K,  	  V! S P8                  VS P:                  S P<                  \        S RR4      R7      oSP>                  e   \A        SP>                  4      MRpVe   S ;PB                  V,          un!        SPD                  SPF                  uS n$        S n%        RVRSPD                  R SPF                  /o\        S R!V
VVVV3R" lR
7       / VCR#V	/CSC# u upi   \&         d    \(        P+                  RRR7        EL}i ; i)%añ  Translate Codex app-server token usage into Hermes accounting. Prompt bucket = uncached + cached
input (the protocol exposes no cache-write tokens); a turn with no usage still counts as one API call.
``messages`` (the transcript mirror) lets real usage anchor the next preflight: this runtime bypasses
the main loop's capture, and the mirror is never compacted natively, so without an anchor the rough
estimate grows monotonically and hermes-mode fires thread compaction on tiny threads (#100381).Útoken_usage_lastNÚcontext_compressorc                 óf   <€ \        RR SP                  RSP                  RSP                  R^/V B # )ri   Úbilling_providerÚbilling_base_urlÚapi_call_countr   )r#   ri   ÚproviderÚbase_url)Úextrar   s   ,€r   ÚbillingÚ/_record_codex_app_server_usage.<locals>.billingŸ   sO   ø€ Üñ  D˜%Ÿ+™+ð  D¸¿¹ð  DÐY^×YgÑYgð  DÐxyð  Dð  ~Cñ  Dð  	Dr   Ú%awaiting_real_usage_after_compressionFÚnote_usage_less_responsez=Codex app-server api-call persistence failed (session=%s): %sc                 ó   <€ S ! R R7      # )Úsubscription_included)Úbilling_moder   )r›   s   €r   Ú<lambda>Ú0_record_codex_app_server_usage.<locals>.<lambda>¨   s   ø€ ©7Ð@WÕ+Xr   )r‚   )ÚCanonicalUsageÚestimate_usage_costÚcachedInputTokensÚinputTokensÚoutputTokensÚreasoningOutputTokens)Úinput_tokensÚoutput_tokensÚcache_read_tokensÚcache_write_tokensÚreasoning_tokensÚ	raw_usageÚtotalTokensÚprompt_tokensÚcompletion_tokensÚtotal_tokensÚmodel_context_windowz$codex app-server usage update failedT©r7   )Úcapture_usage_anchorr   Úsession_Úapi_keyÚ )r˜   r™   r¸   Úestimated_cost_usdÚcost_statusÚcost_sourcezECodex app-server token persistence failed (session=%s, tokens=%d): %sc                 óL   <€ S ! R/ SBSBR SP                   R8X  d   R/B # R/B # )r¡   Úincludedr    Nr   )Ústatus)r›   Úcost_fieldsÚcost_resultÚtoken_countss   €€€€r   r¢   r£   Õ   s<   ø€ ‘wñ s ð s°ñ sØGR×GYÑGYÐ]gÔGgÐ,CósØmqósr   Úlast_prompt_tokens)rª   r«   r¬   r­   r®   )&Úsession_api_callsrI   r"   r#   Úupdate_from_responseÚcallablerž   rŽ   Úagent.usage_pricingr¤   r¥   r   r!   r&   r±   r³   r«   r$   Úcontext_lengthr'   r8   r9   rl   Úagent.usage_anchorr¶   r   rr   Úsetattrri   r˜   r™   Ú
amount_usdr   Úsession_estimated_cost_usdr¿   r†   Úsession_cost_statusÚsession_cost_source)r   ÚturnÚmessagesÚusageÚ
compressorr¤   r¥   r¬   Úcanonical_usager±   r³   ÚfÚ
usage_dictÚcontext_windowr¶   r   ÚanchorÚkeyr*   Úcost_usdr›   rÀ   rÁ   rÂ   s   f&&                 @@@@r   Ú_record_codex_app_server_usagerÚ   •   sH  ü€ ð 
×Ò˜qÕ ÕÜ�DÐ,¨dÓ3€EÜ˜Ð 4°dÓ;€JõDä�eœT×"Ò"¯%ØÒ!¤g¨jÐ:aÐch×&iÒ&ià×+Ñ+¨BÔ/ØÒ!¤h¬w°zÐC]Ð_cÓ/d×&eÒ&eØ×/Ñ/Ô1Ü˜EÐ#bÜ#Xõ	Zàˆ	ßGô *¨%¯)©)Ð4GÓ*HÓIÐÙ$Ü˜Ô-¨e¯i©i¸Ó.FÓGÐJ[Õ[Ó\Ü'¨¯	©	°.Ó(AÓBØ+ÀÜ*¨5¯9©9Ð5LÓ+MÓNÐZ_ô	€Oð $×1Ñ1€MÜ$ U§Y¡Y¨}Ó%=Ó>×^Ð^À/×B^ÑB^€LátóvÙtð 89”w˜Ó2Ò2Ùtñv€Là! =Ð2EÀ×GdÑGdØ  ,ð@Ø2>ð@€JàÒð	PØ×+Ñ+¨JÔ7Ü$ TÐ+AÀ4ÓHˆNÜ˜.¬#×.Ò.°>ÀAÔ3EØ,:Ô)ô �(œD×!Ò!ßMá% m×5RÑ5RÐT\Ó]ˆØÒÙ˜U FÔ+Ø ×&Ñ&Ö(‰
ˆˆUÜ�˜ # Ð'¬°¸(À3À%Ð8HÓ)IÈEÕ)QÖRñ )á%Ø�‰�_¨u¯~©~ÈÏÉÔ`gÐhmÐoxÐz|Ó`}ô€Kð 1<×0FÑ0FÒ0RŒu�[×+Ñ+Ô,ÐX\€HØÒØ×(Ò(¨HÕ4Õ(Ø;F×;MÑ;MÈ{×OaÑOaÐ8€EÔ˜uÔ8Ø'¨°=À+×BTÑBTÐVcÐep×ewÑewÐx€KÜØÐVÐXd÷sõð
 NˆjÐMÐ.°ÑMÀÐMÐMùòCvøô ô 	PÜ�L‰LÐ?È$ˆL×Oð	Pús   ÆMÇ AM Í"M?Í>M?Úapprox_tokensÚforceFc               ó$   € V ^8„  d   QhRRRRRR/# )r   rÛ   z
int | NonerÜ   r%   r   r   )r   s   "r   r   r   Û   s#   € ÷ 'ñ 'Àzð 'Ðaeð 'Ðrvñ 'r   c               ó*  € V'       g   \        VRR4      '       g   R# \        VRR4      ;'       g    R\        VRR4      ;'       g    RrT\        P                  R\        V RR4      ;'       g    R	WEV4       V'       g8   \        \        4      ;_uu_ 4        ^ R
IHp V P                  V4       RRR4       \        V RR4      pVeŸ   \        VR^ 4      ^,           Vn        T;'       g    ^ Vn	        \        \        V4      RR4      p\        V4      '       d   V! VRR7       M\        VR4      '       d   RVn        \        VRR4      '       g   R^ uVn        Vn        RVn        \#        V R4       RV n        \'        \        V RR4      ;'       g    RRRR\        V RR4      ;'       g    RR\        V RR4      ;'       g    RRRRRRVe   \        VR^ 4      M^ RRRVRV/3R7       V'       g   ^ RIHp	 V	! V 4       R#   + '       g   i     EL[; i)u¦   Record a Codex-native compaction boundary: the app-server owns the compacted thread,
so local transcript rows are NOT rewritten â€” only session event/usage counters.Ú	compactedFÚ	thread_idNr¹   Úturn_idzKcodex app-server compaction observed: session=%s thread=%s turn=%s force=%srˆ   Únone)ÚCOMPACTION_STATUSr“   Úcompression_countÚrecord_completed_compaction)Úused_fallbackÚ$_verify_compaction_cleared_thresholdTr’   Úevent_callbackz.event_callback error on codex session:compresszsession:compressÚplatformÚold_session_idÚin_placeÚruntimeÚcodex_app_server©r,   )Úpublish_provider_nativeéÿÿÿÿ)rI   r8   Úinfor   r'   Úagent.conversation_compressionrã   Ú_emit_statusrä   Úlast_compression_rough_tokensrG   rÆ   Úhasattrrç   rÃ   Úlast_completion_tokensr�   r   Ú_last_compaction_in_placer:   Úagent.compaction_eventsrï   )
r   rÏ   rÛ   rÜ   rà   rá   rã   rÒ   Úrecord_boundaryrï   s
   &&$$      r   Ú#_record_codex_app_server_compactionrú   Û   s  € ÷ œ  {°E×:Ò:ÙÜ   {°DÓ9×?Ð?¸RÄÈÈyÐZ^ÓA_×AeÐAeÐceˆwÜ
‡K�KÐ]Ü˜˜|¨TÓ2×<Ð<°f¸iÐRWôYçÜ”i× Õ ÝHØ×ÑÐ0Ô1÷ !ô ˜Ð 4°dÓ;€JØÒÜ'.¨zÐ;NÐPQÓ'RÐUVÕ'Vˆ
Ô$Ø3@×3EÐ3EÀAˆ
Ô0ä!¤$ zÓ"2Ð4QÐSWÓXˆÜ�O×$Ò$Ù˜J°eÖ<Ü�ZÐ!G×HÒHØ>BˆJÔ;Ü�tÐ/°×6Ò6ØOQÐSTÐLˆJÔ)¨:Ô+LØ?CˆJÔ<ä�U˜DÔ!Ø&+€EÔ#Ü”'˜%Ð!1°4Ó8×@Ð@¸DÐBrØ*Ø ¤'¨%°¸TÓ"B×"HÐ"HÀbÈ,ÔX_Ð`eÐgsÐuyÓXz÷  YAð  YAð  AØ&¨¨J¸Ø)ÐZdÒZp¬7°:Ð?RÐTUÔ+VÐvwØÐ!3°[À)ÈYÐX_ð	-ð õ÷ åCÙ Ô&Ù÷= !× Ð ús   ÂHÈH	ÚcommandExecutionÚ
fileChangeÚmcpToolCallÚdynamicToolCallÚ	webSearchc              #  ó*   "  € T F	  w  rVx € K  	  R # 5i©Nr   )Ú.0ÚmÚ_s   &  r   Ú	<genexpr>r    s   é € Ð)RÑ8Q±°­!Ó8Qùs   ‚z!item/commandExecution/outputDeltazitem/fileChange/outputDeltaÚagentMessageÚ	reasoningÚexec_commandÚapply_patchÚ
web_searchÚexecÚcommandÚqueryc               ó    € V ^8„  d   QhRRRR/# )r   Úparamsr#   r   r2   r   )r   s   "r   r   r   #  s   € ÷ 1ñ 1˜ð 1 ñ 1r   c                óŠ   € V P                  R4      ;'       g    V P                  R4      p\        V\        4      '       d   V# R# )zDNon-empty text carried by an app-server delta notification, else "".ÚdeltaÚtextr¹   )r!   r"   r2   )r  r  s   & r   Ú_delta_textr  #  s8   € à�:‰:�gÓ×4Ð4 &§*¡*¨VÓ"4€DÜ˜d¤C×(Ò(ˆ4Ð0¨bÐ0r   c               ó    € V ^8„  d   QhRRRR/# )r   rv   r#   r   z
list[dict]r   )r   s   "r   r   r   )  s   € ÷ Kñ K˜ð K ñ Kr   c                ó’   € V P                  R 4      ;'       g    .  Uu. uF  p\        V\        4      '       g   K  VNK  	  up# u upi )Úchanges)r!   r"   r#   )rv   Úcs   & r   Ú_item_changesr  )  s;   € ØŸ™ Ó+×1Ð1¨rÐ1ÓJÑ1�!´jÀÄD×6I�AˆAÑ1ÑJÐJùÒJs
   žA»Ac               ó    € V ^8„  d   QhRRRR/# )r   rv   r#   r   r2   r   )r   s   "r   r   r   -  s   € ÷ Gñ G 4ð G¨Cñ Gr   c                óp  € V P                  R4      ;'       g    RpVR8X  dK   V P                  R4      ;'       g    RV P                  R4      ;'       g    Rr2V\        8X  d   V# RV R	V 2# VR
8X  d   V P                  R4      ;'       g    R# \        P                  V4      ;'       g    T;'       g    R# )zJSynthetic Hermes tool name for a codex item (mirrors CodexEventProjector).rG   r¹   rý   ÚserverÚmcpÚtoolÚunknownzmcp.Ú.rþ   Údynamic)r!   r   Ú_STATIC_TOOL_NAMES)rv   Ú	item_typer  r  s   &   r   Ú_codex_item_to_tool_namer#  -  s­   € à—‘˜Ó ×&Ð& B€IØ�MÔ!Ø—x‘x Ó)×2Ð2¨U°D·H±H¸VÓ4D×4QÐ4QÈ	�ØÔ!=Ô=ˆtÐYÀTÈ&ÈÐQRÐSWÐRXÐCYÐYØÐ%Ô%Ø�x‰x˜Ó×,Ð, 9Ð,Ü×!Ñ! )Ó,×FÐF°	×FÐF¸YÐFr   c               ó    € V ^8„  d   QhRRRR/# )r   rv   r#   r   r   )r   s   "r   r   r   8  s   € ÷ Rñ R˜dð R tñ Rr   c           
     óv  € V P                  R4      ;'       g    RpVR8X  d9   RV P                  R4      ;'       g    RRV P                  R4      ;'       g    R/# VR8X  dm   R\        V 4       Uu. uFT  pRVP                  R4      ;'       g    / P                  R4      ;'       g    R	R
VP                  R
4      ;'       g    R/NKV  	  up/# V\        9   d8   V P                  R4      ;'       g    / p\        V\        4      '       d   V# RV/# VR8X  d   RV P                  R4      ;'       g    R/# / # u upi )zSArgs dict for tool_progress_callback("tool.started"); mirrors the projector shapes.rG   r¹   rû   r  Úcwdrü   r  ÚkindÚupdateÚpathÚ	argumentsrÿ   r  )r!   r  Ú_MCP_LIKE_ITEM_TYPESr"   r#   )rv   r"  r  r,   s   &   r   Ú_codex_item_to_argsr,  8  s2  € à—‘˜Ó ×&Ð& B€IØÐ&Ô&Ø˜4Ÿ8™8 IÓ.×4Ð4°"°e¸T¿X¹XÀe»_×=RÐ=RÐPRÐSÐSØ�LÔ ØÜ%2°4Ô%8ó:Ù%8 ð $ a§e¡e¨F£m×&9Ð&9°r×%>Ñ%>¸vÓ%F×%RÐ%RÈ(ÐTZÐ\]×\aÑ\aÐbhÓ\i×\oÐ\oÐmoÓpÙ%8ñ:ð ;ð 	;àÔ(Ô(Ø�x‰x˜Ó$×*Ð*¨ˆÜ! $¬×-Ò-ˆtÐF°KÀÐ3FÐFØ1:¸kÔ1IˆG�T—X‘X˜gÓ&×,Ð,¨"Ð-ÐQÈrÐQùò:s   Á0D6ÂD6Â'D6ÃD6c               ó    € V ^8„  d   QhRRRR/# )r   rv   r#   r   r   r   )r   s   "r   r   r   F  s   € ÷ ñ  ð ¨#ñ r   c                ó@  € V P                  R4      ;'       g    RpV\        9   d8   V P                  \        V,          4      ;'       g    RR,          ;'       g    R# VR8X  d—   \        V 4       Uu. uF,  q"P                  R4      '       g   K  VP                  R4      NK.  	  ppV'       dL   RP                  VR,          4      \	        V4      ^8”  d   R	\	        V4      ^,
           R
2,           # R,           # R# V\
        9   d€   V P                  R4      ;'       g    / p\        V\        4      '       dO   V'       dG   \        \        \        4      ;_uu_ 4        \        P                  ! VRR7      R,          uuRRR4       # R# u upi   + '       g   i     R# ; i)zXShort preview for the tool.started bubble; None when nothing useful (UI tolerates None).rG   r¹   :Néx   NNrü   r)  ú, :Né   Nz, +z morer*  F©Úensure_ascii)r!   Ú_PREVIEW_FIELDSr  rQ   rD   r+  r"   r#   r   Ú	TypeErrorr~   rm   rn   )rv   r"  r  Úpathsr,   s   &    r   Ú_codex_item_to_previewr7  F  s/  € à—‘˜Ó ×&Ð& B€IØ”OÔ#Ø—‘œ¨Õ3Ó4×:Ð:¸¸DÕA×IÐIÀTÐIØ�LÔ Ü(5°dÔ(;ÓMÑ(; 1¿u¹uÀV¿}”�—‘�v–Ñ(;ˆÐMßch�—	‘	˜% �)Ó$ÄsÈ5ÃzÐTUÄ~¨#¬c°%«j¸1­nÐ-=¸UÐ(CÕ^ÐrÐ[]Õ^ÐrÐnrÐrØÔ(Ô(Ø�x‰x˜Ó$×*Ð*¨ˆÜ�dœD×!Ò!§dÜœ)¤Z×0Õ0Ü—z’z $°UÔ;¸DÕA÷ 1Ò0áùò N÷
 1Ö0áús   Á2FÂFÅFÆF	c               ó    € V ^8„  d   QhRRRR/# )r   rv   r#   r   ztuple[str, bool]r   )r   s   "r   r   r   V  s   € ÷ ñ ¨ð Ð2Bñ r   c                ó¶  € V P                  R4      ;'       g    RpVR8X  d\   V P                  R4      ;'       g    RV P                  R4      r2\        VRJ;'       d    V^ 8g  4      pV'       d   RV RV 2V3# TV3# VR	8X  dN   V P                  R
4      ;'       g    Rp\        V P                  R4      ;'       g    . 4      pRV RV R2VR9  3# VR8X  dx   V P                  R4      ;p'       d%   R\        P                  ! VRR7      R,           2R3# V P                  R4      pVe"   \        P                  ! VRR7      R,          R3# RR3# VR8X  dƒ   V P                  R4      ;'       g    . V P                  RR4      r©\        V	\        4      ;'       d    T	pV'       d    \        P                  ! V	RR7      R,          MRV
 2\        V
4      '       * 3# R# )uµ   (result_text, is_error) for a completed tool item â€” display-facing text for live tool cards (the
persisted history keeps the projector's ``{exit_code, output}`` envelope instead).rG   r¹   rû   ÚaggregatedOutputÚexitCodeNz[exit z]
rü   r¿   r  r  zapply_patch status=r0  z
 change(s)Úsuccessrý   r<   z[error] Fr2  :Niè  NTÚresult:Ni   Nrþ   ÚcontentItemszsuccess=>   Úappliedr<  Ú	completed)r¹   F)r!   r%   rD   rm   rn   r"   rl   )rv   r"  ÚoutÚ	exit_codeÚis_errorr¿   Únr<   r=  Úcontent_itemsr<  Ú	has_itemss   &           r   Ú_codex_item_completion_payloadrG  V  sÑ  € ð —‘˜Ó ×&Ð& B€IØÐ&Ô&ØŸ™Ð"4Ó5×;Ð;¸¸T¿X¹XÀjÓ=QˆYÜ˜	¨Ð-×@Ð@°)¸q±.ÓAˆß08�&˜˜ 3 s eÐ,ÀHÐLÐL¸cÀHÐLÐLØ�LÔ Ø—‘˜(Ó#×0Ð0 yˆÜ�—‘˜Ó#×)Ð) rÓ*ˆØ$ V H¨B¨q¨c°Ð<¸fÐLoÑ>oÐoÐoØ�MÔ!Ø—H‘H˜WÓ%Ð%ˆ5Ö%ØœdŸjšj¨¸UÔCÀEÕJÐKÐLÈdÐRÐRØ—‘˜(Ó#ˆØAGÒAS”—
’
˜6°Ô6°uÕ=Ð^cÐcÐcÐY[Ð^cÐcÐcØÐ%Ô%Ø!%§¡¨.Ó!9×!?Ð!?¸RÀÇÁÈ)ÐUYÓAZ�wÜ˜}¬dÓ3×EÐE¸ˆ	ßHQ”—
’
˜=°uÔ=¸eÖDÐYaÐbiÐajÐWkÔrvÐw~ÓrÔnÐÐØÐr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rv   r#   Únamer2   r   r   )r   s   "r   r   r   n  s&   € ÷ lñ l˜$ð l cð l¨cñ lr   c                óf  € ^ RI Hp V P                  R4      ;'       g    RpV P                  R4      ;'       g    RpRRV P                  R4      ;'       g    R	 R
V 2RRV 2/P                  V4      pT! T;'       g    \        P                  W14      V P                  R4      ;'       g    R4      # )zkDeterministic tool_call id mirroring CodexEventProjector (live TUI card correlates with projected history).)Ú_deterministic_call_idrG   r¹   r  r  rý   Úmcp__r  r  Ú__rþ   Údyn_rC   )Ú&agent.transports.codex_event_projectorrK  r!   Ú_STABLE_ID_PREFIXES)rv   rI  rK  r"  r  Úprefixs   &&    r   Ú_stable_call_idrR  n  s¬   € åMØ—‘˜Ó ×&Ð& B€IØ�8‰8�FÓ×(Ð(˜y€DØ˜u T§X¡X¨hÓ%7×%@Ð%@¸5Ð$AÀÀDÀ6ÐJÐL]ÐaeÐfjÐekÐ_lÐm×qÑqÐr{Ó|€FÙ! &×"TÐ"TÔ,?×,CÑ,CÀIÓ,TÐVZ×V^ÑV^Ð_cÓVd×VjÐVjÐhjÓkÐkr   c               ó   € V ^8„  d   QhRR/# )r   r   zCallable[[dict], None]r   )r   s   "r   r   r   w  s   € ÷ `ñ `Ð1Gñ `r   c           
     ó@  a aaaaa	a
a€ / oRRRR/R V 3R lllo	R V	V3R lloR V	V3R	 lloR
 V	3R llpR V V	3R lloR VVV3R llo\          UUu/ uF  w  r#V\        P                  ! WR7      bK  	  uppo
V3R lS
R&   V3R lS
R&   R V	V
3R llpV# u uppi )a?  Build the ``on_event`` callback for ``CodexAppServerSession(on_event=...)``.

Tool items fire ``tool_progress_callback`` plus the stable-ID ``tool_start_callback`` /
``tool_complete_callback`` card hooks; deltas go to ``_fire_stream_delta`` / ``_fire_reasoning_delta``;
a completed agentMessage goes to ``_emit_interim_assistant_message`` (the gateway's ``already_streamed``
check dedupes against streamed deltas). Current-turn progress refreshes the activity clock even
without display hooks. Every callback is guarded so a buggy display hook cannot tear down the turn loop.r,   r-   Nc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Úattrr2   r1   r3   r   r,   r4   r-   r5   r   rƒ   r   )r   s   "r   r   Ú8make_codex_app_server_event_bridge.<locals>.__annotate__‚  s@   € ÷ bñ b�sð b cð b°sð bÀ%ð bÐVað bÐmqñ br   c               óB   <€ \        \        SV R 4      V.VO5RVRV/  R # )Nr,   r-   )r:   rI   )rV  r1   r,   r-   r3   r   s   &&$$*€r   Úagent_cbÚ4make_codex_app_server_event_bridge.<locals>.agent_cb‚  s&   ø€ Ü”g˜e T¨4Ó0°(Ða¸YÒaÈTÐaÐZ`Ôar   c               ó    € V ^8„  d   QhRRRR/# ©r   rv   r#   r   rƒ   r   )r   s   "r   r   rW  …  s   € ÷ 	Añ 	A ð 	A¨$ñ 	Ar   c           
     ó  <€ V P                  R 4      ;'       g    R\        V 4      r!\        V 4      pV'       d   W#\        P                  ! 4       3SV&   S! RRVRV\        V 4      V3R7       S! RRV\        W4      W#3R7       R# )	rC   r¹   Útool_progress_callbackz4tool_progress_callback raised on tool.started for %sztool.startedrî   Útool_start_callbackz!tool_start_callback raised for %sN)r!   r#  r,  ÚtimeÚ	monotonicr7  rR  )rv   Úitem_idrI  r,   rY  Ústarteds   &   €€r   Ú_fire_tool_startedÚ>make_codex_app_server_event_bridge.<locals>._fire_tool_started…  s‡   ø€ ØŸ™ ›×,Ð,¨"Ô.FÀtÓ.L�Ü" 4Ó(ˆßØ $¬D¯NªNÓ,<Ð=ˆG�GÑÙÐ)Ð+aÐcgØ% tÔ-CÀDÓ-IÈ4ÐPõ	Rñ 	Ð&Ð(KÈTÜ& tÓ2°DÐ?÷	Ar   c               ó    € V ^8„  d   QhRRRR/# r\  r   )r   s   "r   r   rW  �  s   € ÷ Iñ I 4ð I¨Dñ Ir   c                ó  <€ \        V 4      pV P                  R 4      ;'       g    R;p'       d   SP                  VR4      MRpV P                  R4      p\        V\        \
        34      ;'       d    V^ 8¬  pV'       d
   VR,          M,V'       d$   \        P                  ! 4       V^,          ,
          MRp\        V 4      w  rxS
! RRVRVRR3RVR	VR
V/R7       Ve
   V^,          M
\        V 4      p	S
! RRV\        W4      WV3R7       R# )rC   r¹   NÚ
durationMsg     @�@r^  z6tool_progress_callback raised on tool.completed for %sztool.completedÚdurationrC  r=  )r,   r-   Útool_complete_callbackz$tool_complete_callback raised for %srî   )r#  r!   Úpopr"   r$   r   r`  ra  rG  r,  rR  )rv   rI  rb  ÚpriorÚcodex_msÚhas_codex_msri  r=  rC  r,   rY  rc  s   &         €€r   Ú_fire_tool_completedÚ@make_codex_app_server_event_bridge.<locals>._fire_tool_completed�  s  ø€ Ü'¨Ó-ˆØ:>¿(¹(À4».×:NÐ:NÈBÐ/N¨wÖ/N�—‘˜G TÔ*ÐUYˆð —8‘8˜LÓ)ˆÜ! (¬S´%¨LÓ9×KÐK¸hÈ!¹mˆß-9˜ 6Ö)×_dÄÇÂÓ@PÐSXÐYZÕS[Ö@[ÐjnˆÜ9¸$Ó?ÑˆÙÐ)Ð+cÐeiØ'¨¨t°TÐ:Ø# X¨z¸8ÀXÈvÐVõ	Xð !Ò,ˆu�QŽxÔ2EÀdÓ2KˆÙÐ)Ð+QÐSWÜ& tÓ2°DÀÐG÷	Ir   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r  r#   rV  r2   r   rƒ   r   )r   s   "r   r   rW     s!   € ÷ ;ñ ;˜Dð ;¨ð ;°ñ ;r   c                óN   <€ \        V 4      pV'       d   S! W R 2V3R7       R# R# )ú raisedrî   N)r  )r  rV  r  rY  s   && €r   Ú_fire_deltaÚ7make_codex_app_server_event_bridge.<locals>._fire_delta   s*   ø€ Ü˜6Ó"ˆ÷ Ù�T˜V 7Ð+°4°'×:ñ r   c               ó    € V ^8„  d   QhRRRR/# r\  r   )r   s   "r   r   rW  ¨  s   € ÷ 
4ñ 
4¨Dð 
4°Tñ 
4r   c                óê   <€ V P                  R 4      ;'       g    Rp\        V\        4      '       d:   VP                  4       '       d$   \	        SRR4      '       d   S! RRRRRV/3R	7       RSn        R
# )r  r¹   Úshow_commentaryTÚ_emit_interim_assistant_messagez&_emit_interim_assistant_message raisedÚroleÚ	assistantr@   rî   N)r!   r"   r2   ÚstriprI   Ú _current_streamed_assistant_text)rv   r  r   rY  s   & €€r   Ú_fire_agent_message_completedÚImake_codex_app_server_event_bridge.<locals>._fire_agent_message_completed¨  sh   ø€ Ø�x‰x˜Ó×%Ð% 2ˆä�dœC× Ò  T§Z¡Z§\¢\´g¸eÐEVÐX\×6]Ò6]ÙÐ6Ð8`Ø" K°¸DÐAÐCõEð 24ˆÖ.r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r  r#   r@  r%   r   rƒ   r   )r   s   "r   r   rW  ´  s!   € ÷ 0ñ 0˜ð 0¨$ð 0°4ñ 0r   c                ó  <€ V P                  R 4      p\        V\        4      '       g   R# VP                  R4      ;'       g    RpV\        9   d   V'       d   SMS! V4       R# V'       d   VR8X  d   S! V4       R# R# R# )rv   NrG   r¹   r  )r!   r"   r#   Ú_CODEX_TOOL_ITEM_TYPES)r  r@  rv   r"  r~  ro  rd  s   &&  €€€r   Ú_on_itemÚ4make_codex_app_server_event_bridge.<locals>._on_item´  sj   ø€ Ø�z‰z˜&Ó!ˆÜ˜$¤×%Ò%ÙØ—H‘H˜VÓ$×*Ð*¨ˆ	ØÔ.Ô.ß%.Ñ!Ð4FÐFÈÖMß˜9¨Ô6Ù)¨$Ö/ñ 7‰Yr   )rV  c                ó   <€ S! V R R7      # )F©r@  r   ©Úprƒ  s   &€r   r¢   Ú4make_codex_app_server_event_bridge.<locals>.<lambda>À  s   ø€ ©°!¸uÕ)Er   úitem/startedc                ó   <€ S! V R R7      # )Tr†  r   r‡  s   &€r   r¢   r‰  Á  s   ø€ ©8°AÀÕ+Fr   úitem/completedc               ó    € V ^8„  d   QhRRRR/# )r   Únoter#   r   rƒ   r   )r   s   "r   r   rW  Ã  s   € ÷ ñ �tð  ñ r   c                ó&  <€ \        V \        4      '       g   R # V P                  R4      ;'       g    RpV P                  R4      p\        V\        4      '       d   TM/ pVP                  R4      pV\        9   ;'       d    \	        \        V4      4      pVR
9   ;'       d1    \        V\        4      ;'       d    VP                  R4      \        9   pV'       g	   V'       d   S! RRRV 23R	7       SP                  V4      pVe   V! V4       R # R # )NÚmethodr¹   r  rv   rG   Ú_touch_activityz_touch_activity raisedzcodex app-server: rî   >   rŠ  rŒ  )r"   r#   r!   Ú_CODEX_PROGRESS_DELTA_METHODSr%   r  Ú_CODEX_PROGRESS_ITEM_TYPES)	rŽ  r�  r  rv   Úis_deltaÚis_itemÚhandlerrY  Úhandlerss	   &      €€r   Úon_eventÚ4make_codex_app_server_event_bridge.<locals>.on_eventÃ  s÷   ø€ Ü˜$¤×%Ò%ÙØ—‘˜(Ó#×)Ð) rˆØ—‘˜(Ó#ˆÜ% f¬d×3Ò3‘¸ˆð �z‰z˜&Ó!ˆØÔ:Ñ:×XÐX¼tÄKÐPVÓDWÓ?XˆàÐ8Ñ8÷ ?ð ?¼ZÈÌdÓ=S÷ ?ð ?Ø—‘˜Ó Ô$>Ñ>ð 	÷ —wÙÐ&Ð(@ÐJ\Ð]cÐ\dÐHeÐGgÕhØ—,‘,˜vÓ&ˆØÒÙ�FŽOñ r   r   )Ú_CODEX_TEXT_DELTA_METHODSÚ	functoolsÚpartial)r   rt  r�  rV  r˜  r~  ro  rd  rƒ  rY  r—  rc  s   f    @@@@@@@r   Ú"make_codex_app_server_event_bridger�  w  s»   ÿ€ ð 35€GðbÈ"ð bÐdh÷ bò b÷	Añ 	A÷Iñ I÷ ;ð ;÷
4ñ 
4÷0ò 0õ Ohô3ÙNg¹l¸fˆ”	×!Ò! +Ô9Ò9ÑNgò3€Hô  F€Hˆ^ÑÜ!F€HÐÑ÷ñ ð( €Oùó53s   Á#Bc               ó   € V ^8„  d   QhRR/# ©r   r   rƒ   r   )r   s   "r   r   r   Ý  s   € ÷  ñ   4ñ  r   c                ó®   € \        \        4      ;_uu_ 4        V P                  P                  4        RRR4       RV n        R#   + '       g   i     L; i)zRDrop the session so the next turn respawns codex instead of reusing a dead client.N)r   r'   Ú_codex_sessionÚclose)r   s   &r   Ú_close_codex_sessionr£  Ý  s5   € ä	”)×	Õ	Ø×Ñ×"Ñ"Ô$÷ 
à€EÖ÷ 
×	ús   ˜AÁA	c               ó    € V ^8„  d   QhRRRR/# )r   Úactiver%   r   útuple[bool, Any]r   )r   s   "r   r   r   ä  s   € ÷  ñ  ¨4ð  Ð;Kñ  r   c                ó¦   € \        T;'       d    \        V RR4      4      pV'       d   \        V RR4      MRpV'       d   V P                  4        W#3# )z�(user_interrupted, interrupt_message); clears the agent-level interrupt so a hard
stop cannot poison the next turn (mirrors the conversation-loop finalizer).Ú_interrupt_requestedFÚ_interrupt_messageN)r%   rI   Úclear_interrupt)r   r¥  ÚinterruptedÚmessages   &&  r   Ú_consume_user_interruptr­  ä  sK   € ô �v×OÐO¤'¨%Ð1GÈÓ"OÓP€Kß<GŒg�eÐ1°4Ô8ÈT€GßØ×ÑÔØÐÐr   c               ó   € V ^8„  d   QhRR/# ©r   r   r2   r   )r   s   "r   r   r   î  s   € ÷ "ñ "¨Cñ "r   c                óª   € \        V RR4      ;'       g    Rp\        V RR4      '       d)   VR,           V P                  ,           P                  4       pV# )zZThe prompt composition the standard loop sends as its system message (turn_context order).Ú_cached_system_promptNr¹   Úephemeral_system_promptú

)rI   r²  r|  )r   Údeveloper_instructionss   & r   Ú_codex_developer_instructionsrµ  î  sO   € ä$ UÐ,CÀTÓJ×PÐPÈbÐÜˆuÐ/°×6Ò6Ø"8¸6Õ"AÀE×DaÑDaÕ"a×!hÑ!hÓ!jÐØ!Ð!r   Úcodex_thread_idz6Codex thread could not be resumed; starting a new one.c               ó   € V ^8„  d   QhRR/# ©r   r   ú
str | Noner   )r   s   "r   r   r   þ  s   € ÷ Kñ K jñ Kr   c                óÀ   € \        V R R4      \        V RR4      r!Ve	   V'       g   R# VP                  V\        4      p\        V\        4      '       d   V'       d   V# R# )r‡   Nrˆ   )rI   Úget_session_model_config_valueÚ_CODEX_THREAD_ID_KEYr"   r2   )r   Údbrˆ   rà   s   &   r   Ú_stored_codex_thread_idr¾  þ  sR   € Ü˜U M°4Ó8¼'À%ÈÐW[Ó:\ˆ
Ø	‚zŸÙØ×1Ñ1°*Ô>RÓS€IÜ" 9¬c×2Ò2·yˆ9ÐJÀdÐJr   c               ó    € V ^8„  d   QhRRRR/# )r   rà   r¹  r   rƒ   r   )r   s   "r   r   r     s   € ÷ Hñ H¨Zð H¸Dñ Hr   c                ó”   € \        V RR4      \        V RR4      r2Ve	   V'       g   R# \        VP                  RV\        V/3R7       R# )uh   Merge (``None`` clears) the binding into the session row; a failed write only logs â€” the turn is done.r‡   Nrˆ   z6codex thread id could not be stored on the session rowrî   )rI   r:   Úpatch_session_model_configr¼  )r   rà   r½  rˆ   s   &&  r   Ú_store_codex_thread_idrÂ    sH   € ä˜U M°4Ó8¼'À%ÈÐW[Ó:\ˆ
Ø	‚zŸÙÜ�"×/Ñ/Ð1iØ"Ô%9¸9Ð$EÐF÷Hr   c               ó   € V ^8„  d   QhRR/# r¯  r   )r   s   "r   r   r     s   € ÷ 5ñ 5 #ñ 5r   c           
     ó:  € ^ RI Hp  V P                  P                  4       #   T dr   p\        P                  RTP                  \        T RR4      4       \        T R4       T P                  \        4       T P                  P                  4       u Rp?# Rp?ii ; i)a!  ``ensure_started`` with the fail-closed resume policy: a stored thread that codex cannot hand back
(unknown id, rollout locked by a killed app-server, different thread) is dropped from the session row,
the user is told once on the status rail, and a fresh thread starts on the same client.)ÚCodexThreadResumeErrorz,%s; starting a new codex thread (session=%s)rˆ   N)Ú)agent.transports.codex_app_server_sessionrÅ  r¡  Úensure_startedr8   rq   r¬  rI   rÂ  Ú_emit_diagnostic_statusÚ_CODEX_THREAD_RESUME_NOTICE)r   rÅ  r�   s   &  r   Ú_start_codex_threadrÊ    s‚   € õ Qð5Ø×#Ñ#×2Ñ2Ó4Ð4øØ!ô 5Ü�‰ÐEÀsÇ{Á{ÔT[Ð\aÐcoÐquÓTvÔwÜ˜u dÔ+Ø×%Ñ%Ô&AÔBØ×#Ñ#×2Ñ2Ó4Õ4ûð	5ús   ˆ" ¢B©A&BÂBÂBc               ó   € V ^8„  d   QhRR/# r¸  r   )r   s   "r   r   r     s   € ÷ Xñ X Jñ Xr   c           	     óà   € \        \        V RR4      ;'       g    R4      P                  4       P                  4       R8w  d   R# ^ RIHp T! \        \        V RR4      ;'       g    R4      4      # )a   codex's ``[model_providers.<id>]`` for a named custom provider (``providers.<name>``); None means codex's
own provider. Only the stable id is sent and codex resolves base_url/env_key itself, so Hermes' credential
never enters the JSON-RPC payload (#75186).r˜   r¹   ÚcustomN)Úcodex_model_provider_idÚrequested_provider)r2   rI   r|  ÚlowerÚ"hermes_cli.runtime_provider_customrÎ  )r   rÎ  s   & r   Ú_codex_model_providerrÒ    s]   € ô Œ7�5˜* bÓ)×/Ð/¨RÓ0×6Ñ6Ó8×>Ñ>Ó@ÀHÔLÙÝJÙ"¤3¤w¨uÐ6JÈBÓ'O×'UÐ'UÐSUÓ#VÓWÐWr   c               ó    € V ^8„  d   QhRRRR/# )r   Úmodel_providerr¹  r   r   )r   s   "r   r   r   '  s   € ÷ 
ñ 
¨Zð 
¸Jñ 
r   c                ó‚   € ^ RI Hp V! \        V RR4      4      ;'       g    RpV'       d   Vf   ^ RIHp V! VR4      pV# )a…  The slug codex should run. ``-900k`` picker variants are Hermes-side aliases the backend rejects
("not supported when using Codex with a ChatGPT account"); codex applies the catalog's extended window
to the base slug itself. On codex's own provider the slug is bare (``openai/gpt-5.5`` -> ``gpt-5.5``),
as for openai-codex; a named custom provider's model ids are its own and pass through.)Ú"strip_codex_context_variant_suffixri   N)Únormalize_model_for_providerzopenai-codex)Úagent.model_metadatarÖ  rI   Úhermes_cli.model_normalizer×  )r   rÔ  rÖ  ri   r×  s   &&   r   Ú_codex_wire_modelrÚ  '  s@   € õ
 HÙ.¬w°u¸gÀtÓ/LÓM×UÐUÐQU€Eß�Ò'ÝKÙ,¨U°NÓCˆØ€Lr   c               ó    € V ^8„  d   QhRRRR/# )r   ri   r¹  r   r   )r   s   "r   r   r   4  s   € ÷ ñ  Zð °Jñ r   c                óà  € \        V RR4      p\        V\        4      '       d-   VP                  R4      RJ g   VP                  R4      '       g   R# ^ RIHp ^ RIHp ^ RIH	p V! V 4      pT! T;'       g    R	RVR
\        V R
R4      R\        V RR4      RVP                  RVP                  /4      w  rxVR8X  d3   VP                  R4      R8X  d   RV! \        V R
R4      VR4      9   d   R# V# )a‚  ``turn/start.effort``: only an explicit Hermes reasoning setting overrides codex's own default, clamped
to the route's vocabulary like the Responses path (a level the model lacks fails the turn with 400
"Unsupported value"). ``ultra`` stays ``ultra`` where the model reaches ``max``: codex runs it as its
harness mode. Disabled reasoning goes out as ``none`` where the route accepts it.Úreasoning_configNÚenabledFÚeffort)Úclassify_responses_route)Úroute_supported_efforts)Ú_resolve_reasoningr¹   r˜   r™   Úis_codex_backendÚis_xai_responsesr&   Úultrarí   )rI   r"   r#   r!   Úagent.codex_responses_adapterrà  Úagent.reasoning_effortrá  Úagent.transports.codexrâ  rã  rä  )	r   ri   rÝ  rà  rá  râ  Úrouterß  Ú_enableds	   &&       r   Ú_codex_turn_effortrë  4  sö   € ô
 ˜uÐ&8¸$Ó?ÐäÐ&¬×-Ò-Ø× Ñ  Ó+¨uÓ4Ð8H×8LÑ8LÈX×8VÒ8VÙÝFÝ>Ý9Ù$ UÓ+€EÙ)¨%¯+¨+°2ØÐ,¨j¼'À%ÈÐUYÓ:ZØ”G˜E :¨tÓ4Ð6HÈ%×J`ÑJ`Ø˜E×2Ñ2ð8ó Ñ€Fð �„Ð+×/Ñ/°Ó9¸WÔDÈÑTkÜ�E˜: tÓ,¨eÐ5GóUIô JIáØ€Mr   c               ó   € V ^8„  d   QhRR/# r¸  r   )r   s   "r   r   r   O  s   € ÷ Xñ X zñ Xr   c                ó^   € ^ RI HpHp VP                  V! V 4      P                  R4      4      # )a1  ``turn/start.serviceTier``: the tier Hermes' own Responses path would request this turn (a static
``/fast`` tier pinned in request_overrides, or an open ``auto``/``cold`` window), in codex's words: the
OpenAI ``priority`` tier is codex's ``fast``. A tier codex has no word for (``ultrafast``) is not sent.)ÚCODEX_TIER_WORDSÚeffective_request_overridesÚservice_tier)Úagent.fast_moderî  rï  r!   )r   rî  rï  s   &  r   Ú_codex_turn_service_tierrò  O  s*   € ÷ NØ×ÑÑ ;¸EÓ B× FÑ FÀ~Ó VÓWÐWr   c               ó    € V ^8„  d   QhRRRR/# )r   rÐ   zlist[dict[str, Any]] | Noner   rƒ   r   )r   s   "r   r   r   W  s    € ÷ @ñ @Ð+Fð @ÐRVñ @r   c                óZ  € \        V 4      p\        V 4      p\        V RR4      e7   \        V RR4      pVe   WB8X  d   \        V RR4      V8X  d   R# \        V 4       \        V RR4      e   RM
\	        V 4      p^ RIHp ^ RIHpH	p ^ RI
Hp	 ^ RIHp
 Rp\        \        4      ;_uu_ 4        ^ R	IHp ^ R
IHp V! 4       '       g   V! 4       pRRR4       Rp ^ RIHp V! 4       pY n        W0n        ^ RIHp V! V4      ;'       g    RpT! \        V RR4      ;'       g    \9        V! 4       4      TV	! V
! 4       4      V! WîR7      \;        V 4      T;'       g    R\=        W4      VVVR7
      V n        R#   + '       g   i     L®; i  \         d    \,        P/                  RRR7        LÅi ; i)aq  Lazily spawn one CodexAppServerSession per AIAgent (reused across turns, closed by the _cleanup hook).
A live session whose thread was started with a different prompt composition (TUI/Desktop ``/personality``
or a prompt mirror mutate the agent in place) is retired first so the new thread carries the current one.
Only the FIRST session of an AIAgent resumes the stored codex thread: a retired/recreated one keeps
today's fresh-thread behaviour and overwrites the binding once its turn is committed. ``messages`` is the
turn's transcript (current user row last); a thread started from scratch is seeded with the prior turns.r¡  NÚ_codex_session_promptÚ_codex_session_model_provider)Úresolve_agent_cwd)ÚCodexAppServerSessionÚ_ServerRequestRouting)Úget_configured_codex_binary)Úload_config)Ú_no_user_can_answer)Ú_get_approval_callbackF)Úis_approval_bypass_activezLcodex app-server: approval-bypass lookup failed; keeping fail-closed defaultTrµ   )Úrender_history_seedÚsession_cwd)Úauto_approve_execÚauto_approve_apply_patch)
r&  Úapproval_callbackÚ	codex_binÚrequest_routingr˜  r´  ri   rÔ  Úresume_thread_idÚhistory_seed) rµ  rÒ  rI   r£  r¾  Úagent.runtime_cwdr÷  rÆ  rø  rù  Úhermes_cli.codex_runtime_switchrú  r    rû  r   r'   Útools.approval_contextrü  Útools.terminal_toolrý  Útools.approvalrþ  r8   r9   rõ  rö  Ú agent.codex_runtime_history_seedrÿ  r2   r�  rÚ  r¡  )r   rÐ   r´  rÔ  Úrecordedr  r÷  rø  rù  rú  rû  r  rü  rý  Úauto_approve_requestsrþ  rÿ  r  s   &&                r   Ú_ensure_codex_sessionr  W  s�  € ô ;¸5ÓAÐÜ*¨5Ó1€NÜˆuÐ&¨Ó-Ò9ô ˜5Ð"9¸4Ó@ˆØÒ Ô BÜ$+¨EÐ3RÐTXÓ$YÐ]kÔ$kÙÜ˜UÔ#Ü& uÐ.EÀtÓLÒX‘tÔ^uÐv{Ó^|ÐÝ3ßfÝKÝ-ð ÐÜ	”)×	Õ	Ý>Ý>Ù"×$Ò$Ù 6Ó 8Ð÷	 
ð "ÐðtÝ<Ù 9Ó ;Ðð #9ÔØ*8Ô'ÝDÙ& xÓ0×8Ð8°D€Lñ 1Ü�E˜=¨$Ó/×KÐK´3Ñ7HÓ7JÓ3KÐ_pÙ-©k«mÓ<Ù-Ð@Uô  GÜ3°EÓ:Ø5×=Ð=¸Ü Ó6À~Ø)¸ô€EÖ÷= 
×	ûô ô tÜ�‰ÐcÐnrˆÖsðtús   Â+!E2ÃF Å2F	Æ"F*Æ)F*c               ó    € V ^8„  d   QhRRRR/# )r   rÐ   úlist[dict[str, Any]]r   r%   r   )r   s   "r   r   r   š  s   € ÷ ñ Ð7Kð ÐPTñ r   c                óþ  € VP                   '       g   R# ^ RIHp VP                   p\        VRR4      pV^ ,          pVe6   VP	                  R4      R8X  d    VP	                  R4      V8X  d
   VR,          pV F  pV! W'4       K  	  \        V R	R4      f   R# Rp V P                  V4      pVRJ d"   \        P                  R\        V RR4      4       VRJ #   \         d    \        P                  R
RR7        LOi ; i)a®  Splice the projected messages into ``messages`` and flush them to the session DB; True when the
rows are durable in the session DB (the codex thread binding may then be published).

Bypasses conversation_loop's per-step _persist_session(); the flush dedups via _DB_PERSISTED_MARKER so
only the new codex rows are written. The agent stays the sole persister (agent_persisted=True): a
gateway re-write would re-INSERT the user turn.F)Úappend_messageÚsubmitted_user_textNrz  Úuserr@   :é   NNr‡   z/codex app-server projected-message flush failedTrµ   u�   codex app-server turn was delivered but could NOT be persisted to the session DB (session=%s) â€” this turn will be missing after restart/resumerˆ   )	Úprojected_messagesÚagent.message_metadatar  rI   r!   Ú_flush_messages_to_session_dbr'   r8   rq   )	r   rÏ   rÐ   r  r  r  ÚfirstÚprojected_messageÚflush_oks	   &&&      r   Ú_persist_projected_messagesr  š  s  € ð ×"×"Ð"ÙÝ5Ø×0Ñ0Ðô " $Ð(=¸tÓDÐØ˜qÕ!€EØÒ'¨E¯I©I°fÓ,=ÀÔ,GØ—	‘	˜)Ó$Ð(;Ô;Ø/°Õ3ÐÛ/ÐÙ�xÖ3ñ 0äˆu�m TÓ*Ò2ÙØ€HðYØ×6Ñ6°xÓ@ˆð �5Óä�‰ð YÜZaÐbgÐiuÐw{ÓZ|ô	~à�tÐÐøô ô YÜ�‰ÐHÐSWˆÖXðYús   ÂC Ã"C<Ã;C<c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rÐ   r  Úoriginal_user_messager   Úshould_review_memoryr%   r   r�   r   )r   s   "r   r   r   ¼  s,   € ÷ ñ Ð.Bð Ð^að Ø-1ðØ6Dñr   c               ó|  € \        V R^ 4      VP                  ,           V n        \        W4       \	        WVR7      p^ V P
                  u;8  ;'       d    V P                  8*  Mu ;'       d    RV P                  9   pV'       d   ^ V n        VP                  '       g>   VP                  f0   \        \        V RR4      R\        W1P                  RVR7      R	7       VP                  '       dP   VP                  '       g>   V'       g	   V'       d.   \        \        V R
R4      R\        \        V4      WFR7      R	7       V# )zPPost-turn bookkeeping mirroring the chat_completions loop; returns usage fields.Ú_iters_since_skill)rÐ   Úskill_manageNÚ_sync_external_memory_for_turnzexternal memory sync raisedF)r   Úfinal_responser«  rÐ   )r-   Ú_spawn_background_reviewzbackground review spawn raised)Úmessages_snapshotÚreview_memoryÚreview_skills)rI   Útool_iterationsr#  rú   rÚ   Ú_skill_nudge_intervalÚvalid_tool_namesr«  r<   r:   r#   Ú
final_textrl   )r   rÏ   rÐ   r   r!  Úusage_resultÚshould_review_skillss   &&&$$  r   Ú_finish_codex_turnr1  ¼  s  € ô  ' uÐ.BÀAÓFÈ×I]ÑI]Õ]€EÔÜ'¨Ô4Ü1°%ÈÔQ€Là × ;Ñ ;×WÔW¸u×?WÑ?WÔW÷ Ið IØ .°%×2HÑ2HÑ Hð çØ#$ˆÔ à××Ð §
¡
Ò 2Ü”g˜eÐ%EÀtÓLÐNkÔtxØ"7ÏÉÐejÐu}ôu
õ 	ð ‡‡€˜t×/×/Ð/×5I×MaÜ”g˜eÐ%?ÀÓFÐHhÔquÜ" 8›nÐ<Pôr
õ 	ð Ðr   r!  c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Úuser_messager2   r   r   rÐ   r  Úeffective_task_idr!  r%   r   r�   r   )r   s   "r   r   r   Õ  s;   € ÷ +ñ +°cð +ÐRUð +Ðauð +Ø14ð+ØLPð+Ø]kñ+r   c               óÀ  € \        V RR4      RJ d   ^ RIHp V! R4      h\        W4        \	        V 4       \        V \        V RR4      4      pV P                  P                  VV\        W4      \        V 4      R7      p\        YP"                  4      p
\        TRR4      '       d,   \        P%                  RTP&                  4       \        T 4       \)        YT4      '       d)   \        TRR4      '       g   \+        YP,                  4       \/        YY2TR7      p\        Y£3R^RTP"                  '       * ;'       d    TP&                  RJ RTP&                  RTP0                  RRRTP,                  RTP2                  /TB #   \         dR   p	\        P                  R	4       \        T 4       \        \        T 4      T^ R\!        T	4      R
T	 R2R7      u Rp	?	# Rp	?	ii ; i)uÎ   Hand the turn to a ``codex app-server`` subprocess and project its events into ``messages``.
Returns the chat_completions result shape. The user message is ALREADY in ``messages`` â€” never append it again.Úcompression_checkpoint_requiredFT)Ú_checkpoint_blockedztcodex_app_server owns the authoritative thread and compacts it without a truthful pre-compaction transcript boundaryrö  N)Ú
user_inputri   Úreasoning_effortrð  zcodex app-server turn failedzCodex app-server turn failed: z:. Fall back to default runtime with `/codex-runtime auto`.)Ú	api_callsr@  r<   r&  Úshould_retirez1codex app-server session retired (turn error: %s))r   r!  r:  r@  r<   r&  Úagent_persistedr¶  Úcodex_turn_id)rI   Ú)agent.conversation_compression_checkpointr7  r  rÊ  rÚ  r¡  Úrun_turnrë  rò  r'   r8   Ú	exceptionr£  Ú_turn_resultr­  r2   r«  rq   r<   r  rÂ  rà   r1  r.  rá   )r   r3  r   rÐ   r4  r!  r7  Ú
wire_modelrÏ   r�   Ú	interruptr/  s   &$$$$$      r   Úrun_codex_app_server_turnrD  Õ  sï  € ô ˆuÐ7¸Ó?À4ÓGÝQÙ!ð #Zó [ð 	[ä˜%Ô*ð
Ü˜EÔ"Ü& u¬g°eÐ=\Ð^bÓ.cÓdˆ
Ø×#Ñ#×,Ñ,Ø#ØÔ/AÀ%Ó/TÜ1°%Ó8ð -ó :ˆô (¨×/?Ñ/?Ó@€Iô ˆt�_ e×,Ò,Ü�‰ÐJÈDÏJÉJÔWÜ˜UÔ#ô # 5°×9Ò9Ä'È$ÐP_Ðaf×BgÒBgÜ˜u§n¡nÔ5Ü%Ø�XÐauô€Lô ØñØ'(ðØ8<×8HÑ8HÔ4H×4_Ð4_ÈTÏZÉZÐ[_ÐM_ðØgk×gqÑgqðð —‘ðð 9=ðð OSÏnÉnðð mq×lxÑlxðð ñ	ð øô) ô 
Ü×ÑÐ7Ô8Ü˜UÔ#ÜÜ# EÓ*¨HÀÈUÔZ]Ð^aÓZbØ;¸C¸5Ð@zÐ{ô
õ 	
ûð
ús   ¬AF ÆGÆAGÇGÇGc               ó8   € V ^8„  d   QhRRRRRRRRR	R
RR
RR
RR/# )r   rC  r¦  rÐ   r  r:  r$   r@  r%   r<   r   r&  rš   r   r�   r   )r   s   "r   r   r     sL   € ÷ 	ñ 	Ð,ð 	Ð8Lð 	Ð\_ð 	Ðlpð 	Øð	Ø-0ð	Ø;>ð	ØCQñ	r   c               óX   € V w  rxRVRVRVRVRV'       * RV/V'       d   RV/M/ CRV/CVC# )	zVResult shape shared with the chat_completions path (``partial`` == ``not completed``).r&  rÐ   r:  r@  rœ  r«  Úinterrupt_messager<   r   )	rC  rÐ   r:  r@  r<   r&  rš   Úuser_interruptedrG  s	   &&$$$$,  r   rA  rA    s`   € ð +4Ñ'Ðà˜.¨*°hÀÈYØ�Y 	¨y¬=¸-ÐIYð÷ 8IÐÐ!2Ñ3Èbðð 	�ñ	ð  ð	ð r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úeventr   rI  r2   r   r   r   )r   s   "r   r   r     s(   € ÷ 3ñ 3˜ð 3 3ð 3°ð 3Àñ 3r   c                ó€   € \        WR4      pVf(   \        V \        4      '       d   V P                  W4      pVe   V# T# )zKField access for attr-style (SDK objects) and dict (raw JSON) events/items.N)rI   r"   r#   r!   )rJ  rI  r   r*   s   &&& r   Ú_event_fieldrL    s=   € ä�E Ó&€EØ‚}œ E¬4×0Ò0Ø—	‘	˜$Ó(ˆØÒ%ˆ5Ð2¨7Ð2r   c               ó    € V ^8„  d   QhRRRR/# ©r   rJ  r   r   r%   r   )r   s   "r   r   r   $  s   € ÷ ñ  Cð ¨Dñ r   c                óN  a€ \        V R4      pV\        9   d   \        \        V R4      4      # VR8X  dq   \        V R4      oR\        \        SR4      ;'       g    R4      9   ;'       d;    \        ;QJ d    V3R lR
 4       F  '       g   K   R# 	  R	# ! V3R lR
 4       4      # R	# )zÔWhether a Codex Responses event carries substantive forward progress.

Lifecycle/keepalive frames and empty structural deltas prove transport
liveness, but do not mean the model has begun producing its response.
rG   r  úresponse.output_item.addedrv   Úfunction_callr¹   c              3  óN   <"  € T F  p\        \        SV4      4      x € K  	  R # 5ir  )r%   rL  )r  Úfieldrv   s   & €r   r  Ú+_codex_event_has_content.<locals>.<genexpr>/  s&   øé € ð PaÙ9_°ŒD”˜d EÓ*×+Ð+Ó9_ùs   ƒ"%TF)rC   rc   rI  r*  )rL  Ú_CODEX_PROGRESS_DELTA_TYPESr%   r2   Úany)rJ  Ú
event_typerv   s   & @r   Ú_codex_event_has_contentrX  $  s³   ø€ ô ˜e VÓ,€JØÔ0Ô0Ü”L ¨Ó0Ó1Ð1ØÐ1Ô1Ü˜E 6Ó*ˆØ¤#¤l°4¸Ó&@×&FÐ&FÀBÓ"GÑG÷ að aÏCËCô PaÙ9_óPaÏCÌCð 	aÊCð 	aÈCô PaÙ9_óPaó Mað 	aár   c               ó    € V ^8„  d   QhRRRR/# ©r   rJ  r   r   rƒ   r   )r   s   "r   r   r   4  s   € ÷ ]ñ ]˜sð ] tñ ]r   c                óÌ   a a€ ^ RI Hp \        S R4      oR V V3R llpV! R4      pVe   \        V4      MRP	                  4       ;'       g    RpV! WB! R4      V! R4      R	7      h)
zÓRaise ``_StreamErrorEvent`` from a ``type=error`` SSE frame. The spec puts code/message/param at the
top level, but the SDK and several proxies nest them under ``error``; read top-level first, then the envelope.)Ú_StreamErrorEventr<   c               ó    € V ^8„  d   QhRRRR/# )r   rI  r2   r   r   r   )r   s   "r   r   Ú)_raise_stream_error.<locals>.__annotate__:  s   € ÷ ]ñ ]˜3ð ] 3ñ ]r   c                óH   <€ \        SV 4      pVf   Se   \        SV 4      # T# r  )rL  )rI  r*   rJ  Únesteds   & €€r   Ú_error_fieldÚ)_raise_stream_error.<locals>._error_field:  s+   ø€ Ü˜U DÓ)ˆØ-2ª]¸vÒ?QŒ|˜F DÓ)Ð\ÐW\Ð\r   r¬  zstream emitted error eventÚcodeÚparam)rc  rd  )Ú	run_agentr\  rL  r2   r|  )rJ  r\  ra  Úraw_messager¬  r`  s   f    @r   Ú_raise_stream_errorrg  4  st   ù€ õ ,Ü˜% Ó)€F÷]ñ ]ñ ˜yÓ)€KØ#.Ò#:Œs�;ÔÐ@\×cÑcÓe÷  Fð  Fð  jF€GÙ
˜G¨,°vÓ*>ÁlÐSZÓF[Ô
\Ð\r   c               ó    € V ^8„  d   QhRRRR/# )r   rv   r   r   r¹  r   )r   s   "r   r   r   B  s   € ÷ Eñ E˜ð E ñ Er   c                óˆ   € \        V R R4      p\        V\        4      '       d   VP                  4       P	                  4       # R# )ÚphaseN)rL  r"   r2   r|  rÐ  )rv   rj  s   & r   Ú_message_phaserk  B  s6   € Ü˜˜w¨Ó-€EÜ$.¨u´c×$:Ò$:ˆ5�;‰;‹=×ÑÓ ÐDÀÐDr   c               ó    € V ^8„  d   QhRRRR/# )r   rv   r   r   r2   r   )r   s   "r   r   r   G  s   € ÷ ñ ˜#ð  #ñ r   c                óœ   € \        V R. 4      p\        V\        4      '       d   TM. pRP                  R V 4       4      P	                  4       # )zSConcatenated ``output_text`` parts of a message item ("" if content is not a list).r@   r¹   c              3  óŠ   "  € T F9  p\        VR R4      R8X  g   K  \        \        VRR4      ;'       g    R4      x € K;  	  R# 5i)rG   r¹   Úoutput_textr  N)rL  r2   )r  Úparts   & r   r  Ú"_output_text_of.<locals>.<genexpr>K  sC   é € ð Ù>C°dÄ|ÐTXÐZ`ÐbdÓGeÐivÑGvÔ1ŒŒL˜˜v rÓ*×0Ð0¨b×1Ð1»eùs   ‚A›A´A)rL  r"   rl   rQ   r|  )rv   Úcontent_partsÚpartss   &  r   Ú_output_text_ofrt  G  sH   € ä   y°"Ó5€MÜ'¨´t×<Ò<‰MÀ"€EØ�7‰7ñ Ù>Cóó ç�eƒgðr   c                  óB  € ] tR tRt$ RtR;t;tt^ tRt	R]
R&   RtR]
R&   R	tR
]
R&   R;t;t;ttRtRtR tR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltRR  R!]R"]R#]R$]R%]R&]/tR' ]3R( ]3R) ]33tR* R+ ltR, R- lt R. R/ lt!R0t"R# )1Ú_CodexResponseAssembleriP  u¥  Assemble a Response-shaped ``SimpleNamespace`` from raw Responses SSE events.

Only ``usage`` / ``status`` / ``id`` / ``service_tier`` are read from the terminal frame â€” never ``response.output``. Output
items come from ``output_item.done``, or are synthesized from text deltas, or settled from function calls
announced via ``output_item.added`` but never confirmed (some backends omit per-item done events on success).FNr¹  Úactive_message_phaser   Úactive_summary_indexr@  r2   Úterminal_statusc               	ó²   € WVuV n         V n        V n        WEuV n        V n        . V n        . . uV n        V n        . . uV n        V n	        / V n
        / V n        R # r  )ri   Úon_text_deltaÚon_reasoning_deltaÚon_commentary_messageÚon_first_deltaÚoutput_itemsÚoutput_indexesÚoutput_sequencesÚtext_deltasÚcommentary_text_deltasÚpending_function_callsÚannounced_output_order)Úselfri   r{  r|  r}  r~  s   &$$$$$r   Ú__init__Ú _CodexResponseAssembler.__init__b  sk   € ØBGÐXjÐ?ˆŒ
�DÔ&¨Ô(?Ø:OÐ7ˆÔ" DÔ$7Ø')ˆÔð 68¸Ð2ˆÔ˜TÔ2Ø8:¸BÐ5ˆÔ˜$Ô5ð BDˆÔ#Ø8:ˆÖ#r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úcbr0   Úlabelr2   r,   r   r   rƒ   r   )r   s   "r   r   Ú$_CodexResponseAssembler.__annotate__o  s.   € ÷ Eñ E˜ð E°ð E¸Cð EÀDñ Er   c                	ó*   € \        VR V R2VR7       R# )zCodex stream rs  rî   N)r:   )r†  rŠ  r‹  r,   s   &&&*r   Ú_safeÚ_CodexResponseAssembler._safeo  s   € Ü�b˜M¨%¨°Ð8¸t×Dr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   rJ  r   rW  r2   r   rƒ   r   )r   s   "r   r   rŒ  r  s!   € ÷ ñ  Cð °Sð ¸Tñ r   c           
     	óL  € \        VR 4      p\        VRR4      pVR8X  d   \        V4      MRV n        V P                  R8X  d   . V n        \	        \        VRR4      4      pV'       dO   WPP
                  9  d?   V P                  \        VR4      3V P
                  V&   V ;P                  ^,          un        R\	        V4      9   d^   R	V n        V'       dM   V P
                  V,          w  rgR TR
\	        \        VR
R4      ;'       g    R4      RVRV/V P                  V&   R# R# R# )rv   rG   r¹   r¬  NÚ
commentaryrC   Úoutput_indexrQ  Tr*  Úsequence)	rL  rk  rw  rƒ  r2   r…  Únext_output_sequenceÚhas_tool_callsr„  )r†  rJ  rW  rv   r"  rb  Úannounced_sequenceÚannounced_indexs   &&&     r   Ú_on_item_addedÚ&_CodexResponseAssembler._on_item_addedr  s  € Ü˜E 6Ó*ˆÜ   v¨rÓ2ˆ	Ø<EÈÔ<R¤N°4Ô$8ÐX\ˆÔ!Ø×$Ñ$¨Ô4Ø*,ˆDÔ'ô ”l 4¨¨rÓ2Ó3ˆß�w×&AÑ&AÔAØ48×4MÑ4MÌ|Ð\aÐcqÓOrÐ3sˆD×'Ñ'¨Ñ0Ø×%Ò%¨Õ*Õ%Øœc )›nÔ,Ø"&ˆDÔßØ6:×6QÑ6QÐRYÕ6ZÑ3Ð"à˜D +¬s´<ÀÀkÐSUÓ3V×3\Ð3\ÐZ\Ó/]Ø" O°ZÐASð8�×+Ñ+¨GÓ4ñ ñ -r   c               ó$   € V ^8„  d   QhRRRRRR/# r‘  r   )r   s   "r   r   rŒ  ‡  s&   € ÷ Hñ H Cð H°Sð H¸Tñ Hr   c                	óL  € \        VR R4      pV'       g   R# V P                  R8X  dK   V P                  P                  V4       V P                  f    V P                  V P                  RV4       R# R# V P                  R8X  d    V P                  V P                  RV4       R# V P                  P                  V4       V P                  '       d   R# V P                  '       g$   RV n	        V P                  V P                  R4       V P                  V P                  RV4       R# )	r  r¹   Nr“  r|  ÚanalysisTr~  r{  )rL  rw  rƒ  rF   r}  rŽ  r|  r‚  r—  Úfirst_delta_firedr~  r{  )r†  rJ  rW  Ú
delta_texts   &&& r   Ú_on_text_deltaÚ&_CodexResponseAssembler._on_text_delta‡  sé   € Ü! %¨°"Ó5ˆ
ßÙð ×$Ñ$¨Ô4Ø×'Ñ'×.Ñ.¨zÔ:à×)Ñ)Ò1Ø—
‘
˜4×2Ñ2Ð4HÈ*ÖUñ 2à×&Ñ&¨*Ô4Ø�J‰J�t×.Ñ.Ð0DÀjÖQà×Ñ×#Ñ# JÔ/Ø×"×"Ð"ÙØ×)×)Ð)Ø)-�Ô&Ø—
‘
˜4×.Ñ.Ð0@ÔAØ�J‰J�t×)Ñ)¨?¸JÖGr   c               ó$   € V ^8„  d   QhRRRRRR/# r‘  r   )r   s   "r   r   rŒ  �  s!   € ÷ 2ñ 2 sð 2¸ð 2Àñ 2r   c                	óš   € \        VR R4      p\        V\        4      '       d(   V'       d   V P                  P	                  V4       R# R# R# )r  r¹   N)rL  r"   r2   r‚  rF   )r†  rJ  rW  Úrefusal_texts   &&& r   Ú_on_refusal_deltaÚ)_CodexResponseAssembler._on_refusal_delta�  s=   € ô
 $ E¨7°BÓ7ˆÜ�l¤C×(Ò(¯\Ø×Ñ×#Ñ# LÖ1ñ .:Ñ(r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rb  r2   r”  r   r   r¹  r   )r   s   "r   r   rŒ  ¦  s!   € ÷ ñ ¨Sð Àð È
ñ r   c                	ó�   a€ WP                   9   d   V# Se/   \        V3R lV P                   P                  4        4       R 4      # R # )Nc              3  óL   <"  € T F  w  rVR ,          S8X  g   K  Vx € K  	  R# 5i)r”  Nr   )r  rØ   Úpendingr”  s   &  €r   r  Ú@_CodexResponseAssembler._pending_function_key.<locals>.<genexpr>¬  s*   øé € ð EÑ1T¡ Ø# NÕ3°|ÑC÷ šÓ1Tùó   ƒ$š
$)r„  Únextrr   )r†  rb  r”  s   &&fr   Ú_pending_function_keyÚ-_CodexResponseAssembler._pending_function_key¦  sN   ø€ Ø×1Ñ1Ô1ØˆNð Ò#Üô E°×1LÑ1L×1RÑ1RÔ1Tó EØFJóLð Lár   c               ó$   € V ^8„  d   QhRRRRRR/# r‘  r   )r   s   "r   r   rŒ  °  s!   € ÷ 6ñ 6 sð 6¸ð 6Àñ 6r   c           	     	ó�  € R V n         V P                  \        \        VRR4      4      \        VR4      4      pV P                  P                  V4      pVf   R# RV9   d-   TR;;,          \        VRR4      ;'       g    R,          uu&   R# VP                  R4      '       d$   \        VRR4      ;pe   \        V4      VR&   R# R# R# )Trb  r¹   r”  Nr  r*  zfunction_call_arguments.done)r—  r¯  r2   rL  r„  r!   Úendswith)r†  rJ  rW  rØ   r«  Ú	done_argss   &&&   r   Ú_on_function_callÚ)_CodexResponseAssembler._on_function_call°  s¾   € Ø"ˆÔØ×(Ñ(¬¬\¸%ÀÈBÓ-OÓ)PÜ)5°e¸^Ó)LóNˆà×-Ñ-×1Ñ1°#Ó6ˆØŠ?ÙØ�jÔ Ø�K× ¤L°¸ÀÓ$D×$JÐ$JÈÕJÕ Ø× Ñ Ð!?×@Ò@ô *¨%°¸dÓCÐC�	ÒPÜ'*¨9£~�˜Ó$ñ Qñ Ar   c               ó$   € V ^8„  d   QhRRRRRR/# r‘  r   )r   s   "r   r   rŒ  ¿  s&   € ÷ 	Rñ 	R¨ð 	R¸#ð 	RÀ$ñ 	Rr   c                	óü   € \        VR R4      pV'       d   V P                  f   R# \        VR4      pVe*   V P                  e   W@P                  8w  d   RV 2pW@n        V P                  V P                  RV4       R# )r  r¹   NÚsummary_indexr³  r|  )rL  r|  rx  rŽ  )r†  rJ  rW  Úreasoning_textr¹  s   &&&  r   Ú_on_reasoning_deltaÚ+_CodexResponseAssembler._on_reasoning_delta¿  st   € Ü% e¨W°bÓ9ˆß ×!8Ñ!8Ò!@ÙÜ$ U¨OÓ<ˆØÒ$Ø×(Ñ(Ò4¸×JcÑJcÔ9cØ#'¨Ð'7Ð!8�Ø(5Ô%Ø�
‰
�4×*Ñ*Ð,@À.ÖQr   c               ó$   € V ^8„  d   QhRRRRRR/# r‘  r   )r   s   "r   r   rŒ  Ê  s!   € ÷ .-ñ .- 3ð .-°Cð .-¸Dñ .-r   c                	óž  a € \        VR 4      pVf   R# S P                  P                  V4       \        \        VRR4      4      pS P                  P                  VR4      w  rV. pR\        \        VRR4      4      9   Ed.   \        VRR4      p\        V\        4      '       d·   VP                  4       '       d¡   S P                  P                  4        U	U
u. uF!  w  rš\        V
R ,          R4      V8X  g   K  V	NK#  	  pp	p
V'       gN   S P                  V\        VR4      4      pVe.   \        S P                  V,          R ,          R4      '       g   V.pRRreM#S P                  V\        VR4      4      pVe   V.pV'       d*   \        V 3R lV 4       R	 R
7      pVR,          VR,          reVf&   S P                  S P                  ^,           upS n        S P                  P                  \        VRV4      4       S P                  P                  V4       V F  pS P                  P                  VR4       K!  	  \!        V4      R8X  d{   S P"                  ek   RP%                  S P&                  4      P                  4       ;'       g    \)        V4      pV'       d   S P+                  S P"                  RV4       . S n        R# R# R# u up
p	i )rv   NrC   r¹   rQ  rG   rc   r”  c              3  óJ   <"  € T F  pSP                   V,          x € K  	  R # 5ir  )r„  )r  rØ   r†  s   & €r   r  Ú8_CodexResponseAssembler._on_item_done.<locals>.<genexpr>ê  s!   øé € Ð&`ÑS_ÈC t×'BÑ'BÀ3×'GÒ'GÓS_ùs   ƒ #c                ó   € V R ,          # )r•  r   )r«  s   &r   r¢   Ú7_CodexResponseAssembler._on_item_done.<locals>.<lambda>ë  s	   € ¸'À*Ö:Mr   ©rØ   r•  r“  r}  ©NN)rL  r  rF   r2   r…  r!   r"   r|  r„  rr   r¯  Úminr–  r€  r�  rk  rk  r}  rQ   rƒ  rt  rŽ  )r†  rJ  rW  Ú	done_itemÚdone_idr˜  r™  Úpending_keysÚdone_call_idrØ   r«  Úpending_keyÚannounced_aliasÚcommentary_texts   f&&           r   Ú_on_item_doneÚ%_CodexResponseAssembler._on_item_doneÊ  s†  ø€ Ü  ¨Ó/ˆ	ØÒÙØ×Ñ× Ñ  Ô+ô ”l 9¨d°BÓ7Ó8ˆØ.2×.IÑ.I×.MÑ.MÈgÐWcÓ.dÑ+ÐØˆØœc¤,¨y¸&À"Ó"EÓFÕFÜ'¨	°9¸bÓAˆLÜ˜,¬×,Ò,°×1CÑ1C×1EÒ1Eð 9=×8SÑ8S×8YÑ8YÔ8[ô  ]Ñ8[©¨Ü#/°¸µÀÓ#KÈ|Ñ#[÷ !$ Ñ8[�ñ  ]÷ $Ø"&×"<Ñ"<¸WÄlÐSXÐZhÓFiÓ"j�KØ"Ò.´|Ø ×7Ñ7¸ÕDÀVÕLÈi÷8Yò 8Yà(3 }˜Ø6:¸D¡Oð #×8Ñ8¸Ä,ÈuÐVdÓBeÓf�ØÒ*Ø$/ =�LßÜ"%Ô&`ÑS_Ó&`Ù*Mô#O�à6EÀjÕ6QÐSbÐcqÕSr OØÒ%Ø<@×<UÑ<UÐW[×WpÑWpÐstÕWtÐ9Ð Ô 9Ø×Ñ×"Ñ"¤<°°~ÀÓ#WÔXØ×Ñ×$Ñ$Ð%7Ô8ã'ˆKØ×'Ñ'×+Ñ+¨K¸Ö>ñ (ä˜)Ó$¨Ô4¸×9SÑ9SÒ9_Ø Ÿg™g d×&AÑ&AÓB×HÑHÓJ×hÐhÌoÐ^gÓNhˆOßØ—
‘
˜4×5Ñ5Ð7NÐP_Ô`Ø*,ˆDÖ'ñ	 :`Ñ4ùó7 ]s   ÃK	Ã8K	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ  r   rW  r2   r   r%   r   )r   s   "r   r   rŒ  ú  s!   € ÷ ñ  #ð °3ð ¸4ñ r   c                	óÞ  € R V n         \        VR4      pVeŽ   \        VR4      \        VR4      uV n        V n        \        VR4      V n        \        VR4      p\        V\        4      '       d   W@n        VR8X  d   \        VR4      V n        MVR8X  d   \        VR	4      V n	        V P                  ;'       g    VR
8H  V n
        V P                  ;'       g    VP                  R4      V n        R # )TÚresponserÑ   rC   rð  r¿   úresponse.incompleteÚincomplete_detailsúresponse.failedr<   úresponse.completedz	response.)Úsaw_terminalrL  Úterminal_usageÚterminal_response_idÚterminal_service_tierr"   r2   ry  Úterminal_incomplete_detailsÚterminal_errorÚsaw_response_completedÚremoveprefix)r†  rJ  rW  Úresp_objÚrstatuss   &&&  r   Ú_on_terminalÚ$_CodexResponseAssembler._on_terminalú  sß   € Ø ˆÔÜ  zÓ2ˆØÒÜ=IÈ(ÐT[Ó=\Ô^jÐksÐuyÓ^zÐ:ˆDÔ Ô!:Ü)5°hÀÓ)OˆDÔ&Ü" 8¨XÓ6ˆGÜ˜'¤3×'Ò'Ø'.Ô$ØÐ2Ô2Ü3?ÀÐJ^Ó3_�Õ0ØÐ0Ô0Ü&2°8¸WÓ&E�Ô#Ø&*×&AÑ&A×&gÐ&gÀZÐSgÑEgˆÔ#Ø#×3Ñ3×[Ð[°z×7NÑ7NÈ{Ó7[ˆÔÙr   r<   c                	ó   € \        V4      # r  )rg  )r†  rJ  rW  s   &&&r   r¢   Ú _CodexResponseAssembler.<lambda>  s
   € Ô1DÀUÔ1Kr   rP  zresponse.output_item.donerÕ  rÒ  rÔ  úresponse.refusal.deltac                	ó   € R V 9   # )zoutput_text.deltar   ©Úts   &r   r¢   rã    s
   € Ð&¨!Ò+r   c                	ó   € R V 9   # )rQ  r   ræ  s   &r   r¢   rã    s
   € ÈÐ\]ÒI]r   c                	ó&   € R V 9   ;'       d    RV 9   # )r  r  r   ræ  s   &r   r¢   rã    s   € �; !Ñ#×4Ð4¨°1©Ð4r   c               ó    € V ^8„  d   QhRRRR/# rN  r   )r   s   "r   r   rŒ    s   € ÷ Xñ X˜#ð X $ñ Xr   c                ó  a€ \        VRR4      o\        S\        4      '       d   SMRoV P                  P	                  S4      ;'       g!    \        V3R lV P                   4       R4      pVe   \        V! WS4      4      # R# )z=Process one event; True when the stream hit a terminal frame.rG   r¹   c              3  óL   <"  € T F  w  rV! S4      '       g   K  Vx € K  	  R # 5ir  r   )r  r  ÚhrW  s   &  €r   r  Ú/_CodexResponseAssembler.feed.<locals>.<genexpr>  s    øé € Ð?tÑNbÁdÀaÑfgÐhr×fsÇÂÓNbùr­  NF)rL  r"   r2   Ú_EXACT_HANDLERSr!   r®  Ú_FUZZY_HANDLERSr%   )r†  rJ  r–  rW  s   && @r   ÚfeedÚ_CodexResponseAssembler.feed  ss   ø€ ä! %¨°Ó4ˆ
Ü#-¨j¼#×#>Ò#>‘ZÀBˆ
Ø×&Ñ&×*Ñ*¨:Ó6×{Ð{¼$Ô?tÈd×NbÒNbÓ?tÐvzÓ:{ˆØ9@Ò9LŒt‘G˜D¨Ó4Ó5ÐWÐRWÐWr   c               ó   € V ^8„  d   QhRR/# )r   r   z	list[Any]r   )r   s   "r   r   rŒ    s   € ÷ /ñ / ñ /r   c                ó&  € \        \        V P                  V P                  V P                  4      4      pV P
                  P                  4        F�  pVR,          pTP                  VP                  R4      VR,          \        R\        VRR4      \        VRR4      \        VRR4      R	VR
,          ;'       g    RP                  4       ;'       g    RR7      34       K‘  	  \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d5   \        \        4      ;_uu_ 4        VP                  R R7       RRR4       MVP                  R R7       V Uu. uF  qD^,          NK  	  up#   + '       g   i     L(; iu upi )zCMerge .done items with settled pending calls, keeping stream order.rv   r”  r•  rQ  rC   Nrc   rI  r@  r*  r¹   z{})rG   rC   rc   rI  r¿   r*  c              3  ó6   "  € T F  q^ ,          RJx € K  	  R# 5ir|   r   )r  Úentrys   & r   r  Ú:_CodexResponseAssembler._settled_output.<locals>.<genexpr>,  s   é € Ð9±¨�Q�x˜tÕ#³ùs   ‚FTc                ó   € V ^ ,          # )r}   r   ©rö  s   &r   r¢   Ú9_CodexResponseAssembler._settled_output.<locals>.<lambda>.  s   € ¨u°Q®xr   rÃ  c                ó   € V ^,          # )r  r   rù  s   &r   r¢   rú  0  s   € ¨5°®8r   )rl   Úzipr€  r�  r  r„  ÚvaluesrF   r!   r   rL  r|  Úallr   r5  Úsort)r†  Úindexedr«  rv   rö  s   &    r   Ú_settled_outputÚ'_CodexResponseAssembler._settled_output  s>  € ä”s˜4×.Ñ.°×0EÑ0EÀt×GXÑGXÓYÓZˆØ×2Ñ2×9Ñ9Ö;ˆGØ˜6•?ˆDØ�N‰N˜GŸK™K¨Ó7¸ÀÕ9LÌoØ$¬°d¸DÀ$Ó)GÔQ]Ð^bÐdmÐosÓQtÜ! $¨°Ó5¸kð # ;Õ/×5Ð5°2×<Ñ<Ó>×FÐFÀ$ôOð ö ñ <÷ ‹3Ñ9±Ó9�3�3Š3Ñ9±Ó9×9Ò9Üœ)×$Õ$Ø—‘Ñ!7�Ô8÷ %Ð$ð �L‰LÑ3ˆLÔ4Ù&-Ó.¡g˜U�a—�¡gÑ.Ð.÷	 %×$üò /s   Ä3E;Å'FÅ;F	c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   rŒ  3  s   € ÷ Pñ P˜ñ Pr   c                	óf  € V P                   '       d   V P                  4       M\        V P                  4      pV'       g\   V P                  '       dJ   V P
                  '       g8   \        R RP                  V P                  4      R7      .p\        RRRVR7      .pV P                  '       g   V'       g   \        R4      h\        VRP                  V P                  4      V P                  V P                  V P                  V P                  V P                  V P                  V P                   R7	      # )	ro  r¹   )rG   r  r¬  r{  r@  )rG   rz  r¿   r@   z7Codex Responses stream did not emit a terminal response)	ra   ro  rÑ   r¿   rC   ri   rÓ  r<   rð  )rÜ  r  rl   r  r‚  r—  r   rQ   rÖ  ÚRuntimeErrorr×  ry  rØ  ri   rÚ  rÛ  rÙ  )r†  ra   r@   s   &  r   r=  Ú_CodexResponseAssembler.result3  sí   € ð 7;×6Q×6QÐ6Q˜D×0Ñ0Ô2ÔW[Ð\`×\mÑ\mÓWnˆç˜$×*×*Ð*°4×3F×3FÐ3FÜ&¨MÀÇÁÈ×HXÑHXÓ@YÔZÐ[ˆGÜ%¨9¸;È{ÐdkÔlÐmˆFà× × Ð ¯ÜÐXÓYÐYÜØ r§w¡w¨t×/?Ñ/?Ó'@È×H[ÑH[Ðdh×dxÑdxØ×(Ñ(°·
±
Èt×OoÑOoØ×%Ñ%°D×4NÑ4NôPð 	Pr   )rw  rx  r…  rƒ  rŸ  r—  ri   r–  r}  r~  r|  r{  r€  r  r�  r„  rÜ  rÖ  rÛ  rÚ  rØ  rÙ  ry  r×  r‚  )#rH   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r—  rŸ  rÖ  r–  rw  Ú__annotations__rx  ry  r×  rØ  rÚ  rÛ  rÙ  rÜ  r‡  rŽ  rš  r¡  r¦  r¯  rµ  r»  rÍ  rà  rï  rð  rñ  r  r=  Ú__static_attributes__r   r   r   rv  rv  P  s  ‡ ñuð 9>Ð=€NÐ=Ð&¨ØÐØ'+Ð˜*Ó+à $Ð˜#Ó$Ø&€O�SÓ&Ø[_Ð_€NÐ_Ð)Ð_Ð,GÈ.Ø Ðà"Ðò;õEõõ*Hõ,2õõ6õ	Rõ.-õ`ð( 	ÑKØ$ nÐ6QÐS`Ø˜lÐ,AÀ<ÐQbÐdpØ Ð"3ð	€Oñ 
,¨^Ð<Ñ?]Ð_pÐ>qÙ	4Ð6IÐJð€Oõ
Xõ/÷(Pñ Pr   rv  r{  r|  r}  r~  r˜  Úinterrupt_checkc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú
event_iterr   ri   r2   r   r   r   )r   s   "r   r   r   D  s&   € ÷ ñ ØðØ"ðð ñr   c               óN  € \        WVWER7      pV  FI  p	Ve
    V! V	4       Ve   V! 4       '       g   VP                  V	4      '       g   K:   VP                  4       # 	  VP                  4       #   \        \        3 d    h \         d    \        P                  RRR7        L‚i ; i)a  Consume a Codex Responses SSE stream into a Response-shaped ``SimpleNamespace`` (see
:class:`_CodexResponseAssembler`; ``status`` is ``completed`` when the stream ended with content but no
terminal frame; ``model`` comes from kwargs).

Callbacks: ``on_text_delta`` per output_text delta, suppressed once a function_call is seen;
``on_reasoning_delta`` for reasoning and ``phase=analysis`` deltas (also commentary without a commentary
callback); ``on_commentary_message`` once per completed ``phase=commentary`` message, before any following
tool item; ``on_first_delta`` one-shot; ``on_event`` every event before any processing; ``interrupt_check()``
True breaks the loop and may raise ``TimeoutError`` / ``InterruptedError`` for request retirement that
must not become a partial final response.)ri   r{  r|  r}  r~  z!Codex stream on_event hook raisedTrµ   )rv  ÚTimeoutErrorÚInterruptedErrorr'   r8   r9   rñ  r=  )
r  ri   r{  r|  r}  r~  r˜  r  Ú	assemblerrJ  s
   &$$$$$$$  r   Ú_consume_codex_event_streamr  D  s«   € ô (¨eÐewØ>Sôt€IãˆØÒðQÙ˜”ð
 Ò'©O×,=Ò,=À)Ç.Á.ÐQV×BWÔBWØØ×ÑÓÐñ ð ×ÑÓÐøô !Ô"2Ð3ô ØÜô QÜ—‘Ð@È4�ÖPðQús   ™A.Á.B$Â	B$Â#B$c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r?   r�   r   r   )r   s   "r   r   r   a  s!   € ÷ ñ ¨Cð ¸.ð È^ñ r   c                ó€  € \        V4      p\        V RR4      p\        V4      '       d   \        V! 4       4      '       g   V# RV9   d   R.M. pVP	                  RR4       VP                  R4      p\        V\         4      '       di   RV9   db   VP                  4        UUu/ uF  w  rgVR8w  g   K  WgbK  	  uppVR&   VR,          '       g   VP	                  R4       VP                  R4       V'       dB   \        P                  RVP                  R\        V RR4      4      R	P                  V4      4       V# u uppi )
zúDrop fields the ChatGPT OAuth Codex endpoint rejects, at the final wire boundary (after Relay /
middleware / ``request_overrides``): a late ``prompt_cache_retention``, top-level or nested in
``extra_body``, would otherwise HTTP 400 a valid follow-up.Ú_is_codex_backendNÚprompt_cache_retentionz	top-levelÚ
extra_bodyz^Dropped unsupported prompt_cache_retention at consumer Codex wire boundary (model=%s, via %s).ri   r  r0  )r#   rI   rÆ   r%   rk  r!   r"   rr   rF   r8   rq   rQ   )r   r?   Ú	sanitizedÚbackend_predicateÚdropped_fromr  ÚkÚvs   &&      r   Ú _sanitize_consumer_codex_requestr  a  s  € ô �W“€Iä Ð':¸DÓAÐÜÐ&×'Ò'¬DÑ1BÓ1D×,EÒ,EØÐØ$<À	Ô$I�K‘=Èr€LØ‡M�MÐ*¨DÔ1à—‘˜|Ó,€JÜ�*œd×#Ò#Ð(@ÀJÔ(NØ4>×4DÑ4DÔ4FÔ"hÑ4F©D¨AÈ!ÐOgÑJg¤4 1¢4Ñ4FÒ"hˆ	�,ÑØ˜×&Ô&Ø�M‰M˜,Ô'Ø×Ñ˜LÔ)ßÜ�‰ÐwØ —}‘} W¬g°e¸WÀiÓ.PÓQÐSW×S\ÑS\Ð]iÓSjô	làÐùó #is   Â!D:Â1D:c               ó    € V ^8„  d   QhRRRR/# )r   rY   r#   Úclientr   r   )r   s   "r   r   r   y  s   € ÷ Y2ñ Y2¨ð Y2°cñ Y2r   c                ó`  a aaaaaaaaaaaaa a!a"€ ^ RI p^ RIHo ^ RIHp VP
                  VP                  VP                  VP                  \        3o S;'       g    S P                  RR7      o^SP                  R4      uoo. S n        \        P                  4       o!S!e   S!P                  M\        S RR4      oRRR	RR
R/o"R V V3R lloR V VV"3R lloR V3R llpR VV3R llpR VV 3R llpR V VVVV!3R llp	R VV 3R llp
R VV 3R llpR VV VVV"3R lloR V VVVV"3R llpR  VVV V V"3R! llpR" VV V3R# llp\        S R$R%4      p\        S R&R4      RJ;'       d    TpV'       d   V! S P                   4      MRp\        S R'R4      '       d   R(M(\#        \        S R)^ 4      ;'       g    ^ 4      ^ 8”  d   R*MR+p\%        S^,           4       EFg  oS! 4       '       g   \'        R,4      hS P(                  '       d   \+        R-4      hS^ 8”  d�   S!e‰   S!P,                  '       dw   S!P.                  ;_uu_ 4        \0        P0                  ! 4       S!n        RS!n        RS!n        \8        P;                  R.S!P2                  S^,           S^,           S4       RRR4       . oR;S"R&   ;S"R	&   pRS"R
&     TP=                  \?        S4      T\A        \        S R/R04      ;'       g    R04      \A        \        S R1R04      ;'       g    R24      \A        S;'       g    R04      VV3R3 lVSPB                  R4 R5 R6R7R8VR9SR:\        S R;R4      /R%R<7      p\E        TSV! V4      V! S PF                  4      TVe	   V! V4      MRV! V	4      V
R=7      pS P(                  '       g	   T! T4       TPX                  RC9   da   \8        P[                  RATPX                  TP\                  TP^                  \a        RB S P                   4       4      S PK                  4       4       TTf   T! S"P                  R	4      4       u # T! T4       u # 	  R#   + '       g   i     EL³; i  S  d¡   pSS8¼  d
   S! T4       h \8        PI                  Tf   R>MR?S^,           S^,           S PK                  4       T4       S'       g   \M        SS^,           S^,           4      o Rp?Tf   T! S"P                  R	4      4       EK  T! T4       EK$  Rp?i\N         dK    TeE   TPP                  e7   TPP                  u Tf   T! S"P                  R	4      4       u # T! T4       u # h S d©   pSS8  d”   S"R,          f‰   \S        TPT                  TPV                  4      '       dc   \8        PI                  R@S^,           S^,           S PK                  4       T4        Rp?Tf   T! S"P                  R	4      4       EK  T! T4       EK  S! T4       h Rp?ii ; i  Tf   T! S"P                  R	4      4       i T! T4       i ; i)DzVOne streaming Responses API request over raw ``responses.create(stream=True)`` events.N)ÚAPIConnectionError)Ú	relay_llmÚcodex_stream_direct©Úreasonri   Ú"_active_codex_stream_request_tokenr*   Ú
raw_streamÚsuperseded_loggedFc               ó   € V ^8„  d   QhRR/# ©r   r   r%   r   )r   s   "r   r   Ú&run_codex_stream.<locals>.__annotate__‘  s   € ÷ tñ t ñ tr   c                 ó:   <€ SR J ;'       g    \        S RR 4      SJ # )Nr(  )rI   )r   Úrequest_tokens   €€r   Ú_request_is_currentÚ-run_codex_stream.<locals>._request_is_current‘  s'   ø€ Ø Ð$×sÐs¬°Ð7[Ð]aÓ(bÐfsÐ(sÐsr   c               ó   € V ^8„  d   QhRR/# r,  r   )r   s   "r   r   r-  ”  s   € ÷ 	ñ 	 ñ 	r   c                 ó¾   <€ SR ,          p V e   \        SV 4      '       d   R# SR,          '       g,   RSR&   \        P                  RSP                  RR4      4       R# )r*   Tr*  z¢Codex streaming attempt superseded by a newer stream; suppressing its live deltas while consuming to completion so the final response is not truncated (model=%s).ri   r  F)r
   r8   rq   r!   )Útokenr   rY   Úwriter_tokens    €€€r   Ú_writer_is_currentÚ,run_codex_stream.<locals>._writer_is_current”  s^   ø€ Ø˜WÕ%ˆØŠ=Ô4°U¸E×BÒBÙØÐ/×0Ô0Ø04ˆLÐ,Ñ-Ü�N‰Nð hà%Ÿ>™>¨'°9Ó=ô?ñ r   c               ó    € V ^8„  d   QhRRRR/# )r   r/   zCallable[[Any], None]r   r   )r   s   "r   r   r-  Ÿ  s    € ÷ Jñ JÐ)ð JÐ.Cñ Jr   c                ó   <a € VV 3R l# )zIWrap a callback so a retired request's late frames never reach the agent.c                ó2   <€ S! 4       '       d	   S! V 4      # R # r  r   )r*   r0  r/   s   &€€r   r¢   Ú3run_codex_stream.<locals>._fenced.<locals>.<lambda>¡  s   ø€ Ñ*=×*?Ò*?™R ›YÐIÀTÐIr   r   )r/   r0  s   f€r   Ú_fencedÚ!run_codex_stream.<locals>._fencedŸ  s	   ù€ åIÐIr   c               ó    € V ^8„  d   QhRRRR/# )r   r/   zCallable[..., None]r   r   )r   s   "r   r   r-  £  s    € ÷ cñ cÐ%ð cÐ*=ñ cr   c                ó   <a € VVV 3R l# )ziWrap a live-display callback so a superseded writer's frames never reach the sink (retired ones neither).c                 óH   <€ S! 4       '       d   S! 4       '       d   S! V !  # R # r  r   )r,   r0  r6  r/   s   *€€€r   r¢   Ú1run_codex_stream.<locals>._live.<locals>.<lambda>¥  s$   ø€ Ñ*=×*?Ò*?ÑDV×DXÒDX™R ™YÐbÐ^bÐbr   r   )r/   r0  r6  s   f€€r   Ú_liveÚrun_codex_stream.<locals>._live£  s	   ù€ æbÐbr   c               ó    € V ^8„  d   QhRRRR/# )r   r  r2   r   rƒ   r   )r   s   "r   r   r-  §  s   € ÷ +ñ +˜Sð + Tñ +r   c                ó~   <€ SP                   P                  V 4       S! 4       '       d   SP                  V 4       R # R # r  )Ú_codex_streamed_text_partsrF   Ú_fire_stream_delta)r  r6  r   s   &€€r   r¡  Ú(run_codex_stream.<locals>._on_text_delta§  s3   ø€ Ø×(Ñ(×/Ñ/°Ô5Ù×ÒØ×$Ñ$ TÖ*ñ  r   c               ó    € V ^8„  d   QhRRRR/# rZ  r   )r   s   "r   r   r-  ¬  s   € ÷ ;ñ ;˜ð ; ñ ;r   c                óV  <€ \         P                   ! 4       p\        SR R4      f   VSn        \        V 4      pR;r4S	ei   S	P                  ;_uu_ 4        S	P
                  RJ pVS	n        V'       d/   S	P                  RJ pVS	n        S	P                  '       d   RS	n        RRR4       V'       d(   \        P                  RVS^,           S^,           S4       V'       d(   \        P                  RVS^,           S^,           S4       SP                  R4       R#   + '       g   i     L�; i)Ú_last_api_first_chunk_atNFzACodex stream first parsed event at %.3f (attempt=%s/%s, model=%s)zICodex stream first substantive progress at %.3f (attempt=%s/%s, model=%s)zreceiving stream response)r`  rI   rK  rX  ÚlockÚlast_event_tsÚlast_progress_tsÚphase_awareÚretry_started_tsr8   rñ   r‘  )
rJ  ÚnowÚhas_progressÚfirst_eventÚfirst_progressr   rZ   Úmax_stream_retriesri   Úwatchdog_states
   &    €€€€€r   Ú	_on_eventÚ#run_codex_stream.<locals>._on_event¬  sþ   ø€ Ü�iŠi‹kˆô �5Ð4°dÓ;ÒCØ-0ˆEÔ*Ü/°Ó6ˆØ',Ð,ˆØÒ%Ø×$×$Ó$Ø,×:Ñ:¸dÐB�Ø/2�Ô,ßØ%3×%DÑ%DÈÐ%L�NØ69�NÔ3Ø%×1×1Ð1Ø:>˜Ô7÷ %÷ Ü�K‰KÐ[Ø�W˜q•[Ð"4°qÕ"8¸%ôAçÜ�K‰KÐcØ�W˜q•[Ð"4°qÕ"8¸%ôAà×ÑÐ9Ö:÷ %×$ús   ÁADÂDÄD(	c               ó   € V ^8„  d   QhRR/# r,  r   )r   s   "r   r   r-  Æ  s   € ÷ 0ñ 0 dñ 0r   c                 ó^   <€ S ! 4       '       g   \        R 4      h\        SP                  4      # )z?Codex Responses stream request retired before terminal response)r  r%   r¨  )r0  r   s   €€r   Ú_interrupt_or_supersededÚ2run_codex_stream.<locals>._interrupt_or_supersededÆ  s+   ø€ ñ #×$Ò$ÜÐ`ÓaÐaÜ�E×.Ñ.Ó/Ð/r   c               ó   € V ^8„  d   QhRR/# )r   Únext_api_kwargsr�   r   )r   s   "r   r   r-  Í  s   € ÷ ]ñ ]¨Nñ ]r   c           
     ó  <€ ^ RI Hp T! \        SRR4      \        \        SRR4      ;'       g    R4      4      '       d   \	        R4      h\        SV 4      pRVR&   SP                  P                  ! R/ \        V4      B # )	r}   )Úis_actual_router˜   r¹   r™   zFActual requests require Chat Completions; refusing to call /responses.TÚstreamr   )	Úhermes_cli.providersr`  rI   r2   r~   r  Ú	responsesÚcreater   )r^  r`  Ústream_kwargsÚactive_clientr   s   &  €€r   Ú_open_codex_streamÚ,run_codex_stream.<locals>._open_codex_streamÍ  s‚   ø€ Ý8áÜ�E˜: rÓ*Ü”˜ z°2Ó6×<Ð<¸"Ó=÷
ò 
ô ØXóð ô 9¸ÀÓPˆØ"&ˆ�hÑØ×&Ñ&×-Ò-Ñ\Ô0LÈ]Ó0[Ñ\Ð\r   c               ó    € V ^8„  d   QhRRRR/# )r   r�   r=   r   rƒ   r   )r   s   "r   r   r-  Û  s   € ÷ 
eñ 
e˜-ð 
e¨Dñ 
er   c                ód  <€ \        V 4      w  r\        P                  R Vf   RMT\        SR,          RJ4      P	                  4       V\        SRR4      S^,            RS^,            24       SR,          f9   \        ST S^,           \        SRR4      ;'       g    \        SRR4      R7       R# R# )	zxCodex Responses request failed: serialized_request_body_bytes=%s stream_opened=%s exception_chain=%s model=%s attempt=%sNr  r*   ri   Ú/r™   r¹   )r[   r™   )rW   r8   rq   r2   rÐ  rI   r   )r�   rR   Úexception_chainrf  r   rZ   rU  r5  s   &  €€€€€r   Ú_log_failureÚ&run_codex_stream.<locals>._log_failureÛ  s½   ø€ Ü.LÈSÓ.QÑ+ÐÜ�‰ð @ØN`ÒNhÁð  oAÜ˜<¨Õ0¸Ð<Ó=×CÑCÓEÀÔX_Ð`eÐgnÐpyÓXzØ! A�+˜ aÐ(:¸QÕ(>Ð'?Ð@ô	Bð ˜Õ Ò(ä+Ø�s W¨q¥[Ü  °
¸DÓA×cÐcÄWÈUÐT^Ð`bÓEc÷eñ )r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú_raw_streamr   r   rƒ   r   )r   s   "r   r   r-  ç  s   € ÷ 8ñ 8¨3ð 8°4ñ 8r   c                óz   <€ \        S4      SR &   V SR&   \        P                  RS^,           S^,           S4       R# )r*   r)  z-Codex stream opened (attempt=%s/%s, model=%s)N)r	   r8   r9   )rp  r   rZ   rU  ri   r5  s   &€€€€€r   Ú_codex_stream_createdÚ/run_codex_stream.<locals>._codex_stream_createdç  s<   ø€ ä 3°EÓ :ˆ�WÑØ%0ˆ�\Ñ"Ü�‰ÐDØ�a�KÐ+¨aÕ/°ö	8r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úevent_streamr   r   rƒ   r   )r   s   "r   r   r-  î  s   € ÷ @ñ @¨3ð @°4ñ @r   c                ó  <aa€ \        4       pV^ 8:  d   R# ^ RIHp  V! \        SP	                  R4      RR4      4      oSf'   \        P                  RSP                  4       4       R# \        P                  ! 4       oR VV3R llp\        P                  ! W4      pRVn        R	Vn         VP                  4        V  F  pK  	  VP%                  4        VP&                  e   VP)                  4        SP                  4       '       d(   \        P#                  RTSP                  4       4       R# R#   \
         d    Ro ELi ; i  . SOS	N5 d`   pSP                  4       '       g@   \!        TS4      '       g	   S
! T4       \        P#                  R
SP                  4       T4        Rp?LçRp?i\
         d    \        P                  RR	R7        ELi ; i  TP%                  4        TP&                  e   TP)                  4        i i ; i)r}   N)Ú_socket_from_responser)  rÑ  zKCodex post-terminal drain skipped: no interruptible stream socket found. %sc               ó   € V ^8„  d   QhRR/# rŸ  r   )r   s   "r   r   ÚDrun_codex_stream.<locals>._drain_for_finalizer.<locals>.__annotate__  s   € ÷ 	#ñ 	#˜Tñ 	#r   c                 óD   <€ SP                  4        ^ RIHp  V ! S4       R# )r}   )Ú_shutdown_socketN)rB   Úagent.agent_runtime_helpersr|  )r|  ÚsockÚ	timed_outs    €€r   Ú_wake_ownerÚCrun_codex_stream.<locals>._drain_for_finalizer.<locals>._wake_owner  s   ø€ Ø�M‰MŒOõ EÙ˜TÖ"r   zcodex-post-terminal-watchdogTz¦Codex Responses stream transport finalization failed after a terminal response was already received; returning the completed response instead of retrying. %s error=%szDCodex Responses stream finalization failed after a terminal responserµ   z¥Codex Responses stream remained open %.1fs after a terminal response (agent.stream_drain_timeout); shut down its socket and completed cleanup on the owner thread. %s)r+   r}  rx  rI   r!   r'   r8   r9   Ú_client_log_contextÚ	threadingÚEventÚTimerrI  ÚdaemonÚstartÚis_setr"   rq   ÚcancelÚidentrQ   )rv  Úbudgetrx  r€  ÚwatchdogÚ_ignoredr�   r~  r  Ú_APIConnectionErrorrm  r   Útransport_errorsr5  s   &      @@€€€€€r   Ú_drain_for_finalizerÚ.run_codex_stream.<locals>._drain_for_finalizerî  sÈ  ú€ ô
 'Ó(ˆØ�QŒ;ÙÝEð	Ù(¬°×1AÑ1AÀ,Ó1OÐQ[Ð]aÓ)bÓcˆDð Š<ô �L‰LÐfØ×2Ñ2Ó4ô6áä—O’OÓ%ˆ	÷	#ñ 	#ô —?’? 6Ó7ˆØ6ˆŒØˆŒð	 Ø�N‰NÔÛ(�Ùñ )ð& �O‰OÔØ�~‰~Ò)Ø—‘”à×Ñ×ÒÜ�N‰Nðsà˜×1Ñ1Ó3öñ øô] ô 	Ø‹Dð	ûð2 8Ð!Ð7Ð#6Ñ7ô 
	ð ×#Ñ#×%Ò%Ü! #Ð'7×8Ò8Ù  Ô%Ü—‘ðbà×-Ñ-Ó/°ôÿøô
 ô 	pÜ�L‰LÐ_ÐjnˆL×oð	pûð �O‰OÔØ�~‰~Ò)Ø—‘•ð *úsN   ž"D4 Â.E Ä4EÅEÅGÅAF.Æ)G Æ.GÆ;GÇG ÇGÇG Ç1Hc               ó    € V ^8„  d   QhRRRR/# ru  r   )r   s   "r   r   r-  0  s   € ÷ 
fñ 
f¨#ð 
f°$ñ 
fr   c                ó°   <€ \        V R R4      p \        V4      '       d
   V! 4        R# R#   \         d    Se   SP                  SRR7        R#  R# i ; i)r¢  NÚcodex_stream_close_failedr&  )rI   rÆ   r'   Ú_abort_request_openai_client)rv  Úclose_fnrf  r   r!  s   & €€€r   Ú_close_event_streamÚ-run_codex_stream.<locals>._close_event_stream0  s^   ø€ Ü˜<¨°$Ó7ˆð	fÜ˜×!Ò!Ù–
ñ "øäô 	fð Ò!Ø×2Ñ2°=ÐIdÐ2×eò "ð		fús   �, ¬"AÁArx  TÚinterim_assistant_callbackÚis_subagentÚ	delegatedÚ_fallback_indexÚfallbackÚprimaryz3Codex Responses stream request retired before retryz+Agent interrupted before Codex stream retryz=Codex physical stream retry at %.3f (attempt=%s/%s, model=%s)rˆ   r¹   r˜   Úcodexc                 ó0   <€ \        \        S 4      SR 7      # ))ri   )r  rl   )Úintercepted_eventsri   s   €€r   r¢   Ú"run_codex_stream.<locals>.<lambda>W  s   ø€ Ô&AÄ$ÐGYÓBZÐbgÕ&hr   c                ó   € V # r  r   )Úchunks   &r   r¢   r¢  Y  s   € ±r   c                ó^   € \        \        V R 4      ;'       d    \        V R4      '       * 4      # )ra   Ú__iter__)r%   rõ   )Úrs   &r   r¢   r¢  Z  s%   € ¼4ÄÈÈ8Ó@T×@sÐ@sÔ]dÐefÐhrÓ]sÔYsÔ;tr   Úapi_modeÚcodex_responsesÚ	call_roleÚretry_countÚapi_request_idÚ_current_api_request_id)
rˆ   rI  Ú
model_nameÚ	finalizerÚon_stream_createdÚon_chunkÚchunk_adapterÚcompleted_response_predicateÚmetadataÚdefer_logical_completion)ri   r{  r|  r}  r~  r˜  r  zLCodex Responses stream connect failed (attempt %s/%s); retrying. %s error=%sz\Codex Responses stream transport failed mid-iteration (attempt %s/%s); retrying. %s error=%szPCodex Responses pre-stream connect failed (attempt %s/%s); retrying. %s error=%szbCodex Responses stream terminal status=%s (incomplete_details=%s, error=%s, streamed_chars=%d). %sc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir  )rD   )r  rˆ  s   & r   r  Ú#run_codex_stream.<locals>.<genexpr>Š  s   é € Ð"TÑ3S¨a¤3 q§6 6Ó3Sùs   ‚>   ÚfailedÚ
incomplete)1ÚhttpxÚopenair#  r   r$  ÚRemoteProtocolErrorÚReadTimeoutÚ	ReadErrorÚConnectErrorÚConnectionErrorÚ_ensure_primary_openai_clientr!   rF  r   r4  rI   Ú_fire_streamed_codex_commentaryr$   Úranger  r¨  r  rO  rL  r`  rP  rM  rN  r8   rñ   ra  r#   r2   rF   r  Ú_fire_reasoning_deltar9   r‚  ry   r  r&  r"   rN   ÚTransportErrorr¿   rq   rÓ  r<   Úsum)#r   rY   r!  r~  Ú_httpxr$  r<  rB  r¡  rW  r[  rg  rr  r�  r—  rx  Úwants_commentaryr}  rª  rv  Úfinalr�   rŽ  rm  r0  r6  rf  rZ   r¡  rU  ri   r/  r�  rV  r5  s#   fff&                  @@@@@@@@@@@@@r   Úrun_codex_streamrÊ  y  sá  ÿÿ€ ãÝ@ÝØ×2Ñ2°F×4FÑ4FÈ×HXÑHXÐZ`×ZmÑZmÔo~ÐÐØ×_Ð_˜e×AÑAÐI^ÐAÓ_€MØ ! :§>¡>°'Ó#:ÐÐ˜à-/€EÔ$ô /×2Ñ2Ó4€Nð Ò%ð 	×Òä�UÐ@À$ÓGð ð ˜T <°Ð7JÈEÐR€L÷tñ t÷	ò 	÷Jð J÷cñ c÷+ñ +÷
;ô ;÷40ñ 0÷]ñ ]÷
eô 
e÷8ô 8÷@ô @÷D
fò 
fô ˜eÐ%6¸Ó=€OÜ˜uÐ&BÀDÓIÐQUÐU×iÐiÐZiÐßL\™E %×"GÑ"GÔHÐbfÐÜ '¨¨}¸e× DÒ D‘Ü$'¬°Ð7HÈ!Ó(L×(QÐ(QÐPQÓ$RÐUVÔ$V‘jÐ\eð äÐ+¨aÕ/×0ˆÙ"×$Ò$ÜÐTÓUÐUØ×%×%Ð%Ü"Ð#PÓQÐQØ�QŒ;˜>Ò5¸.×:T×:TÐ:Tð  ×$×$Ó$Ü26·)²)³+�Ô/Ø/3�Ô,Ø26�Ô/Ü—‘Ð[Ø"×3Ñ3°W¸qµ[ÐBTÐWXÕBXÐZ_ôa÷	 %ð $&ÐØLPÐPˆ�WÑÐP ¨\Ñ :¸\Ø,1ˆÐ(Ñ)ðA	2ð1Ø(×/Ñ/Ü˜Ó$Ð&8Ü"¤7¨5°,ÀÓ#C×#IÐ#IÀrÓJÜœW U¨J¸Ó;×FÐF¸wÓGÔTWÐX]×XcÐXcÐacÓTdÝhØ&;ÐFX×F_ÑF_Ù"5Ù1tØ(Ð*;¸[È)ÐUbÐdkØ.´¸Ð?XÐZ^Ó0_ðaà-1ð  0ó  �ô 4Ø ¨¹WÀ^Ó=TÙ',¨U×-HÑ-HÓ'IÐavØ<JÒ<V¡5¨Ô#8Ð\`Ù$ YÓ/ÐAYô	�ðJ ×-×-Ð-Ù$ \Ô2Ø�|‰|Ð7Ô7Ü—‘ð  Zà$Ÿ|™|¨U×-EÑ-EÀuÇ{Á{Ü"Ñ"T°5×3SÒ3SÓ"TÓTÐV[×VoÑVoÓVqôsð ð Ò#Ù# L×$4Ñ$4°\Ó$B×Cá# L×1óe 1÷ %×$Ð$ûð: $ô ØÐ0Ô0Ù  Ô%ØÜ—‘ØfrÒfzÑbØwØ˜a•KÐ!3°aÕ!7¸×9RÑ9RÓ9TÐVYô÷
 *Ü!@ÀÈWÐWXÍ[ÐZlÐopÕZpÓ!q�JÛð> Ò#Ù# L×$4Ñ$4°\Ó$B×Cá# L×1ûôC  ô àÒ+°×0KÑ0KÒ0WØ'×6Ñ6Ñ6ð6 Ò#Ù# L×$4Ñ$4°\Ó$B×Cá# L×1ð; Ø&ô ð
 Ð0Ô0°\À'Õ5JÒ5RÜ& s§}¡}°f×6KÑ6K×LÒLÜ—L‘LØjØ !�Ð%7¸!Õ%;¸U×=VÑ=VÓ=XÐZ]ôó ð Ò#Ù# L×$4Ñ$4°\Ó$B×Cá# L×1ñ! ˜SÔ!Øûðûð2 Ò#Ù# L×$4Ñ$4°\Ó$BÕCá# LÕ1ús–   ÉAQ	Ê<AQÌ
QÌA2QÎXÎ"A:XÑ	QÑXÑ$AS?Ò7S?ÓXÓXÓ?XÔXÔ+XÕXÕXÕA-W?×	X×X×6	W?×?XØXØ&X-r   r  >   rÿ   rü   rý   rþ   rû   ))zitem/agentMessage/deltarG  )zitem/reasoning/deltarÄ  )zitem/reasoning/summaryDeltarÄ  )zitem/reasoning/textDeltarÄ  )zitem/reasoning/summaryTextDeltarÄ  )T>   úresponse.text.deltaúresponse.audio.deltarä  úresponse.output_text.deltaúresponse.reasoning_text.deltaú%response.reasoning_summary_text.deltaú&response.function_call_arguments.deltarÄ  )r  r�  rD  rÊ  )[Ú__conditional_annotations__r
  Ú
__future__r   Úcontextvarsr›  rm   ÚloggingÚosrƒ  r`  Ú
contextlibr   Útypesr   Útypingr   r   r   r   Úagent.stream_single_writerr	   r
   Ú(agent.transports.hermes_tools_mcp_serverr   Úagent.sdk_transform_bypassr   Úagent.stream_diagr   rÉ   r   Ú	getLoggerrH   r8   Ú
ContextVarr   r  r(   r+   r:   rW   ry   r   rŽ   rÚ   rú   Ú	frozensetr‚  rš  r’  r“  r!  rP  r+  r4  r  r  r#  r,  r7  rG  rR  r�  r£  r­  rµ  r¼  rÉ  r¾  rÂ  rÊ  rÒ  rÚ  rë  rò  r  r  r1  rD  rA  rL  rU  rX  rg  rk  rt  rv  r  r  rÊ  Ú__all__)rÑ  s   @r   Ú<module>rá     sn  øðôAõ #ã Û Û Û Û 	Û Û Ý Ý !ß ,Ó ,ç TÝ QÝ CÝ =Ý /à	×	Ò	˜8Ó	$€Ø@K×@VÒ@VØ DôAÐ Ð=ó ð !$Ð õ)ð&:ÐUWð :Ðos÷ :õ>õ."1õJõC÷CNðL'ÐTXð 'Ðhm÷ 'ñ` #Ò#tÓuÐ ðÐ ñ !*Ñ)RÑ8QÓ)RÓ RØ'Ð)FðVõ !Ð ð 4°~À{Ð6SÕSÐ ð )¨.¸,ÈÐWbÐdpÐqÐ Ø)¨6°<ÀÐOÐ Ø%Ð'8Ð9Ð à% y°+¸wÐG€õ1õKõGõRõõ õ0lõ`õL ÷ õ"ð )Ð ØVÐ õKõHõ5õXõ
õõ6X÷@õFõDð2+ØSX÷+õ\	÷$3ñ (ò )ó Ð õõ ]õEõ
÷qPñ qPðhØ26ðØKOðØgkðàðà"&ðà8<÷õ:÷0Y2òx‚r   