Ë
    âß²j©  ã                   ó@   — d Z ddlZddlZdddœd„Z	 dddœdedefd„Zy)	zLIn-process tick admission and dispatch; job execution stays in scheduler.py.é    N©Úcan_dispatchc                ó’   — ddl m} |j                  «       5 }|s
	 d d d «       yt        | ||||¬«      cd d d «       S # 1 sw Y   y xY w)Nr   )Ú
retirementr   )Úhermes_cli.backend_retirementr   ÚworkÚ_tick_admitted)ÚverboseÚadaptersÚloopÚsyncr   r   Úadmitteds          ú8/home/ubuntu/.hermes/hermes-agent/cron/scheduler_tick.pyÚtickr      sP   € Ý8ð 
�‰Ó	ð X˜hÙØ÷Xð Xô ˜g x°°tÈ,ÔW÷X÷ Xò Xús   —=¤=½Ar
   r   c                ó@  ‡ ‡‡‡— ddl mŠ ‰j                  «       }|�5‰j                  d|d   › d|d   › �«       ‰j	                  |d   |d   «      ‚‰j                  «       \  }}‰j                  |«       ‰j                  |«      }|€y	 t        j                  t        «      5  ddlm}	  |	d‰j                  «      r	 ddd«       ‰j                  |«       y	 ddd«       |�5 |«       s.‰j                  j                  d	«       	 ‰j                  |«       ydd
lm}
m} |r |
«        n |«        ‰j'                  «        	 ‰j)                  «        ‰j-                  «       }‰j/                  |«       |s^‰ r9‰j                  j1                  d‰j3                  «       j5                  d«      «       ‰j7                  «        	 ‰j                  |«       y‰ rC‰j                  j1                  d‰j3                  «       j5                  d«      t9        |«      «       ‰j;                  |D �cg c]  }|d   ‘Œ	 c}«       ‰j=                  «       }‰ r*‰j                  j1                  dt9        |«      |r|nd«       dt>        dt@        fˆˆˆˆ fd„}g }g }‰jC                  |«      }|D ]=  }‰jE                  |||«      }|€Œ|jG                  |«       |rŒ-|jG                  d«       Œ? |rptH        jJ                  jM                  |«      D ]"  }	 |jG                  |jO                  «       «       Œ$ ‰j7                  «        tS        |«      ‰j                  |«       S ‰jU                  |«       tS        |«      ‰j                  |«       S # 1 sw Y   �ŒªxY w# t*        $ r'}‰j                  j                  d|«       Y d}~�Œgd}~ww xY wc c}w # t*        $ r7}‰j                  jQ                  d|«       |jG                  d«       Y d}~Œþd}~ww xY w# ‰j                  |«       w xY w)a  Check and run all due jobs. File-locked so only one tick runs at a time (gateway ticker vs
    standalone daemon / manual tick). ``can_dispatch``: optional gate; false leaves due jobs for the
    next allowed tick. Returns the number of jobs executed (0 if another tick holds the lock).r   )Ú	schedulerNzboot=z disk=é   )Úcheck_pausedÚcronz7Cron dispatch paused while gateway drains existing work)ÚdrainÚdrain_in_backgroundz(Worktree maintenance dispatch failed: %sz%s - No jobs duez%H:%M:%Sz%s - %s job(s) dueÚidz.Running %d job(s) in parallel (max_workers=%s)Ú	unboundedÚjobÚreturnc                 ó,   •— ‰j                  | ‰‰‰«      S )N)Ú_process_due_job)r   Ú_schedr   r   r
   s    €€€€r   Ú_process_jobz$_tick_admitted.<locals>._process_job\   s   ø€ Ø×*Ñ*¨3°¸$ÀÓHÐHó    TzCron job future failed: %sF)+r   r   Ú#_should_yield_tick_to_fresh_gatewayÚ_log_tick_yield_onceÚCronTickYieldedÚ_get_lock_pathsÚ_ensure_cron_dirÚ_acquire_tick_lockÚ
contextlibÚsuppressÚImportErrorÚagent.estopr   ÚloggerÚ_release_tick_lockÚdebugÚcron.bot_chat_deliveryr   r   Ú_maybe_reap_dead_ownersÚ_maybe_run_worktree_maintenanceÚ	ExceptionÚget_due_jobsÚ_sweep_stale_inflight_for_tickÚinfoÚ_hermes_nowÚstrftimeÚ_sweep_mcp_orphansÚlenÚadvance_next_runsÚ_resolve_max_parallel_workersÚdictÚboolÚ_get_parallel_poolÚ_submit_with_guardÚappendÚ
concurrentÚfuturesÚas_completedÚresultÚerrorÚsumÚ _sweep_mcp_orphans_when_all_done)r
   r   r   r   r   Ú_skewÚlock_dirÚ	lock_fileÚlock_fdÚ_estop_check_pausedr   r   Ú_wt_excÚdue_jobsr   Ú_max_workersr   Ú_resultsÚ_all_futuresÚpoolÚfutÚfÚexcr   s   ```                    @r   r	   r	      sÎ  û€ õ
 )ð
 ×6Ñ6Ó8€EØÐØ×#Ñ# e¨E°!©H¨:°V¸EÀ!¹H¸:Ð$FÔGØ×$Ñ$ U¨1¡X¨u°Q©xÓ8Ð8à ×0Ñ0Ó2Ñ€HˆiØ
×Ñ˜HÔ%Ø×'Ñ'¨	Ó2€GØ€ØðR+ä× Ñ ¤Ó-ñ 	ÝGÙ" 6¨6¯=©=Ô9Ø÷	ð` 	×!Ñ! 'Õ*ð] :÷	ð
 Ð#©L¬NØ�M‰M×ÑÐ YÔZØðR 	×!Ñ! 'Õ*÷O 	FÙÙ�GáÔ!Ø×&Ñ&Ô(ð	UØ×2Ñ2Ô4ð ×&Ñ&Ó(ˆØ×-Ñ-¨hÔ7ááð —‘×"Ñ"Ð#5°v×7IÑ7IÓ7K×7TÑ7TÐU_Ó7`ÔaØ×%Ñ%Ô'Øð\ 	×!Ñ! 'Õ*ñY Ø�M‰M×ÑÐ3°V×5GÑ5GÓ5I×5RÑ5RÐS]Ó5^Ô`cÐdlÓ`mÔnð
 	× Ñ °xÖ!@° # d£)Ò!@ÔAà×;Ñ;Ó=ˆÙØ�M‰M×ÑØ@Ü�H“Ù ,‘°+ô?ð
	Iœdð 	I¤t÷ 	Ið 	Ið
 ˆØˆØ×(Ñ(¨Ó6ˆØò 	&ˆCØ×+Ñ+¨C°°|ÓDˆCØˆ{ØØ×Ñ Ô$ÚØ—‘ Õ%ð	&ñ Ü×'Ñ'×4Ñ4°\ÓBò +�ð+Ø—O‘O A§H¡H£JÕ/ð+ð ×%Ñ%Ô'Ü�x“=ð
 	×!Ñ! 'Õ*ð 	×/Ñ/°Ô=Ü�8‹}à×!Ñ! 'Õ*÷a	ñ 	ûô$ ò 	UØ�M‰M×ÑÐ JÈG×TÒTûð	Uüò0 "Aøô: !ò +Ø—M‘M×'Ñ'Ð(DÀcÔJØ—O‘O E×*Ñ*ûð+ûð 	×!Ñ! 'Õ*ús¥   ÂP
 Â$NÂ?P
 Ã,P
 Ä)P
 ÅN ÅA.P
 ÇAP
 È(OÈ4BP
 Ë7P
 ÌOÌ'P
 ÍP
 ÎNÎP
 Î	N?ÎN:Î4P
 Î:N?Î?P
 Ï	PÏ-PÏ=P
 ÐPÐP
 Ð
P)TNNT)Ú__doc__Úconcurrent.futuresr@   r'   r   r<   r	   © r    r   ú<module>rX      sD   ðÙ Rã Û ðXÈDô Xð BFðg+ØW[òg+Øðg+Ø:>ôg+r    