+
    jHàj‹*  ã                   óÜ   € R t ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RI	t	^ RI
t
^ RIt^ RIHt ^ RIHtHt ^ RIHt ]P&                  ! ]4      t]! RRR	7      tR
 tR tR tR tR tR tR tR# )zQProfile forwarding through the canonical owner, with exact conversation identity.N)Ú
ContextVar)ÚasdictÚreplace)Úpartial)ÚPath)Ú
SessionRefÚ
Submission)ÚRuntimeStoreErrorÚa2a_forward_identity)Údefaultc          
     óR  € ^ RI Hp \        P                  4       pVe   \	        V 4      RR08w  d   \        R4      hV! \        V RR7      WR7      p\        P                  ! VP                  4      pVP                  RVR	7       \        VRR\        P                  ! VR
R7      R7      # )zLOnly the forwarding handler can mint this policy, never session.create JSON.)Úbuild_policyÚsourceÚ
request_idÚinvalid_paramsÚcli)r   )Úprivate_secretsÚa2a)r   Úa2a_identityT)Ú	sort_keys)r   ÚplatformÚrequest_json)Úgateway.session_policyr   Ú_forward_identityÚgetÚsetr	   ÚdictÚjsonÚloadsr   Úupdater   Údumps)ÚparamsÚconfigr   r   ÚidentityÚpolicyÚrequests   &&$    Ú8/home/ubuntu/.hermes/hermes-agent/gateway/session_a2a.pyÚbuild_forward_policyr'      sŠ   € å3Ü ×$Ñ$Ó&€HØÒœ3˜v›;¨8°\Ð*BÔBÜÐ 0Ó1Ð1Ùœ$˜v¨eÔ4°fÔ^€FÜ�jŠj˜×,Ñ,Ó-€GØ‡N�N˜%¨h€NÔ7Ü�6 %°%ÄdÇjÂjÐQXÐdhÔFiÔjÐjó    c                 óÌ  € V e#   V P                   R8w  g   V P                  R8w  d   R#  \        P                  ! V P                  4      pVR,          pVR,          R8H  ;'       dc    \        V\        4      ;'       dK    \        V4      ^8H  ;'       d5    \        ;QJ d    R V 4       F  '       d   K   R# 	  R# ! R V 4       4      #   \        \        \        3 d     R# i ; i)Nr   Fr   r   c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5i©N©Ú
isinstanceÚstr)Ú.0Úvalues   & r&   Ú	<genexpr>Ú$is_forward_policy.<locals>.<genexpr>%   s   é € ÐE¹H°5œ
 5¬#×.Ð.»Hùs   ‚T)r   r   r   r   r   r-   ÚlistÚlenÚallÚ
ValueErrorÚKeyErrorÚ	TypeError)r$   r%   r#   s   &  r&   Úis_forward_policyr9      s×   € Ø‚~˜Ÿ™¨%Ô/°6·?±?ÀeÔ3KÙðÜ—*’*˜V×0Ñ0Ó1ˆØ˜>Õ*ˆØ˜Õ! UÑ*÷ Fð F¬z¸(ÄDÓ/I÷ Fð FÌcÐRZËmÐ_`ÑN`÷ Fð Fß“CÑE¹HÓE—C”Cð	GÚð	GØÑE¹HÓEÓEð	Gøäœ¤)Ð,ô Úðús;   ª;C	 Á&C	 Á>C	 ÂC	 Â C	 Â4C	 Â7C	 Â;C	 Ã	C#Ã"C#c                ó”   € \        V 4      '       g   R# \        P                  ! V P                  4      R,          ^,          pRVRVRR/# )zRThe authenticated peer wrote a forwarded turn, not the local principal hosting it.Nr   ÚidÚnameÚis_botT)r9   r   r   r   )r$   Úpeers   & r&   Úforward_authorr?   *   sA   € ä˜V×$Ò$ÙÜ�:Š:�f×)Ñ)Ó*¨>Õ:¸1Õ=€DØ�$˜  h°Ð5Ð5r(   c           	     óî  € ^ RI Hp VP                  VP                  8w  d   V# \	        VP
                  4      P                  R4      '       gr   ^ RIHp V P                  4       ;_uu_ 4       pVP                  RV\	        VP
                  4      ,           34      P                  4       f   VuuRRR4       #  RRR4       ^ RIHp V! WP
                  4      pW(P                  RVR,          .4      9  d   \        R	4      hVR
,          R,          p	RV9   d>   V P!                  VR,          4      p
T
;'       g    / P                  R4      ;'       g    T	# ^ RIHp W›9   d   V# T	#   + '       g   i     Lµ; i)zSRetain the owner's creation label when its LOCAL transport refreshes peer metadata.)ÚPlatformzlocal-)ÚLEGACY_PREFIXú$SELECT 1 FROM state_meta WHERE key=?N)Úlocal_receiptÚlineageÚ
session_idÚadmission_conflictr$   r   Úlegacy_session_id)ÚSTORED_AS_LOCAL)Úgateway.configrA   r   ÚLOCALr.   Úchat_idÚ
startswithÚhermes_state_local_migrationrB   Ú	_read_ctxÚexecuteÚfetchoneÚhermes_state_localrD   r   r	   Úget_sessionr   rI   )Údbr   rF   ÚfallbackrA   rB   ÚconnrD   ÚreceiptÚlabelÚrootrI   s   &&&&        r&   Ústorage_sourcerZ   2   s'  € å'Ø‡�˜(Ÿ.™.Ô(ØˆÜˆv�~‰~Ó×)Ñ)¨(×3Ò3å>Ø�\‰\�^Œ^˜tØ�|‰|ÐBÀ]ÔUXÐY_×YgÑYgÓUhÕEhÐDjÓk×tÑtÓvÒ~Ø÷ Š^Ø~÷ õ 1Ù˜B§¡Ó/€GØŸ™ Y°¸Õ1FÐ0GÓHÔHÜÐ 4Ó5Ð5ð �HÕ˜hÕ'€Eð
 ˜gÔ%Ø�~‰~˜gÐ&9Õ:Ó;ˆØ—
�
˜×Ñ Ó)×2Ð2¨UÐ2Ý6ØÔ/ˆ8Ð:°UÐ:÷' �^ús   Á,?E$Å$E4	c           
   ƒ   óN	  aaaaaaa"  € V P                   V P                  uooSP                  SP                  8w  d   \        R 4      h0 R-mSP                  8:  g   \        R4      h0 R.mp\        S4      V8w  gø   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  R	M! V3R lV 4       4      '       g¸   \        ;QJ d'    V3R
 lVR0,
           4       F  '       g   K   RM	  R	M! V3R
 lVR0,
           4       4      '       gh   \        ;QJ d'    V3R lVR0,
           4       F  '       g   K   RM	  R	M! V3R lVR0,
           4       4      '       g   \        SR,          4      R8”  d   \        R4      hR/ Uu. uF  pSV,          NK  	  ppR\        P                  ! \        P                  ! VR0R7      P                  4       4      P                  4       ,           p^ RIHoHp ^ RIHp ^ RIHp ^ RIHp	Hp
 ^ RIHp ^ RIHo VoV3R loVVV3R lpV! SP8                  VVVV3R lVR7      w  rÞS! V4      pSP;                  4        SP8                  P=                  V4      ea   V
! SP8                  V4      p\        P>                  ! VR,          R,          4      PA                  R4      V8w  d   \        R4      hV! SV4      pMð^ RI!H"p R SR,           R!V! SR,          4       2pSP8                  PG                  V4      pVe   \H        PK                  R"VR#,          V4       \L        P                  V4      p V! SSR$R%R&V/4      p\L        PO                  V4       \Q        V\R        4      '       dC   V! S\U        V	SP8                  SPV                  VR'7      4      G Rj  x€L
  V! SVR(,          4      pVPX                  V PZ                  9  d   V P]                  V/ 4      G Rj  x€L
  SP_                  S\a        SR,          VRSR,          /R)4      4      G Rj  x€L
 p^ R*I1H2p V! SP8                  VPf                  4      p\S        \i        V4      VPX                  Ve   VR+,          R,7      # RR,7      # u upi   \L        PO                  T4       i ; i Lô L± L}5i)1Úprofile_mismatchÚpermission_deniedÚagentÚtenantÚ
context_idÚinput_idÚtextc              3   ó\   <"  € T F!  p\        SV,          \        4      '       * x € K#  	  R # 5ir+   r,   ©r/   Úkr!   s   & €r&   r1   Úforward.<locals>.<genexpr>W   s"   øé € Ð$TÉVÈ¬°F¸1µI¼sÓ)C×%CÑ%CËVùs   ƒ),TFc              3   ó@   <"  € T F  pSV,          '       * x € K  	  R # 5ir+   © rd   s   & €r&   r1   rf   X   s   øé € Ð>Ñ*= Q�v˜a•y—=‘=Ó*=ùs   ƒc              3   óN   <"  € T F  p\        SV,          4      R 8„  x € K  	  R# 5i)i   N)r4   rd   s   & €r&   r1   rf   Y   s    øé € ÐDÑ2C¨Q”3�v˜a•y“> DÖ(Ó2Cùs   ƒ"%i   r   za2a:)Ú
separators)Úlocal_identityÚrestore_local_session)Ústage_local_session)Útracked_write)Úcommit_local_sessionrD   )Úfirst_generation)Úidentity_keyc                 ó$   <€ V ^ 8X  d   S# S RV  2# )é    Ú:rh   )ÚnÚbases   &€r&   Ú<lambda>Úforward.<locals>.<lambda>h   s   ø€  1¨¤6˜4Ð<°$°°q¸¸¨}Ð<r(   c           	      ó|   <€ V P                  R S! SP                  VSR,          4      34      P                  4       RJ# )rC   ra   N)rP   ÚsubjectrQ   )rV   ÚsidÚactorrq   r!   s   &&€€€r&   rw   rx   i   s=   ø€ ˜tŸ|™|Ð,RÙ�U—]‘] C¨°
Õ);Ó<ðU?ó  @ß@HÁÃ
ÐRVñ Wr(   c                 óL   <€ S! SP                   SP                  S! V 4      4      # r+   )Ú
profile_idrz   )ru   r|   Ú	authorityrk   r   s   &€€€€r&   rw   rx   l   s   ø€ ¡¨y×/CÑ/CÀUÇ]Á]ÑT^Ð_`ÓTaÔ br(   )ÚpinnedNr$   r   r   rG   )Ú_safe_context_slugza2a-Ú-zrA2A: pre-authority session %s titled %r has no peer identity; forwarding into a new session instead of adopting itr;   r   r   r   )ÚepochrW   rF   Úqueue)Úadmission_resultÚresult)rF   r†   >   úsession:readúsession:createúsession:submit>   r>   rb   r^   r_   ra   r`   )r^   r_   r>   r`   )Ú,rt   )5r   r|   r~   r	   Úcapabilitiesr   Úanyr4   ÚhashlibÚsha256r   r    ÚencodeÚ	hexdigestÚgateway.session_local_recoveryrk   rl   Úgateway.session_localrm   Úgateway.session_runtime_workersrn   rR   ro   rD   Ú hermes_state_mutation_retirementrp   Úhermes_state_terminalrq   rT   Ú_require_admission_openrS   r   r   Úplugins.platforms.a2a.adapterr�   Úget_session_by_titleÚloggerÚwarningr   Úresetr-   r   r   rƒ   rF   ÚsubscriptionsÚresumeÚsubmitr   Úgateway.session_resultsr…   Úadmission_idr   )Ú
connectionr!   Úfieldsre   r#   Úkeyrl   rm   rn   ro   rD   rp   r€   Ú
generationr{   rW   Úrefr�   ÚtitleÚlegacyÚtokenr…   Úsavedr|   r   rv   rq   rk   r   s   &f                     @@@@@@r&   Úforwardrª   P   s¼  þé € Ø!×+Ñ+¨Z×-=Ñ-=Ð€IˆuØ×Ñ˜9×/Ñ/Ô/ÜÐ 2Ó3Ð3Ú?À5×CUÑCUÔUÜÐ 3Ó4Ð4ÚJ€FÜˆF‹�vÔ§£Ô$TÉVÓ$T§§¢Ô$TÉVÓ$T×!TÒ!Tß‹sÔ>¨&°H°:Ö*=Ó>�s�sŠsÔ>¨&°H°:Ö*=Ó>×>Ò>ß‹sÔD°&¸F¸8Ö2CÓD�s�sŠsÔD°&¸F¸8Ö2CÓD×DÒDÜ�6˜&•>Ó" YÔ.ÜÐ 0Ó1Ð1Ù#LÓMÑ#L˜a��q—	�	Ñ#L€HÐMØ
”7—>’>¤$§*¢*¨XÀ*Ô"M×"TÑ"TÓ"VÓW×aÑaÓcÕ
c€CßTÝ9Ý=ßFÝAÝ2ð €DÜ<€JöW€Fá&Ø�‰×bÐkqôs�O€Já
�ZÓ
 €CØ×%Ñ%Ô'Ø‡|�|×Ñ Ó$Ò0Ù 	§¡¨cÓ2ˆÜ�:Š:�g˜hÕ'¨Õ7Ó8×<Ñ<¸^ÓLÐPXÔXÜ#Ð$8Ó9Ð9Ù# I¨sÓ3‰õ 	EØ�v˜g•Ð' qÑ);¸FÀ<Õ<PÓ)QÐ(RÐSˆØ—‘×2Ñ2°5Ó9ˆØÒÜ�N‰Nð RØSYÐZ^ÕS_Ðafôhä!×%Ñ% hÓ/ˆð	+Ù% i°¸À5È,ÐX[Ð8\Ó]ˆCä×#Ñ# EÔ*Ü�cœ4× Ò Ù 	¬7Ð3GÈÏÉÐ]f×]lÑ]lÐvyÔ+zÓ{×{Ð{Ù'¨	°3°|Õ3DÓEˆCØ
‡~�~˜Z×5Ñ5Ô5Ø×Ñ  RÓ(×(Ð(Ø×$Ñ$ U¬J°v¸jÕ7IÈ3ÐQWÐY_Ð`fÕYgÐPhÐjqÓ,rÓs×s€GÝ8Ù˜YŸ\™\¨7×+?Ñ+?Ó@€EÜ”�w“¨C¯N©NØ*/Ò*;�u˜X•ôGð GØAEôGð Gùòc NøôP ×#Ñ# EÕ*úá{ñ 	)Ùsùs”   ‰A<R%ÂR%ÂR%Â;
R%ÃR%Ã%%R%Ä
R%ÄR%Ä5%R%Å&R%ÆR ÆF0R%ÍR ÍAR%Î*RÎ+AR%Ï/R!Ï05R%Ð%R#Ð&AR%ÒRÒR%Ò!R%Ò#R%c             ƒ  óP  "  € ^ RI HpHp	Hp
HpHp ^ RIHp ^ RIH	p \        P                  ! \        V 4      P                  4      G Rj  x€L
 p \        P                  ! V4      ;_uu_4       GRj  x€L
  \        P                  ! WÐ4      G Rj  x€L
 pVP                  R8w  g   VP                   f-   T
! RVP                   RVP"                  ;'       g    R 24      h\        P                  ! W°VP                   4      G Rj  x€L
 pV! VP                   V4      w  ppV! VV^
RRR	7      ;_uu_4       GRj  x€L
 pVP$                  V8w  d	   V
! R
4      hV	! V4      ;_uu_4       GRj  x€L
 p\'        WW4WVR7      pRp VP(                  ! R/ VB G Rj  x€L
 pVR,          R8X  d	   V
! R4      hVR,          R8X  d9   TuuRRR4      GRj  x€L
  uuRRR4      GRj  x€L
  uuRRR4      GRj  x€L
  #  \        P                  ! V4      ;_uu_4       GRj  x€L
  \+        VVR,          4      G Rj  x€L
  RRR4      GRj  x€L
  KÌ   EL  ELÜ ELÁ ELP EL Lï LÆ L‘ L� Lq LJ L1 L#  + GRj  x€L 
 '       g   i     EK  ; i  \,         d    \/        T^,          R4      p EK+  i ; i  + GRj  x€L 
 '       g   i     M; iRRR4      GRj  x€L 
  M  + GRj  x€L 
 '       g   i     M; iRRR4      GRj  x€L 
  R#   + GRj  x€L 
 '       g   i     R# ; i5i)zNTransport-only caller; a timeout never cancels or re-identifies accepted work.)ÚGATEWAY_WS_PROTOCOLÚGatewayClientÚGatewayClientErrorÚ_session_ticketÚgateway_ws_target)Úensure_gateway_runtime)ÚconnectNÚreadyÚgateway_rt   Ú	not_ready)ÚsubprotocolsÚopen_timeoutÚmax_sizeÚproxyÚgateway_protocol_mismatch)r^   r_   r>   r`   ra   rb   g      Ð?ÚstatusÚunknownÚunknown_executionÚterminalr    g      @i  € )za2a.forward)Úhermes_cli.gateway_clientr¬   r­   r®   r¯   r°   Úhermes_cli.gateway_runtimer±   Úwebsockets.asyncio.clientr²   ÚasyncioÚ	to_threadr   ÚresolveÚtimeoutÚstateÚendpointÚreason_codeÚsubprotocolr   ÚrpcÚ_completionÚTimeoutErrorÚmin)Úhomer^   r_   r>   r`   ra   rb   rÅ   r¬   r­   r®   r¯   r°   r±   r²   r³   ÚticketÚurlÚ	protocolsÚwsÚclientr!   ÚbackoffrW   s   &$$$$$$$                r&   Úforward_to_ownerrÕ   ‘   sg  é € ÷,õ ,åAÝ1Ü×"Ò"¤4¨£:×#5Ñ#5Ó6×6€DÜ�Š˜w×'×'Õ'Ü×'Ò'Ð(>ÓE×EˆØ�;‰;˜'Ô! U§^¡^Ò%;Ù$ x°·±¨}¸A¸e×>OÑ>O×>^Ð>^ÐS^Ð=_Ð%`ÓaÐaÜ×(Ò(¨ÀÇÁÓO×OˆÙ*¨5¯>©>¸6ÓB‰ˆˆYá˜3¨YÀRÐRaØ!%÷'÷ 'õ 'Ø*,Ø�~‰~Ð!4Ô4Ù(Ð)DÓEÐEÙ$ R×(×(Ô(¨FÜ E¸tÐemÔy�Ø�ØØ$*§J¢JÑ$GÀÑ$G×G�GØ˜xÕ(¨IÔ5Ù0Ð1DÓEÐEØ˜xÕ(¨JÔ6Ø&÷ )×(Ñ(÷	'÷ 'ñ '÷ (×'Ò'ð.8Ü#*§?¢?°7×#;×#;Õ#;Ü"-¨f°g¸nÕ6MÓ"N×NÐN÷ $<×#;Ñ#;ò3 7Ú'ÚEò Pò'ñ )ñ Hñ	 )ñ	'ñ (ñ0 $<ÙN÷ $<×#;×#;Ô#;ûä'ô 8Ü"% g°¥k°3Ó"7œð8ú÷ )×(×(Ð(ú÷	'÷ '÷ '÷ '÷ 'ò 'ú÷ (×'×'×'×'Ô'üsó  ‚AL&Á	I	Á
&L&Á0IÁ1L&Á4L	ÂIÂAL	Ã-L	ÄIÄ3L	Ä6IÄ7L	Ä:.K	Å(IÅ)K	Å,'J,ÆIÆ)J,Æ=K	Ç
IÇK	ÇL	ÇI
ÇL	Ç!L&Ç.I Ç/L&Ç5"JÈI"ÈJÈI(È2I$È3I(È7JÉI&ÉJÉJ,É	L&ÉL&ÉL	ÉL	ÉL	ÉK	ÉJ,ÉK	ÉL	É L&É"JÉ$I(É&JÉ(JÉ.I1É/
JÉ:JÉ<JÊ J,ÊJÊJ)Ê$J,Ê(J)Ê)J,Ê,KÊ2J5Ê3
KÊ>KË K	ËL	ËKËL	ËK3Ë K#Ë!
K3Ë,K3Ë.L	Ë6L&ÌLÌL&Ì	L#	ÌLÌ
L#	ÌL#	Ì	L&c              ƒ  óP  "  €  V P                   P                  4       G Rj  x€L
 p\        V\        4      '       d   VhVP                  R4      ;'       g    / pVP                  R4      R8X  g   Kn  VP                  R4      ;'       g    / P                  R4      V8X  g   KŸ  R#  L‚5i)zVConsume projections until this admission's completion frame; a transport error raises.Nr!   Útypezmessage.completeÚpayloadr    )Úeventsr   r-   Ú	Exception)rÓ   r    ÚeventÚframes   &&  r&   rË   rË   ¶   s…   é € à
Ø—m‘m×'Ñ'Ó)×)ˆÜ�eœY×'Ò'ØˆKØ—	‘	˜(Ó#×)Ð) rˆØ�9‰9�VÓÐ 2Ö2¸¿	¹	À)Ó8L×8RÐ8RÐPR×7WÑ7WÐXfÓ7gÐkwÖ7wÙñ *ùs'   ‚B&¡B$¢3B&ÁB&Á1B&Â	B&Â"B&)Ú__doc__rÂ   Úcontextvarsr   Údataclassesr   r   Ú	functoolsr   r�   r   ÚloggingÚpathlibr   Úgateway.session_contractr   r   Úhermes_state_runtimer	   Ú	getLoggerÚ__name__r™   r   r'   r9   r?   rZ   rª   rÕ   rË   rh   r(   r&   Ú<module>rç      sk   ðÙ WÛ Ý "ß 'Ý Û Û Û Ý ç ;Ý 2à	×	Ò	˜8Ó	$€ÙÐ5¸tÔDÐ ò	kò	ò6ò;ò<>GòB"8ôJr(   