
    :j                     x   d Z ddlmZmZ e G d de             Ze G d de             Ze G d de             Ze G d	 d
e             Ze G d de             Ze G d de             Z	e G d de             Z
e G d de             Ze G d de             Ze G d de             Ze G d de             Zy)z
Core Enums - Fundamental Enumeration Types

This module defines core enumeration types used throughout the application.
These enums provide type safety and clear value definitions for system states,
error reasons, and other categorical data.
    )Enumuniquec                   P    e Zd ZdZdZdZdZdZdZdZ	de
fd	Zde
fd
Zdd de
fdZy)SystemStatezSystem operational state

    Defines the possible states of the system during its lifecycle.
    Used across all modules for consistent state representation.
    unknownstartingrunningstoppingstoppederrorreturnc                 F    | t         j                  t         j                  fv S )z%Check if system is in an active state)r   STARTINGRUNNINGselfs    1/root/.openclaw/workspace/harvester/core/enums.py	is_activezSystemState.is_active   s    ,,k.A.ABBB    c                 F    | t         j                  t         j                  fv S )z&Check if system is in a terminal state)r   STOPPEDERRORr   s    r   is_terminalzSystemState.is_terminal!   s    ++[->->???r   target_statec                 f   t         j                  t         j                  t         j                  ht         j                  t         j                  t         j                  t         j
                  ht         j                  t         j
                  t         j                  ht         j
                  t         j                  t         j                  ht         j                  t         j                  ht         j                  t         j                  t         j                  hi}||j                  | t                     v S )z,Check if transition to target state is valid)	r   UNKNOWNr   r   r   STOPPINGr   getset)r   r   valid_transitionss      r   can_transition_tozSystemState.can_transition_to%   s     +"6"68I8I!J  ;#6#68I8I;K_K_"`+"6"68I8I!J  ;#6#68I8I"J+"6"6!7 4 4k6I6IJ
 044T35AAAr   N)__name__
__module____qualname____doc__r   r   r   r   r   r   boolr   r   r!    r   r   r   r      sY     GHGHGEC4 C@T @
Bm 
B 
Br   r   c                   h    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efdZdefdZy)ErrorReasonzError reasons for API validation and processing

    Standardized error reasons used across the system for
    consistent error handling and reporting.
    r   network_errortimeoutinvalid_tokeninvalid_keyinsufficient_quotano_quotano_model	no_accessbad_requestunauthorized	forbidden	not_foundrate_limitedserver_errorservice_unavailabler   c                     t         j                  t         j                  t         j                  t         j                  t         j
                  h}| |v S )zCheck if error is retryable)r)   NETWORK_ERRORTIMEOUTRATE_LIMITEDSERVER_ERRORSERVICE_UNAVAILABLE)r   retryable_errorss     r   is_retryablezErrorReason.is_retryableK   sG     %%$$$$++
 '''r   c                     t         j                  t         j                  t         j                  t         j                  t         j
                  h}| |v S )z%Check if error is a client-side error)r)   INVALID_TOKENBAD_REQUESTUNAUTHORIZED	FORBIDDEN	NOT_FOUND)r   client_errorss     r   is_client_errorzErrorReason.is_client_errorV   sE     %%##$$!!!!
 }$$r   N)r"   r#   r$   r%   r   r:   r;   rB   INVALID_KEYINSUFFICIENT_QUOTANO_QUOTANO_MODEL	NO_ACCESSrC   rD   rE   rF   r<   r=   r>   r&   r@   rH   r'   r   r   r)   r)   2   ss     G#MG#MK-HHIK!LII!L!L/	(d 	(	% 	%r   r)   c                   $    e Zd ZdZdZdZdefdZy)LoadBalanceStrategyzLoad balancing strategy enumeration

    Defines the available strategies for distributing load
    across multiple resources in the system.
    round_robinrandomr   c                     t         j                  dt         j                  di}|j                  | | j                  j                               S )zGet human-readable display namezRound RobinRandom)rO   ROUND_ROBINRANDOMr   valuetitle)r   display_namess     r   get_display_namez$LoadBalanceStrategy.get_display_namem   sC      ++]&&
   tzz'7'7'9::r   N)r"   r#   r$   r%   rT   rU   strrY   r'   r   r   rO   rO   b   s      KF;# ;r   rO   c                   4    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)
ResultTypezTypes of results that can be stored

    Defines the different types of results that the system
    can collect and persist during processing.
    validr/   
wait_checkinvalidmateriallinksmodelssummaryinspectN)r"   r#   r$   r%   VALIDrK   
WAIT_CHECKINVALIDMATERIALLINKSMODELSSUMMARYINSPECTr'   r   r   r\   r\   v   s6     EHJGHEFGGr   r\   c                        e Zd ZdZdZdZdZdZy)PipelineStagez$Pipeline stage names for type safetysearchgathercheckrd   N)r"   r#   r$   r%   SEARCHGATHERCHECKrl   r'   r   r   rn   rn      s    .FFEGr   rn   c                       e Zd ZdZdZdZy)QueueStateProviderz(Provider type for queue state managementsinglemultiN)r"   r#   r$   r%   SINGLEMULTIr'   r   r   rv   rv      s    2FEr   rv   c                   (    e Zd ZdZdZdZdZdZdZdZ	y)	QueueStateStatusz3Status of queue state for monitoring and managementactiveemptyr   archivedstaler   N)
r"   r#   r$   r%   ACTIVEEMPTYr   ARCHIVEDSTALEr   r'   r   r   r|   r|      s#    =FEEHEGr   r|   c                   $    e Zd ZdZdZdZdZdZdZy)QueueOperationz0Queue operation types for logging and monitoringsaveloadcleararchiveflushN)	r"   r#   r$   r%   SAVELOADCLEARARCHIVEFLUSHr'   r   r   r   r      s    :DDEGEr   r   c                   4    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)QueueStateFieldz)Field names for queue state serializationstageprovider
task_countsaved_attasksstatus	age_hours	file_sizer   N)r"   r#   r$   r%   STAGEPROVIDER
TASK_COUNTSAVED_ATTASKSSTATUS	AGE_HOURS	FILE_SIZEr   r'   r   r   r   r      s2    3EHJHEFIIEr   r   c                   $    e Zd ZdZdZdZdZdZdZy)AlertKeyTypez'Alert key types for alert deduplicationperformancesystemr   pipelineresourceN)	r"   r#   r$   r%   PERFORMANCESYSTEMr   PIPELINERESOURCEr'   r   r   r   r      s    1KFHHHr   r   c                   $    e Zd ZdZdZdZdZdZdZy)	ErrorTypez)Error types for structured error handlingDATA_COLLECTION_ERRORPIPELINE_ERRORPROVIDER_ERRORCACHE_ERRORVALIDATION_ERRORN)	r"   r#   r$   r%   r   r   r   r   r   r'   r   r   r   r      s     33%N%NK)r   r   N)r%   enumr   r   r   r)   rO   r\   rn   rv   r|   r   r   r   r   r'   r   r   <module>r      s=     B$  B  BF ,%$ ,% ,%^ ;$ ; ;&   $ D      t   T   d   4   * * *r   