Ë
    tPêjŠ5  ã                   ó‚  — U 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ed
<   ej1                  ddg ee«      ge¬«      d ee«      fdedededz  de
fd„«       Zej7                  ddg ee«      ge¬«      dddd ee«      fdedededz  dedz  dedz  dedz  de
fd„«       Zej7                  ddg ee«      ge¬«      d ee«      fdededededz  de
f
d„«       Zej?                  ddg ee«      ge¬«      d ee«      fdededededz  de
f
d„«       Z y)z-
Anthropic Skills API endpoints - /v1/skills
é    )ÚFinalN)Ú	APIRouterÚDependsÚRequestÚResponse)ÚUserAPIKeyAuth)Úuser_api_key_auth)ÚProxyBaseLLMRequestProcessing)Ú!convert_upload_files_to_file_dataÚget_form_data)ÚDeleteSkillResponseÚListSkillsResponseÚSkillÚrouterz
/v1/skillsz[beta] Anthropic Skills API)ÚtagsÚdependenciesÚresponse_modelÚ	anthropicÚfastapi_responseÚrequestÚcustom_llm_providerÚuser_api_key_dictc              ƒ   ó4  K  — ddl m}m}m}m}m}m}	m}
m}m	}m
}m} t        |«      ƒ d{  –—† }t        |«      ƒ d{  –—† }|j                  d«      xs8 |j                  j                  d«      xs |j                   j                  d«      }|r||d<   d|vr||d<   t#        |¬«      }	 |j%                  || |d||||||j                  d«      ||||
|	|¬	«      ƒ d{  –—† S 7 Œ·7 Œ¦7 Œ# t&        $ r#}|j)                  ||||¬
«      ƒ d{  –—†7  ‚d}~ww xY 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   ©ÚdataÚacreate_skill©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   Ú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%   Ú	form_datar)   r&   Ú	processorr.   s                       úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/anthropic_endpoints/skills_endpoints.pyÚcreate_skillr9      sF  è ø€ ÷T÷ ÷ ñ ô +¨7Ó3×3€IÜ9¸)ÓD×D€Dð —8‘8˜GÓ$Òs¨×(<Ñ(<×(@Ñ(@ÀÓ(IÒsÈWÏ_É_×M`ÑM`ÐarÓMs€EÙØˆˆW‰à DÑ(Ø&9ˆÐ"Ñ#ô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø&Ø/Ø!Ø-Ø%Ø"7Ø—(‘(˜7Ó#Ø!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð 4øØDøð
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsb   ‚)D«C#¬D¾C%¿A+DÂ+3C) ÃC'ÃC) Ã"DÃ%DÃ'C) Ã)	DÃ2DÄ
DÄDÄDÄDé
   ÚlimitÚafter_idÚ	before_idc              ƒ   óˆ  K  — ddl m}m}m}	m}
m}m}m}m}m	}m
}m} |j                  «       ƒ d{  –—† }|rt        j                  |«      ni }d|vr|�||d<   d|vr|�||d<   d|vr|�||d<   |j                  d«      xs8 |j                   j                  d«      xs |j"                  j                  d«      }|r||d<   d	|vr||d	<   t%        |¬
«      }	 |j'                  || |d|
|||	||j                  d«      ||||||¬«      ƒ d{  –—† S 7 ŒÞ7 Œ# t(        $ r#}|j+                  |||
|¬«      ƒ d{  –—†7  ‚d}~ww xY 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   Nr;   r<   r=   r&   r'   r   r(   Úalist_skillsr+   r-   ©r/   r   r   r   r   r   r    r!   r"   r#   r$   r%   ÚbodyÚorjsonÚloadsr0   r1   r2   r
   r3   r4   r5   )r   r   r;   r<   r=   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rA   r)   r&   r7   r.   s                          r8   Úlist_skillsrD   |   s�  è ø€ ÷N÷ ÷ ñ ð  Ÿ™›×&€DÙ(,”&—,‘,˜tÔ$°"€Dð �dÑ˜uÐ0ØˆˆW‰Ø˜Ñ (Ð"6Ø#ˆˆZÑØ˜$Ñ 9Ð#8Ø%ˆˆ[Ñð —8‘8˜GÓ$Òs¨×(<Ñ(<×(@Ñ(@ÀÓ(IÒsÈWÏ_É_×M`ÑM`ÐarÓMs€EÙØˆˆW‰ð  DÑ(Ø&9ˆÐ"Ñ#ô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø%Ø/Ø!Ø-Ø%Ø"7Ø—(‘(˜7Ó#Ø!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð/ 'øð.
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üsR   ‚.E°D±B%EÃ3D Ä
DÄD ÄEÄD Ä	D?ÄD:Ä4D7Ä5D:Ä:D?Ä?Ez/v1/skills/{skill_id}Úskill_idc              ƒ   óP  K  — ddl m}m}m}m}m}	m}
m}m}m	}m
}m} |j                  «       ƒ d{  –—† }|rt        j                  |«      ni }| |d<   |j                  d«      xs8 |j                   j                  d«      xs |j"                  j                  d«      }|r||d<   d|vr||d<   t%        |¬«      }	 |j'                  |||d	|||||	|j                  d«      |||||
|¬
«      ƒ d{  –—† S 7 ŒÂ7 Œ# t(        $ r#}|j+                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY 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   NrE   r&   r'   r   r(   Ú
aget_skillr+   r-   r@   ©rE   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rA   r)   r&   r7   r.   s                        r8   Ú	get_skillrI   ä   sV  è ø€ ÷J÷ ÷ ñ ð  Ÿ™›×&€DÙ(,”&—,‘,˜tÔ$°"€Dð  €DˆÑð —8‘8˜GÓ$Òs¨×(<Ñ(<×(@Ñ(@ÀÓ(IÒsÈWÏ_É_×M`ÑM`ÐarÓMs€EÙØˆˆW‰ð  DÑ(Ø&9ˆÐ"Ñ#ô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø#Ø/Ø!Ø-Ø%Ø"7Ø—(‘(˜7Ó#Ø!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð% 'øð$
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
üóR   ‚.D&°C3±B	D&Â;3C7 Ã.C5Ã/C7 Ã2D&Ã5C7 Ã7	D#Ä DÄDÄDÄD#Ä#D&c              ƒ   óP  K  — ddl m}m}m}m}m}	m}
m}m}m	}m
}m} |j                  «       ƒ d{  –—† }|rt        j                  |«      ni }| |d<   |j                  d«      xs8 |j                   j                  d«      xs |j"                  j                  d«      }|r||d<   d|vr||d<   t%        |¬«      }	 |j'                  |||d	|||||	|j                  d«      |||||
|¬
«      ƒ d{  –—† S 7 ŒÂ7 Œ# t(        $ r#}|j+                  ||||¬«      ƒ d{  –—†7  ‚d}~ww xY w­w)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   NrE   r&   r'   r   r(   Úadelete_skillr+   r-   r@   rH   s                        r8   Údelete_skillrM   E  sV  è ø€ ÷N÷ ÷ ñ ð  Ÿ™›×&€DÙ(,”&—,‘,˜tÔ$°"€Dð  €DˆÑð —8‘8˜GÓ$Òs¨×(<Ñ(<×(@Ñ(@ÀÓ(IÒsÈWÏ_É_×M`ÑM`ÐarÓMs€EÙØˆˆW‰ð  DÑ(Ø&9ˆÐ"Ñ#ô 5¸$Ô?€Ið
Ø×7Ñ7ØØ-Ø/Ø&Ø/Ø!Ø-Ø%Ø"7Ø—(‘(˜7Ó#Ø!Ø-Ø!5Ø+Ø'Øð! 8ó 
÷ 
ð 	
ð% 'øð$
ùô$ ò 
Ø×7Ñ7ØØ/Ø/Øð	 8ó 
÷ 
ð 
ð 	
ûð
ürJ   )!Ú__doc__Útypingr   rB   Úfastapir   r   r   r   Úlitellm.proxy._typesr   Ú$litellm.proxy.auth.user_api_key_authr	   Ú'litellm.proxy.common_request_processingr
   Ú-litellm.proxy.common_utils.http_parsing_utilsr   r   Ú#litellm.types.llms.anthropic_skillsr   r   r   r   Ú__annotations__ÚpostÚstrr9   r0   ÚintrD   rI   ÚdeleterM   © ó    r8   ú<module>r]      se  ðòõ ã ß 9Ó 9å /Ý BÝ Q÷÷ñ ñ “€ˆÓ ð ‡�ØØ
'Ð	(ÙÐ+Ó,Ð-Øð	 ó ð '2Ù(/Ð0AÓ(Bñ	Y
ØðY
àðY
ð ˜t™ðY
ð &ò	Y
óðY
ðx ‡�ØØ
'Ð	(ÙÐ+Ó,Ð-Ø%ð	 ó ð ØØ Ø&1Ù(/Ð0AÓ(Bñ_
Øð_
àð_
ð �‰:ð_
ð �D‰jð	_
ð
 �T‰zð_
ð ˜t™ð_
ð &ò_
óð_
ðD ‡�ØØ
'Ð	(ÙÐ+Ó,Ð-Øð	 ó ð '2Ù(/Ð0AÓ(BñX
ØðX
àðX
ð ðX
ð ˜t™ð	X
ð
 &òX
óðX
ðv ‡�ØØ
'Ð	(ÙÐ+Ó,Ð-Ø&ð	 ó ð '2Ù(/Ð0AÓ(BñZ
ØðZ
àðZ
ð ðZ
ð ˜t™ð	Z
ð
 &òZ
óñZ
r\   