
    
Bj                    f   U d Z ddlmZ ddlmZ ddddddZded	<   ddd
ddZddd
ddZddd
ddZ	dddddZ
i di eddidedi eddidededede	dede	de	de	de	de	de
de
de
de
d i ed!diiZd"ed#<    eej                               Z	 d&	 	 	 	 	 	 	 	 	 d'd$Zd(d%Zy))u  Per-platform display/verbosity configuration resolver.

Provides ``resolve_display_setting()`` — the single entry-point for reading
display settings with platform-specific overrides and sensible defaults.

Resolution order (first non-None wins):
    1. ``display.platforms.<platform>.<key>``  — explicit per-platform user override
    2. ``display.<key>``                       — global user setting
    3. ``_PLATFORM_DEFAULTS[<platform>][<key>]``  — built-in sensible default
    4. ``_GLOBAL_DEFAULTS[<key>]``              — built-in global default

Exception: ``display.streaming`` is CLI-only.  Gateway streaming follows the
top-level ``streaming`` config unless ``display.platforms.<platform>.streaming``
sets an explicit per-platform override.

Backward compatibility: ``display.tool_progress_overrides`` is still read as a
fallback for ``tool_progress`` when no ``display.platforms`` entry exists.  A
config migration (version bump) automatically moves the old format into the new
``display.platforms`` structure.
    )annotations)AnyallFN)tool_progressshow_reasoningtool_preview_length	streamingcleanup_progresszdict[str, Any]_GLOBAL_DEFAULTS(   )r   r   r   r	   newofftelegramr   discordslack
mattermostmatrixfeishusignalwhatsappbluebubblesweixinwecomwecom_callbackdingtalkemailsmswebhookhomeassistant
api_serverr   zdict[str, dict[str, Any]]_PLATFORM_DEFAULTSc                6   | j                  d      xs i }|j                  d      xs i }|j                  |      }t        |t              r|j                  |      }|t        ||      S |dk(  r@|j                  d      }t        |t              r|j                  |      }|t        ||      S |dk7  r|j                  |      }|t        ||      S t        j                  |      }	|	r|	j                  |      }||S t
        j                  |      }||S |S )aP  Resolve a display setting with per-platform override support.

    Parameters
    ----------
    user_config : dict
        The full parsed config.yaml dict.
    platform_key : str
        Platform config key (e.g. ``"telegram"``, ``"slack"``).  Use
        ``_platform_config_key(source.platform)`` from gateway/run.py.
    setting : str
        Display setting name (e.g. ``"tool_progress"``, ``"show_reasoning"``).
    fallback : Any
        Fallback value when the setting isn't found anywhere.

    Returns
    -------
    The resolved value, or *fallback* if nothing is configured.
    display	platformsr   tool_progress_overridesr	   )get
isinstancedict
_normaliser!   r   )
user_configplatform_keysettingfallbackdisplay_cfgr$   plat_overridesvallegacyplat_defaultss
             ;/home/ubuntu/.hermes/hermes-agent/gateway/display_config.pyresolve_display_settingr4   t   s#   0 //),2K ,2I]]<0N.$'  )?gs++ /!!:;fd#**\*C!'3//
 +oog&?gs++ '**<8M(?J 

w
'C

O    c                h   | dk(  r#|du ry|du ryt        |      j                         S | dv r-t        |t               r|j                         dv S t        |      S | dk(  r-t        |t               r|j                         dv S t        |      S | d	k(  r	 t	        |      S |S # t
        t        f$ r Y y
w xY w)u;   Normalise YAML quirks (bare ``off`` → False in YAML 1.1).r   Fr   Tr   >   r	   r   >   1onyestruer
   r   r   )strlowerr'   boolint	TypeError
ValueError)r,   values     r3   r)   r)      s    /!E>D=5z!!11eS!;;=$>>>E{$$eS!;;=$>>>E{''	u: L :& 		s   
B B10B1)N)
r*   r(   r+   r;   r,   r;   r-   r   returnr   )r,   r;   rA   r   rB   r   )__doc__
__future__r   typingr   r   __annotations__
_TIER_HIGH_TIER_MEDIUM	_TIER_LOW_TIER_MINIMALr!   	frozensetkeysOVERRIDEABLE_KEYSr4   r)    r5   r3   <module>rO      s  * #   $ . , 	
 	 		 	19j9/591 :1 ?,??1 |1 |1 |1 y1 |1  y!1" y#1$ y%1& y'1( y)1. }/10 
}112 }314 }516 ?*?&;Q?71 - > .3356  	>>> > 	>
 	>Jr5   