+
    lHàj0$  ã                   ó”   € R t ^RIHtHt ]! 4       tR R ltR R ltR R ltRtR R	 lt	R
R/R R llt
R R ltR R ltR R ltR# )uM  Branch (session.branch / session.branch_whole) helpers (``methods_session`` split).

Moved verbatim from ``tui_gateway/methods_session.py`` (file-line ratchet, #66663 CI repair):
the bodies close over server.py globals through ``method_ctx.bind_module`` exactly as before â€”
publication still runs from the parent's ``register()``.
)ÚHandlerRegistryÚbind_modulec                ó0   € V ^8„  d   QhR\         R\         /# )é   Ú
parent_keyÚreturn)Ústr)Úformats   "ÚG/home/ubuntu/.hermes/hermes-agent/tui_gateway/methods_session_branch.pyÚ__annotate__r      s   € ÷ !ñ !¤#ð !¬#ñ !ó    c                óˆ   € V P                  V4      ;'       g    Rp\        V R4      '       d   V P                  V4      # V R2# )zDNext title in the parent's lineage (mirrors the TUI /branch naming).ÚbranchÚget_next_title_in_lineagez	 (branch))Úget_session_titleÚhasattrr   )Údbr   Úcurrents   && r
   Ú_branch_titler      sF   € à×"Ñ" :Ó.×:Ð:°(€GÜˆrÐ.×/Ò/Ø×+Ñ+¨GÓ4Ð4ØˆY�iÐ Ð r   c                ó$   € V ^8„  d   QhR\         /# )r   r   )Úlist)r	   s   "r
   r   r      s   € ÷ Fñ F¬ñ Fr   c                ó  € T ;'       g    .  Uu. uFn  p\        V\        4      '       g   K  VP                  R4      R9   g   K3  \        VP                  R4      4      P	                  4       '       g   Kc  \        V4      NKp  	  up# u upi )zauser/assistant rows with visible text, as FULL copies (reasoning + timeline-marker tags survive).ÚroleÚcontent>   ÚuserÚ	assistant)Ú
isinstanceÚdictÚgetÚ_coerce_message_textÚstrip)ÚmessagesÚmessages   & r
   Ú_visible_branch_historyr#      sw   € à)1¯¨°R¨ó F©˜gÜ˜'¤4×(ô Ø-4¯[©[¸Ó-@ÐDYÑ-Yô ä$ W§[¡[°Ó%;Ó<×BÑB×Dô ŒD�ŽM©ñ Fð Fùò Fs   �B¬BÁ+BÁ4Bc          
      óT   € V ^8„  d   QhR\         R\        R\        R\        R\        /# )r   ÚsessionÚnew_sidÚnew_keyÚhistoryÚsource©r   r   r   )r	   s   "r
   r   r      s0   € ÷ #ñ #¤ð #´ð #¼cð #ÌDð #ÔZ]ñ #r   c                óÆ  € V P                  R4      p\        V 4      pV'       d   \        V4      MRw  rx \        V4      ;_uu_ 4        \	        WWt\        V 4      \        V 4      VR7      p	\        WV	\        V4      V P                  R^P4      \        V 4      WtV\        V P                  R4      4      R7
       \        W—4       RpRRR4       V\        9   d@   R\        V,          R&   V\        V,          R	&   V P                  R
4      \        V,          R&   X	V'       d   Ve   \        V4       # # #   + '       g   i     Lu; i  T'       d   Te   \        T4       i i i ; i)z˜Build + register the branched agent in the parent's profile; the DEDICATED db handle is ours until
``_transfer_db_to_agent`` (released here on failure).Úprofile_homeNF)Ú
session_dbÚplatform_overrideÚcwd_overrideÚcontext_cwd_is_launch_artifactÚauth_user_idÚcolsÚexplicit_cwd)r2   Úcwdr-   r)   r,   r3   Úactive_session_leaser1   Úsession_keyÚparent_session_id)NF)r   Ú_session_auth_user_idÚ_profile_session_dbÚ_profile_build_scopeÚ_make_agent_in_contextÚ_session_cwdÚ_context_cwd_is_launch_artifactÚ_init_sessionr   ÚboolÚ_transfer_db_to_agentÚ	_sessionsÚ_release_db)
r%   r&   r'   r(   r)   Úparent_homeÚparent_user_idÚ	branch_dbÚbranch_owns_dbÚagents
   &&&&&     r
   Ú_build_branch_agentrH      s9  € ð —+‘+˜nÓ-€KÜ*¨7Ó3€NßDOÔ 3°KÔ @ÐUbÑ€Ið#Ü! +×.Õ.Ü*¨7È	Ü8DÀWÓ8MÜJiÐjqÓJrØ8FôHˆEô ˜'¨E´4¸³=ÀwÇ{Á{ÐSYÐ[]ÓG^Ü*¨7Ó3À	ÐgrÜ'+¨G¯K©K¸Ó,GÓ'HõJô " %Ô3Ø"ˆN÷ /ð ”iÔØ9=ŒI�gÕÐ5Ñ6Ø1?ŒI�gÕ˜~Ñ.ð 7>·k±kÀ-Ó6PŒI�gÕÐ2Ñ3Øç˜iÒ3Ü˜	Õ"ð 4ˆ>÷' /×.û÷& ˜iÒ3Ü˜	Õ"ð 4ˆ>ús%   µE ÁA=D2ÃAE Ä2E	Ä=E ÅE c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r%   Úold_keyr   r*   )r	   s   "r
   r   r   C   s&   € ÷ Añ A¬ð A´sð A¼tñ Ar   c           	     óH  € VR,          ;_uu_ 4        \        VP                  R4      ;'       g    . 4      \        VP                  R. 4      4      ,            Uu. uF&  p\        V\        4      '       g   K  \        V4      NK(  	  ppRRR4       Rp\	        \        V RR4      ;p4      '       d!    V! V4      w  rx\        \        VX4      4      pT;'       g    \        X4      # u upi   + '       g   i     Lj; i  \         d    \        P                  RRR7        LQi ; i)	uÊ   Rows a branch copies: the persisted DISPLAY projection reconciled with live memory (live history is
the MODEL projection â€” post-compaction summary + tail â€” the child would lose every archived turn).Úhistory_lockÚdisplay_history_prefixr(   NÚget_resume_conversationsz%branch display projection read failedT)Úexc_info)r   r   r   r   ÚcallableÚgetattrr#   Ú_reconcile_display_with_liveÚ	ExceptionÚloggerÚdebug)	r   r%   rJ   ÚmsgÚin_memory_historyr(   rN   Ú_Údisplay_historys	   &&&      r
   Ú_branch_source_historyrZ   C   s  € ð 
�×	 ×	 ä!% g§k¡kÐ2JÓ&K×&QÐ&QÈrÓ!RÔUYÐZa×ZeÑZeÐfoÐqsÓZtÓUuÖ!uó&Ù!u˜#Ü˜#œt×$ô ŒD�ŽIÑ!uð 	ð &÷ 
!ð €GÜ¬G°BÐ8RÐTXÓ,YÐYÐ(×ZÒZð	QÙ!9¸'Ó!BÑˆAÜ-Ô.JÈ?Ð\mÓ.nÓoˆGð ×@Ð@Ô-Ð.?Ó@Ð@ùò&÷ 
!×	 ûô ô 	QÜ�L‰LÐ@È4ˆLÖPð	Qús6   ’AC)ÁC$Á6C$ÂC)Â0C< Ã$C)Ã)C9	Ã<"D!Ä D!Úomit_messagesFc                óH   € V ^8„  d   QhR\         R\         R\        R\         /# )r   Úparamsr%   r[   r   )r   r?   )r	   s   "r
   r   r   T   s)   € ÷ 7ñ 7œdð 7¬Tð 7ÄTð 7ÔVZñ 7r   c                ó|  € \        VR 4      ;'       g    RpVe°   \        ;_uu_ 4        \        P                  4       p\        P	                  VR4      w  rgVei   V\
        9   d^   WW,
          \        8:  d7   We3\        V&   \        V \        V\
        V,          V4      4      uuRRR4       # \        P                  VR4       RRR4       \        V4      ;_uu_ 4       pVf   \        V RR7      uuRRR4       # VR,          p	\        W‚V	4      p
V
'       g   \        V RR4      uuRRR4       # \        VP	                  R4      ;p\        4      '       d   V^ 8”  d   V
RV p
\!        4       \"        P%                  4       P&                  R,          \)        V4      ríp VP	                  R	R
4      ;'       g    \+        W‰4      pVP	                  R4      p\-        YŒYŸY®\/        V4      '       d   RM
\1        V4      \3        V4      ;'       g    \5        4       \7        V4      ^ ,          \8        VP	                  R	4      '       d   RMR\;        V4      R7        RRR4        \?        TXXX
X4      pTeP   \        ;_uu_ 4        T\        P                  4       3\        T&   T\
        9   d   X\
        T,          R&   RRR4       RTRTRXRX	R\A        T
4      R\C        T\
        P	                  T4      4      /pT'       d   RTR&   M\E        Y¢P	                  R4      R7      TR&   \        T T4      #   + '       g   i     ELp; i  \<         d%   p\        T RRT 24      u Rp?uuRRR4       # Rp?ii ; i  + '       g   i     EL&; i  \<         d   p\        T RRT 24      u Rp?# Rp?ii ; i  + '       g   i     Lþ; i)Úidempotency_keyNi�  )Úcoder6   i¨  u*   nothing to branch â€” send a message firstÚcount:Né   NÚnameÚ r,   r   Úderived)r)   r4   Úprofile_nameÚmodelÚcopy_fieldsÚtitle_sourceÚuser_idzbranch failed: iˆ  zagent init failed on branch: Úbranch_titleÚ
session_idÚstored_session_idÚtitleÚparentÚmessage_countÚinfoTÚmessages_omitted©r,   r!   )Ng        )#Ú
_str_paramÚ_sessions_lockÚtimeÚ_idempotency_keysr   rA   Ú_IDEMPOTENCY_KEY_TTLÚ_okÚ_branch_idempotent_hitÚpopÚ_session_dbÚ_db_unavailable_errorrZ   Ú_errr   ÚintÚ_new_session_keyÚuuidÚuuid4ÚhexÚ_session_sourcer   Ú_persist_branchÚ_is_remote_launch_cwdr<   Úprofile_name_for_homeÚ_current_profile_nameÚ_session_default_routeÚ_BRANCH_COPY_FIELDSr8   rS   rH   ÚlenÚ_session_infoÚ_history_to_messages)Úridr]   r%   r[   Úidem_keyÚnow_gcÚexisting_sidÚtsr   rJ   r(   ra   r'   r&   r)   rn   ÚhomeÚerG   Úresponses   &&&$                r
   Ú_branch_liver–   T   s%  € ô ˜&Ð"3Ó4×<Ð<¸€HØÒßŽ^Ü—Y‘Y“[ˆFÜ0×4Ñ4°X¸{ÓKÑˆLØÒ'¨L¼IÔ,EØ•;Ô"6Ô6à3?Ð2HÔ% hÑ/Ü˜sÔ$:¸<ÌÐS_ÕI`ÐboÓ$pÓq÷ Š^ô "×%Ñ% h°Ô5÷ ô 
�W×	Ô	 ØŠ:Ü(¨°4Ô8÷ 
Ò	ð ˜-Õ(ˆÜ(¨°gÓ>ˆßÜ˜˜TÐ#OÓP÷ 
Ò	ô ˜vŸz™z¨'Ó2Ð2�e´C×8Ò8¸UÀQ¼YØ˜f˜u�oˆGÜ#3Ó#5´t·z±z³|×7GÑ7GÈÕ7KÌ_Ð]dÓMe˜&ˆð
	:Ø—J‘J˜v rÓ*×HÐH¬m¸BÓ.HˆEØ—;‘;˜~Ó.ˆDÜ˜B¨¸Ü(=¸g×(FÒ(F¡ÌLÐY`ÓLaÜ)>¸tÓ)D×)_Ð)_ÔH]ÓH_Ü"8¸Ó"AÀ!Õ"DÔReØ39·:±:¸f×3EÒ3E©È9Ü$9¸'Ó$BöD÷ 
ð*DÜ# G¨W°g¸wÈÓOˆð ÒßŽ^Ø+2´D·I±I³KÐ*@Ô˜hÑ'ð œ)Ô#Ø5:”	˜'Õ" >Ñ2÷ ð ˜gÐ':¸GÀWÈeÐU]Ð_fØ¤ W£¨v´}ÀUÌIÏMÉMÐZaÓLbÓ7cðe€HçØ'+ˆÐ#Ò$ä3°GÏ+É+ÐVdÓJeÔfˆ�ÑÜˆs�HÓÐ÷e �^ˆ^ûô> ô 	:Ü˜˜T _°Q°CÐ#8Ó9Ô9÷) 
Ò	ûð&	:ú÷' 
×	Ð	ûô. ô DÜ�C˜Ð!>¸q¸cÐBÓCÕCûðDú÷ �^ús‡   ©A8L)Â,L)ÃM/Ã9)M/Ä-A,M/ÆA,L=ÈA
L=ÉN É<9N+Ì)L:	Ì=M,ÍM'ÍM,ÍM/Í'M,Í,M/Í/N 	ÎN(ÎN#ÎN(Î#N(Î+N;	c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   r‘   r%   r[   r   )r   r   r?   )r	   s   "r
   r   r   Ž   s)   € ÷ ñ ¬ð ´tð ÌDð ÔUYñ r   c                ón  € VP                  R4      ;'       g    . pVP                  R4      ;'       g    RpRT RTRVP                  R4      ;'       g    \        V4      RVP                  R	4      R
\        V4      R\        V4      /pV'       d   RVR&   V# \	        W1P                  R4      R7      VR&   V# )zNThe SAME result shape a fresh ``_branch_live`` returns for the existing child.r(   r6   rd   rl   rm   rn   rk   ro   r7   rp   rq   Trr   r,   rs   r!   )r   Ú_branch_title_forr‹   Ú_fallback_session_infor�   )r‘   r%   r[   r(   Úkeyr•   s   &&&   r
   rz   rz   Ž   sµ   € à�k‰k˜)Ó$×*Ð*¨€GØ
�+‰+�mÓ
$×
*Ð
*¨€CØ˜lÐ,?ÀØ˜Ÿ™ ^Ó4×RÐRÔ8IÈ'Ó8RØ˜'Ÿ+™+Ð&9Ó:¸OÌSÐQXË\ØÔ.¨wÓ7ð9€H÷ Ø'+ˆÐ#Ñ$ð €Oô  4°GÏ+É+ÐVdÓJeÔfˆ�ÑØ€Or   c                ó0   € V ^8„  d   QhR\         R\        /# )r   r%   r   )r   r   )r	   s   "r
   r   r   �   s   € ÷ ñ œtð ¬ñ r   c           	     óz  € \         P                  \        4      ;_uu_ 4        \        V 4      ;_uu_ 4       pVeI   TP	                  V P                  R4      ;'       g    R4      ;'       g    RuuRRR4       uuRRR4       #  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z=The child's persisted title from its stored row, best-effort.Nr6   rd   )Ú
contextlibÚsuppressrS   r|   r   r   )r%   r   s   & r
   r™   r™   �   s†   € ä	×	Ñ	œY×	'Õ	'Ü˜×!Ô! RØŠ~Ø×+Ñ+¨G¯K©K¸Ó,F×,LÐ,LÈ"ÓM×SÐSÐQS÷ "Ñ!÷ 
(Ò	'à÷ "÷ 
(ñ ÷ "×!ú÷ 
(Ö	'ñ ús4   ¢B)¶'B	ÁB	Á,B	Á.
B)ÂB)ÂB&Â!B)Â)B:	c                ó   € V ^8„  d   QhRR/# )r   r   N© )r	   s   "r
   r   r   ¦   s   € ÷ 0ñ 0˜ñ 0r   c                ó2   € \        \        4       V RR7       R# )zGPublish this module's helpers onto ``server`` (rebound to its globals).)ÚskipN)rX   )r   Úglobals)Úservers   &r
   Úregisterr¦   ¦   s   € ä”“	˜6¨×/r   N)Ú	reasoningÚreasoning_contentÚreasoning_detailsÚcodex_reasoning_itemsÚcodex_message_itemsÚdisplay_kindÚdisplay_metadataÚ	timestamp)Ú__doc__Ú
method_ctxr   r   Ú	_registryr   r#   rH   rŠ   rZ   r–   rz   r™   r¦   r¡   r   r
   Ú<module>r²      sQ   ðñ÷ 5áÓ€	õ!õFõ#ð<Ð õAð"7ÈE÷ 7õtõ÷0r   