Ë
    uPêjŸ#  ã                   ó´   — d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ ddlmZ dd	lmZmZ erd d
lmZ d dl
mZ d dlmZ  G d„ deeee«      Zy)é    N)ÚMapping)ÚTYPE_CHECKINGÚFinalÚOptionalÚcast)ÚResponse)ÚLogging)ÚBasePassthroughConfigé   )Ú
BaseAWSLLM)ÚBedrockEventStreamDecoderBaseÚBedrockModelInfo)ÚURL)ÚCostResponseTypesc                   óB  — e Zd Zdededefd„Zdedefd„Zdedz  d	edz  d
edededz  dededef   fd„Z	de
eef   dedz  fd„Z	 ddedededz  ded
edz  deeedz  f   fd„Zd
ededededededed   fd„Zdee   dee   fd„Zdee   ddd
edededed   fd„Zy)ÚBedrockPassthroughConfigÚendpointÚrequest_dataÚreturnc                 ó
   — d|v S )NÚstream© )Úselfr   r   s      út/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/passthrough/transformation.pyÚis_streaming_requestz-BedrockPassthroughConfig.is_streaming_request   s   € Ø˜8Ð#Ð#ó    Úmodel_idc                 ó’   — ddl }ddlm} d|› d�}|j                  |«      }|j	                  d|«      }|r|j                  d«      S |S )a.  
        Encode model_id (especially ARNs) for use in Bedrock endpoints.

        ARNs contain special characters like colons and slashes that need to be
        properly URL-encoded when used in HTTP request paths. For example:
        arn:aws:bedrock:us-east-1:123:application-inference-profile/abc123
        becomes:
        arn:aws:bedrock:us-east-1:123:application-inference-profile%2Fabc123

        Args:
            model_id: The model ID or ARN to encode

        Returns:
            The encoded model_id suitable for use in endpoint URLs
        r   N)ÚCommonUtilsz/model/z	/conversez/model/([^/]+)/é   )ÚreÚlitellm.passthrough.utilsr   Ú"encode_bedrock_runtime_modelid_arnÚsearchÚgroup)r   r   r!   r   Útemp_endpointÚencoded_temp_endpointÚencoded_model_id_matchs          r   Ú_encode_model_id_for_endpointz6BedrockPassthroughConfig._encode_model_id_for_endpoint   s\   € ó  	å9ð ")¨¨
°)Ð<ˆØ'2×'UÑ'UÐVcÓ'dÐð )+¯	©	Ð2DÐF[Ó(\ÐÙ!Ø)×/Ñ/°Ó2Ð2ð ˆOr   Úapi_baseNÚapi_keyÚmodelÚrequest_query_paramsÚlitellm_paramsr   c                 óN  — |j                  «       }|j                  dd «      }| j                  |||¬«      }	|j                  d«      }
| j                  ||
|	d¬«      \  }}|�,dd l}| j                  |«      }|j                  dd|› d	�|«      }| j                  |||xs i «      |fS )
Nr   )Úoptional_paramsr,   r   Úaws_bedrock_runtime_endpointÚruntime)r*   r1   Úaws_region_nameÚendpoint_typer   zmodel/[^/]+/zmodel/ú/)ÚcopyÚgetÚ_get_aws_region_nameÚget_runtime_endpointr!   r)   ÚsubÚ
format_url)r   r*   r+   r,   r   r-   r.   r0   r   r3   r1   Úendpoint_urlÚ_r!   Úencoded_model_ids                  r   Úget_complete_urlz)BedrockPassthroughConfig.get_complete_url8   sÛ   € ð "0×!4Ñ!4Ó!6ˆØ)×-Ñ-¨j¸$Ó?ˆà!%×!:Ñ!:Ø+ØØð ";ó "
ˆð />×.AÑ.AÐB`Ó.aÐ$Ø×3Ñ3ØØ)EØ+Ø#ð	 4ó 
‰ˆ�að ÐÛð '+×&HÑ&HÈÓ&RÐð —v‘v˜o°Ð8HÐ7IÈÐ/KÈXÓVˆHà�O‰O˜H lÐ4HÒ4NÈBÓOØð
ð 	
r   c                  ó   — y ©Nr   )r   r.   s     r   Úget_bedrock_bearer_tokenz1BedrockPassthroughConfig.get_bedrock_bearer_tokena   s   € Ør   Úheadersc                 óx   — |j                  «       }| j                  d|||xs i ||| j                  |«      ¬«      S )NÚbedrock)Úservice_namerC   r0   r   r*   r,   r+   )r6   Ú_sign_requestrB   )r   rC   r.   r   r*   r,   r0   s          r   Úsign_requestz%BedrockPassthroughConfig.sign_requestd   sO   € ð "0×!4Ñ!4Ó!6ˆØ×!Ñ!Ø"ØØ+Ø%Ò+¨ØØØ×1Ñ1°/ÓBð "ó 
ð 	
r   Úcustom_llm_providerÚhttpx_responseÚlogging_objr   c                 óò   — ddl m} ddlm}m}	 ddlm}
 d|v rd|z   }nd|v rd|z   }ny |
j                   ||«      |¬	«      }|€t        d
|› �«      ‚|j                  |dddœg| |	«       |i i d||¬«
      }|S )Nr   )Úencoding)ÚLlmProvidersÚModelResponse)ÚProviderConfigManagerÚinvokezinvoke/Úconversez	converse/)Úproviderr,   z$No provider config found for model: Úuserz no-message-pass-through-endpoint)ÚroleÚcontentÚ )
r,   ÚmessagesÚraw_responseÚmodel_responserK   r0   r.   r+   r   rM   )
ÚlitellmrM   Úlitellm.types.utilsrN   rO   Úlitellm.utilsrP   Úget_provider_chat_configÚ
ValueErrorÚtransform_response)r   r,   rI   rJ   r   rK   r   rM   rN   rO   rP   Úchat_config_modelÚprovider_chat_configÚlitellm_model_responses                 r   Úlogging_non_streaming_responsez7BedrockPassthroughConfig.logging_non_streaming_responsew   s¼   € õ 	%ßCÝ7à�xÑØ )¨EÑ 1ÑØ˜8Ñ#Ø +¨eÑ 3Ñàà&;×&TÑ&TÙ!Ð"5Ó6Ø#ð 'Uó '
Ðð
  Ð'ÜÐCÀEÀ7ÐKÓLÐLà7K×7^Ñ7^ØØ%Ð2TÑUÐVØ'Ù(›?Ø#ØØØØ%Øð 8_ó 8
Ðð &Ð%r   Ú	raw_bytesc                 ó¬   — ddl m} g } |«       }|D ]?  }|j                  |«       |D ]'  }| j                  |«      }|€Œ|j	                  |«       Œ) ŒA |S )Nr   )ÚEventStreamBuffer)Úbotocore.eventstreamrg   Úadd_dataÚ_parse_message_from_eventÚappend)r   re   rg   Ú
all_chunksÚevent_stream_bufferÚchunkÚeventÚmessages           r   Ú_convert_raw_bytes_to_str_linesz8BedrockPassthroughConfig._convert_raw_bytes_to_str_lines¢   sk   € Ý:àˆ
Ù%6Ó%8ÐØò 	/ˆEØ×(Ñ(¨Ô/Ø,ò /�Ø×8Ñ8¸Ó?�ØÑ&Ø×%Ñ% gÕ.ñ/ð	/ð Ðr   rl   Úlitellm_logging_objÚLiteLLMLoggingObjc                 ó  — ddl m}m} ddlm} ddlm}	 ddlm}
 ddl	m
}m} g }d|v r1|	j                  |«      }|€t        d	|› d
|› �«      ‚ |||dd¬«      }nd|v r |d|dd¬«      }ny|D ]ƒ  }t        j                  |«      }|j!                  |¬«      }t#        |t$        «      r) |t'        t$        |«      «      r |t'        ||«      «      }nt#        ||«      r|}nŒs|j)                  |«       Œ… t+        |«      dkD  r |
||¬«      }|S y)z 
        1. Convert all_chunks to a ModelResponseStream
        2. combine model_response_stream to model_response
        3. Return the model_response
        r   )Ú.convert_generic_chunk_to_model_response_streamÚ%generic_chunk_has_all_required_fields)Ú get_bedrock_event_stream_decoder)ÚAmazonInvokeConfig)Ústream_chunk_builder)ÚGenericStreamingChunkÚModelResponseStreamrQ   NzInvalid invoke provider: z, for model: TF)Úinvoke_providerr,   Úsync_streamÚ	json_moderR   )Ú
chunk_data)ÚchunksrK   )Ú,litellm.litellm_core_utils.streaming_handlerru   rv   Úlitellm.llms.bedrock.chatrw   ÚKlitellm.llms.bedrock.chat.invoke_transformations.base_invoke_transformationrx   Úlitellm.mainry   r\   rz   r{   Úget_bedrock_invoke_providerr_   ÚjsonÚloadsÚ_chunk_parserÚ
isinstanceÚdictr   rk   Úlen)r   rl   rr   r,   rI   r   ru   rv   rw   rx   ry   rz   r{   Úall_translated_chunksr|   Úobjrn   rp   Útranslated_chunkÚ	chunk_objrZ   s                        r   Úhandle_logging_collected_chunksz8BedrockPassthroughConfig.handle_logging_collected_chunks°   sM  € ÷	
õ 	Oõ	
õ 	6ßRà')ÐØ�xÑØ%7×%SÑ%SÐTYÓ%ZˆOØÐ&Ü Ð#<¸_Ð<MÈ]Ð[`ÐZaÐ!bÓcÐcÙ2Ø /ØØ Øô	‰Cð ˜8Ñ#Ù2Ø $ØØ Øô	‰Cð àò 	4ˆEÜ—j‘j Ó'ˆGØ"×0Ñ0¸GÐ0ÓDÐäÐ*¬DÔ1Ñ6[Ü”TÐ+Ó,ô7ñ KÜÐ.Ð0@ÓAó‘	ô Ð,Ð.AÔBØ,‘	àà!×(Ñ(¨Õ3ð	4ô" Ð$Ó%¨Ò)Ù$8Ø,Ø/ô%ˆNð "Ð!Ør   rA   )Ú__name__Ú
__module__Ú__qualname__ÚstrrŠ   Úboolr   r)   Útupler?   r   ÚobjectrB   ÚbytesrH   r   r	   r   rd   Úlistrq   r�   r   r   r   r   r      sÇ  „ ð$¨Sð $Àð $Èó $ð°cð ¸có ð@'
à˜‘*ð'
ð �t‘ð'
ð ð	'
ð
 ð'
ð # T™kð'
ð ð'
ð 
ˆu�cˆzÑ	ó'
ðR°w¸sÀF¸{Ñ7Kð ÐPSÐVZÑPZó ð !ñ
àð
ð ð
ð ˜T‘kð	
ð
 ð
ð �T‰zð
ð 
ˆt�U˜T‘\Ð!Ñ	"ó
ð&)&àð)&ð !ð)&ð !ð	)&ð
 ð)&ð ð)&ð ð)&ð 
Ð%Ñ	&ó)&ðV¸¸e¹ð ÈÈcÉó ðEà˜‘IðEð 1ðEð ð	Eð
 !ðEð ðEð 
Ð%Ñ	&ôEr   r   )r†   Úcollections.abcr   Útypingr   r   r   r   Úhttpxr   Ú*litellm.litellm_core_utils.litellm_loggingr	   Ú0litellm.llms.base_llm.passthrough.transformationr
   Úbase_aws_llmr   Úcommon_utilsr   r   r   rs   r\   r   r   r   r   r   ú<module>r¡      sC   ðÛ Ý #ß 7Ó 7å å >Ý Rå %ß JáÝåWÝ5ôa˜zÐ+;Ð=ZÐ\qõ ar   