
    1j	                        U d Z ddlmZ ddlZddlZddlmZ ddlmZ dZ	de
d<   d	Zd
e
d<    ej                  dej                        Z ej                  dej                        ZddZddZ	 d	 	 	 	 	 ddZddZy)uq   task md 파일을 6가지 실행 모드로 분류하고 sha256 immutability를 검증하는 단일 helper 모듈.    )annotationsN)Path)Tuple)code	docs_onlyread_only_watcher	diagnosiscallback_onlycloseout_marker_onlyz#Tuple[str, str, str, str, str, str]VALID_MODES(TASK_MD_POST_DISPATCH_MUTATION_FORBIDDENstrMUTATION_FORBIDDEN_MARKERzLevel\s*:\s*Lv\.?\s*0zdocs_only\s*:\s*truec                8    t        |       j                  d      S )u<   task md 경로에서 utf-8 텍스트를 읽어 반환한다.zutf-8)encoding)r   	read_text)task_md_paths    K/home/jay/workspace/.worktrees/task-2691-dev8/utils/task_mode_classifier.py
_read_textr      s    '''99    c                   t        |       }|j                         }t        j                  |      sd|v ryt	        t
        j                  |            }|r,d|v ryd|v sd|v sd|v ryd|v sd	|v sd
|v ryd|v sd|v sd|v ryy)uJ   task md 내용을 분석해 6개 실행 모드 중 하나를 반환한다.z	docs onlyr   watcherr   r	   u   진단u   분석callbacku   콜백enveloper
   closeoutz.done markeru	   마커만r   r   )r   lower_DOCS_ONLY_FRONTMATTER_REsearchbool_LEVEL_LV0_RE)r   textr   is_lv0s       r   classify_task_moder#      s    l#DJJLE !''-1E-&&t,-F&5 h$&6H<L%X%5:;N"%^u%<+QUBU)r   c                    t        |       j                         }t        j                  |      j	                         }|d|fS ||k(  |fS )ue   task md sha256을 계산해 기록값과 비교하고 (is_unchanged, current_sha256)을 반환한다.T)r   
read_byteshashlibsha256	hexdigest)r   recorded_sha256datacurrents       r   check_task_md_immutabilityr,   7   sN     ((*DnnT",,.Gg&00r   c                
    | dv S )uV   read-only 성격의 모드(commit/diff 0이 PASS 증거인 모드)인지 판정한다.)r   r	   r
   r   r    )modes    r   is_read_only_moder0   E   s       r   )r   r   returnr   )N)r   r   r)   z
str | Noner1   zTuple[bool, str])r/   r   r1   r   )__doc__
__future__r   r&   repathlibr   typingr   r   __annotations__r   compile
IGNORECASEr    r   r   r#   r,   r0   r.   r   r   <module>r:      s    w "  	  40  "L 3 K

3R]]C&BJJ'>N :
4 6:11(211r   