o
    ưie                     @   sv  d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlZddl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mZmZmZ dd
lmZ ddlm Z  ddl!m"Z"m#Z# e Z$dZ%da&dd Z'e#							d,de
e	e  de
e( de
ee(ef  de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( defddZ+e#							d,de
e	e  de
e( de
ee(ef  de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( deeeeeef f fddZ,e#							d,de
e- de
e( de
e( de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( defdd Z.e#							d,de
e- de
e( de
e( de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( deeeeeef f fd!d"Z/e#				d-d#e(de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( defd$d%Z0e#				d-d#e(de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( deeeeeef f fd&d'Z1e#				d-d#e(de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( defd(d)Z2e#				d-d#e(de
ee(ef  de
ee(ef  de
ee)ej*f  de
e( deeeeeef f fd*d+Z3dS ).zi
Main entry point for Skills API operations
Provides create, list, get, and delete operations for skills
    N)partial)Any	CoroutineDictListOptionalUnion)request_timeout)Logging)BaseSkillsAPIConfig)BaseLLMHTTPHandler)CreateSkillRequestDeleteSkillResponseListSkillsParamsListSkillsResponseSkill)GenericLiteLLMParams)LlmProviders)ProviderConfigManagerclientzhttps://api.anthropic.com/v1c                  C   s   t du rddlm}  |  a t S )zGLazy initialization of LiteLLM skills handler to avoid import overhead.Nr   "LiteLLMSkillsTransformationHandler)_litellm_skills_handlerZ0litellm.llms.litellm_proxy.skills.transformationr   r    r   J/home/app/Keep/.python/lib/python3.10/site-packages/litellm/skills/main.py_get_litellm_skills_handler%   s   r   filesdisplay_titleextra_headersextra_query
extra_bodytimeoutcustom_llm_providerreturnc              
         t  }z=t }	d|d< ttf| ||||||d|}
t }t|j|
}|	d|I dH }t	|r=|I dH }|W S |}|W S  t
yW } z
tjd||||dd}~ww )aI  
    Async: Create a new skill
    
    Args:
        files: Files to upload for the skill. All files must be in the same top-level directory and must include a SKILL.md file at the root.
        display_title: Optional display title for the skill
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        extra_body: Additional body parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        Skill object
    Tacreate_skill)r   r   r   r   r    r!   r"   Nmodelr"   Zoriginal_exceptionZcompletion_kwargsextra_kwargs)localsasyncioget_event_loopr   create_skillcontextvarscopy_contextrunrun_in_executoriscoroutine	Exceptionlitellmexception_type)r   r   r   r   r    r!   r"   kwargs
local_varsloopfuncctxfunc_with_contextinit_responseresponseer   r   r   r%   0   H   	

r%   c                 K   s  t  }z|d}	|dd}
|dddu }tdi |}|du r$d}i }|dur.||d< | dur6| |d	< |r=|| |tjjkr[t j	|| |rO|d
nd|d||	|
dW S t
jt|d}|du rotd| |pri }|j||d}|j|||d}ddlm} ||j}|j|dd}|	jd|d|
i|d tj	||||||	||pt||d|dd}|W S  ty } z
tjd||||dd}~ww )aB  
    Create a new skill
    
    Args:
        files: Files to upload for the skill. All files must be in the same top-level directory and must include a SKILL.md file at the root.
        display_title: Optional display title for the skill
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        extra_body: Additional body parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        Skill object
    litellm_logging_objlitellm_call_idNr%   FT	anthropicr   r   metadatauser_id)r   r   rB   rC   	_is_asynclogging_objr@   providerz"CREATE skill is not supported for headerslitellm_params)create_requestrJ   rI   r   AnthropicModelInfoZskills)api_baseZendpointr'   Zoptional_paramsrJ   r"   r   shared_session)urlrequest_bodyskills_api_provider_configr"   rJ   rE   r   r!   rD   r   rP   r&   r   )r)   getpopr   updater   LITELLM_PROXYvaluer   Zcreate_skill_handlerr   get_provider_skills_api_configr3   
ValueErrorvalidate_environmentZtransform_create_skill_request#litellm.llms.anthropic.common_utilsrM   get_api_baserN   Zget_complete_urlupdate_environment_variablesbase_llm_http_handlerr	   r2   r4   )r   r   r   r   r    r!   r"   r5   r6   r?   r@   rD   rJ   rK   rS   rI   rR   rM   rN   rQ   r<   r=   r   r   r   r,   o   s   


r,   limitpagesourcec              
      r$   )a-  
    Async: List all skills
    
    Args:
        limit: Number of results to return per page (max 100, default 20)
        page: Pagination token for fetching a specific page of results
        source: Filter skills by source ('custom' or 'anthropic')
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        ListSkillsResponse object
    Talist_skills)r`   ra   rb   r   r   r!   r"   Nr&   )r)   r*   r+   r   list_skillsr-   r.   r/   r0   r1   r2   r3   r4   )r`   ra   rb   r   r   r!   r"   r5   r6   r7   r8   r9   r:   r;   r<   r=   r   r   r   rc      r>   rc   c                 K   s|  t  }z|d}	|dd}
|dddu }tdi |}|du r$d}|tjjkr8t j| p0dd	||	|
d
W S t	j
t|d}|du rLtd| i }| durV| |d< |dur^||d< |durf||d< |rm|| |ppi }|j||d}|j|||d\}}|	jd|d|
i|d tj||||||	||pt||d|dd}|W S  ty } z
tjd||||dd}~ww )a&  
    List all skills
    
    Args:
        limit: Number of results to return per page (max 100, default 20)
        page: Pagination token for fetching a specific page of results
        source: Filter skills by source ('custom' or 'anthropic')
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        ListSkillsResponse object
    r?   r@   Nrc   FTrA      r   )r`   offsetrD   rE   r@   rF   z!LIST skills is not supported for r`   ra   rb   rH   )list_paramsrJ   rI   rO   r   rP   )rQ   query_paramsrS   r"   rJ   rE   r   r!   rD   r   rP   r&   r   )r)   rT   rU   r   r   rW   rX   r   Zlist_skills_handlerr   rY   r3   rZ   rV   r[   Ztransform_list_skills_requestr^   r_   r	   r2   r4   )r`   ra   rb   r   r   r!   r"   r5   r6   r?   r@   rD   rJ   rS   rg   rI   rQ   rh   r<   r=   r   r   r   rd   2  s   




rd   skill_idc              
         t  }z;t }d|d< ttf| ||||d|}t }	t|	j|}
|d|
I dH }t	|r;|I dH }|W S |}|W S  t
yU } z
tjd||||dd}~ww )a~  
    Async: Get a skill by ID
    
    Args:
        skill_id: The ID of the skill to fetch
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        Skill object
    T
aget_skillri   r   r   r!   r"   Nr&   )r)   r*   r+   r   	get_skillr-   r.   r/   r0   r1   r2   r3   r4   ri   r   r   r!   r"   r5   r6   r7   r8   r9   r:   r;   r<   r=   r   r   r   rk     D   


rk   c                 K   T  t  }z|d}|dd}|dddu }	tdi |}
|du r$d}|tjjkr5t j| |	||dW S t	j
t|d	}|du rItd
| |pLi }|j||
d}ddlm} ||
j}|j| |pft|
|d\}}|jdd| id|i|d tj||||
|||pt|	|d|dd
}|W S  ty } z
tjd||||dd}~ww )aw  
    Get a skill by ID
    
    Args:
        skill_id: The ID of the skill to fetch
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        Skill object
    r?   r@   Nrk   FTrA   ri   rD   rE   r@   rF   zGET skill is not supported for rH   r   rL   ri   rN   rJ   rI   ri   rO   r   rP   
rQ   rS   r"   rJ   rE   r   r!   rD   r   rP   r&   r   )r)   rT   rU   r   r   rW   rX   r   Zget_skill_handlerr   rY   r3   rZ   r[   r\   rM   r]   rN   Ztransform_get_skill_requestDEFAULT_ANTHROPIC_API_BASEr^   r_   r	   r2   r4   ri   r   r   r!   r"   r5   r6   r?   r@   rD   rJ   rS   rI   rM   rN   rQ   r<   r=   r   r   r   rm     s~   
	

rm   c              
      rj   )a  
    Async: Delete a skill by ID
    
    Args:
        skill_id: The ID of the skill to delete
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        DeleteSkillResponse object
    Tadelete_skillrl   Nr&   )r)   r*   r+   r   delete_skillr-   r.   r/   r0   r1   r2   r3   r4   rn   r   r   r   rv   R  ro   rv   c                 K   rp   )a  
    Delete a skill by ID
    
    Args:
        skill_id: The ID of the skill to delete
        extra_headers: Additional headers for the request
        extra_query: Additional query parameters
        timeout: Request timeout
        custom_llm_provider: Provider name (e.g., 'anthropic')
        **kwargs: Additional parameters
        
    Returns:
        DeleteSkillResponse object
    r?   r@   Nrv   FTrA   rq   rF   z"DELETE skill is not supported for rH   r   rL   rr   ri   rO   r   rP   rs   r&   r   )r)   rT   rU   r   r   rW   rX   r   Zdelete_skill_handlerr   rY   r3   rZ   r[   r\   rM   r]   rN   Ztransform_delete_skill_requestrt   r^   r_   r	   r2   r4   ru   r   r   r   rw     s   
	

rw   )NNNNNNN)NNNN)4__doc__r*   r-   	functoolsr   typingr   r   r   r   r   r   Zhttpxr3   Zlitellm.constantsr	   Z*litellm.litellm_core_utils.litellm_loggingr
   ZLiteLLMLoggingObjZ+litellm.llms.base_llm.skills.transformationr   Z*litellm.llms.custom_httpx.llm_http_handlerr   Z#litellm.types.llms.anthropic_skillsr   r   r   r   r   Zlitellm.types.routerr   Zlitellm.types.utilsr   Zlitellm.utilsr   r   r_   rt   r   r   strfloatTimeoutr%   r,   intrc   rd   rk   rm   rv   rw   r   r   r   r   <module>   s    
	>
	 	>	y8l8