
    Fjl                    X    d Z ddlmZ  G d d      ZdZdZdZdZdd	Zdd
Z	ddZ
ddZy)znTask mode classifier: 6 modes (NORMAL/READ_ONLY_WATCHER/DIAGNOSIS/CALLBACK_ONLY/CLOSEOUT_MARKER_ONLY/UNKNOWN).    )annotationsc                  (    e Zd ZdZdZdZdZdZdZdZ	y)	TaskModez=6 task mode string constants used by QC + finish-task layers.NORMALREAD_ONLY_WATCHER	DIAGNOSISCALLBACK_ONLYCLOSEOUT_MARKER_ONLYUNKNOWNN)
__name__
__module____qualname____doc__r   r   r   r	   r
   r        M/home/jay/workspace/.worktrees/task-2691+a-dev6/utils/task_mode_classifier.pyr   r      s%    GF+I#M1Gr   r   )zread-only watcherwatcher)zcallback onlyzcallback-only)zmarker onlyzmarker-only)zdiagnosis onlyzdiagnosis-onlyc                ,     t         fd|D              S )Nc              3  &   K   | ]  }|v  
 y w)Nr   ).0phaystacks     r   	<genexpr>z_has_pattern.<locals>.<genexpr>   s     /qH}/s   )any)r   patternss   ` r   _has_patternr      s    /h///r   c                   | st         j                  S |st         j                  S |j                         }t        |t              rt         j
                  S t        |t              rt         j                  S t        |t              rt         j                  S t        |t              rt         j                  S t         j                  S )zQClassify task mode for `task_id` by scanning task_md content with priority order.)r   r   lowerr   _WATCHER_PATTERNSr   _CALLBACK_PATTERNSr	   _MARKER_PATTERNSr
   _DIAGNOSIS_PATTERNSr   r   )task_idtask_md_contenttexts      r   classifyr&      s      "DD+,)))D,-%%%D*+,,,D-.!!!??r   c                (    | t         j                  k(  S )z@Return True only for NORMAL mode (others are non-code-changing).)r   r   modes    r   requires_git_evidencer*   ,   s    8??""r   c                    | t         j                  t         j                  t         j                  t         j                  fv S )zDReturn True for non-NORMAL modes where commits violate the contract.)r   r   r	   r
   r   r(   s    r   is_commit_forbiddenr,   1   s8    ""%%	  r   N)r   strr   ztuple[str, ...]returnbool)r#   r-   r$   r-   r.   r-   )r)   r-   r.   r/   )r   
__future__r   r   r   r    r!   r"   r   r&   r*   r,   r   r   r   <module>r1      sC    t "  5 7 1 : 0$#
r   