Ë
    uPêjòv  ã                   óô  — U d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlm
Z d dl­ d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlmZmZm Z m!Z! d dl"m#Z#m$Z$  e«       Z%ee&d<   e%jO                  d ee«      gedg¬«      e%jO                  d ee«      gedg¬«       ed«       ee«      fdede	de
dz  defd„«       «       Z(e%jS                  d ee«      gedg¬«      e%jS                  d ee«      gedg¬«       ee«      fdede	defd„«       «       Z*e%jS                  d ee«      gedg¬«      e%jS                  d ee«      gedg¬«       ee«      fde+dede	defd„«       «       Z,e%jS                  d ee«      ge	dg¬«      e%jS                  d ee«      ge	dg¬«       ee«      fde+dede	defd„«       «       Z-e%jO                  d  ee«      gedg¬«      e%jO                  d! ee«      gedg¬«       ee«      fde+dede	defd"„«       «       Z.e%jO                  d# ee«      gedg¬«      e%jO                  d$ ee«      gedg¬«       ed%«       ed%«       ee«      fdede	d&e
d'e+def
d(„«       «       Z/e%jS                  d) ee«      gedg¬«      e%jS                  d* ee«      gedg¬«       ee«      fd+e+dede	defd,„«       «       Z0e%jO                  d- ee«      gedg¬«      e%jO                  d. ee«      gedg¬«       ee«      fdede	defd/„«       «       Z1e%jO                  d0 ee«      gedg¬«      e%jO                  d1 ee«      gedg¬«       ee«      fdede	defd2„«       «       Z2y)3é    )ÚAnyÚFinal)Ú	APIRouterÚDependsÚFileÚFormÚRequestÚResponseÚ
UploadFile)ÚORJSONResponse)r   )Ú*)ÚUserAPIKeyAuthÚuser_api_key_auth)ÚProxyBaseLLMRequestProcessing)Ú_read_request_body)Ú)get_custom_llm_provider_from_request_bodyÚ,get_custom_llm_provider_from_request_headersÚ*get_custom_llm_provider_from_request_query)Úbatch_to_bytesio)Úencode_character_id_in_responseÚ%extract_model_from_target_model_namesÚget_custom_provider_from_dataÚvideo_reference_to_id)Ú!decode_character_id_with_providerÚdecode_video_id_with_providerÚrouterz
/v1/videosÚvideos)ÚdependenciesÚresponse_classÚtagsz/videosNÚrequestÚfastapi_responseÚinput_referenceÚuser_api_key_dictc              ƒ   ó|  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t        | ¬«      ƒ d{  –—† }|�t        |g«      ƒ d{  –—† }|r|d   |d<   t        |¬«      }	 |j                  | ||d|||||d||||
|	|¬«      ƒ d{  –—† S 7 ŒZ7 ŒF7 Œ# t         $ r#}|j#                  ||||¬	«      ƒ d{  –—†7  ‚d}~ww xY w­w)
aÓ  
    Video generation endpoint for creating videos from text prompts.
    
    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos
    
    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/videos"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{
            "model": "sora-2",
            "prompt": "A beautiful sunset over the ocean"
        }'
    ```
    r   ©Úgeneral_settingsÚ
llm_routerÚproxy_configÚproxy_logging_objÚselect_data_generatorÚuser_api_baseÚuser_max_tokensÚ
user_modelÚuser_request_timeoutÚuser_temperatureÚversion©r!   Nr#   ©ÚdataÚavideo_generation©r!   r"   r$   Ú
route_typer*   r(   r'   r)   r+   Úmodelr.   r0   r/   r-   r,   r1   ©Úer$   r*   r1   )Úlitellm.proxy.proxy_serverr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r   r   Úbase_process_llm_requestÚ	ExceptionÚ_handle_llm_api_exception)r!   r"   r#   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   Úinput_reference_fileÚ	processorr:   s                      úl/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/video_endpoints/endpoints.pyÚvideo_generationrB   !   s   è ø€ ÷F÷ ÷ ñ ô +°7Ô;×;€DØÐ"Ü,<¸oÐ=NÓ,O×&OÐÙØ&:¸1Ñ&=ˆDÐ"Ñ#ô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø*Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð <øà&Oøð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsc   ‚*B<¬B­B<ÁB	ÁB<Á$B ÂBÂB ÂB<Â	B<ÂB Â	B9ÂB4Â.B1Â/B4Â4B9Â9B<c              ƒ   ó°  K  — ddl m}m}m}m}m}m}m}	m}
m	}m
}m} t        | j                  «      }d|i}t        | ¬«      xs" t        | ¬«      xs t!        | ¬«      ƒ d{  –—† }|r||d<   t#        |¬«      }	 |j%                  | ||d|||||d|
|||	||¬	«      ƒ d{  –—† S 7 ŒA7 Œ# t&        $ r#}|j)                  ||||¬
«      ƒ d{  –—†7  ‚d}~ww xY w­w)a(  
    Video list endpoint for retrieving a list of videos.
    
    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos
    
    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/videos"         -H "Authorization: Bearer sk-1234"
    ```
    r   r&   Úquery_paramsr2   NÚcustom_llm_providerr3   Úavideo_listr6   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   ÚdictrD   r   r   r   r   r<   r=   r>   )r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   rD   r4   rE   r@   r:   s                      rA   Ú
video_listrH   w   s  è ø€ ÷:÷ ÷ ñ ô ˜w×3Ñ3Ó4€LØ#1°<Ð"@€Dô 	5¸WÔEò 	LÜ5¸gÔFò	Lä:À7ÔK×Kð ñ
 Ø&9ˆÐ"Ñ#ä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø$Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð Løð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsT   ‚ACÁ!B#Á"CÁ:$B' ÂB%ÂB' Â"CÂ%B' Â'	CÂ0CÃCÃ	CÃCÃCz/v1/videos/{video_id}z/videos/{video_id}Úvideo_idc              ƒ   ó(  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} d| i}t        | «      }|j                  d«      }|j                  d«      }t        |¬«      xs* t        |¬«      xs t!        |¬«      ƒ d{  –—† xs |xs d}|r||d<   |r|r|j#                  |«      }|r||d	<   t%        |¬
«      }	 |j'                  |||d|||||d||||
|	|¬«      ƒ d{  –—† S 7 Œe7 Œ# t(        $ r#}|j+                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a=  
    Video status endpoint for retrieving video status and metadata.
    
    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos
    
    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/videos/video_123"         -H "Authorization: Bearer sk-1234"
    ```
    r   r&   rI   rE   Úmodel_idr2   NÚopenair8   r3   Úavideo_statusr6   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   Úgetr   r   r   Ú resolve_model_name_from_model_idr   r<   r=   r>   ©rI   r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   ÚdecodedÚprovider_from_idÚmodel_id_from_decodedrE   Úresolved_modelr@   r:   s                          rA   Úvideo_statusrU   Ì   sl  è ø€ ÷<÷ ÷ ñ ð $.¨xÐ"8€Dä2°8Ó<€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:Ðô 	5¸WÔEò 	Ü5¸gÔFò	ä:À7ÔK×Kò	ð ò	ð ð ñ Ø&9ˆÐ"Ñ#ñ ¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø&Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð# Løð"
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsT   ‚A7DÁ9CÁ:;DÂ6$C# ÃC!ÃC# ÃDÃ!C# Ã#	DÃ,D
ÄDÄD
Ä
DÄDz/v1/videos/{video_id}/contentz/videos/{video_id}/contentc              ƒ   óH  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} d| i}t        | «      }|j                  d«      }|j                  d«      }t        |¬«      xs& t        |¬«      xs t!        |¬«      ƒ d{  –—† xs |}|r||d<   |r|r|j#                  |«      }|r||d<   t%        |¬	«      }	 |j'                  |||d
|||||d||||
|	|¬«      ƒ d{  –—† }t)        |ddd| › d�i¬«      S 7 Œu7 Œ# t*        $ r#}|j-                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)aW  
    Video content endpoint for downloading video content.
    
    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos
    
    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/videos/{video_id}/content"         -H "Authorization: Bearer sk-1234"         --output video.mp4
    ```
    r   r&   rI   rE   rK   r2   Nr8   r3   Úavideo_contentr6   z	video/mp4zContent-Dispositionzattachment; filename=video_z.mp4)ÚcontentÚ
media_typeÚheadersr9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   rN   r   r   r   rO   r   r<   r
   r=   r>   )rI   r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   rQ   rR   rS   rE   rT   r@   Úvideo_bytesr:   s                           rA   Úvideo_contentr\   .  s‡  è ø€ ÷>÷ ÷ ñ ð $.¨xÐ"8€Dä2°8Ó<€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:Ðô 	5¸WÔEò 	Ü5¸gÔFò	ä:À7ÔK×Kò	ð ð	 ñ Ø&9ˆÐ"Ñ#ñ ¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mä4¸$Ô?€Ið!
à#,×#EÑ#EØØ-Ø/Ø'Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! $Fó $
÷ 
ˆô( ØØ"Ø*Ð.IÈ(ÈÐSWÐ,XÐYô
ð 	
ðI Løð 
ùô2 ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsT   ‚A7D"Á9C/Á:7D"Â2$C3 ÃC1ÃC3 Ã.D"Ã1C3 Ã3	DÃ<DÄDÄDÄDÄD"z/v1/videos/{video_id}/remixz/videos/{video_id}/remixc              ƒ   óD  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t        |¬«      ƒ d{  –—† }| |d<   t        | «      }|j                  d«      }|j                  d«      }t        |¬«      xs# t!        |¬«      xs |j                  d«      xs |}|r||d<   |r|r|j#                  |«      }|r||d<   t%        |¬	«      }	 |j'                  |||d
|||||d||||
|	|¬«      ƒ d{  –—† S 7 ŒÀ7 Œ# t(        $ r#}|j+                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)aÉ  
    Video remix endpoint for remixing existing videos with new prompts.
    
    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos
    
    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/videos/video_123/remix"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{
            "prompt": "A new version with different colors"
        }'
    ```
    r   r&   r2   NrI   rE   rK   r8   r3   Úavideo_remixr6   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r   rN   r   r   rO   r   r<   r=   r>   rP   s                          rA   Úvideo_remixr_   —  sq  è ø€ ÷D÷ ÷ ñ ô +°7Ô;×;€DØ€DˆÑä2°8Ó<€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:Ðô 	5¸WÔEò 	Ü5¸gÔFò	à�8‰8Ð)Ó*ò	ð ð	 ñ Ø&9ˆÐ"Ñ#ñ ¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø%Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð5 <øð4
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsR   ‚*D ¬C-­BD Ã$C1 Ã(C/Ã)C1 Ã,D Ã/C1 Ã1	DÃ:DÄDÄDÄDÄD z/v1/videos/charactersz/videos/characters.ÚvideoÚnamec              ƒ   ó  K  — ddl m}m}m}m}m}	m}
m}m}m	}m
}m} t        | ¬«      ƒ d{  –—† }t        |g«      ƒ d{  –—† }|r|d   |d<   t        |j                  d«      «      }|r|j                  d«      s||d<   t!        | ¬«      xs t#        | ¬«      xs t%        |¬«      xs d	}||d
<   t'        |¬«      }	 |j)                  | ||d|||||	d|||||
|¬«      ƒ d{  –—† }|r\t+        |di «      xs i }|j                  d
«      xs |xs d	}|j                  d«      xs |j                  d«      }t-        |||¬«      }|S 7 �Œ7 �Œ7 Œj# t.        $ r#}|j1                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a  
    Create a character from an uploaded video file.

    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos/create-character

    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/videos/characters"         -H "Authorization: Bearer sk-1234"         -F "video=@character_video.mp4"         -F "name=my_character"
    ```
    r   r&   r2   Nr`   Útarget_model_namesr8   r3   rL   rE   Úavideo_create_characterr6   Ú_hidden_paramsrK   ©ÚresponserE   rK   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r   r   rN   r   r   r   r   r<   Úgetattrr   r=   r>   )r!   r"   r`   ra   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   Ú
video_fileÚtarget_model_namerE   r@   rg   Úhidden_paramsÚprovider_for_encodingÚmodel_id_for_encodingr:   s                             rA   Úvideo_create_characterrn   ü  sÎ  è ø€ ÷B÷ ÷ ñ ô +°7Ô;×;€DÜ.°¨wÓ7×7€JÙØ" 1™ˆˆW‰äDÀTÇXÁXÐNbÓEcÓdÐÙ §¡¨'Ô!2Ø)ˆˆW‰ô 	5¸WÔEò 	Ü5¸gÔFò	ä(¨dÔ3ò	ð ð	 ð #6€DÐ	Ñä4¸$Ô?€Ið#
Ø"×;Ñ;ØØ-Ø/Ø0Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! <ó 
÷ 
ˆñ$ Ü#*¨8Ð5EÀrÓ#JÒ#PÈbˆMØ+8×+<Ñ+<Ð=RÓ+SÒ+vÐWjÒ+vÐnvÐ!Ø+8×+<Ñ+<¸ZÓ+HÒ+]ÈDÏHÉHÐU\ÓL]Ð!Ü6Ø!Ø$9Ø.ôˆHð
 ˆð] <ùØ7ùð$
ùô8 ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üse   ‚*E?¬E­E?Á EÁA=E?Â?$E Ã#EÃ$A#E ÅE?ÅE?ÅE Å	E<ÅE7Å1E4Å2E7Å7E<Å<E?z$/v1/videos/characters/{character_id}z!/videos/characters/{character_id}Úcharacter_idc              ƒ   ó²  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} | }d| i}t        | «      }|j                  d«      }|j                  d«      }|j                  d«      }|r||d<   t        |¬«      xs* t        |¬«      xs t!        |¬«      ƒ d{  –—† xs |xs d}||d<   |r|r|j#                  |«      }|r||d	<   t%        |¬
«      }	 |j'                  |||d|||||d||||
|	|¬«      ƒ d{  –—† }|j)                  d«      r|xs |xs d}|}t+        |||¬«      }|S 7 Œ�7 Œ3# t,        $ r#}|j/                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a)  
    Retrieve a character by ID.

    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos/get-character

    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/videos/characters/char_123"         -H "Authorization: Bearer sk-1234"
    ```
    r   r&   ro   rE   rK   r2   NrL   r8   r3   Úavideo_get_characterr6   Ú
character_rf   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   rN   r   r   r   rO   r   r<   Ú
startswithr   r=   r>   )ro   r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Úoriginal_requested_character_idr4   rQ   rR   rS   Údecoded_character_idrE   rT   r@   rg   rl   rm   r:   s                               rA   Úvideo_get_characterrv   c  sÇ  è ø€ ÷<÷ ÷ ñ ð .:Ð#Ø#1°<Ð"@€Dä6°|ÓD€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:ÐØ")§+¡+¨nÓ"=ÐÙØ3ˆˆ^Ñô 	5¸WÔEò 	Ü5¸gÔFò	ä:À7ÔK×Kò	ð ò	ð ð ð #6€DÐ	Ñá¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mä4¸$Ô?€Ið"
Ø"×;Ñ;ØØ-Ø/Ø-Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! <ó 
÷ 
ˆð$ +×5Ñ5°lÔCØ+;Ò+^Ð?RÒ+^ÐV^Ð!Ø+@Ð!Ü6Ø!Ø$9Ø.ôˆHð
 ˆðO Løð
ùô6 ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsT   ‚BEÂD$Â9EÃ$D( Ã2D&Ã30D( Ä#EÄ&D( Ä(	EÄ1EÅ	EÅ
EÅEÅEz/v1/videos/editsz/videos/editsc              ƒ   óè  K  — ddl m}m}m}m}m}m}m}	m}
m	}m
}m} t        | ¬«      ƒ d{  –—† }|j                  dd«      }t        |t        «      r$t!        |f«      ƒ d{  –—† }|r|d   |d<   d|d<   nt#        |«      |d<   t%        |d   «      }|j'                  d«      }|j'                  d	«      }t)        | ¬«      xs" t+        | ¬«      xs t-        |¬
«      xs |xs d}||d<   |r|r|j/                  |«      }|r||d<   t1        |¬
«      }	 |j3                  | ||d|||||d|
|||	||¬«      ƒ d{  –—† S 7 �Œ7 ŒÜ7 Œ	# t4        $ r#}|j7                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a�  
    Create a video edit job.

    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos/create-edit

    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/videos/edits"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{"prompt": "Make it brighter", "video": {"id": "video_123"}}'
    ```
    r   r&   r2   Nr`   Ú rI   rE   rK   r3   rL   r8   Úavideo_editr6   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   ÚpopÚ
isinstanceÚStarletteUploadFiler   r   r   rN   r   r   r   rO   r   r<   r=   r>   )r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   Úuploaded_videoÚvideo_filesrQ   rR   rS   rE   rT   r@   r:   s                           rA   Ú
video_editr   Í  sÄ  è ø€ ÷>÷ ÷ ñ ô +°7Ô;×;€DØ ŸH™H W¨dÓ3€NÜ�.Ô"5Ô6Ü#3°^Ð4EÓ#F×FˆÙØ'¨™NˆD�‰MØˆˆZÒä0°Ó@ˆˆZÑä2°4¸
Ñ3CÓD€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:Ðô 	5¸WÔEò 	Ü5¸gÔFò	ä(¨dÔ3ò	ð ò	ð ð ð #6€DÐ	Ñá¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø$Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð= <ùð Gøð6
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsd   ‚*E2¬D<­5E2Á"D?Á#B/E2Ä$E Ä7EÄ8E Ä;E2Ä?E2ÅE Å	E/ÅE*Å$E'Å%E*Å*E/Å/E2z/v1/videos/extensionsz/videos/extensionsc              ƒ   óv  K  — ddl m}m}m}m}m}m}m}	m}
m	}m
}m} t        | ¬«      ƒ d{  –—† }t        |j                  dd«      «      |d<   t        |d   «      }|j!                  d«      }|j!                  d«      }t#        | ¬«      xs" t%        | ¬«      xs t'        |¬	«      xs |xs d
}||d<   |r|r|j)                  |«      }|r||d<   t+        |¬	«      }	 |j-                  | ||d|||||d|
|||	||¬«      ƒ d{  –—† S 7 ŒÙ7 Œ# t.        $ r#}|j1                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)aª  
    Create a video extension.

    Follows the OpenAI Videos API spec:
    https://platform.openai.com/docs/api-reference/videos/create-extension

    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/videos/extensions"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{"prompt": "Continue the scene", "seconds": "5", "video": {"id": "video_123"}}'
    ```
    r   r&   r2   Nr`   rI   rE   rK   r3   rL   r8   Úavideo_extensionr6   r9   )r;   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r   rz   r   rN   r   r   r   rO   r   r<   r=   r>   )r!   r"   r$   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r4   rQ   rR   rS   rE   rT   r@   r:   s                         rA   Úvideo_extensionr‚   3  sƒ  è ø€ ÷>÷ ÷ ñ ô +°7Ô;×;€DÜ,¨T¯X©X°g¸tÓ-DÓE€DˆÑä2°4¸
Ñ3CÓD€GØ%Ÿk™kÐ*?Ó@ÐØ#*§;¡;¨zÓ#:Ðô 	5¸WÔEò 	Ü5¸gÔFò	ä(¨dÔ3ò	ð ò	ð ð ð #6€DÐ	Ñá¡Ø *× KÑ KÐLaÓ bˆÙØ*ˆD�‰Mä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø)Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð/ <øð.
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsR   ‚*D9¬D­B/D9Ã$D
 ÄDÄD
 ÄD9ÄD
 Ä
	D6ÄD1Ä+D.Ä,D1Ä1D6Ä6D9)3Útypingr   r   Úfastapir   r   r   r   r	   r
   r   Úfastapi.responsesr   Ústarlette.datastructuresr|   Úlitellm.proxy._typesÚ$litellm.proxy.auth.user_api_key_authr   r   Ú'litellm.proxy.common_request_processingr   Ú-litellm.proxy.common_utils.http_parsing_utilsr   Ú0litellm.proxy.common_utils.openai_endpoint_utilsr   r   r   Ú'litellm.proxy.image_endpoints.endpointsr   Ú#litellm.proxy.video_endpoints.utilsr   r   r   r   Úlitellm.types.videos.utilsr   r   r   Ú__annotations__ÚpostrB   rN   rH   ÚstrrU   r\   r_   rn   rv   r   r‚   © ó    rA   ú<module>r”      sæ  ð÷ Ð ç Q× QÑ QÝ ,Ý Fä "ß RÝ QÝ L÷ñ õ
 E÷ó ÷ñ
 “€ˆÓ ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ *.¨d«Ù(/Ð0AÓ(Bñ	G
ØðG
àðG
ð   $Ñ&ðG
ð &ò	G
óóðG
ðT ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(BñF
ØðF
àðF
ð &òF
óóðF
ðR ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(Bñ	S
ØðS
àðS
ð ðS
ð &ò	S
óóðS
ðl ‡�Ø#ÙÐ+Ó,Ð-ØØ
ˆð	 ó ð ‡�Ø ÙÐ+Ó,Ð-ØØ
ˆð	 ó ñ )0Ð0AÓ(Bñ	Z
ØðZ
àðZ
ð ðZ
ð &ò	Z
óóðZ
ðz ‡�Ø!ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(Bñ	V
ØðV
àðV
ð ðV
ð &ò	V
óóðV
ðr ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ ˜S›	Ù�S“	Ù(/Ð0AÓ(BñX
ØðX
àðX
ð ðX
ð ð	X
ð
 &òX
óóðX
ðv ‡�Ø*ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�Ø'ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(Bñ	[
Øð[
àð[
ð ð[
ð &ò	[
óóð[
ð| ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(BñW
ØðW
àðW
ð &òW
óóðW
ðt ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(BñP
ØðP
àðP
ð &òP
óóñP
r“   