Ë
    tPêjèS  ã                   óØ   — d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddl
mZ erddlmZ neZddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ  G d„ d«      Z G d„ d«      Z G d„ de«      Zy)z­
BitBucket prompt manager that integrates with LiteLLM's prompt management system.
Fetches .prompt files from BitBucket repositories and provides team-based access control.
é    )ÚTYPE_CHECKINGÚAnyÚFinal)Ú
DictLoaderÚselect_autoescape)ÚImmutableSandboxedEnvironment)ÚCustomPromptManagement)ÚLogging)ÚPromptManagementBaseÚPromptManagementClient)ÚAllMessageValues)Ú
PromptSpec)ÚStandardCallbackDynamicParamsé   )ÚBitBucketClientc            
       óB   — e Zd ZdZ	 d	dededeeef   dedz  fd„Zd„ Zy)
ÚBitBucketPromptTemplatez=
    Represents a prompt template loaded from BitBucket.
    NÚtemplate_idÚcontentÚmetadataÚmodelc                 óp  — || _         || _        || _        |xs |j                  d«      | _        |j                  d«      | _        |j                  d«      | _        |j                  di «      j                  di «      | _        |j                  «       D ��ci c]  \  }}|dvsŒ||“Œ c}}| _	        y c c}}w )Nr   ÚtemperatureÚ
max_tokensÚinputÚschema)r   r   r   )
r   r   r   Úgetr   r   r   Úinput_schemaÚitemsÚoptional_params)Úselfr   r   r   r   ÚkÚvs          ú|/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/bitbucket/bitbucket_prompt_manager.pyÚ__init__z BitBucketPromptTemplate.__init__!   s�   € ð 'ˆÔØˆŒØ ˆŒØÒ3˜hŸl™l¨7Ó3ˆŒ
Ø#Ÿ<™<¨Ó6ˆÔØ"Ÿ,™, |Ó4ˆŒØ$ŸL™L¨°"Ó5×9Ñ9¸(ÀBÓGˆÔØ19·±Ó1A×l©¨¨AÀQÐNkÒEk  1¡ÓlˆÕùÓls   ÂB2Â#B2c                 ó<   — d| j                   › d| j                  › d�S )NzBitBucketPromptTemplate(id='z
', model='z'))r   r   ©r!   s    r$   Ú__repr__z BitBucketPromptTemplate.__repr__1   s#   € Ø-¨d×.>Ñ.>Ð-?¸zÈ$Ï*É*ÈÐUWÐXÐXó    ©N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚdictr   r%   r(   © r)   r$   r   r      sN   „ ñð !ñmàðmð ðmð �s˜C�x‘.ð	mð
 �T‰zómó Yr)   r   c                   óÀ   — e Zd ZdZ	 ddeeef   dedz  fd„Zdeddfd„Zdedede	fd	„Z
d
edeeef   fd„Zddedeeef   dz  defd„Zdede	dz  fd„Zdee   fd„Zy)ÚBitBucketTemplateManagerap  
    Manager for loading and rendering .prompt files from BitBucket repositories.

    Supports:
    - Fetching .prompt files from BitBucket repositories
    - Team-based access control through BitBucket permissions
    - YAML frontmatter for metadata
    - Handlebars-style templating (using Jinja2)
    - Input/output schema validation
    - Model configuration
    NÚbitbucket_configÚ	prompt_idc           
      óö   — || _         || _        i | _        t        |«      | _        t        t        i «      t        ddg«      dddddd¬	«      | _        | j                  r| j                  | j                  «       y y )
NÚhtmlÚxmlz{{z}}z{%z%}z{#z#})ÚloaderÚ
autoescapeÚvariable_start_stringÚvariable_end_stringÚblock_start_stringÚblock_end_stringÚcomment_start_stringÚcomment_end_string)
r4   r5   Úpromptsr   Úbitbucket_clientr   r   r   Ú	jinja_envÚ_load_prompt_from_bitbucket©r!   r4   r5   s      r$   r%   z!BitBucketTemplateManager.__init__B   s{   € ð
 !1ˆÔØ"ˆŒØ;=ˆŒÜ /Ð0@Ó AˆÔô 7Ü˜b“>Ü(¨&°%¨Ó9à"&Ø $Ø#Ø!Ø!%Ø#ô

ˆŒð �>Š>Ø×,Ñ,¨T¯^©^Õ<ð r)   Úreturnc                 óÎ   — 	 | j                   j                  |› d�«      }|r"| j                  ||«      }|| j                  |<   yy# t        $ r}t	        d|› d|› �«      ‚d}~ww xY w)z,Load a specific .prompt file from BitBucket.z.promptzFailed to load prompt 'z' from BitBucket: N)rB   Úget_file_contentÚ_parse_prompt_filerA   Ú	Exception)r!   r5   Úprompt_contentÚtemplateÚes        r$   rD   z4BitBucketTemplateManager._load_prompt_from_bitbucketb   s~   € ð	Xà$(×$9Ñ$9×$JÑ$JÈiÈ[ÐX_ÐK`Ó$aˆNáØ"&×"9Ñ"9¸.È)Ó"T�Ø*2�—‘˜YÒ'ð øô ò 	XÜÐ5°i°[Ð@RÐSTÐRUÐVÓWÐWûð	Xús   ‚AA Á	A$ÁAÁA$r   c                 ót  — |j                  d«      rL|j                  dd«      }t        |«      dk\  r'|d   j                  «       }|d   j                  «       }n	d}|}nd}|}i }|r	 ddl}|j                  |«      xs i }t        |||¬«      S # t        $ r | j                  |«      }Y Œ*t        $ r i }Y Œ6w xY w)	z?Parse a .prompt file content and extract metadata and template.z---é   é   r   Ú r   N)r   r   r   )
Ú
startswithÚsplitÚlenÚstripÚyamlÚ	safe_loadÚImportErrorÚ_parse_yaml_basicrJ   r   )r!   r   r5   ÚpartsÚfrontmatter_strÚtemplate_contentr   rV   s           r$   rI   z+BitBucketTemplateManager._parse_prompt_filen   sÐ   € ð ×Ñ˜eÔ$Ø"Ÿ=™=¨°Ó2ˆEÜ�5‹z˜QŠØ"'¨¡(§.¡.Ó"2�Ø#(¨¡8§>¡>Ó#3Ñ à"$�Ø#*Ñ à ˆOØ&Ðð $&ˆÙðÛàŸ>™>¨/Ó:Ò@¸b�ô 'Ø!Ø$Øô
ð 	
øô ò Cà×1Ñ1°/ÓB’Üò Ø’ðús   Á'B ÂB7Â*
B7Â6B7Úyaml_strc                 ó  — i }|j                  d«      D ]é  }|j                  «       }d|v sŒ|j                  d«      rŒ*|j                  dd«      \  }}|j                  «       }|j                  «       }|j                  «       dv r|j                  «       dk(  ||<   Œˆ|j	                  «       rt        |«      ||<   Œ§|j                  dd«      j	                  «       rt        |«      ||<   ŒÖ|j                  d	«      ||<   Œë |S )
z@Basic YAML parser for simple cases when PyYAML is not available.ú
ú:ú#r   )ÚtrueÚfalserb   ú.rQ   z"')rS   rU   rR   ÚlowerÚisdigitÚintÚreplaceÚfloat)r!   r]   ÚresultÚlineÚkeyÚvalues         r$   rY   z*BitBucketTemplateManager._parse_yaml_basic�   sÞ   € à(*ˆØ—N‘N 4Ó(ò 	5ˆDØ—:‘:“<ˆDØ�dŠ{ 4§?¡?°3Õ#7Ø!ŸZ™Z¨¨QÓ/‘
��UØ—i‘i“k�ØŸ™›�ð —;‘;“=Ð$5Ñ5Ø"'§+¡+£-°6Ñ"9�F˜3’KØ—]‘]”_Ü"% e£*�F˜3’KØ—]‘] 3¨Ó+×3Ñ3Ô5Ü"'¨£,�F˜3’Kà"'§+¡+¨eÓ"4�F˜3’Kð	5ð  ˆr)   r   Ú	variablesc                 óÐ   — || j                   vrt        d|› d�«      ‚| j                   |   }| j                  j                  |j                  «      } |j
                  di |xs i ¤ŽS )z+Render a template with the given variables.z
Template 'ú' not foundr1   )rA   Ú
ValueErrorrC   Úfrom_stringr   Úrender)r!   r   rn   rL   Újinja_templates        r$   Úrender_templatez(BitBucketTemplateManager.render_template¥   sd   € à˜dŸl™lÑ*Ü˜z¨+¨°kÐBÓCÐCàŸ,™, {Ñ3ˆØ $§¡× :Ñ :¸8×;KÑ;KÓ Lˆà$ˆ~×$Ñ$Ñ9¨	ª°RÑ9Ð9r)   c                 ó8   — | j                   j                  |«      S )zGet a template by ID.)rA   r   )r!   r   s     r$   Úget_templatez%BitBucketTemplateManager.get_template¯   s   € à�|‰|×Ñ Ó,Ð,r)   c                 óH   — t        | j                  j                  «       «      S )z List all available template IDs.)ÚlistrA   Úkeysr'   s    r$   Úlist_templatesz'BitBucketTemplateManager.list_templates³   s   € ä�D—L‘L×%Ñ%Ó'Ó(Ð(r)   r*   )r+   r,   r-   r.   r0   r/   r   r%   rD   r   rI   rY   ru   rw   ry   r{   r1   r)   r$   r3   r3   5   sÎ   „ ñ
ð !%ñ=à˜s C˜x™.ð=ð ˜‘:ó=ð@
X°Sð 
X¸Tó 
Xð 
¨#ð  
¸#ð  
ÐBYó  
ðD¨#ð °$°s¸C°x±.ó ñ*:¨3ð :¸4ÀÀSÀ¹>ÈDÑ;Pð :Ð\_ó :ð-¨ð -Ð0GÈ$Ñ0Nó -ð)  S¡	ô )r)   r3   c                    ó´  — e Zd ZdZ	 d&deeef   dedz  fd„Zedefd„«       Z	ede
fd„«       Z	 d&ded	eeef   dz  deeeeef   f   fd
„Z	 	 	 	 d'dedz  dee   deeef   ez  dz  deeef   dz  dedz  d	eeef   dz  deee   eeef   dz  f   fd„Zdedee   fd„Z	 	 	 	 d'dedz  dedee   deeef   ez  dz  deeef   dz  dedz  d	eeef   dz  defd„Zdee   fd„Zd(d„Zdedz  dedz  dedefd„Z	 	 d)dedz  dedz  d	edz  dededz  dedz  defd„Z	 	 	 d*dedz  d	edz  dededz  dedz  dedz  defd„Z	 	 	 	 	 d+dedee   dededz  d	edz  dededz  dedz  dedz  d edz  d!edz  deeee   ef   fd"„Z	 	 	 	 	 	 d,dedee   dededz  d	edz  ded#ededz  d$ee   dz  dedz  dedz  d edz  d!edz  deeee   ef   fd%„Zy)-ÚBitBucketPromptManagerah  
    BitBucket prompt manager that integrates with LiteLLM's prompt management system.

    This class enables using .prompt files from BitBucket repositories with the
    litellm completion() function by implementing the PromptManagementBase interface.

    Usage:
        # Configure BitBucket access
        bitbucket_config = {
            "workspace": "your-workspace",
            "repository": "your-repo",
            "access_token": "your-token",
            "branch": "main"  # optional, defaults to main
        }

        # Use with completion
        response = litellm.completion(
            model="bitbucket/gpt-4",
            prompt_id="my_prompt",
            prompt_variables={"variable": "value"},
            bitbucket_config=bitbucket_config,
            messages=[{"role": "user", "content": "This will be combined with the prompt"}]
        )
    Nr4   r5   c                 ó.   — || _         || _        d | _        y r*   )r4   r5   Ú_prompt_managerrE   s      r$   r%   zBitBucketPromptManager.__init__Ò   s   € ð
 !1ˆÔØ"ˆŒØ@DˆÕr)   rF   c                  ó   — y)z<Integration name used in model names like 'bitbucket/gpt-4'.Ú	bitbucketr1   r'   s    r$   Úintegration_namez'BitBucketPromptManager.integration_nameÛ   s   € ð r)   c                 ó~   — | j                   €&t        | j                  | j                  ¬«      | _         | j                   S )z*Get or create the prompt manager instance.)r4   r5   )r   r3   r4   r5   r'   s    r$   Úprompt_managerz%BitBucketPromptManager.prompt_managerà   s;   € ð ×ÑÐ'Ü#;Ø!%×!6Ñ!6ØŸ.™.ô$ˆDÔ ð ×#Ñ#Ð#r)   Úprompt_variablesc                 ó  — | j                   j                  |«      }|st        d|› d�«      ‚| j                   j                  ||xs i «      }|j                  |j
                  |j                  dœ|j                  ¥}||fS )a  
        Get a prompt template and render it with variables.

        Args:
            prompt_id: The ID of the prompt template
            prompt_variables: Variables to substitute in the template

        Returns:
            Tuple of (rendered_prompt, metadata)
        zPrompt template 'rp   )r   r   r   )r„   rw   rq   ru   r   r   r   r    )r!   r5   r…   rL   Úrendered_promptr   s         r$   Úget_prompt_templatez*BitBucketPromptManager.get_prompt_templateê   s’   € ð ×-Ñ-×:Ñ:¸9ÓEˆÙÜÐ0°°¸;ÐGÓHÐHð "&×!4Ñ!4×!DÑ!DÀYÐP`ÒPfÐdfÓ!gˆð —^‘^Ø#×/Ñ/Ø"×-Ñ-ñ
ð ×&Ñ&ð	
ˆð  Ð(Ð(r)   Úuser_idÚmessagesÚfunction_callÚlitellm_paramsc                 ój  — |s||fS 	 | j                  ||«      \  }}	| j                  |«      }
|
r|
}n	d|dœg|z   }|€i }|	j                  d«      r|	d   |d<   dD ]  }||	v sŒ|	|   ||<   Œ ||fS # t        $ r8}ddl}|j
                  j                  j                  d|«       ||fcY d}~S d}~ww xY w)z^
        Pre-call hook that processes the prompt template before making the LLM call.
        Úuser©Úroler   Nr   ©r   r   Útop_pÚfrequency_penaltyÚpresence_penaltyr   z+Error in BitBucket prompt pre_call_hook: %s)rˆ   Ú_parse_prompt_to_messagesr   rJ   ÚlitellmÚ_loggingÚverbose_proxy_loggerÚerror)r!   r‰   rŠ   r‹   rŒ   r5   r…   Úkwargsr‡   Úprompt_metadataÚparsed_messagesÚfinal_messagesÚparamrM   r–   s                  r$   Úpre_call_hookz$BitBucketPromptManager.pre_call_hook
  s  € ñ Ø˜^Ð+Ð+ð(	,à/3×/GÑ/GÈ	ÐScÓ/dÑ,ˆO˜_ð &*×%CÑ%CÀOÓ%TˆOñ à9H‘ð ,2¸oÑ"NÐ!OÐRZÑ!Z�ð Ð%Ø!#�ð ×"Ñ" 7Ô+Ø*9¸'Ñ*B�˜wÑ'ðò C�ð ˜OÒ+Ø,;¸EÑ,B�N 5Ò)ðCð " >Ð1Ð1øäò 	,ãà×Ñ×1Ñ1×7Ñ7Ð8eÐghÔiØ˜^Ð+Õ+ûð	,ús$   ˆAA1 Á#A1 Á1	B2Á:-B-Â'B2Â-B2rK   c                 óä  — g }|j                  «       j                  d«      }d}g }|D �]i  }|j                  «       }|sŒ|j                  «       j                  d«      rL|r3|r1|j	                  |dj                  |«      j                  «       dœ«       d}|dd j                  «       g}Œ‚|j                  «       j                  d«      rL|r3|r1|j	                  |dj                  |«      j                  «       dœ«       d}|d	d j                  «       g}Œí|j                  «       j                  d
«      rM|r3|r1|j	                  |dj                  |«      j                  «       dœ«       d}|dd j                  «       g}�ŒY|j	                  |«       �Œl |r3|r1|j	                  |dj                  |«      j                  «       dœ«       |s$|j                  «       rd|j                  «       dœg}|S )z�
        Parse prompt content into a list of messages.
        Handles both simple prompts and multi-role conversations.
        r_   Nzsystem:r�   Úsystemé   zuser:rŽ   é   z
assistant:Ú	assistanté
   )rU   rS   re   rR   ÚappendÚjoin)r!   rK   rŠ   ÚlinesÚcurrent_roleÚcurrent_contentrk   s          r$   r•   z0BitBucketPromptManager._parse_prompt_to_messagesD  sÏ  € ð
 ˆØ%×+Ñ+Ó-×3Ñ3°DÓ9ˆØˆØˆàó &	-ˆDØ—:‘:“<ˆDÙØð �z‰z‹|×&Ñ& yÔ1Ù¡OØ—O‘Oà$0Ø'+§y¡y°Ó'A×'GÑ'GÓ'Iñôð  (�Ø#'¨¨ 8§>¡>Ó#3Ð"4‘Ø—‘“×(Ñ(¨Ô1Ù¡OØ—O‘Oà$0Ø'+§y¡y°Ó'A×'GÑ'GÓ'Iñôð  &�Ø#'¨¨ 8§>¡>Ó#3Ð"4‘Ø—‘“×(Ñ(¨Ô6Ù¡OØ—O‘Oà$0Ø'+§y¡y°Ó'A×'GÑ'GÓ'Iñôð  +�Ø#'¨¨ 9§?¡?Ó#4Ð"5’ð  ×&Ñ& tÖ,ðM&	-ñR ™OØ�O‰O \¸d¿i¹iÈÓ>X×>^Ñ>^Ó>`ÑaÔbñ ˜N×0Ñ0Ô2Ø!'°N×4HÑ4HÓ4JÑKÐLˆHàˆr)   ÚresponseÚinput_messagesc                 ó   — |S )zL
        Post-call hook for any post-processing after the LLM call.
        r1   )	r!   r‰   r«   r¬   r‹   rŒ   r5   r…   rš   s	            r$   Úpost_call_hookz%BitBucketPromptManager.post_call_hook€  s	   € ð ˆr)   c                 ó6   — | j                   j                  «       S )z!Get list of available prompt IDs.)r„   r{   r'   s    r$   Úget_available_promptsz,BitBucketPromptManager.get_available_prompts�  s   € à×"Ñ"×1Ñ1Ó3Ð3r)   c                 óD   — | j                   rd| _        | j                   yy)zReload prompts from BitBucket.N)r5   r   r„   r'   s    r$   Úreload_promptsz%BitBucketPromptManager.reload_prompts”  s   € à�>Š>Ø#'ˆDÔ Ø×Óð r)   Úprompt_specÚdynamic_callback_paramsc                 ó
   — |duS )zÍ
        Determine if prompt management should run based on the prompt_id.

        For BitBucket, we always return True and handle the prompt loading
        in the _compile_prompt_helper method.
        Nr1   )r!   r5   r³   r´   s       r$   Úshould_run_prompt_managementz3BitBucketPromptManager.should_run_prompt_managementš  s   € ð  Ð$Ð$r)   Úprompt_labelÚprompt_versionc                 ó‚  — |€t        d«      ‚	 || j                  j                  vr| j                  j                  |«       | j	                  ||«      \  }}| j                  |«      }	|j                  d«      }
i }dD ]  }||v sŒ||   ||<   Œ t        ||	|
|d¬«      S # t        $ r}t        d|› d|› �«      ‚d}~ww xY w)aS  
        Compile a BitBucket prompt template into a PromptManagementClient structure.

        This method:
        1. Loads the prompt template from BitBucket
        2. Renders it with the provided variables
        3. Converts the rendered text into chat messages
        4. Extracts model and optional parameters from metadata
        Nú2prompt_id is required for BitBucket prompt managerr   r‘   )r5   Úprompt_templateÚprompt_template_modelÚprompt_template_optional_paramsÚcompleted_messageszError compiling prompt 'z': )	rq   r„   rA   rD   rˆ   r•   r   r   rJ   )r!   r5   r³   r…   r´   r·   r¸   r‡   r›   rŠ   Útemplate_modelr    rž   rM   s                 r$   Ú_compile_prompt_helperz-BitBucketPromptManager._compile_prompt_helper¨  s   € ð$ ÐÜÐQÓRÐRð#	Kà × 3Ñ 3× ;Ñ ;Ñ;Ø×#Ñ#×?Ñ?À	ÔJð 04×/GÑ/GÈ	ÐScÓ/dÑ,ˆO˜_ð #×<Ñ<¸_ÓMˆHð %4×$7Ñ$7¸Ó$@ˆNð &(ˆOðò D�ð ˜OÒ+Ø-<¸UÑ-C�O EÒ*ðDô *Ø#Ø (Ø&4Ø0?Ø#'ôð øô ò 	KÜÐ7¸	°{À#ÀaÀSÐIÓJÐJûð	Kús   �A5B ÂB Â	B>Â(B9Â9B>c              ƒ   óR   K  — |€t        d«      ‚| j                  ||||||¬«      S ­w)z˜
        Async version of compile prompt helper. Since BitBucket operations use sync client,
        this simply delegates to the sync version.
        rº   )r5   r³   r…   r´   r·   r¸   )rq   rÀ   )r!   r5   r…   r´   r³   r·   r¸   s          r$   Úasync_compile_prompt_helperz2BitBucketPromptManager.async_compile_prompt_helperâ  sD   è ø€ ð ÐÜÐQÓRÐRà×*Ñ*ØØ#Ø-Ø$;Ø%Ø)ð +ó 
ð 	
ùs   ‚%'r   Únon_default_paramsÚignore_prompt_manager_modelÚ%ignore_prompt_manager_optional_paramsc                 ó@   — t        j                  | |||||||||	¬«
      S )zq
        Get chat completion prompt from BitBucket and return processed model, messages, and parameters.
        )r³   r·   r¸   )r   Úget_chat_completion_prompt)r!   r   rŠ   rÃ   r5   r…   r´   r³   r·   r¸   rÄ   rÅ   s               r$   rÇ   z1BitBucketPromptManager.get_chat_completion_promptû  s5   € ô" $×>Ñ>ØØØØØØØ#Ø#Ø%Ø)ô
ð 	
r)   Úlitellm_logging_objÚtoolsc              ƒ   ód   K  — t        j                  | |||||||||	|
|||¬«      ƒ d{  –—† S 7 Œ­w)zY
        Async version - delegates to PromptManagementBase async implementation.
        )
r5   r…   rÈ   r´   r³   rÉ   r·   r¸   rÄ   rÅ   N)r   Ú async_get_chat_completion_prompt)r!   r   rŠ   rÃ   r5   r…   r´   rÈ   r³   rÉ   r·   r¸   rÄ   rÅ   s                 r$   rË   z7BitBucketPromptManager.async_get_chat_completion_prompt  sO   è ø€ ô& *×JÑJØØØØØØ-Ø 3Ø$;Ø#ØØ%Ø)Ø(CØ2Wô
÷ 
ð 	
ð 
ús   ‚'0©.ª0r*   )NNNN)rF   N)NN)NNN)NNNFF)NNNNFF) r+   r,   r-   r.   r0   r/   r   r%   Úpropertyr‚   r3   r„   Útuplerˆ   ry   r   rŸ   r•   r®   r°   r²   r   r   Úboolr¶   rg   r   rÀ   rÂ   rÇ   ÚLiteLLMLoggingObjrË   r1   r)   r$   r}   r}   ¸   sØ  „ ñð8 !%ñEà˜s C˜x™.ðEð ˜‘:óEð ð #ò ó ðð ð$Ð 8ò $ó ð$ð 37ñ)àð)ð ˜s C˜x™.¨4Ñ/ð)ð 
ˆs�D˜˜c˜‘NÐ"Ñ	#ó	)ðH 6:Ø04Ø $Ø26ñ8,à�t‘ð8,ð Ð'Ñ(ð8,ð ˜C ˜H‘~¨Ñ+¨dÑ2ð	8,ð
 ˜S #˜X™¨Ñ-ð8,ð ˜‘:ð8,ð ˜s C˜x™.¨4Ñ/ð8,ð 
ˆtÐ$Ñ% t¨C°¨H¡~¸Ñ'<Ð<Ñ	=ó8,ðt:¸ð :ÀÐEUÑ@Vó :ðB 6:Ø04Ø $Ø26ñà�t‘ðð ðð Ð-Ñ.ð	ð
 ˜C ˜H‘~¨Ñ+¨dÑ2ðð ˜S #˜X™¨Ñ-ðð ˜‘:ðð ˜s C˜x™.¨4Ñ/ðð 
óð 4 t¨C¡yó 4ó ð%à˜‘:ð%ð   $Ñ&ð%ð "?ð	%ð
 
ó%ð( $(Ø%)ñ8Kà˜‘:ð8Kð   $Ñ&ð8Kð  ™+ð	8Kð
 "?ð8Kð ˜D‘jð8Kð ˜d™
ð8Kð 
 ó8Kð~ *.Ø#'Ø%)ñ
à˜‘:ð
ð  ™+ð
ð "?ð	
ð
   $Ñ&ð
ð ˜D‘jð
ð ˜d™
ð
ð 
 ó
ðB *.Ø#'Ø%)Ø38Ø=Bñ
àð
ð Ð'Ñ(ð
ð !ð	
ð
 ˜‘:ð
ð  ™+ð
ð "?ð
ð   $Ñ&ð
ð ˜D‘jð
ð ˜d™
ð
ð &*¨D¡[ð
ð 04°d©{ð
ð 
ˆs�DÐ)Ñ*¨DÐ0Ñ	1ó
ðN *.Ø#'Ø#'Ø%)Ø38Ø=Bñ"
àð"
ð Ð'Ñ(ð"
ð !ð	"
ð
 ˜‘:ð"
ð  ™+ð"
ð "?ð"
ð /ð"
ð   $Ñ&ð"
ð �D‰z˜DÑ ð"
ð ˜D‘jð"
ð ˜d™
ð"
ð &*¨D¡[ð"
ð 04°d©{ð"
ð 
ˆs�DÐ)Ñ*¨DÐ0Ñ	1ô"
r)   r}   N)r.   Útypingr   r   r   Újinja2r   r   Újinja2.sandboxr   Ú-litellm.integrations.custom_prompt_managementr	   Ú*litellm.litellm_core_utils.litellm_loggingr
   rÏ   Ú+litellm.integrations.prompt_management_baser   r   Úlitellm.types.llms.openair   Ú"litellm.types.prompts.init_promptsr   Úlitellm.types.utilsr   rB   r   r   r3   r}   r1   r)   r$   ú<module>rÙ      sb   ðñ÷
 -Ñ ,ç 0Ý 8å PáÞWàÐ÷õ 7Ý 9Ý =å -÷Yñ Y÷2@)ñ @)ôFC
Ð3õ C
r)   