
    Yi+              	       n   d Z ddlmZmZmZ ddlmZmZ g dZd eD             Z	d  ej
                    D             Zeg dz   Zd	 eD             Zd
  ej
                    D             Zeg dz   Zd eD             Zd  ej
                    D             Zddedeeeeef                  ef         fdZdS )z
Tool groups for dynamic tool selection.

When using proxies with tool limitations, we can selectively load only relevant tools.
    )ListDictAny   )TOOLS_SCHEMATOOL_FUNCTIONS)get_daily_detailed_statsget_metric_historylog_dietlog_supplementsync_garmin
search_webc                 <    g | ]}|d          d         t           v |S functionnameLIGHT_TOOLS_NAMES.0ts     //root/projects/butler/slack_bot/tools/groups.py
<listcomp>r      s,    UUUQ!J-*?CT*T*Tq*T*T*T    c                 ,    i | ]\  }}|t           v ||S  r   r   kvs      r   
<dictcomp>r       s)    UUUDAqaCT>T>T1a>T>T>Tr   )get_activity_historyget_manual_historylog_alcohollog_feelingget_health_insightsc                 <    g | ]}|d          d         t           v |S r   STANDARD_TOOLS_NAMESr   s     r   r   r   "   s,    [[[Qz]6-BFZ-Z-Z!-Z-Z-Zr   c                 ,    i | ]\  }}|t           v ||S r   r'   r   s      r   r    r    #   s)    [[[tq!FZAZAZaAZAZAZr   )analyze_driverr   sync_obsidianlog_fastingget_aggregated_analysisc                 <    g | ]}|d          d         t           v |S r   FULL_TOOLS_NAMESr   s     r   r   r   /   s,    SSSA:v)>BR)R)Ra)R)R)Rr   c                 ,    i | ]\  }}|t           v ||S r   r/   r   s      r   r    r    0   s)    SSS41aQBR=R=R!Q=R=R=Rr   lightmodereturnc                     | dk    rt           t          fS | dk    rt          t          fS | dk    rt          t
          fS | dk    rt          t          fS t          d|  d          )z
    Get tool preset by mode.

    Args:
        mode: 'light' (5 tools), 'standard' (10 tools), 'full' (15 tools), 'all' (21 tools)

    Returns:
        (tools_schema, tool_functions)
    r2   standardfullallzUnknown mode: z+. Use 'light', 'standard', 'full', or 'all')	LIGHT_TOOLSLIGHT_FUNCTIONSSTANDARD_TOOLSSTANDARD_FUNCTIONS
FULL_TOOLSFULL_FUNCTIONSr   r   
ValueError)r3   s    r   get_tool_presetr@   3   sq     wO++			111	>))	^++[$[[[\\\r   N)r2   )__doc__typingr   r   r   registryr   r   r   r9   itemsr:   r(   r;   r<   r0   r=   r>   strtupler@   r   r   r   <module>rG      s    # " " " " " " " " " 2 2 2 2 2 2 2 2    VU,UUUUU$8N$8$:$:UUU ) , , ,   \[\[[[[[';~';'='=[[[  ( + + +   TSSSS
SS#7>#7#9#9SSS] ]# ]E$tCH~2F2L,M ] ] ] ] ] ]r   