Ë
    tPêjÇ  ã                   ó˜  — U d Z ddlZddlmZmZmZ ddlmZmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ  e«       Zeed<    G d„ de
«      Z G d„ de
«      Zdee   fd„Zej?                  ddg ee«      ge¬«       ee«      fdefd„«       Z ej?                  ddg ee«      ge¬«       ee«      fdefd„«       Z!y)a  
ROUTER SETTINGS MANAGEMENT

Endpoints for accessing router configuration and metadata

GET /router/settings - Get router configuration including available routing strategies
GET /router/fields - Get router settings field definitions without values (for UI rendering)
é    N)ÚAnyÚFinalÚget_args)Ú	APIRouterÚDepends)Ú	BaseModelÚField)Úverbose_proxy_logger)ÚUserAPIKeyAuth)Úuser_api_key_auth)ÚRouter)ÚROUTER_SETTINGS_FIELDSÚROUTING_STRATEGY_DESCRIPTIONSÚRouterSettingsFieldÚrouterc                   ó|   — e Zd ZU  ed¬«      Zee   ed<    ed¬«      Ze	e
ef   ed<    ed¬«      Ze	e
e
f   ed<   y)	ÚRouterSettingsResponsez6List of all configurable router settings with metadata©ÚdescriptionÚfieldsz!Current values of router settingsÚcurrent_valuesú-Descriptions for each routing strategy optionÚrouting_strategy_descriptionsN)Ú__name__Ú
__module__Ú__qualname__r	   r   Úlistr   Ú__annotations__r   ÚdictÚstrr   r   © ó    ú�/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/management_endpoints/router_settings_endpoints.pyr   r      sI   … Ù(-Ð:rÔ(s€FˆDÐ$Ñ%ÓsÙ%*Ð7ZÔ%[€N�D˜˜c˜‘NÓ[Ù49ÐFuÔ4vÐ! 4¨¨S¨¡>Ôvr"   r   c                   óV   — e Zd ZU  ed¬«      Zee   ed<    ed¬«      Ze	e
e
f   ed<   y)ÚRouterFieldsResponsezMList of all configurable router settings with metadata (without field values)r   r   r   r   N)r   r   r   r	   r   r   r   r   r   r   r    r!   r"   r#   r%   r%   #   s7   … Ù(-Øcô)€FˆDÐ$Ñ%ó ñ 5:ÐFuÔ4vÐ! 4¨¨S¨¡>Ôvr"   r%   Úreturnc                  óô   — t        j                  t        j                  «      } | j                  j                  d«      }|r.|j                  r"t        |j                  «      }|rt        |«      S t        d«      ‚)zW
    Dynamically extract routing strategies from the Router class __init__ method.
    Úrouting_strategyz6Unable to extract routing strategies from Router class)
ÚinspectÚ	signaturer   Ú__init__Ú
parametersÚgetÚ
annotationr   r   Ú
ValueError)ÚsigÚrouting_strategy_paramÚliteral_valuess      r#   Ú)_get_routing_strategies_from_router_classr3   *   sg   € ô
 ×"Ñ"¤6§?¡?Ó3€Cð %(§N¡N×$6Ñ$6Ð7IÓ$JÐáÐ"8×"CÒ"Cä (Ð)?×)JÑ)JÓ KˆÙÜ˜Ó'Ð'ä
ÐMÓ
NÐNr"   z/router/settingszRouter Settings)ÚtagsÚdependenciesÚresponse_modelÚuser_api_key_dictc              ƒ   ó*  K  — ddl m}m} 	 t        «       }t        D �cg c]  }|j                  d¬«      ‘Œ }}|D ]  }|j                  dk(  sŒ||_         n |j                  «       ƒ d{  –—† }|j                  di «      }i }|�Œ|j                  j                  «       D �	cg c]  }	|	j                  «       ‘Œ c}	|d<   |D ]N  }|j                  dk(  rŒt        ||j                  «      sŒ*t        ||j                  «      }
|
||j                  <   ŒP |j                  |«       |D ]%  }|j                  |v sŒ||j                     |_        Œ' t#        ||t$        ¬	«      S c c}w 7 Œøc c}	w # t&        $ r}t)        j*                  d
|«       ‚ d}~ww xY w­w)aa  
    Get router configuration and available settings.

    Returns:
    - fields: List of all configurable router settings with their metadata (type, description, default, options)
              The routing_strategy field includes available options extracted from the Router class
    - current_values: Current values of router settings from config
    r   )Ú
llm_routerÚproxy_configT©Údeepr(   NÚrouter_settingsÚrouting_groups)r   r   r   z"Error fetching router settings: %s)Úlitellm.proxy.proxy_serverr9   r:   r3   r   Ú
model_copyÚ
field_nameÚoptionsÚ
get_configr-   Ú_routing_groupsÚvaluesÚ
model_dumpÚhasattrÚgetattrÚupdateÚfield_valuer   r   Ú	Exceptionr
   Úerror)r7   r9   r:   Úavailable_routing_strategiesÚfieldÚrouter_fieldsÚconfigÚrouter_settings_from_configr   ÚgroupÚvalueÚes               r#   Úget_router_settingsrU   =   s²  è ø€ ÷" Dð,ä.WÓ.YÐ$ô J`Ö`À × 0Ñ 0°dÐ 0Õ ;Ð`ˆÐ`ð #ò 	ˆEØ×ÑÐ#5Ó5Ø <�”Ùð	ð +×5Ñ5Ó7×7ˆØ-3¯Z©ZÐ8IÈ2Ó-NÐ#à02ˆØÐ!ð Q[×PjÑPj×PqÑPqÓPsÖ/tÀu°×0@Ñ0@Õ0BÒ/tˆNÐ+Ñ,Ø&ò =�Ø×#Ñ#Ð'7Ò7ØÜ˜: u×'7Ñ'7Õ8Ü# J°×0@Ñ0@ÓA�EØ7<�N 5×#3Ñ#3Ò4ð=ð 	×ÑÐ9Ô:ð #ò 	EˆEØ×Ñ >Ò1Ø$2°5×3CÑ3CÑ$D�Õ!ð	Eô &Ø Ø)Ü*Gô
ð 	
ùòA  að 8úò 0uøô* ò Ü×"Ñ"Ð#GÈÔKØûðüsi   ‚	FŒE+ žE·E+ ÁE+ Á+E$Á,6E+ Â"E&Â91E+ Ã+AE+ Ä7'E+ ÅFÅE+ Å&E+ Å+	FÅ4FÆFÆFz/router/fieldsc              ƒ   ó<  K  — 	 t        «       }t        D �cg c]  }|j                  d¬«      ‘Œ }}|D ]  }|j                  dk(  sŒ||_         n |D ]	  }d|_        Œ t        |t        ¬«      S c c}w # t        $ r}t        j                  d|«       ‚ d}~ww xY w­w)a¨  
    Get router settings field definitions without values.

    Returns only the field metadata (type, description, default, options) without
    populating field_value. This is useful for UI components that need to know
    what fields to render, but will get the actual values from a different endpoint.

    Returns:
    - fields: List of all configurable router settings with their metadata (type, description, default, options)
              The routing_strategy field includes available options extracted from the Router class
              Note: field_value will be None for all fields
    - routing_strategy_descriptions: Descriptions for each routing strategy option
    Tr;   r(   N)r   r   z Error fetching router fields: %s)r3   r   r@   rA   rB   rJ   r%   r   rK   r
   rL   )r7   rM   rN   rO   rT   s        r#   Úget_router_fieldsrW      s¼   è ø€ ð,ä.WÓ.YÐ$ô J`Ö`À × 0Ñ 0°dÐ 0Õ ;Ð`ˆÐ`ð #ò 	ˆEØ×ÑÐ#5Ó5Ø <�”Ùð	ð #ò 	%ˆEØ $ˆEÕð	%ô $Ø Ü*Gô
ð 	
ùò  aøô  ò Ü×"Ñ"Ð#EÀqÔIØûðüs>   ‚B„A4 –A/¯A4 Á(A4 Á.BÁ/A4 Á4	BÁ=BÂBÂB)"Ú__doc__r)   Útypingr   r   r   Úfastapir   r   Úpydanticr   r	   Úlitellm._loggingr
   Úlitellm.proxy._typesr   Ú$litellm.proxy.auth.user_api_key_authr   Úlitellm.routerr   Ú"litellm.types.management_endpointsr   r   r   r   r   r   r%   r   r    r3   r-   rU   rW   r!   r"   r#   ú<module>ra      s  ðòó ß 'Ñ 'ç &ß %å 1Ý /Ý BÝ !÷ñ ñ “€ˆÓ ôw˜Yô wôw˜9ô wðO°4¸±9ó Oð& ‡�ØØ
Ð	ÙÐ+Ó,Ð-Ø)ð	 ó ñ )0Ð0AÓ(Bñ9Ø%ò9óð9ðx ‡�ØØ
Ð	ÙÐ+Ó,Ð-Ø'ð	 ó ñ )0Ð0AÓ(Bñ'Ø%ò'óñ'r"   