o
    ưi5                     @   s  d Z ddlmZ ddl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mZ dd	lmZmZmZ e Zejd
dgeegeddeefdededee de
fddZejd
dgeegedddddeefdededee dee dee dee de
fddZejddgeegeddeefdedededee de
f
ddZejddgeegeddeefdedededee de
f
ddZdS ) z-
Anthropic Skills API endpoints - /v1/skills
    )OptionalN)	APIRouterDependsRequestResponse)UserAPIKeyAuth)user_api_key_auth)ProxyBaseLLMRequestProcessing)!convert_upload_files_to_file_dataget_form_data)DeleteSkillResponseListSkillsResponseSkillz
/v1/skillsz[beta] Anthropic Skills API)tagsdependenciesZresponse_modelZ	anthropicfastapi_responserequestcustom_llm_provideruser_api_key_dictc              
      sF  ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t|I dH }t|I dH }|dp9|jdp9|jd}|r@||d< d|vrH||d< t|d}z=|jdi d|d	| d
|ddd|d|d|d|d|d|dd|d|d|d|
d|	d|I dH W S  ty } z|j||||dI dH d}~ww )a  
    Create a new skill on Anthropic.
    
    Requires `?beta=true` query parameter.
    
    Model-based routing (for multi-account support):
    - Pass model via header: `x-litellm-model: claude-account-1`
    - Pass model via query: `?model=claude-account-1`
    - Pass model via form field: `model=claude-account-1`
    
    Example usage:
    ```bash
    # Basic usage
    curl -X POST "http://localhost:4000/v1/skills?beta=true"       -H "Content-Type: multipart/form-data"       -H "Authorization: Bearer your-key"       -F "display_title=My Skill"       -F "files[]=@skill.zip"
    
    # With model-based routing
    curl -X POST "http://localhost:4000/v1/skills?beta=true"       -H "Content-Type: multipart/form-data"       -H "Authorization: Bearer your-key"       -H "x-litellm-model: claude-account-1"       -F "display_title=My Skill"       -F "files[]=@skill.zip"
    ```
    
    Returns: Skill object with id, display_title, etc.
    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versionNmodelx-litellm-modelr   datar   r   r   
route_typeZacreate_skillr   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
   getquery_paramsheadersr	   base_process_llm_request	Exception_handle_llm_api_exception)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Z	form_datar$   r!   	processorr'   r(   r(   i/home/app/Keep/.python/lib/python3.10/site-packages/litellm/proxy/anthropic_endpoints/skills_endpoints.pycreate_skill   sr   4*




	

r2   
   limitafter_id	before_idc              
      s  ddl m}m}m}	m}
m}m}m}m}m	}m
}m} | I dH }|r)t|ni }d|vr7|dur7||d< d|vrC|durC||d< d|vrO|durO||d< |dp_|jdp_|jd}|rf||d< d	|vrn||d	< t|d
}z=|jdi d|d| d|ddd|
d|d|d|	d|d|dd|d|d|d|d|d|I dH W S  ty } z|j|||
|dI dH d}~ww )a  
    List skills on Anthropic.
    
    Requires `?beta=true` query parameter.
    
    Model-based routing (for multi-account support):
    - Pass model via header: `x-litellm-model: claude-account-1`
    - Pass model via query: `?model=claude-account-1`
    - Pass model via body: `{"model": "claude-account-1"}`
    
    Example usage:
    ```bash
    # Basic usage
    curl "http://localhost:4000/v1/skills?beta=true&limit=10"       -H "Authorization: Bearer your-key"
    
    # With model-based routing
    curl "http://localhost:4000/v1/skills?beta=true&limit=10"       -H "Authorization: Bearer your-key"       -H "x-litellm-model: claude-account-1"
    ```
    
    Returns: ListSkillsResponse with list of skills
    r   r   Nr4   r5   r6   r!   r"   r   r#   r   r   r   r%   Zalist_skillsr   r   r   r   r   r   r   r   r   r   r    r&   r(   r)   r   r   r   r   r   r   r   r   r   r   r    bodyorjsonloadsr*   r+   r,   r	   r-   r.   r/   )r   r   r4   r5   r6   r   r   r   r   r   r   r   r   r   r   r   r   r    r8   r$   r!   r0   r'   r(   r(   r1   list_skills   s~   4'




	

r;   z/v1/skills/{skill_id}skill_idc              
      R  ddl m}m}m}m}m}	m}
m}m}m	}m
}m} | I dH }|r)t|ni }| |d< |dp?|jdp?|jd}|rF||d< d|vrN||d< t|d}z=|jdi d	|d
|d|ddd|d|d|d|d|	d|dd|d|d|d|d|
d|I dH W S  ty } z|j||||dI dH d}~ww )a  
    Get a specific skill by ID from Anthropic.
    
    Requires `?beta=true` query parameter.
    
    Model-based routing (for multi-account support):
    - Pass model via header: `x-litellm-model: claude-account-1`
    - Pass model via query: `?model=claude-account-1`
    - Pass model via body: `{"model": "claude-account-1"}`
    
    Example usage:
    ```bash
    # Basic usage
    curl "http://localhost:4000/v1/skills/skill_123?beta=true"       -H "Authorization: Bearer your-key"
    
    # With model-based routing
    curl "http://localhost:4000/v1/skills/skill_123?beta=true"       -H "Authorization: Bearer your-key"       -H "x-litellm-model: claude-account-1"
    ```
    
    Returns: Skill object
    r   r   Nr<   r!   r"   r   r#   r   r   r   r%   Z
aget_skillr   r   r   r   r   r   r   r   r   r   r    r&   r(   r7   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r8   r$   r!   r0   r'   r(   r(   r1   	get_skill   st   4%




	

r?   c              
      r=   )aO  
    Delete a skill by ID from Anthropic.
    
    Requires `?beta=true` query parameter.
    
    Note: Anthropic does not allow deleting skills with existing versions.
    
    Model-based routing (for multi-account support):
    - Pass model via header: `x-litellm-model: claude-account-1`
    - Pass model via query: `?model=claude-account-1`
    - Pass model via body: `{"model": "claude-account-1"}`
    
    Example usage:
    ```bash
    # Basic usage
    curl -X DELETE "http://localhost:4000/v1/skills/skill_123?beta=true"       -H "Authorization: Bearer your-key"
    
    # With model-based routing
    curl -X DELETE "http://localhost:4000/v1/skills/skill_123?beta=true"       -H "Authorization: Bearer your-key"       -H "x-litellm-model: claude-account-1"
    ```
    
    Returns: DeleteSkillResponse with type="skill_deleted"
    r   r   Nr<   r!   r"   r   r#   r   r   r   r%   Zadelete_skillr   r   r   r   r   r   r   r   r   r   r    r&   r(   r7   r>   r(   r(   r1   delete_skillQ  st   4'




	

r@   ) __doc__typingr   r9   Zfastapir   r   r   r   Zlitellm.proxy._typesr   Z$litellm.proxy.auth.user_api_key_authr   Z'litellm.proxy.common_request_processingr	   Z-litellm.proxy.common_utils.http_parsing_utilsr
   r   Z#litellm.types.llms.anthropic_skillsr   r   r   Zrouterpoststrr2   r*   intr;   r?   deleter@   r(   r(   r(   r1   <module>   s    	`	f
_
