
    љi                         S SK r S SKJrJr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  S	SKJr  S	SKJr  S\S\4S jrSSSS.S\S\\\\   \\\4   S4   S\	S\S\\\4   4
S jjrg)    N)DictListUnion)DependsFastAPI   )STSPipeline)Adapter   )create_api_key_dependency   )AdapterConfigAPI)PipelineConfigAPI)VadConfigAPI)SttConfigAPI)LlmConfigAPI)TtsConfigAPIadapterreturnc                     U R                   R                  n[        R                  " SSU5      n[        R                  " SSU5      nUR	                  5       $ )zDerive a short key from adapter class name.

AIAvatarWebSocketServer -> websocket
AIAvatarHttpServer      -> http
AIAvatarLineBotServer   -> linebot
AIAvatarLocalServer     -> local
z	^AIAvatar zServer$)	__class____name__resublower)r   names     X/home/james-whalen/.local/lib/python3.13/site-packages/aiavatar/admin/config/__init__.py_adapter_keyr      sE     %%D66,D)D66*b$'D::<    )r   stsapi_keyappr!   r"   c                   U(       a  [        [        U5      5      /O/ n[        U[        5      (       a  UnOW[        U[        5      (       a  U Vs0 s H  n[        U5      U_M     nnO%[        U[        5      (       a  [        U5      U0nO0 n[        US9R                  5       nU R                  XtS9  U=(       d5    U(       a,  [        [        UR                  5       5      5      R                  OSnUc  [        S5      eU R                  [        US9R                  5       US9  U R                  [!        UR"                  S9R                  5       US9  U R                  [%        UR&                  S9R                  5       US9  U R                  [)        UR*                  S9R                  5       US9  U R                  [-        UR.                  S	9R                  5       US9  U$ s  snf )
z@Set up config API routes and return the adapters dict (mutable).)adapters)dependenciesNz*Either 'sts' or 'adapter' must be provided)pipeline)vad)stt)llm)tts)r   r   
isinstancedictlistr   r
   r   
get_routerinclude_routernextitervaluesr!   
ValueErrorr   r   r(   r   r)   r   r*   r   r+   )	r#   r   r!   r"   deps	_adaptersaadapter_router_stss	            r   setup_config_apir:      s    =DG-g678D'4  		GT	"	"189A\!_a'	9		GW	%	%!'*G4		%y9DDFN~9M4Y--/0155D|EFF($7BBDSWX|1<<>TR|1<<>TR|1<<>TR|1<<>TR) :s   G#)r   typingr   r   r   fastapir   r   sts.pipeliner	   adapter.baser
   authr   r   r   r'   r   r(   r   r)   r   r*   r   r+   r   strr   r:    r    r   <module>rB      s    	 $ $ $ ' # , % '    ' c $ HL!	! 7DM4W+=tCD! 
	!
 ! 
#w,!r    