
    љiU                        S SK r S SKJr  S SKrS SKJr  S SKJrJr  S SK	J
r
Jr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \" \5      R@                  S-  r! " S S5      r"SSS.S\S\#S\#4S jjr$SS.S\S\#S\#S\#4S jjr%SSSSSSSSSS .	S\S!\S\#S\#S"\#S#\#S$\#S%\#S&\#S'\"4S( jjr&g))    N)Path)Optional)FastAPIRequest)HTMLResponseResponse   )setup_character_api)setup_config_api_adapter_key)setup_control_api)setup_evaluation_api)setup_logs_api)setup_metrics_api   )Adapter)DialogEvaluator)ChatGPTServicestaticc                   F    \ rS rSrSrS\4S jrSS.S\S\\	   4S	 jjr
S
rg)
AdminPanel   zNLightweight handle returned by setup_admin_panel for post-setup configuration.adaptersc                     Xl         g )N	_adapters)selfr   s     Q/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/admin/__init__.py__init__AdminPanel.__init__   s    !    N)nameadapterr"   c                H    U=(       d    [        U5      nXR                  U'   g)z2Register an additional adapter for the Config API.N)r   r   )r   r#   r"   keys       r   add_adapterAdminPanel.add_adapter   s    +l7+%sr!   r   )__name__
__module____qualname____firstlineno____doc__dictr   r   r   strr&   __static_attributes__ r!   r   r   r      s4    X" " FJ &7 &Xc] & &r!   r   zAIAvatarKit Admin Paneltitlehtmlappr2   r3   c                F   ^^ U R                  S[        SS9UU4S j5       ng )N/adminF)response_classinclude_in_schemac                  f   >#    Tb  T$ [         S-  R                  SS9n U R                  ST5      $ 7f)Nz
index.htmlutf-8)encodingz{{ADMIN_TITLE}})_STATIC_DIR	read_textreplace)default_htmlr3   r2   s    r   
admin_page%_setup_admin_html.<locals>.admin_page!   s=     K#l2==w=O##$5u==s   .1)getr   )r4   r2   r3   r@   s    `` r   _setup_admin_htmlrC       s%    WWXleWL> M>r!   r6   )path_prefixusernamepasswordrD   c                R   ^^^ U R                  S5      S[        4UUU4S jj5       ng )Nhttprequestc                 h  >#    U R                   R                  R                  T5      (       a  U R                  R	                  S5      nUb  UR                  S5      (       d  [        SSS0SS9$  UR                  S5      S	   n[        R                  " U5      R                  S
5      nUR                  SS	5      u  pV[        R                  " UT	5      (       a  [        R                  " UT5      (       d  [        SSS0SS9$  U" U 5      I S h  vN $ ! [         a    [        SSS0SS9s $ f = f N!7f)NAuthorizationzBasic i  zWWW-AuthenticatezBasic realm='Admin'Unauthorized)status_codeheaderscontent r	   r:   :zInvalid credentials)urlpath
startswithrN   rB   r   splitbase64	b64decodedecodesecretscompare_digest	Exception)
rI   	call_nextauth_headerencodeddecodedreq_usernamereq_passwordrF   rD   rE   s
          r   admin_basic_auth1_setup_admin_basic_auth.<locals>.admin_basic_auth*   s9    ;;&&{33!//--o>K"+*@*@*J*J #/1FG* %++C03 **73::7C-4]]3-B*..|XFF..|XFF#$'!35J K 5  G w'''   #/1FG1  (s7   A,D20BD D2D0D2D-*D2,D--D2)
middlewarer   )r4   rE   rF   rD   rb   s    ``` r   _setup_admin_basic_authre   )   s*    ^^F( ( ( (r!   )	r2   r3   	evaluatorcharacter_servicecharacter_iddefault_session_idapi_keybasic_auth_usernamebasic_auth_passwordr#   rh   ri   rj   rk   rl   returnc       
            U	(       a  U
(       a
  [        X	U
S9  [        XUS9  [        U UR                  R                  US9  [        U UR                  R                  UR                  R                  (       a  UR                  R                  OSUS9  [        U UUUS9  [        U UUS9nU(       d  [        UR                  R                  [        5      (       a  [        UR                  R                  R                  R                  UR                  R                  R                  R                  UR                  R                  R                   UR                  R                  R"                  UR                  R                  R$                  S9n['        UR                  R                  US	9nU(       a
  [)        XUS
9  U(       a  U(       a  [+        U UUUS9  [-        US9$ )aD  Convenience function to set up the full admin panel.

Required:
    adapter: Adapter instance (provides sts pipeline, performance_recorder, voice_recorder)

Optional:
    title: Admin panel title
    html: Custom HTML string for the admin page (overrides built-in template)
    evaluator: DialogEvaluator for evaluation tab
    character_service: CharacterService for character tab
    character_id: Character ID for character tab (required if character_service is set)
    default_session_id: Default session ID for control API
    api_key: API key for all admin endpoints
    basic_auth_username: Username for Basic authentication (requires basic_auth_password)
    basic_auth_password: Password for Basic authentication (requires basic_auth_username)

Returns:
    AdminPanel instance for post-setup configuration (e.g. add_adapter)
)rE   rF   r1   )recorderrj   N)ro   voice_recorderrj   )r#   ri   rj   )r#   rj   )openai_api_keybase_urlmodeltemperaturereasoning_effort)llmevaluation_llm)rf   rj   )rg   rh   rj   )r   )re   rC   r   stsperformance_recorderr   voice_recorder_enabledrp   r   r   
isinstancerv   r   openai_clientrj   rr   rs   rt   ru   r   r   r
   r   )r4   r#   r2   r3   rf   rg   rh   ri   rj   rk   rl   r   eval_llms                r   setup_admin_panelr~   K   ss   D 2L_` cT2 11 115<[[5W5Ww{{11]a	 -	  H gkkoo~66%&{{<<DD 66??kkoo++#KKOO77!(!A!AH (GKKOOHUISwG \/%		
 x((r!   )'rV   pathlibr   rY   typingr   fastapir   r   fastapi.responsesr   r   	characterr
   configr   r   controlr   
evaluationr   logsr   metricsr   r#   r   evalr   sts.llm.chatgptr   __file__parentr<   r   r.   rC   re   r~   r0   r!   r   <module>r      s-       $ 4 * 2 & ,   &  " ,8n##h.	& 	& 5N[_ >7 >c >UX > _g ( (s (c (X[ (L +"##])	]) ]) 	])
 ]) ]) ]) ]) ]) ]) ])r!   