
    Ej                       d Z ddlmZ ddlZddlZddlmZmZ ddlmZ  G d d      Z	e	j                  e	j                  e	j                  e	j                  e	j                  e	j                  e	j                   e	j"                  e	j$                  e	j&                  e	j(                  e	j*                  e	j,                  e	j.                  e	j0                  e	j2                  e	j4                  e	j6                  fZ ed      Zd
dd	Zy)zkfinish-task timing logger: JSONL append per stage. Schema: {ts, task_id, stage, status, duration_ms, meta}.    )annotationsN)datetimetimezone)Pathc                  X    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZy)Stagez418 stage constants for finish-task lifecycle timing.INITCANCEL_CHECKQC_STARTQC_VALIDATEQC_DONEGIT_PRECHECKGIT_MERGE_PREP	GIT_MERGEGIT_PUSHDONE_MARKER	TIMER_ENDNOTIFY_DISPATCHNOTIFY_COMPLETEANU_CALLBACK_REGISTERANU_CALLBACK_FIRE
CHAIN_NEXTCLEANUPFINALIZEN)__name__
__module____qualname____doc__r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r        R/home/jay/workspace/.worktrees/task-2691+a-dev6/utils/finish_task_timing_logger.pyr   r   
   sa    >D!LHKG!L%NIHKI'O'O3+JGHr    r   z$memory/logs/finish-task-timing.jsonlc                   t        j                  t        j                        j	                         | ||||xs i d}t
        j                  j                  dd       t        j                  |dd      dz   }t        t
        dd	
      5 }|j                  |       |j                          	 t        j                  |j                                ddd       y# t         $ r Y w xY w# 1 sw Y   yxY w)zMAppend one JSONL record for a finish-task stage with UTC timestamp and fsync.)tstask_idstagestatusduration_msmetaT)parentsexist_okF),:)ensure_ascii
separators
azutf-8)encodingN)r   nowr   utc	isoformat	_LOG_PATHparentmkdirjsondumpsopenwriteflushosfsyncfilenoOSError)r$   r%   r&   r'   r(   recordlinefs           r!   	log_stagerD   ,   s     ll8<<(224"
F 4$7::f5ZH4OD	iw	/ 1				HHQXXZ 	 
  		 s*   "C).#C	C&#C)%C&&C))C2)NN)r$   strr%   rE   r&   rE   r'   z
int | Noner(   zdict | NonereturnNone)r   
__future__r   r8   r=   r   r   pathlibr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
ALL_STAGESr5   rD   r   r    r!   <module>rK      s    q "  	 '  0 
JJ""ENNE4E4Eu}}	,,eoou~~	u(=(=u?T?T	!8!8%:J:J	MM5>>
 78	r    