§
    øžyjí  ã                  óh   — d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
 e G d„ d¦  «        ¦   «         ZdS )u-  Per-turn context shared between ``GatewayRunner._run_agent_inner`` and the
``TurnRunner`` collaborator (gateway/run.py).

``_run_agent_inner`` historically defined its tool-progress plumbing as nested
closures (``progress_callback`` ~250 LOC, ``send_progress_messages`` ~353 LOC)
that closed over ~20 enclosing locals.  ``TurnContext`` is the extraction seam:
each closed-over local becomes a field on this dataclass, so the closure bodies
can move onto ``TurnRunner`` methods unchanged modulo ``name`` -> ``ctx.name``
rewrites.

Field notes:

- All fields are written once by ``_run_agent_inner`` while wiring up the turn
  (a few â€” ``_progress_metadata``, ``_progress_reply_to``, ``agent_holder`` â€”
  are computed slightly later than construction and assigned onto the ctx as
  soon as the original locals were bound).  None of the original closures
  *rebound* their captured names (no ``nonlocal``); mutable state uses the
  same single-element-list containers as before (``last_progress_msg``,
  ``repeat_count``, ...), so mutation stays visible to the outer body through
  the shared objects exactly as it did through the shared closure cells.
- ``_run_still_current`` stays a callable (it captures ``self``/
  ``session_key``/``run_generation``); carrying the callable keeps the
  extracted bodies byte-identical.
é    )Úannotations)Ú	dataclassÚfield)ÚAnyÚCallableÚListÚOptionalc                  óŒ  — e Zd ZU dZdZded<   dZded<   dZded<   dZd	ed
<   dZ	ded<   dZ
d	ed<   dZd	ed<   dZded<   dZded<   dZded<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Zded<    ed „ ¬¦  «        Zded!<   d"Zd#ed$<   dZded%<    ee¬¦  «        Zd&ed'<   dZd(ed)<   dZd*ed+<   dZd,ed-<   dZded.<   dZd,ed/<   dZd,ed0<   dZ d,ed1<   dZ!d,ed2<   dZ"d3ed4<   d5Z#d	ed6<    ee$¬¦  «        Z%d7ed8<   d9Z&d:ed;<   dZ'd,ed<<   dZ(d(ed=<   dZ)d*ed><   dZ*d?ed@<   dZ+dedA<   dZ,dedB<   dZ-dedC<   dZ.dedD<   dZ/dedE<   dZ0dedF<   dZ1dedG<   dZ2dedH<    edI„ ¬¦  «        Z3dedJ<    edK„ ¬¦  «        Z4dedL<    edM„ ¬¦  «        Z5dedN<    edO„ ¬¦  «        Z6dedP<    edQ„ ¬¦  «        Z7dedR<    edS„ ¬¦  «        Z8dedT<   dZ9dedU<   dZ:dedV<   dZ;dedW<   dZ<dedX<   dZ=dedY<   dZ>d(edZ<   dZ?d[ed\<   dZ@d[ed]<   dZAd[ed^<   dZBd[ed_<   dZCd[ed`<   dS )aÚTurnContextzDClosed-over locals of ``_run_agent_inner`` needed by ``TurnRunner``.Nr   ÚsourcezCallable[[], bool]Ú_run_still_currentÚ_live_status_adapterÚoffÚstrÚ_live_status_modeFÚboolÚ_thinking_enabledÚprogress_modeÚgroupedÚprogress_groupingÚtool_progress_enabledÚprogress_queueÚ	log_queuec                 ó   — d gS ©N© r   ó    ú:/home/ragecks/.hermes/hermes-agent/gateway/turn_context.pyú<lambda>zTurnContext.<lambda>3   s   € ¸T¸F€ r   )Údefault_factoryÚlistÚlast_progress_msgc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>4   s   € °T°F€ r   Ú	last_toolc                 ó   — dgS ©NFr   r   r   r   r   zTurnContext.<lambda>5   s   € À5À'€ r   Úlast_was_terminal_blockc                 ó   — dgS )Nr   r   r   r   r   r   zTurnContext.<lambda>6   s   € ¸°s€ r   Úrepeat_countc                 ó   — dgS r&   r   r   r   r   r   zTurnContext.<lambda>7   s   € À¸w€ r   Úlong_tool_hint_firedc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>8   ó   € ¸°v€ r   Úagent_holderg      >@ÚfloatÚ_LONG_TOOL_THRESHOLD_SÚ_cleanup_progressz	List[str]Ú_cleanup_msg_idszOptional[dict]Ú_progress_metadatazOptional[Any]Ú_progress_reply_tozOptional[str]ÚmessageÚhistoryÚcontext_promptÚchannel_promptÚ
session_idÚsession_keyzOptional[int]Úrun_generationÚ Úprocess_task_idzfrozenset[str]Úprocess_baseliner   ÚintÚ_interrupt_depthÚevent_message_idÚ
moa_configÚpersist_user_messagezOptional[float]Úpersist_user_timestampÚuser_configÚenabled_toolsetsÚdisabled_toolsetsÚlog_mode_enabledÚ"interim_assistant_messages_enabledÚneeds_progress_queueÚAIAgentÚresolve_display_settingc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>k   s   € ¸¸€ r   Úresult_holderc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>l   r-   r   Útools_holderc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>m   s   € À$À€ r   Ústream_consumer_holderc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>n   s   € ÈÈ€ r   Ústreaming_tts_consumer_holderc                 ó   — dgS r&   r   r   r   r   r   zTurnContext.<lambda>q   s   € ¸E¸7€ r   Ú_voice_ack_firedc                 ó   — d gS r   r   r   r   r   r   zTurnContext.<lambda>r   s   € ¸D¸6€ r   Ú_voice_ack_guildÚ_voice_ack_loopÚ_loop_for_stepÚ
_hooks_refÚ_status_adapterÚ_status_chat_idÚ_status_thread_metadatazOptional[Callable]Úprogress_callbackÚvoice_ack_callbackÚ_step_callback_syncÚ_event_callback_syncÚ_status_callback_sync)DÚ__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r   r   r   r   r   r   r   r   r"   r$   r'   r)   r+   r.   r0   r1   r!   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   Ú	frozensetr>   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rN   rP   rR   rT   rV   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   r   r   r   r   r       s  € € € € € € àNÐNð €FÐÐÐÑØ-1ÐÐ1Ð1Ð1Ñ1Ø $ÐÐ$Ð$Ð$Ñ$Ø"ÐÐ"Ð"Ð"Ñ"Ø#ÐÐ#Ð#Ð#Ñ#Ø€MÐÐÐÑØ&ÐÐ&Ð&Ð&Ñ&Ø"'ÐÐ'Ð'Ð'Ñ'ð €NÐÐÐÑØ€IÐÐÐÑð $˜e°N°NÐCÑCÔCÐÐCÐCÐCÑCØ�e¨N¨NÐ;Ñ;Ô;€IÐ;Ð;Ð;Ñ;Ø$) E¸/¸/Ð$JÑ$JÔ$JÐÐJÐJÐJÑJØ˜¨{¨{Ð;Ñ;Ô;€LÐ;Ð;Ð;Ñ;Ø!& °°Ð!GÑ!GÔ!GÐÐGÐGÐGÑGØ˜¨~¨~Ð>Ñ>Ô>€LÐ>Ð>Ð>Ñ>ð %)ÐÐ(Ð(Ð(Ñ(Ø#ÐÐ#Ð#Ð#Ñ#Ø"' %¸Ð"=Ñ"=Ô"=ÐÐ=Ð=Ð=Ñ=ð *.ÐÐ-Ð-Ð-Ñ-Ø(,ÐÐ,Ð,Ð,Ñ,ð "€GÐ!Ð!Ð!Ñ!ð €GÐÐÐÑØ$(€NÐ(Ð(Ð(Ñ(Ø$(€NÐ(Ð(Ð(Ñ(Ø $€JÐ$Ð$Ð$Ñ$Ø!%€KÐ%Ð%Ð%Ñ%Ø$(€NÐ(Ð(Ð(Ñ(Ø€OÐÐÐÑØ', u¸YÐ'GÑ'GÔ'GÐÐGÐGÐGÑGØÐÐÐÐÑØ&*ÐÐ*Ð*Ð*Ñ*Ø!%€JÐ%Ð%Ð%Ñ%Ø*.ÐÐ.Ð.Ð.Ñ.Ø.2ÐÐ2Ð2Ð2Ñ2Ø€KÐÐÐÑØ ÐÐ Ð Ð Ñ Ø!ÐÐ!Ð!Ð!Ñ!Ø"ÐÐ"Ð"Ð"Ñ"Ø/4Ð&Ð4Ð4Ð4Ñ4Ø!&ÐÐ&Ð&Ð&Ñ&ð €GÐÐÐÑØ#'ÐÐ'Ð'Ð'Ñ'ð  ˜%°°Ð?Ñ?Ô?€MÐ?Ð?Ð?Ñ?Ø˜¨~¨~Ð>Ñ>Ô>€LÐ>Ð>Ð>Ñ>Ø#( 5¸¸Ð#HÑ#HÔ#HÐÐHÐHÐHÑHØ*/¨%ÀÀÐ*OÑ*OÔ*OÐ!ÐOÐOÐOÑOð #˜U°?°?ÐCÑCÔCÐÐCÐCÐCÑCØ"˜U°>°>ÐBÑBÔBÐÐBÐBÐBÑBØ€OÐÐÐÑð €NÐÐÐÑØ€JÐÐÐÑØ€OÐÐÐÑØ€OÐÐÐÑØ.2ÐÐ2Ð2Ð2Ñ2ð
 -1ÐÐ0Ð0Ð0Ñ0Ø-1ÐÐ1Ð1Ð1Ñ1Ø.2ÐÐ2Ð2Ð2Ñ2Ø/3ÐÐ3Ð3Ð3Ñ3Ø04ÐÐ4Ð4Ð4Ñ4Ð4Ð4r   r   N)rg   Ú
__future__r   Údataclassesr   r   Útypingr   r   r   r	   r   r   r   r   ú<module>rm      s§   ððð ð2 #Ð "Ð "Ð "Ð "Ð "à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð ðb5ð b5ð b5ð b5ð b5ñ b5ô b5ñ „ðb5ð b5ð b5r   