+
    jHàj  ã                   óÐ   € R t ^ RIt^ RIHt ^ RIHtHtHt ]R 4       tR t	R t
R t]! 4       t]3R ltR	]/R
 ltRR ltR tR tRtR tR tR tR tRR ltR tR tR tR tR# )zYAuthority-local async serialization; file locks cover only short synchronous mailbox I/O.N)Úasynccontextmanager)Ú_lockedÚ_readÚ_writec                ó  "  € \        V R R4      pVf   \        P                  ! 4       ;qn        T;_uu_4       GRj  x€L
  \        V RR4      pVf   \	        4       ;q n        \        P                  ! 4       pVP                  V4        R5x € VP                  V4       ^ RI	H
p V! V 4       RRR4      GRj  x€L
  R#  L‚  TP                  T4       ^ RI	H
p T! T 4       i ; i L,  + GRj  x€L 
 '       g   i     R# ; i5i)Ú_bot_mailbox_lockNÚ_bot_mailbox_operations)Úpersist_work_count)ÚgetattrÚasyncioÚLockr   Úsetr   Úcurrent_taskÚaddÚdiscardÚgateway.session_runtime_workersr	   )Ú	authorityÚlockÚactiveÚtaskr	   s   &    Ú@/home/ubuntu/.hermes/hermes-agent/gateway/session_bot_mailbox.pyÚmailbox_lockr      sº   é € ä�9Ð1°4Ó8€DØ‚|Ü-4¯\ª\«^Ð;ˆÔ*ß�tŠtÜ˜Ð$=¸tÓDˆØŠ>Ü9<»Ð>ˆFÔ6Ü×#Ò#Ó%ˆØ�
‰
�4Ôð	*Üà�N‰N˜4Ô ÝJÙ˜yÔ)÷ �t‹tøð �N‰N˜4Ô ÝJÙ˜yÕ)ú÷ �t�t‹tüsd   ‚;D½C ¾DÁAC(Â
CÂC(Â.DÂ9C&Â:DÃ!C#Ã#C(Ã&DÃ(D	Ã.C1Ã/
D	Ã:D	Ã<	Dc              ‡  óT  "  € \         P                  ! \         P                  ! V .VO5!  4      pRp  \         P                  ! V4      G Rj  x€L
 pVe   VhV#  L  \         P                   d%   pTP                  4       '       d   h Tp Rp?K^  Rp?i\         d	    Te   Thh i ; i5i)zYKeep the caller's mailbox ownership until its physical I/O ends, even after cancellation.N)r   Úcreate_taskÚ	to_threadÚshieldÚCancelledErrorÚ	cancelledÚ	Exception)Ú	operationÚargsÚpendingr   ÚresultÚexcs   &*    r   Ú_mailbox_ior$      sœ   é € ä×!Ò!¤'×"3Ò"3°IÐ"EÀÓ"EÓF€GØ€IØ
ð	Ü"Ÿ>š>¨'Ó2×2ˆFð Ò$Ø�ØˆMñ 3øÜ×%Ñ%ô 	Ø× Ñ ×"Ò"ØØŽIûÜô 	ØÒ$Ø�Øð	üsF   ‚0B(³A ÁAÁA ÁB(ÁA ÁB%Á0BÂ	B(ÂB%Â	B%Â%B(c                 ó’   € \        V 4      ;_uu_ 4       pV\        W! R 2,          4      3uuRRR4       #   + '       g   i     R# ; i)ú.jsonN)r   r   )ÚhomeÚkeyÚroots   && r   Ú_read_receiptr*   0   s/   € Ü	��Œ˜$Ø”U˜4 E¨ -Õ/Ó0Ð0÷ 
��‹ús	   ”5µA	c              ƒ   ó>   "  € \        \        W4      G R j  x€L
 #  L5i©N)r$   r*   ©r'   r(   s   &&r   Úread_receiptr.   5   s   é € Üœ]¨DÓ6×6Ð6Ñ6ùó   ‚–—c                 óæ  aa€ \        V 4      ;_uu_ 4       pVSR ,           R2,          p\        V4      oV\        Jd,   S;'       g    / P                  R4      V8w  d    RRR4       R# SeÅ   SP                  R4      '       d®   ^ RIHp Rp\        ;QJ d     VV3R lV 4       F  '       g   K   RM	  RM! VV3R lV 4       4      '       g\   SP                  R	R
4      SP                  R	R
4      8w  g5   SP                  R4      '       d&   SR,          SP                  R4      8w  d	   V! R4      h/ S;'       g    / CSCpVS8w  d   \        WG4        RRR4       R#   + '       g   i     R# ; i)Údelivery_idr&   ÚstatusNFÚprincipal_id)ÚRuntimeStoreErrorc              3   ój   <"  € T F(  pSP                  V4      SP                  V4      8g  x € K*  	  R # 5ir,   )Úget)Ú.0r(   ÚcurrentÚrecords   & €€r   Ú	<genexpr>Ú!_write_receipt.<locals>.<genexpr>E   s'   øé € ÐJÁ6¸C�G—K‘K Ó$¨¯
©
°3«Ö7Ã6ùs   ƒ03TÚnotification_categoryr"   Úadmission_idÚadmission_conflict)Úprofile_homeÚ
session_idr3   ÚmessageÚauthor)r   r   Ú
_UNCHECKEDr6   Úhermes_state_runtimer4   Úanyr   )	r'   r9   Úexpectr)   Úpathr4   ÚfieldsÚmergedr8   s	   &f&     @r   Ú_write_receiptrJ   <   s   ù€ Ü	��Œ˜$Ø˜ Õ.Ð/¨uÐ5Õ5ˆÜ˜“+ˆØœÓ#¨¯¨°B×(;Ñ(;¸HÓ(EÈÔ(OØ÷	 
‰ð
 Ò 7§;¡;¨~×#>Ò#>Ý>ØXˆFß“ÕJÁ6ÓJ——’ÕJÁ6ÓJ×JÒJØ—{‘{Ð#:¸HÓEÈÏÉÐTkÐmuÓIvÔvØŸ™ N×3Ò3¸ÀÕ8OÐSY×S]ÑS]Ð^lÓSmÔ8mÙ'Ð(<Ó=Ð=Ø.�W—]�] Ð. vÐ.ˆØ�WÔÜ�4Ô Ø÷ 
��Šús5   –1EÁEÁ*EÂ(EÂ0EÃ=EÄ.EÄ<EÅE0	rF   c             ƒ   ó@   "  € \        \        WV4      G R j  x€L
 #  L5ir,   )r$   rJ   )r'   r9   rF   s   &&$r   Úwrite_receiptrL   O   s   é € Üœ^¨T¸6ÓB×BÐBÑBùs   ‚—˜c           	      ó˜   € ^ RI Hp \        V 4      ;_uu_ 4       pV\        V! W14      4      3uuRRR4       #   + '       g   i     R# ; i)é    )Ú_scan_recordsN)Úgateway.session_botrO   r   Úlist)r'   ÚpinsrO   r)   s   &&  r   Ú_scan_receiptsrS   S   s.   € Ý1Ü	��Œ˜$Ø”T™-¨Ó3Ó4Ð4÷ 
��‹ús	   š8¸A		c                 ó,  € \        V 4      ;_uu_ 4       pW! R 2,          p\        V4      pVeI   VP                  R4      R8X  d3   VP                  R4      '       g   VP                  4         RRR4       R#  RRR4       R#   + '       g   i     R# ; i)r&   Nr2   Ú	ambiguousr=   TF)r   r   r6   Úunlink)r'   r(   r)   rG   r8   s   &&   r   Ú_withdraw_pinrW   Y   sp   € Ü	��Œ˜$Ø˜˜U�mÕ#ˆÜ˜“+ˆØÒ 7§;¡;¨xÓ#8¸KÔ#GÐPW×P[ÑP[Ð\j×PkÒPkØ�K‰KŒMØ÷ 
‰ð ÷ 
��Šús   ”ABÁBÁ7BÂB	c              ƒ  ó>   "  € \        \        W4      G Rj  x€L
 #  L5i)z²Drop a pre-admission pin the FIFO definitely refused (nothing committed), only while it is
still that pin, so the same-id retry admits instead of answering ``unknown_execution``.N)r$   rW   r-   s   &&r   Úwithdraw_pinrY   c   s   é € ô œ]¨DÓ6×6Ð6Ñ6ùr/   c                 ó¨  € \        V 4      ;_uu_ 4       pW! R 2,          p\        V4      pVe5   VP                  R4      R8w  g   VP                  R4      '       g   RV9  d    RRR4       R# VP                  4        UUu/ uF  w  rVV\        9  g   K  WVbK  	  pppRVR&   \        W74       VuuRRR4       # u uppi   + '       g   i     R# ; i)r&   Nr2   rU   r=   ÚownerÚqueued)r   r   r6   ÚitemsÚ_PIN_FIELDSr   )r'   r(   r)   rG   r8   ÚkÚvÚtickets   &&      r   Ú_requeue_pinrb   m   s¯   € Ü	��Œ˜$Ø˜˜U�mÕ#ˆÜ˜“+ˆØŠO˜wŸ{™{¨8Ó4¸ÔCÀwÇ{Á{ÐSa×GbÒGbØ 'Ô)Ø÷ 
‰ð $+§=¡=¤?ÔK¡?™4˜1°a¼{Ñ6J”$�!’$¡?ˆÑKØ#ˆˆxÑÜˆtÔØ÷ 
Šùó L÷ 
�ˆús0   ”AC ÁC Á.C ÂB:
ÂB:
ÂC Â:C Ã C	c              ƒ  ó>   "  € \        \        W4      G Rj  x€L
 #  L5i)a  Restore the queued legacy ticket a pre-admission pin was laid over (nothing committed), only
while it is still that pin: its id, message, sequence and created_at are kept, so ``_migrate``
admits it once in its FIFO place. Returns the ticket, or None when the pin is gone or changed.N)r$   rb   r-   s   &&r   Úrequeue_pinrd   z   s   é € ô œ\¨4Ó5×5Ð5Ñ5ùr/   c           
      óB  € ^ RI Hp \        V 4      ;_uu_ 4       pW1 R2,          p\        V4      pVeO   VP	                  R4      R8X  d9   VP	                  R4      '       g"   VP                  RRR	R
VR7       \        WE4       RRR4       R#   + '       g   i     R# ; i)rN   )ÚAGENT_BLOCKEDr&   Nr2   rU   r=   ÚfailedTÚ zBot Chat delivery was refused)r2   ÚrefusedÚreplyÚerrorÚreason)Útools.bot_failure_reasonsrf   r   r   r6   Úupdater   )r'   r(   rf   r)   rG   r8   s   &&    r   Ú_refuse_pinro   �   s€   € Ý7Ü	��Œ˜$Ø˜˜U�mÕ#ˆÜ˜“+ˆØÒ 7§;¡;¨xÓ#8¸KÔ#GÐPW×P[ÑP[Ð\j×PkÒPkØ�N‰N (°DÀÐJiØ"/ð ô 1ä�4Ô!÷ 
��Šús   šABÁ"!BÂB	c              ƒ  ó>   "  € \        \        W4      G Rj  x€L
 #  L5i)z¶Settle a pre-admission pin the FIFO definitely refused for good (nothing committed) as a
terminal ``failed`` receipt, only while it is still that pin: never re-sent, nothing unknown.N)r$   ro   r-   s   &&r   Ú
refuse_pinrq   Œ   s   é € ô œ[¨$Ó4×4Ð4Ñ4ùr/   c              ƒ  ó>   "  € \        \        W4      G Rj  x€L
 #  L5i)zZBulk scan; an owner scan passes ``pins`` to collect pre-admission pins instead of warning.N)r$   rS   )r'   rR   s   &&r   Úscan_receiptsrs   ’   s   é € äœ^¨TÓ8×8Ð8Ñ8ùr/   c                 ó°   € \        V R R4      pVf	   / ;q0n        VR,          R9   d   VP                  VR,          R4       R# WR,          3W2R,          &   R# )Ú_bot_receipt_indexNr2   r1   r@   >   rg   Úsettledr   )r
   ru   Úpop)r   r'   r9   Úindexs   &&& r   Úremember_receiptry   —   sW   € Ü�IÐ3°TÓ:€EØ‚}Ø/1Ð1ˆÔ,ØˆhÕÐ=Ô=Ø�	‰	�&˜Õ'¨Ö.à(,°\Õ.BÐ'Cˆ�]Õ#Ó$ó    c                 óœ   a€ \        V R R4      oSf   \        4       ;oV n        SP                  V4       V3R lpVP	                  V4       R# )Ú_bot_receipt_tasksNc                 óþ   <€ SP                  V 4       V P                  4       '       gU   V P                  4       pVe?   ^ R IpVP	                  \
        4      P                  R\        V4      P
                  4       R # R # R # )Nz!Bot receipt projection failed: %s)r   r   Ú	exceptionÚloggingÚ	getLoggerÚ__name__ÚwarningÚtype)Úfinishedrk   r   Útaskss   &  €r   ÚdoneÚ track_receipt_task.<locals>.done¦   sh   ø€ Ø�‰�hÔØ×!Ñ!×#Ò#Ø×&Ñ&Ó(ˆEØÒ ÛØ×!Ñ!¤(Ó+×3Ñ3Ð4WÔY]Ð^cÓYd×YmÑYmÖnñ !ñ $rz   )r
   r   r|   r   Úadd_done_callback)r   r   r†   r…   s   && @r   Útrack_receipt_taskr‰   ¡   sG   ø€ Ü�IÐ3°TÓ:€EØ‚}Ü/2«uÐ4ˆ�	Ô,Ø	‡I�Iˆd„Oõoð 	×Ñ˜4Ö rz   c                ó\  € \        V RR4      pVf   / ;q n        \        4       V n        \	        \        V R/ 4      P                  4       4       F[  w  pw  rEWQ8w  d   K  W29   d:   W#,          P                  4       '       g   V P                  P                  V4       KO  \        WV4       K]  	  R# )zXRe-arm paused receipts from owner publication, without making external pollers dial RPC.Ú_bot_receipt_refreshesNru   )	r
   r‹   r   Ú_bot_receipt_dirtyrQ   r]   r†   r   Ú_start_refresh)r   r@   r!   r(   r'   r[   s   &&    r   Úwake_bot_receiptsrŽ   °   s‘   € ä�iÐ!9¸4Ó@€GØ‚Ø57Ð7ˆÔ2Ü'*£uˆ	Ô$Ü"¤7¨9Ð6JÈBÓ#O×#UÑ#UÓ#WÖXÑˆ‰]ˆdØÔÙØŒ> '¥,×"3Ñ"3×"5Ò"5Ø×(Ñ(×,Ñ,¨SÖ1ä˜9¨CÖ0ó Yrz   c                 óÈ   a aaa€ ^ RI Ho V VVV3R lp\        P                  ! V! 4       4      pVS P                  S&   V V3R lpVP                  V4       \        S V4       R# )rN   )Úrefresh_receiptc               “   ó¸   <"  €  S P                   P                  S4       S! S SS4      G Rj  x€L
  SS P                   9  g   SS P                  9  g   KR  R#  L*5i)TN)rŒ   r   ru   )r   r'   r(   r�   s   €€€€r   Úrefresh_until_currentÚ-_start_refresh.<locals>.refresh_until_currentÁ   sR   øé € ØØ×(Ñ(×0Ñ0°Ô5Ù! )¨T°3Ó7×7Ð7Ø˜)×6Ñ6Ô6¸#ÀY×EaÑEaÖ:aÙñ 8ùs   ƒ*A­A®#AÁAc                 ó¸   <€ SP                   P                  S4      V J d:   SP                   P                  SR 4       SP                  P	                  S4       R # R # r,   )r‹   r6   rw   rŒ   r   )r„   r   r(   s   &€€r   r†   Ú_start_refresh.<locals>.doneÉ   sL   ø€ Ø×+Ñ+×/Ñ/°Ó4¸Ó@Ø×,Ñ,×0Ñ0°°dÔ;Ø×(Ñ(×0Ñ0°Ö5ñ Arz   N)rP   r�   r   r   r‹   rˆ   r‰   )r   r'   r(   r’   r   r†   r�   s   fff   @r   r�   r�   ¿   sU   û€ Ý3÷ð ô ×ÒÑ4Ó6Ó7€DØ,0€I×$Ñ$ SÑ)ö6ð 	×Ñ˜4Ô Ü�y $Ö'rz   r,   )r?   r@   r3   Úoperator)Ú__doc__r   Ú
contextlibr   Útools.bot_live_deliveryr   r   r   r   r$   r*   r.   ÚobjectrC   rJ   rL   rS   rW   rY   r^   rb   rd   ro   rq   rs   ry   r‰   rŽ   r�   © rz   r   Ú<module>rœ      s�   ðÙ _Û Ý *ç :Ñ :ð ñ*ó ð*ò$ò*1ò
7ñ ‹X€
ð )3ô ð&C°
ô Cô5òò7ð I€ò
ò6ò"ò5ô9ò
Dò!ò1ô(rz   