
    i                         U d Z ddlmZmZ ddlmZ d ed          iZeeef         e	d<   dZ
ee	d<   d	Zee	d
<   dZee	d<    ed           G d d                      Z e            ZdS )zConfigurable budget constants for tool result persistence.

Overridable at the RL environment level via HermesAgentEnvConfig fields.
Per-tool resolution: pinned > config overrides > registry > default.
    )	dataclassfield)Dict	read_fileinfPINNED_THRESHOLDSi DEFAULT_RESULT_SIZE_CHARSi@ DEFAULT_TURN_BUDGET_CHARSi  DEFAULT_PREVIEW_SIZE_CHARST)frozenc                       e Zd ZU dZeZeed<   eZ	eed<   e
Zeed<    ee          Zeeef         ed<   dedeez  fd	Zd
S )BudgetConfiga|  Immutable budget constants for the 3-layer tool result persistence system.

    Layer 2 (per-result): resolve_threshold(tool_name) -> threshold in chars.
    Layer 3 (per-turn):   turn_budget -> aggregate char budget across all tool
                          results in a single assistant turn.
    Preview:              preview_size -> inline snippet size after persistence.
    default_result_sizeturn_budgetpreview_size)default_factorytool_overrides	tool_namereturnc                     |t           v rt           |         S || j        v r| j        |         S ddlm} |                    || j                  S )zResolve the persistence threshold for a tool.

        Priority: pinned -> tool_overrides -> registry per-tool -> default.
        r   )registry)default)r   r   tools.registryr   get_max_result_sizer   )selfr   r   s      8/home/ubuntu/.hermes/hermes-agent/tools/budget_config.pyresolve_thresholdzBudgetConfig.resolve_threshold&   se    
 )))$Y//+++&y11++++++++It?W+XXX    N)__name__
__module____qualname____doc__r	   r   int__annotations__r
   r   r   r   r   dictr   r   strfloatr    r   r   r   r      s            98880K0002L#222%*U4%@%@%@NDcN@@@
Y3 
Y3; 
Y 
Y 
Y 
Y 
Y 
Yr   r   N)r"   dataclassesr   r   typingr   r'   r   r&   r$   r	   r#   r
   r   r   DEFAULT_BUDGETr(   r   r   <module>r,      s     ) ( ( ( ( ( ( (      
 u' 4U
#    ") 3 ( ( (!( 3 ( ( ("' C ' ' ' $Y Y Y Y Y Y Y Y8 r   