Ë
    uPêj@  ã                   óî  — U d dl mZ d dlmZmZmZ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  ed	g¬
«      Zeed<   ej+                  d ee«      g¬«      ej+                  d ee«      g¬«       ee«      fdedededefd„«       «       Zej+                  d ee«      g¬«      ej+                  d ee«      g¬«       ee«      fdedededefd„«       «       Zej+                  d ee«      ge¬«      ej+                  d ee«      ge¬«      dedefd„«       «       Zej+                  d ee«      gedg¬«      ej+                  d ee«      gedg¬«       ee«      fdededefd„«       «       Zej7                  d  ee«      gedg¬«      ej7                  d! ee«      gedg¬«       ee«      fded"ededefd#„«       «       Zej;                  d  ee«      gedg¬«      ej;                  d! ee«      gedg¬«       ee«      fded"ededefd$„«       «       Zej+                  d% ee«      gedg¬«      ej+                  d& ee«      gedg¬«       ee«      fded"ededefd'„«       «       Zy())é    )ÚFinal)Ú	APIRouterÚDependsÚRequestÚResponse)ÚORJSONResponse)Ú*)ÚUserAPIKeyAuthÚuser_api_key_auth)ÚProxyBaseLLMRequestProcessing©Ú_read_request_body)ÚTokenCountDetailsResponsezgoogle genai endpoints)ÚtagsÚrouterz0/v1beta/models/{model_name:path}:generateContent)Údependenciesz)/models/{model_name:path}:generateContentÚrequestÚ
model_nameÚfastapi_responseÚuser_api_key_dictc              ƒ   óJ  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t        | ¬«      ƒ d {  –—† }d|vr||d<   t        |¬«      }	 |j                  | ||d||||||||||
|	|¬«      ƒ d {  –—† S 7 ŒC7 Œ# t        $ r#}|j!                  ||||¬«      ƒ d {  –—†7  ‚d }~ww xY w­w)	Nr   ©Ú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   Úmodel©ÚdataÚagenerate_content©r   r   r   Ú
route_typer   r   r   r   r   r%   r    r"   r!   r   r   r#   ©Úer   r   r#   ©Úlitellm.proxy.proxy_serverr   r   r   r   r   r   r   r    r!   r"   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!   r"   r#   r'   Ú	processorr,   s                     úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/google_endpoints/endpoints.pyÚgoogle_generate_contentr5      sà   è ø€ ÷÷ ÷ ñ ô +°7Ô;×;€DØ�dÑØ"ˆˆW‰ä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø*Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð <øð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsQ   ‚*B#¬A0­B#Á$A4 Á+A2Á,A4 Á/B#Á2A4 Á4	B Á=BÂBÂBÂB Â B#z6/v1beta/models/{model_name:path}:streamGenerateContentz//models/{model_name:path}:streamGenerateContentc              ƒ   óh  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t        | ¬«      ƒ d {  –—† }d|vr||d<   d|d<   d|d<   d|d<   t        |¬	«      }	 |j                  | ||d
||||||||||
|	|¬«      ƒ d {  –—† S 7 ŒR7 Œ# t        $ r#}|j!                  ||||¬«      ƒ d {  –—†7  ‚d }~ww xY w­w)Nr   r   r$   r%   TÚstreamÚ _litellm_skip_openai_stream_doneÚ_litellm_raw_sse_streamr&   Úagenerate_content_streamr)   r+   r-   r2   s                     r4   Úgoogle_stream_generate_contentr;   N   sÿ   è ø€ ÷÷ ÷ ñ ô +°7Ô;×;€DØ�dÑØ"ˆˆW‰Ø€Dˆ�Nà/3€DÐ	+Ñ,Ø&*€DÐ	"Ñ#ä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø1Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð <øð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsQ   ‚*B2¬A?­(B2Á$B Á:BÁ;B Á>B2ÂB Â	B/ÂB*Â$B'Â%B*Â*B/Â/B2z,/v1beta/models/{model_name:path}:countTokens)r   Úresponse_modelz%/models/{model_name:path}:countTokensc              ƒ   óâ  K  — ddl m} ddlm} ddlm}  || ¬«      ƒ d{  –—† }|j                  dg «      }ddlm}  |«       j                  ||«      j                  d	g «      } ||||¬
«      }	 ||	d¬«      ƒ d{  –—† }
|
�Z|
j                  xs i }|r-t        |j                  dd«      |j                  dg «      ¬«      S t        |
j                  xs dg ¬«      S t        dg ¬«      S 7 ŒÉ7 Œo­w)zò
    ```json
    return {
        "totalTokens": 31,
        "totalBillableCharacters": 96,
        "promptTokensDetails": [
            {
            "modality": "TEXT",
            "tokenCount": 31
            }
        ]
    }
    ```
    r   )ÚGoogleGenAIAdapterr   )Útoken_counterr$   NÚcontents)ÚTokenCountRequestÚmessages)r%   r@   rB   T)r   Úcall_endpointÚtotalTokensÚpromptTokensDetails)rD   rE   )Ú,litellm.google_genai.adapters.transformationr>   Ú-litellm.proxy.common_utils.http_parsing_utilsr   r.   r?   ÚgetÚlitellm.proxy._typesrA   Ú(translate_generate_content_to_completionÚoriginal_responser   Útotal_tokens)r   r   r>   r   Úinternal_token_counterr'   r@   rA   rB   Útoken_requestÚtoken_responserK   s               r4   Úgoogle_count_tokensrP   �   s  è ø€ õ2 PÝPÝRá*°7Ô;×;€DØ—h‘h˜z¨2Ó.€Hå6ñ "Ó#×LÑLÈZÐYaÓb×fÑfÐgqÐsuÓv€Há,ØØØô€Mñ #9ØØô#÷ €Nð Ð!à)7×)IÑ)IÒ)OÈRÐÙÜ,Ø-×1Ñ1°-ÀÓCØ$5×$9Ñ$9Ð:OÐQSÓ$Tôð ô
 -Ø*×7Ñ7Ò<¸1Ø$&ôð ô %ØØôð ðI <øðús#   ‚C/¡C+¢AC/Á=C-Á>A.C/Ã-C/z/v1beta/interactionsÚinteractions)r   Úresponse_classr   z/interactionsc              ƒ   óh  K  — ddl m}m}m}m}m}m}m}	m}
m	}m
}m} t        | ¬«      ƒ d{  –—† }d|vrd|d<   t        |¬«      }	 |j                  | ||d||||||j                  d	«      |
|||	||¬
«      ƒ d{  –—† S 7 ŒR7 Œ# t         $ r#}|j#                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)a„  
    Create a new interaction using Google's Interactions API.
    
    Per OpenAPI spec: POST /{api_version}/interactions
    
    Supports both model interactions and agent interactions:
    - Model: Provide `model` parameter (e.g., "gemini-2.5-flash")
    - Agent: Provide `agent` parameter (e.g., "deep-research-pro-preview-12-2025")
    
    Example:
    ```bash
    curl -X POST "http://localhost:4000/v1beta/interactions"         -H "Authorization: Bearer sk-1234"         -H "Content-Type: application/json"         -d '{
            "model": "gemini/gemini-2.5-flash",
            "input": "Hello, how are you?"
        }'
    ```
    r   r   r$   NÚcustom_llm_providerÚgeminir&   Úacreate_interactionr%   r)   r+   )r.   r   r   r   r   r   r   r   r    r!   r"   r#   r   r   r/   rH   r0   r1   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r'   r3   r,   s                    r4   Úcreate_interactionrW   Ü   sî   è ø€ ÷J÷ ÷ ñ ô +°7Ô;×;€Dð  DÑ(Ø&.ˆÐ"Ñ#ä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø,Ø/Ø!Ø-Ø%Ø"7Ø—(‘(˜7Ó#Ø!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð <øð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsQ   ‚*B2¬A?­B2Á3B Á:BÁ;B Á>B2ÂB Â	B/ÂB*Â$B'Â%B*Â*B/Â/B2z%/v1beta/interactions/{interaction_id}z/interactions/{interaction_id}Úinteraction_idc              ƒ   ó  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} |ddœ}t        |¬«      }	 |j                  | ||d|||||d||||
|	|¬«      ƒ d{  –—† S 7 Œ# t        $ r#}|j                  ||||¬	«      ƒ d{  –—†7  ‚d}~ww xY w­w)
zk
    Get an interaction by ID.

    Per OpenAPI spec: GET /{api_version}/interactions/{interaction_id}
    r   r   rU   ©rX   rT   r&   Úaget_interactionNr)   r+   ©r.   r   r   r   r   r   r   r   r    r!   r"   r#   r   r/   r0   r1   ©r   rX   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r'   r3   r,   s                     r4   Úget_interactionr^   2  sÆ   è ø€ ÷.÷ ÷ ñ ð &4ÈHÑU€Dä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø)Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð 
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üóF   ‚,B	¯$A ÁAÁA ÁB	ÁA Á	BÁ#BÁ;A>Á<BÂBÂB	c              ƒ   ó  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} |ddœ}t        |¬«      }	 |j                  | ||d|||||d||||
|	|¬«      ƒ d{  –—† S 7 Œ# t        $ r#}|j                  ||||¬	«      ƒ d{  –—†7  ‚d}~ww xY w­w)
zq
    Delete an interaction by ID.

    Per OpenAPI spec: DELETE /{api_version}/interactions/{interaction_id}
    r   r   rU   rZ   r&   Úadelete_interactionNr)   r+   r\   r]   s                     r4   Údelete_interactionrb   v  óÆ   è ø€ ÷.÷ ÷ ñ ð &4ÈHÑU€Dä4¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø,Ø/Ø!Ø-Ø%Ø"7ØØ!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð 
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
ür_   z,/v1beta/interactions/{interaction_id}/cancelz%/interactions/{interaction_id}/cancelc              ƒ   ó  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} |ddœ}t        |¬«      }	 |j                  | ||d|||||d||||
|	|¬«      ƒ d{  –—† S 7 Œ# t        $ r#}|j                  ||||¬	«      ƒ d{  –—†7  ‚d}~ww xY w­w)
zv
    Cancel an interaction by ID.

    Per OpenAPI spec: POST /{api_version}/interactions/{interaction_id}:cancel
    r   r   rU   rZ   r&   Úacancel_interactionNr)   r+   r\   r]   s                     r4   Úcancel_interactionrf   º  rc   r_   N) Útypingr   Úfastapir   r   r   r   Úfastapi.responsesr   rI   Ú$litellm.proxy.auth.user_api_key_authr
   r   Ú'litellm.proxy.common_request_processingr   rG   r   Úlitellm.types.llms.vertex_air   r   Ú__annotations__ÚpostÚstrr5   r;   rP   rW   rH   r^   Údeleterb   rf   © ó    r4   ú<module>rs      s  ðÞ ç 9Ó 9Ý ,ä "ß RÝ QÝ LÝ BáØ
"Ð	#ô€ˆó ð
 ‡�Ø6ÙÐ+Ó,Ð-ð ó ð ‡�Ø/ÙÐ+Ó,Ð-ð ó ñ )0Ð0AÓ(Bñ	2
Øð2
àð2
ð ð2
ð &ò	2
ó	ó	ð2
ðj ‡�Ø<ÙÐ+Ó,Ð-ð ó ð ‡�Ø5ÙÐ+Ó,Ð-ð ó ñ )0Ð0AÓ(Bñ	6
Øð6
àð6
ð ð6
ð &ò	6
ó	ó	ð6
ðr ‡�Ø2ÙÐ+Ó,Ð-Ø,ð ó ð
 ‡�Ø+ÙÐ+Ó,Ð-Ø,ð ó ð
: wð :¸Cò :óóð:ðF ‡�ØÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ñ )0Ð0AÓ(BñG
ØðG
àðG
ð &òG
óóðG
ðT ‡�Ø+ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ð ‡�Ø$ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ñ )0Ð0AÓ(Bñ	5
Øð5
àð5
ð ð5
ð &ò	5
óóð5
ðp ‡�Ø+ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ð ‡�Ø$ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ñ )0Ð0AÓ(Bñ	5
Øð5
àð5
ð ð5
ð &ò	5
óóð5
ðp ‡�Ø2ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ð ‡�Ø+ÙÐ+Ó,Ð-Ø!Ø
Ð	ð	 ó ñ )0Ð0AÓ(Bñ	5
Øð5
àð5
ð ð5
ð &ò	5
óóñ5
rr   