o
    i                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ ddlmZmZ ddlmZ ddlmZmZ dd	dddZdS )    )annotationsN)api)display_room   )cliproto)JobExecutorType)AgentServerWorkerOptions)jupyter_urlserverAgentServer | WorkerOptionsr   
str | NonereturnNonec             
     sv  t   ttr`dtjv }|r+ddlm} |s*|d_	|d_
|d_n!j	p4tjdd_	j
p?tjdd_
jpJtjdd_|s[j	rWj
rWjs[tdttj_|rd#dd}z(t||\} t j dd}|jr|jjr|jjndt  W nb ty } z	td| dd d }~ww jjj dt  t!"d#tj$dddd%t&j'dd( }t!"d)d#tj$dddddd%t&j'dd(  t*| t+, }|j-d d  D ]}	t|	t+j.r|/|	 q0dd$ fdd}
t1j2d dd!}t3j4|dd" d S )%Nzgoogle.colabr   )userdataLIVEKIT_URLLIVEKIT_API_KEYLIVEKIT_API_SECRET zFailed to get LIVEKIT_URL, LIVEKIT_API_KEY, or LIVEKIT_API_SECRET from environment variables. Alternatively, you can use `jupyter_url`, which generates and uses join tokens for authentication.urlstrr   tuple[str, str, str]c              
     s   t  4 I d H G}|| 4 I d H '}| I d H }|d |d |d fW  d   I d H  W  d   I d H  S 1 I d H s@w   Y  W d   I d H  d S 1 I d H sVw   Y  d S )Nlivekit_url
user_tokenagent_token)aiohttpClientSessionpostjson)r   sessionresponsedata r#   X/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/agents/jupyter.pyfetch_join_tokens4   s   .z"run_app.<locals>.fetch_join_tokensF)verify_signaturezjupyter-room-z4Failed to fetch join tokens via jupyter_url. Error: zt
You can still use your own LIVEKIT_URL, LIVEKIT_API_KEY, and LIVEKIT_API_SECRET from environment variables instead.zuser-jupyterT)can_publishcan_subscribe	room_joinroomr   )minuteszagent-jupyteragent)r,   r'   r(   r)   can_update_own_metadatar*   worker_startedr   c                    s.   d fdd} t |  t   d S )Nr   r   c               	     sz   t 4 I d H } | jt jdI d H }W d   I d H  n1 I d H s*w   Y  jd| dI d H  d S )N)nameF)fake_job	room_infotoken)r   
LiveKitAPIr*   create_roomCreateRoomRequestsimulate_job)lk_apir1   r   api_key
api_secret	room_namer   ws_urlr#   r$   r6   u   s   (z4run_app.<locals>._simulate_job.<locals>.simulate_jobr   r   )asynciorun_coroutine_threadsafeget_event_loop)r6   r8   r#   r$   _simulate_jobs   s   zrun_app.<locals>._simulate_jobDEBUG)	log_leveldevmoder   r9   r:   )jupyter)r   r   r   r   r=   )5nest_asyncioapply
isinstancer
   sysmodulesgoogle.colabr   getr<   r9   r:   osenviron
ValueErrorr	   from_server_optionsr   THREAD_job_executor_typer>   runr   TokenVerifierverifyvideor*   uuiduuid4	Exception_ws_url_api_key_api_secretAccessTokenwith_identitywith_grantsVideoGrantswith_ttldatetime	timedeltato_jwt	with_kindr   logging	getLoggerhandlersStreamHandlerremoveHandleroncer   CliArgsr   _run_worker)r   r   IN_COLABr   r%   r   claimseroothandlerrA   argsr#   r8   r$   run_app   s   











rt   )r   r   r   r   r   r   )
__future__r   r>   rb   rf   rM   rI   rW   r   rF   livekitr   livekit.rtc.jupyterr   r   r   jobr   workerr	   r
   rt   r#   r#   r#   r$   <module>   s    