
    :jx                     P    d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZ  G d d      Zy)z
Configuration Accessor

This module provides accessor methods for accessing configuration objects.
It offers type-safe configuration access.

Key Features:
- Type-safe configuration access
- Accessor methods for common configurations
    )Optional   )ConfigDisplayConfigGlobalConfigMonitoringConfigPipelineConfigRateLimitConfig
TaskConfigWorkerManagerConfigc                   (   e Zd ZdZdefdZdefdZdefdZ	de
fdZdefdZd	edee   fd
Zdee   fdZdedee   fdZdee   fdZdee   fdZdee   fdZdefdZdefdZdedefdZdedefdZdefdZde fdZ!defdZ"de#fdZ$y)ConfigAccessorz-Accessor for retrieving configuration objectsconfigc                     || _         y)zgInitialize configuration accessor

        Args:
            config: Main configuration object
        N)r   )selfr   s     6/root/.openclaw/workspace/harvester/config/accessor.py__init__zConfigAccessor.__init__   s         returnc                 .    | j                   j                  S )ziGet global configuration

        Returns:
            GlobalConfig: Global configuration object
        )r   global_configr   s    r   get_global_configz ConfigAccessor.get_global_config'   s     {{(((r   c                 .    | j                   j                  S )zoGet pipeline configuration

        Returns:
            PipelineConfig: Pipeline configuration object
        )r   pipeliner   s    r   get_pipeline_configz"ConfigAccessor.get_pipeline_config/   s     {{###r   c                 .    | j                   j                  S )z|Get system monitoring configuration

        Returns:
            MonitoringConfig: Monitoring configuration object
        )r   
monitoringr   s    r   get_monitoring_configz$ConfigAccessor.get_monitoring_config7   s     {{%%%r   c                 .    | j                   j                  S )zlGet display configuration

        Returns:
            DisplayConfig: Display configuration object
        )r   displayr   s    r   get_display_configz!ConfigAccessor.get_display_config?   s     {{"""r   	task_namec                 `    | j                   j                  D ]  }|j                  |k(  s|c S  y)zGet task configuration by name

        Args:
            task_name: Name of the task

        Returns:
            Optional[TaskConfig]: Task configuration or None if not found
        N)r   tasksname)r   r#   tasks      r   get_task_configzConfigAccessor.get_task_configG   s3     KK%% 	DyyI%	 r   c                 n    | j                   j                  D cg c]  }|j                  s| c}S c c}w )zGet all enabled task configurations

        Returns:
            list[TaskConfig]: List of enabled task configurations
        )r   r%   enabled)r   r'   s     r   get_enabled_tasksz ConfigAccessor.get_enabled_tasksU   s(     "&!2!2CdllCCCs   22r&   c                 L    | j                   j                  j                  |      S )zGet rate limit configuration by name

        Args:
            name: Name of the rate limit configuration

        Returns:
            Optional[RateLimitConfig]: Rate limit configuration or None if not found
        )r   
ratelimitsget)r   r&   s     r   get_rate_limit_configz$ConfigAccessor.get_rate_limit_config]   s     {{%%))$//r   c                 V    | j                   j                  j                  j                  S )ziGet GitHub session tokens

        Returns:
            list[str]: List of GitHub session tokens
        )r   r   github_credentialssessionsr   s    r   get_github_sessionsz"ConfigAccessor.get_github_sessionsh   s      {{((;;DDDr   c                 V    | j                   j                  j                  j                  S )zaGet GitHub API tokens

        Returns:
            list[str]: List of GitHub API tokens
        )r   r   r1   tokensr   s    r   get_github_tokensz ConfigAccessor.get_github_tokensp   s      {{((;;BBBr   c                 B    | j                   j                  j                  S )zcGet user agent strings

        Returns:
            list[str]: List of user agent strings
        )r   r   user_agentsr   s    r   get_user_agentszConfigAccessor.get_user_agentsx   s     {{((444r   c                 j    | j                   j                  j                  j                  j                  S )zrGet load balance strategy for GitHub credentials

        Returns:
            str: Load balance strategy
        )r   r   r1   strategyvaluer   s    r   get_load_balance_strategyz(ConfigAccessor.get_load_balance_strategy   s&     {{((;;DDJJJr   c                 B    | j                   j                  j                  S )zaGet workspace directory path

        Returns:
            str: Workspace directory path
        )r   r   	workspacer   s    r   get_workspace_dirz ConfigAccessor.get_workspace_dir   s     {{((222r   stagec                 b    | j                   j                  j                  j                  |d      S )zGet thread count for a pipeline stage

        Args:
            stage: Pipeline stage name

        Returns:
            int: Thread count for the stage
        r   )r   r   threadsr.   r   rA   s     r   get_thread_countzConfigAccessor.get_thread_count   s'     {{##++//q99r   c                 b    | j                   j                  j                  j                  |d      S )zGet queue size for a pipeline stage

        Args:
            stage: Pipeline stage name

        Returns:
            int: Queue size for the stage
        i  )r   r   queue_sizesr.   rD   s     r   get_queue_sizezConfigAccessor.get_queue_size   s'     {{##//33E4@@r   c                     | j                   j                  j                  }|j                  |j                  |j
                  |j                  dS )zjGet monitoring thresholds as dictionary

        Returns:
            dict: Monitoring thresholds
        )
error_rate
queue_sizememory_usageresponse_time)r   r   
thresholdsrJ   rK   rL   rM   )r   rN   s     r   get_monitoring_thresholdsz(ConfigAccessor.get_monitoring_thresholds   sG     [[++66
$//$//&33'55	
 	
r   c                 B    | j                   j                  j                  S )zyCheck if statistics display is enabled

        Returns:
            bool: True if statistics display is enabled
        )r   r   
show_statsr   s    r   is_stats_enabledzConfigAccessor.is_stats_enabled   s     {{%%000r   c                 B    | j                   j                  j                  S )zrGet statistics display interval

        Returns:
            int: Statistics display interval in seconds
        )r   r   stats_intervalr   s    r   get_stats_intervalz!ConfigAccessor.get_stats_interval   s     {{%%444r   c                 .    | j                   j                  S )zGet worker manager configuration

        Returns:
            WorkerManagerConfig: Worker manager configuration object
        )r   workerr   s    r   get_worker_manager_configz(ConfigAccessor.get_worker_manager_config   s     {{!!!r   N)%__name__
__module____qualname____doc__r   r   r   r   r	   r   r   r   r   r"   strr   r   r(   listr+   r
   r/   r3   r6   r9   r=   r@   intrE   rH   dictrO   boolrR   rU   r   rX    r   r   r   r      s-   7v )< )$^ $&'7 &#M # *1E D4
#3 D	0# 	0(?2K 	0ET#Y EC49 C5c 5K3 K33 3	:c 	:c 	:	AC 	AC 	A
4 
1$ 15C 5"+> "r   r   N)r\   typingr   schemasr   r   r   r   r	   r
   r   r   r   rb   r   r   <module>re      s*   	 	 	 	n" n"r   