Ë
    uPêjÐ<  ã                   ót  — U d dl mZmZ d dl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mZmZmZ  e«       Zeed<   ejA                  d ee«      ge
dg¬«      ejA                  d ee«      ge
dg¬«       ee«      fdededefd„«       «       Z!ejE                  d ee«      ge
dg¬«      ejE                  d ee«      ge
dg¬«       ee«      fdededefd„«       «       Z#ejE                  d ee«      ge
dg¬«      ejE                  d ee«      ge
dg¬«       ee«      fdede$dedefd„«       «       Z%ejM                  d ee«      ge
dg¬«      ejM                  d ee«      ge
dg¬«       ee«      fdede$dedefd„«       «       Z'd dl(m)Z)  e)e«       y)é    )ÚAnyÚFinal)Ú	APIRouterÚDependsÚHTTPExceptionÚRequestÚResponse)ÚORJSONResponse)Úverbose_proxy_logger)Ú*)Ú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)Ú assert_user_can_access_containerÚfilter_container_list_responseÚget_container_forwarding_paramsÚrecord_container_ownerÚrouterz/v1/containersÚ
containers)ÚdependenciesÚresponse_classÚtagsz/containersÚrequestÚfastapi_responseÚuser_api_key_dictc              ƒ   óN  K  — ddl m}m}m}m}m}m}m}	m}
m	}m
}m} t        | ¬«      ƒ d{  –—† }t        | ¬«      xs& t        | ¬«      xs t        | ¬«      ƒ d{  –—† xs d}||d<   t!        |¬«      }	 |j#                  | ||d|||||d|
|||	||¬	«      ƒ d{  –—† }	 t)        |||¬«      ƒ d{  –—† S 7 ŒŠ7 Œ\7 Œ# t$        $ r#}|j'                  ||||¬
«      ƒ d{  –—†7  ‚d}~ww xY w7 Œ9# t*        $ r ‚ t$        $ r"}t-        j.                  d|«       |cY d}~S d}~ww xY w­w)aH  
    Container creation endpoint for creating new containers.
    
    Follows the OpenAI Containers API spec:
    https://platform.openai.com/docs/api-reference/containers
    
    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1/containers"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{
            "name": "My Container",
            "expires_after": {
                "anchor": "last_active_at",
                "minutes": 20
            }
        }'
    ```
    
    Or specify provider via header:
    ```bash
    curl -X POST "http://localhost:4000/v1/containers"         -H "Authorization: Bearer sk-1234"         -H "custom-llm-provider: azure"         -H "Content-Type: application/json"         -d '{
            "name": "My Container"
        }'
    ```
    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   NÚopenaiÚcustom_llm_provider©ÚdataÚacreate_container©r   r   r   Ú
route_typer%   r#   r"   r$   r&   Úmodelr)   r+   r*   r(   r'   r,   ©Úer   r%   r,   ©Úresponser   r/   zkContainer ownership recording failed after upstream create; returning response with untracked ownership: %s)Úlitellm.proxy.proxy_serverr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r   r   r   r   r   Úbase_process_llm_requestÚ	ExceptionÚ_handle_llm_api_exceptionr   r   r   Ú	exception)r   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r1   r/   Ú	processorr9   r7   s                      úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/container_endpoints/endpoints.pyÚcreate_containerrA      s|  è ø€ ÷`÷ ÷ ñ ô +°7Ô;×;€Dô
 	5¸WÔEò 	Ü5¸gÔFò	ä:À7ÔK×Kò	ð ð	 ð #6€DÐ	Ñô 5¸$Ô?€Ið
Ø )× BÑ BØØ-Ø/Ø*Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! !Có !
÷ 
ˆð>Ü+ØØ/Ø 3ô
÷ 
ð 	
ðc <øð Løð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
úð
ùô
 ò ØÜò 
ô
 	×&Ñ&ð>àô	
ð
 �ûð
üsŸ   ‚*D%¬B7­/D%ÁB9ÁD%Á7$B= ÂB;ÂB= Â!C. Â2C,Â3C. Â6D%Â9D%Â;B= Â=	C)ÃC$ÃC!ÃC$Ã$C)Ã)D%Ã,C. Ã.D"Ä DÄD"ÄD%ÄD"Ä"D%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 d}||d<   t!        |¬«      }	 |j#                  | ||d|||||d	|
|||	||¬
«      ƒ d	{  –—† }t)        |||¬«      ƒ d	{  –—† S 7 Œ# t$        $ r#}|j'                  ||||¬«      ƒ d	{  –—†7  ‚d	}~ww xY w7 Œ5­w)a  
    Container list endpoint for retrieving a list of containers.
    
    Follows the OpenAI Containers API spec:
    https://platform.openai.com/docs/api-reference/containers
    
    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/containers?limit=20&order=desc"         -H "Authorization: Bearer sk-1234"
    ```
    
    Or specify provider via header or query param:
    ```bash
    curl -X GET "http://localhost:4000/v1/containers?custom_llm_provider=azure"         -H "Authorization: Bearer sk-1234"
    ```
    r   r!   Úquery_paramsr-   r.   r/   r0   Úalist_containersNr3   r6   r8   )r:   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   ÚdictrC   r   r   r   r;   r<   r=   r   )r   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   rC   r1   r/   r?   r9   r7   s                       r@   Úlist_containersrF       s+  è ø€ ÷F÷ ÷ ñ ô ˜w×3Ñ3Ó4€LØ#1°<Ð"@€Dô 	5¸WÔEò 	Ü5¸gÔFò	àð ð #6€DÐ	Ñô 5¸$Ô?€Ið
Ø )× BÑ BØØ-Ø/Ø)Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! !Có !
÷ 
ˆô< 0ØØ+Ø/ô÷ ð ð=
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
úðúsT   ‚A#CÁ&$B' Â
B%ÂB' ÂCÂ CÂ!CÂ%B' Â'	CÂ0CÃCÃ	CÃCÃCz/v1/containers/{container_id}z/containers/{container_id}Úcontainer_idc              ƒ   óÒ  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} d|i}t        | ¬«      xs t        | ¬«      xs d}t        |||¬«      ƒ d{  –—† \  }}|j                  t!        |||«      ƒ d{  –—† «       t#        |¬«      }	 |j%                  | ||d	|||||d||||
|	|¬
«      ƒ d{  –—† S 7 Œa7 Œ@7 Œ# t&        $ r#}|j)                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a   
    Container retrieve endpoint for getting details of a specific container.
    
    Follows the OpenAI Containers API spec:
    https://platform.openai.com/docs/api-reference/containers
    
    Example:
    ```bash
    curl -X GET "http://localhost:4000/v1/containers/cntr_123"         -H "Authorization: Bearer sk-1234"
    ```
    
    Or specify provider via header:
    ```bash
    curl -X GET "http://localhost:4000/v1/containers/cntr_123"         -H "Authorization: Bearer sk-1234"         -H "custom-llm-provider: azure"
    ```
    r   r!   rG   r-   r.   ©rG   r   r/   Nr0   Úaretrieve_containerr3   r6   ©r:   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r   r   r   Úupdater   r   r;   r<   r=   ©r   rG   r   r   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r1   r/   Úoriginal_container_idr?   r7   s                       r@   Úretrieve_containerrO     s?  è ø€ ÷J÷ ÷ ñ ð $2°<Ð"@€Dô 	5¸WÔEò 	Ü5¸gÔFò	àð ô 8XØ!Ø+Ø/ô8÷ 2Ñ.ÐÐ.ð
 	‡K�KÜ-ØØ!Øó
÷ 	
ôô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø,Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð!2øð	
øð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üóf   ‚AC'ÁB2Á"C'Á3B4Á4C'Â	$B8 Â-B6Â.B8 Â1C'Â4C'Â6B8 Â8	C$ÃCÃCÃCÃC$Ã$C'c              ƒ   óÒ  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} d|i}t        | ¬«      xs t        | ¬«      xs d}t        |||¬«      ƒ d{  –—† \  }}|j                  t!        |||«      ƒ d{  –—† «       t#        |¬«      }	 |j%                  | ||d	|||||d||||
|	|¬
«      ƒ d{  –—† S 7 Œa7 Œ@7 Œ# t&        $ r#}|j)                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a  
    Container delete endpoint for deleting a specific container.
    
    Follows the OpenAI Containers API spec:
    https://platform.openai.com/docs/api-reference/containers
    
    Example:
    ```bash
    curl -X DELETE "http://localhost:4000/v1/containers/cntr_123"         -H "Authorization: Bearer sk-1234"
    ```
    
    Or specify provider via header:
    ```bash
    curl -X DELETE "http://localhost:4000/v1/containers/cntr_123"         -H "Authorization: Bearer sk-1234"         -H "custom-llm-provider: azure"
    ```
    r   r!   rG   r-   r.   rI   Nr0   Úadelete_containerr3   r6   rK   rM   s                       r@   Údelete_containerrS   p  s?  è ø€ ÷J÷ ÷ ñ ð $2°<Ð"@€Dô 	5¸WÔEò 	Ü5¸gÔFò	àð ô 8XØ!Ø+Ø/ô8÷ 2Ñ.ÐÐ.ð
 	‡K�KÜ-ØØ!Øó
÷ 	
ôô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø*Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð!2øð	
øð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
ürP   )Ú!register_container_file_endpointsN)*Útypingr   r   Úfastapir   r   r   r   r	   Úfastapi.responsesr
   Úlitellm._loggingr   Ú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.container_endpoints.ownershipr   r   r   r   r   Ú__annotations__ÚpostrA   ÚgetrF   ÚstrrO   ÚdeleterS   Ú1litellm.proxy.container_endpoints.handler_factoryrT   © ó    r@   ú<module>rg      s¸  ð÷ Ð ç HÕ HÝ ,å 1Ü "ß RÝ QÝ L÷ñ ÷
ó ñ “€ˆÓ ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(BñuØðuàðuð &òuóóðuðp ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(BñXØðXàðXð &òXóóðXðv ‡�Ø#ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�Ø ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(Bñ	Z
ØðZ
àðZ
ð ðZ
ð &ò	Z
óóðZ
ðz ‡�Ø#ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ð ‡�Ø ÙÐ+Ó,Ð-Ø!Ø
ˆð	 ó ñ )0Ð0AÓ(Bñ	Z
ØðZ
àðZ
ð ðZ
ð &ò	Z
óóðZ
õ|ñ " &Õ )rf   