+
    jHàjK/  ã                   ó‚   € R t ^ RIt^ RIt^ RIt^ RIt ! R R]4      tR tR tR t	R t
R tR	RR
RRR/R ltRR/R ltR# )zPTransport-only cron execution; output/delivery remain with the firing scheduler.Nc                   ó   € ] tR t^tRtRtR# )ÚCronExecutionUnknownzJThe owner may have accepted this fire; never book it as failed or re-fire.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú=/home/ubuntu/.hermes/hermes-agent/cron/scheduler_authority.pyr   r      s   † ÝTr   r   c                 óâ   € ^ RI Hp \        P                  ! \        P
                  ! W.4      P                  4       4      P                  4       pV! 4       R,          R,          VR,           ,          # )é    ©Úget_hermes_homeÚcronÚ
admissionsz.json)Úhermes_constantsr   ÚhashlibÚsha256ÚjsonÚdumpsÚencodeÚ	hexdigest)Újob_idÚ
request_idr   Úkeys   &&  r   Újournal_pathr      sM   € Ý0Ü
�.Š.œŸš VÐ$8Ó9×@Ñ@ÓBÓ
C×
MÑ
MÓ
O€CÙÓ˜vÕ%¨Õ4¸¸g½ÕFÐFr   c                ó^   € V '       d%   RV P                  R4      RV P                  R4      /# R# )zTThe exact pause this recovery uncertainty caused, so only that pause is ever lifted.Ú	paused_atÚreasonÚpaused_reasonT)Úget)Úpauseds   &r   Ú_pause_identityr$      s+   € ç\bˆK˜Ÿ™ KÓ0°(¸F¿J¹JÀÓ<WÐXÐlÐhlÐlr   c                ó†   € T;'       g    R Uu. uF&  p\        W4      P                  4       '       g   K$  VNK(  	  up# u upi )z°The recorded completion ids whose admission journal still exists: only journal recovery
can replay a completion into ``mark_job_run``, so an id without one is a dead tombstone.r   )r   Úexists)r   ÚcompletionsÚeids   && r   Úreplayable_completionsr)      s;   € ð '×,Ð,¨"Ð,ÓSÑ,�C´¸VÓ0I×0PÑ0P×0R�CˆCÑ,ÑSÐSùÒSs   �!>µ>c                ó  € ^ RI Hp ^ RIHp V! WR7      p\	        W4      pV'       dZ   VP                  4       '       dB   \        P                  ! VP                  RR7      4      p\        V4      VR&   V! WgRRR	7       R
# R
# R
# )z°The firer pauses the job for this fire's unverified admission and records that exact pause
on the fire's journal, so the receipt that later proves the run terminal can lift it.)Ú	pause_job©Úatomic_json_write©r    ú	utf-8-sig©ÚencodingÚpause_recordedé€  T©ÚmodeÚ	fsync_dirN)
Ú	cron.jobsr+   Úutilsr-   r   r&   r   ÚloadsÚ	read_textr$   )r   Úexecution_idr    r+   r-   r#   ÚjournalÚrecords   &&&     r   Úpause_for_unknownr>      sl   € õ $Ý'Ù�vÔ-€FÜ˜6Ó0€Gß�'—.‘.×"Ò"Ü—’˜G×-Ñ-°{Ð-ÓCÓDˆÜ#2°6Ó#:ˆÐÑ Ù˜'°À×Fñ #�vr   c                ó:  € ^ RI HpHp \        V\        4      '       d	   V! V 4      MRpVe]   VP                  R4      R8X  dE   VP                  R4      VP                  R4      3VR,          VR,          38X  d    V! V 4       R# R# R# R#   \         d     R# i ; i)z»A verified terminal receipt resolved the uncertainty that paused the schedule: resume it iff
the job is still held by exactly that pause (an operator's own pause/resume is never touched).)Úget_jobÚ
resume_jobNÚstater#   r   r!   r    )r7   r@   rA   Ú
isinstanceÚdictr"   Ú
ValueError)r   Úpauser@   rA   Újobs   &&   r   Ú_lift_pauserH   *   s‘   € ÷ .Ü'¨¬t×4Ò4‰'�&Œ/¸$€CØŠ˜CŸG™G GÓ,°Ô8Ø—‘˜Ó% s§w¡w¨Ó'?Ð@ÀUÈ;ÕEWÐY^Ð_gÕYhÐDiÔið	Ù�vÖñ jñ 9‰øô ô 	Úð	ús   Á;B ÂBÂBÚextra_promptÚcancel_eventr;   c                ód  a aaaaaaaaaaaaaa€ ^ RI HpHo ^ RIHo ^ RIHp ^ RIHo T;'       g    S P                  R4      oS'       g%   \        P                  ! 4       P                  ;oS R&   RS R,          RSR	V/oV! 4       R
,          R,          o\        SR,          SR,          4      oRSRR/oSP                  4       '       d@   \        P                   ! SP#                  RR7      4      oSR,          S8w  d   \%        R4      hSP                  4       oV! V! 4       4      oVVVV3R loVVV VVVVV3R loVV3R lp Se\   Sw  op \&        P(                  ! 4       pW‡J d   \+        R4      h\&        P,                  ! S! VV3R l4      V4      P/                  4       # \&        P0                  ! V! 4       4      #   \*         d    Rp Lji ; i  \2         dS   p	S'       d   \%        RS RT	 24      T	h\5        T	4      P6                   RT	 2p
RRS R,           RT
 R2RT
3u Rp	?	# Rp	?	ii ; i)r   ©Úowner_for_homeÚ	operation©Úconnect_gatewayr   r,   r;   r   Úidr   rI   r   r   ÚparamsÚreceiptNr/   r0   z cron admission identity conflictc                  óF   <€ SP                  R R R7       S ! SSRR R7       R# )T)ÚparentsÚexist_okr3   r4   N)Úmkdir)r-   r<   r=   Úroots   €€€€r   ÚsaveÚrun_canonical_job.<locals>.saveL   s!   ø€ Ø�
‰
˜4¨$ˆ
Ô/Ù˜' 6°À×Fr   c              “   óP  <"  € R o
S! 4         V ! RS4      G Rj  x€L
 pTSR&   S! 4        RRr‡ Se(   SP                  4       '       d   T ! RT4      G Rj  x€L
  T ! RT4      G Rj  x€L
 pTP                  R4      RT39  d/   ^ RI
Hp	 TR,          p\        P                  ! T	S4      G Rj  x€L
  TR,          R8X  d=   SP                  TP                  R4      ;'       g    / 4       \        TR,          4      # TR,          R8X  d   \        R4      h\        P                   ! T4      G Rj  x€L
  \#        T^,          R4      pEK   EL.  \          dÃ   p^ RIHp Sf   \        Y#4      '       d¢   T ! RS4      G Rj  x€L 
 pTR,          R8X  dY   \	        T4      P
                   RT 2pRR	SR
,           RT R2RT.pTSR&   \        S4      SR&   S! 4        \        T4      u Rp?# TR,          R9  d   h RTR,          RTR,          /p Rp?ELóh Rp?ii ; i ELÆ EL¸ ELu Lö5i)TÚsubmitN)ÚGatewayRPCErrorÚrecoverÚstatusÚmissingú: Fú# Cron Job: rQ   ú (FAILED)

Ú
Ú ÚrefusalrG   ÚterminalÚ
session_idÚadmission_idrS   gš™™™™™¹?ÚcancelÚprogress_at)Útouch_execution_progressÚ	job_flagsÚresultÚunknownz2unknown_execution: cron admission was not replayedg       @>   ÚqueuedÚstartedrg   )Ú	ExceptionÚhermes_cli.gateway_clientr]   rC   Útyper   rD   ÚtupleÚis_setr"   Úcron.executionsrl   ÚasyncioÚ	to_threadÚupdater   ÚsleepÚmin)ÚcallrS   Úexcr]   rB   Úerrorrn   ÚdelayÚprogressrl   Ú	attemptedrJ   rG   ÚownerrR   r=   r   rY   s   &         €€€€€€€€r   ÚobserveÚ"run_canonical_job.<locals>.observeP   s  øé € àˆ	ÙŒð	Ù  ¨6Ó2×2ˆGð( $ˆˆyÑÙŒØ˜dˆxØØÒ'¨L×,?Ñ,?×,AÒ,AÙ˜8 WÓ-×-Ð-Ù˜x¨Ó1×1ˆEØ�y‰y˜Ó'°°hÐ/?Ô?õ EØ  Õ/�Ü×'Ò'Ð(@À*ÓM×MÐMØ�X� *Ô,Ø—
‘
˜5Ÿ9™9 [Ó1×7Ð7°RÔ8Ü˜U 8�_Ó-Ð-Ø�X� )Ô+Ü*Ð+_Ó`Ð`Ü—-’- Ó&×&Ð&Ü˜ �	 3Ó'‹EòQ 3øÜô 	ÝAð Ò ¤J¨s×$DÒ$DÙ" 9¨fÓ5×5Ð5�Ø˜•? iÔ/Ü# C›y×1Ñ1Ð2°"°S°EÐ:�EØ# |°C¸µI°;¸mÈEÈ7ÐRTÐ%UÐWYÐ[`Ða�FØ(.�F˜9Ñ%Ü$(¨£I�F˜5‘MÙ”FÜ  ›=Õ(Ø˜•?Ð*KÔKØà'¨¨|Õ)<¸nÈeÐTbÕNcÐd–àûð%	úò0 .Ú1ò Nñ 'ùs²   ƒ
H&ŽE šE›E Ÿ)H&Á	H&ÁHÁH&Á&HÁ'AH&Â,H!Â-4H&Ã"AH&Ä-H$Ä.H&ÅE ÅHÅ'HÅ=F Å>A%HÇ#HÇ$H&Ç)#HÈH&ÈHÈHÈH&ÈH&È!H&È$H&c               “   óÐ   <a "  € S! 4       ;_uu_4       GR j  x€L
 o S! V 3R l4      G R j  x€L
 uuR R R 4      GR j  x€L
  #  L* L L	  + GR j  x€L 
 '       g   i     R # ; i5i)Nc                 ó8   <€ SP                   ! R V ,           3/ VB # )zcron.©Úrpc)ÚopÚdataÚclients   &&€r   Ú<lambda>Ú3run_canonical_job.<locals>.remote.<locals>.<lambda>�   s   ø€ °&·*²*¸WÀr½\Ñ2RÈTÒ2Rr   r   )rŒ   rP   r„   s   @€€r   ÚremoteÚ!run_canonical_job.<locals>.remote   s<   ùé € Ù"×$×$Ô$¨Ù Ô!RÓS×S÷ %×$Ô$ÙS÷ %×$×$Ó$üsW   „A&˜A™A&œA	¬A­A	°A&½A¾A&ÁA	ÁA&Á	A#	ÁAÁ
A#	ÁA#	Á	A&z<cron synchronous execution must run off the owner event loopc                 ó   <€ S! SW4      # )Nr   )rŠ   r‹   Ú	authorityrN   s   &&€€r   r�   Ú#run_canonical_job.<locals>.<lambda>�   s   ø€ ©°9¸bÔ)Gr   z%Cron execution unverified; reconcile ra   Frb   rc   rd   re   )Úgateway.session_cronrM   rN   rs   rP   r   r   r8   r-   r"   ÚuuidÚuuid4Úhexr   r&   r   r9   r:   r   rx   Úget_running_loopÚRuntimeErrorÚrun_coroutine_threadsafern   Úrunrr   rt   r   )rG   rI   rJ   r;   rM   r   r�   ÚloopÚcurrentr~   r   r-   r‚   r’   rP   r<   r„   rN   rƒ   rR   r=   r   rX   rY   s   f$d$       @@@@@@@@@@@@@r   Úrun_canonical_jobrž   7   s  ÿþ€ ß>Ý9Ý0Ý'à×8Ð8 §¡¨Ó!8€JßÜ+/¯:ª:«<×+;Ñ+;Ð;ˆ
�S˜Ñ(Ø˜˜D�	 <°Ø˜lð,€FáÓ˜vÕ%¨Õ4€DÜ˜6 (Õ+¨V°LÕ-AÓB€GØ˜ 	¨4Ð0€FØ‡~�~×ÒÜ—’˜G×-Ñ-°{Ð-ÓCÓDˆØ�(Õ˜vÔ%Ü&Ð'IÓJÐJØ—‘Ó €IÙ™?Ó,Ó-€E÷Gð G÷-(ô -(ö^TðRØÒØ#‰OˆI�tðÜ!×2Ò2Ó4�ð ‹Ü"Ð#aÓbÐbÜ×3Ò3ÙÕGÓHÈ$óPßPVÑPVÓPXðYä�{Š{™6›8Ó$Ð$øô  ô Ø’ðûô ô RßÜ&Ð)NÈwÈiÐWYÐZ]ÐY^Ð'_Ó`ÐfiÐiÜ˜“9×%Ñ%Ð& b¨¨Ð.ˆØ˜ S¨¥Y K¨}¸U¸GÀ2ÐFÈÈEÐQÕQûð	RúsI   Å	G ÅF? Å$?G Æ$G Æ?GÇG ÇGÇG ÇH/ÇAH*È$H/È*H/Úallow_connectTc                ó$  aa a!a"€ ^ RI HpHo  ^ RIHp ^ RIHo ^ RIHpH	p ^ RI
HpHp ^ RIHpHpHp	Hp
 ^ RIHpHp ^ RIHp ^ R	IpV! 4       R
,          R,          p\1        VP3                  R4      4       EFÛ  p \4        P6                  ! VP9                  RR7      4      pVR,          o"V\;        S"R,          S"R,          4      8w  d   \=        R4      hV! S"R,          S"R,          4      '       d   K}  V! S"R,          4      pVe8   VR,          S"R,          8X  d#   VR,          R19   d   VP?                  RR7       KÇ  RV9   d   RRRVR,          RVR,          /pMxV! V! 4       4      o!S!f   V '       g   EK  VV V!V"3R lpS!e5   \@        PB                  ! V! 4       S!^,          4      PE                  ^R7      pM\@        PF                  ! V! 4       4      pVR,          R8X  dE   V! S"R,          4      pVf   VP?                  RR7       EK“  RpRRRVRRRS"R,           R V R!2R"V./pVR,          R8w  dT   VR,          R#8X  dC   VPI                  R$4      '       g,   R%p\K        V! S"R,          VR&7      4      VR$&   V! VVR'RR(7       EK  VR,          w  pppp\M        VR,          3/ VPI                  R)4      ;'       g    / B pS"R,          VR*&   V	! VVVV4      w  pppV! VVVVR+7      pV! \M        VR	R,7      4      pV
! VVVVR	R	RR	R-7       V! VV4       V! VR	S"R,          RR.7      '       d&   \O        S"R,          VPI                  R$4      4       EKÛ  EKÞ  	  R	#   \P         d-    TPS                  \T        4      PW                  R/TRR07        EK  i ; i)2zÈObserve prepared fires; never submit missing or interrupted work.

With allow_connect=False, a headless tick leaves durable receipts for the next
live owner instead of ensuring or spawning a gateway.
rL   r   rO   )Úexecution_owner_liveÚget_execution)r@   r+   )Ú_RunDeliveryÚ_FireOwnershipÚ_apply_agent_failure_markerÚ_save_compose_deliver)Úfail_empty_responseÚfinish_completed_runr,   Nr   r   z*.jsonr/   r0   rR   r   r   zcron journal identity conflictr_   T)Ú
missing_okrf   rg   rn   rG   c               “   ó  <"  € Se   S! S^ ,          RS4      G R j  x€L
 # S! 4       ;_uu_4       GR j  x€L
 p V P                   ! R/ SB G R j  x€L
 uuR R R 4      GR j  x€L
  #  LH L2 L L  + GR j  x€L 
 '       g   i     R # ; i5i)Nr^   )zcron.recoverrˆ   )rŒ   rP   rN   rƒ   rR   s    €€€€r   r„   Ú"reconcile_pending.<locals>.observe½   sg   øé € ØÒ(Ù%.¨u°Q­x¸ÀFÓ%K×KÐKÙ.×0×0Ô0°FØ%+§Z¢ZÑ%IÀ&Ñ%I×I÷  1×0Ò0ñ  LÙ0ÙI÷  1×0×0Ó0üsl   ƒB
œA%�B
´A'µB
¸A-ÁA)ÁA-ÁB
ÁA+Á B
Á'B
Á)A-Á+B
Á-B	Á3A6Á4
B	Á?B	Â	B
)Útimeoutr`   z:Cron admission missing: the owner never admitted this fireFrb   rc   rd   re   ro   r2   z1Canonical cron unknown; no automatic re-executionr.   r3   r4   rm   r;   )Úagent_declared)Ú
fire_claim)Úadaptersrœ   ÚverboseÚexecution_token)Ú	recoveredz"Cron receipt recovery deferred: %s)Úexc_info>   ÚfailedÚ	completed),r”   rM   rN   r   r   rs   rP   rw   r¡   r¢   r7   r@   r+   Úcron.schedulerr£   r¤   r¥   r¦   Úcron.scheduler_bookkeepingr§   r¨   r8   r-   ÚloggingÚsortedÚglobr   r9   r:   r   rE   Úunlinkrx   rš   rn   r›   r"   r$   rD   rH   rr   Ú	getLoggerr   Úwarning)#rŸ   rM   r   r¡   r¢   r@   r+   r£   r¤   r¥   r¦   r§   r¨   r-   r¸   rX   r<   r=   ÚrowrB   r„   r�   r   r    ÚsuccessÚoutputÚanswerrG   ÚdeclaredÚdeliveryÚfencerP   rN   rƒ   rR   s#   $                              @@@@r   Úreconcile_pendingrÅ   •   so  û€ ÷ ?Ý0Ý9ßCß,÷7ó 7çTÝ'ÛáÓ˜vÕ%¨Õ4€DÜ˜$Ÿ)™) HÓ-×.ˆð>	nÜ—Z’Z × 1Ñ 1¸;Ð 1Ó GÓHˆFØ˜HÕ%ˆFØœ, v¨hÕ'7¸ÀÕ9MÓNÔNÜ Ð!AÓBÐBÙ# F¨<Õ$8¸&ÀÕ:J×KÒKñ Ù  |Õ 4Ó5ˆCØŠ 3 x¥=°F¸8Õ4DÔ#DÈÈXÍÐZqÔIqð —‘¨$�Ô/ÙØ˜FÔ"Ø! :¨x¸À	Õ9JÈEÐSYÐZ_ÕS`Ða‘á&¡Ó'8Ó9�Ø’=¯Ú÷Jð Jð
 Ò$Ü#×<Ò<¹W»YÈÈaÍÓQ×XÑXÐacÐXÓd‘Eä#ŸKšK©«	Ó2�EØ�X� )Ô+ñ " &¨Õ"2Ó3�Ø’?Ø—N‘N¨d�NÔ3ÚØT�Ø! :¨u°gØ! E¨\¸&ÀÕ:JÐ9KÈ=ÐY^ÐX_Ð_aÐ+bÐdfÐhmÐ#nðp�à�X� *Ô,Ø˜•? iÔ/¸¿
¹
ÐCS×8TÒ8TØP�FÜ/>¹yÈÐPXÕIYÐbhÔ?iÓ/j�FÐ+Ñ,Ù% g¨v¸EÈTÕRÚØ-2°8­_Ñ*ˆG�V˜V UÜ�u˜U•|ÑF¨¯	©	°+Ó(>×(DÐ(DÀ"ÑFˆCØ"(¨Õ"6ˆC�Ññ (CÀ3ÈÐQVÐX^Ó'_Ñ$ˆG�U˜HÙ# C¨°%ÈÔQˆHñ #¤4¨¸Ô#=Ó>ˆEÙ! (¨E°6¸6ÈDÐW[Ø).ÀõFá ¨&Ô1Ù# H¨d°F¸<Õ4HÐTX×YÓYÜ˜F 8Õ,¨f¯j©jÐ9IÓ.J×Kò Zóy /øô| ô 	nØ×ÑœhÓ'×/Ñ/Ð0TÐV]ÐhlÐ/×mÐmð	núsA   Á;A5MÃ3AMÄ=6MÅ7BMÈ	AMÉ+MÊ4MÊ;BMÍ2NÎN)r	   rx   r   r   r•   r™   r   r   r$   r)   r>   rH   rž   rÅ   r   r   r   Ú<module>rÆ      ss   ðÙ VÛ Û Û Û ôU˜<ô UòGòmò
Tò
Gò
ð\R¨4ð \R¸dð \RÐQUô \Rð|Qn tö Qnr   