
    AHjd                        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 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jT                  f      de
e(   def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jT                  f      de
e(   deeeeeef   f   f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jT                  f      de
e(   def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jT                  f      de
e(   deeeeeef   f   fd       Z/e#	 	 	 	 d$de(de
ee(ef      de
ee(ef      de
ee)ejT                  f      de
e(   defd       Z0e#	 	 	 	 d$de(de
ee(ef      de
ee(ef      de
ee)ejT                  f      de
e(   deeeeeef   f   fd        Z1e#	 	 	 	 d$de(de
ee(ef      de
ee(ef      de
ee)ejT                  f      de
e(   defd!       Z2e#	 	 	 	 d$de(de
ee(ef      de
ee(ef      de
ee)ejT                  f      de
e(   deeeeeef   f   fd"       Z3y)%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                  4    t         ddlm}   |        a t         S )zGLazy initialization of LiteLLM skills handler to avoid import overhead.r   "LiteLLMSkillsTransformationHandler)_litellm_skills_handler0litellm.llms.litellm_proxy.skills.transformationr   r   s    K/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/skills/main.py_get_litellm_skills_handlerr   %   s!     &	
 #E"F""    filesdisplay_titleextra_headersextra_query
extra_bodytimeoutcustom_llm_providerreturnc                   K   t               }	 t        j                         }	d|d<   t        t        f| ||||||d|}
t        j                         }t        |j                  |
      }|	j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)a=  
    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%   original_exception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es                   r   r(   r(   1   s     6 J 
%%'"&

''#! 3

 

 &&(#CGGT2"2249JKK}-**H  %H L +  
$$ 3 (
 	

Y   CA0B, >B(?B, B*B, #C$B, 'C(B, *B, ,	C5CCCc                    t               }	 |j                  d      }	|j                  dd      }
|j                  dd      du }t        di |}|d}i }|||d<   | | |d	<   |r|j	                  |       |t
        j                  j                  k(  rBt               j                  || |r|j                  d
      nd|j                  d      ||	|
      S t        j                  t        j
                  |            }|t        d|       |xs i }|j                  ||      }|j                  |||      }ddlm} |j%                  |j&                        }|j)                  |d      }|	j+                  |d|d|
i|       t,        j                  ||||||	||xs t.        ||j                  d      |j                  d            }|S # t0        $ r}t        j2                  d||||      d}~ww xY w)a6  
    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   rH   rI   	_is_asynclogging_objrF   providerz"CREATE skill is not supported for headerslitellm_params)create_requestrP   rO   r   AnthropicModelInfoskills)api_baseendpointr:   r*   optional_paramsrP   r%   r   shared_session)urlrequest_bodyskills_api_provider_configr%   rP   rK   r!   r$   rJ   r   rY   r)    )r.   getpopr   updater   LITELLM_PROXYvaluer   create_skill_handlerr   get_provider_skills_api_configr8   
ValueErrorvalidate_environmenttransform_create_skill_request#litellm.llms.anthropic.common_utilsrS   get_api_baserU   get_complete_urlupdate_from_kwargsbase_llm_http_handlerr
   r7   r9   )r   r    r!   r"   r#   r$   r%   r:   r;   rE   rF   rJ   rP   rQ   r\   rO   r[   rS   rU   rZ   rA   rB   s                         r   r1   r1   p   sp   6 Jd
17<Q1R)/4Et)LJJ6$>	 .77 &"- .0$.;N?+&+N7# !!*- ,"<"<"B"BB.0EE+7A
3t

9-#/ / F   "@@))*=>
 	# &-ABUAVWXX  %2,AAN B 

 2PP)) Q 
 	K%22>3J3JK(99 : 

 	..(!? !4 	/ 	
 )==%'A 3)+!.::h'!::&67 > 
  
$$ 3 (
 	

s   CG C9G 	G6G11G6limitpagesourcec                   K   t               }	 t        j                         }	d|d<   t        t        f| ||||||d|}
t        j                         }t        |j                  |
      }|	j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)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)rm   rn   ro   r!   r"   r$   r%   Nr)   )r.   r/   r0   r   list_skillsr2   r3   r4   r5   r6   r7   r8   r9   )rm   rn   ro   r!   r"   r$   r%   r:   r;   r<   r=   r>   r?   r@   rA   rB   s                   r   rq   rq      s     6 J 
%%'!%~

'# 3

 

 &&(#CGGT2"2249JKK}-**H  %H L +  
$$ 3 (
 	

rC   c                 ^   t               }	 |j                  d      }	|j                  dd      }
|j                  dd      du }t        di |}|d}|t        j
                  j                  k(  r"t               j                  | xs dd	||	|

      S t        j                  t        j                  |            }|t        d|       i }| | |d<   |||d<   |||d<   |r|j                  |       |xs i }|j                  ||      }|j                  |||      \  }}|	j!                  |d|d|
i|       t"        j                  ||||||	||xs t$        ||j                  d      |j                  d            }|S # t&        $ r}t        j(                  d||||      d}~ww xY 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
    rE   rF   Nrq   FTrG      r   )rm   offsetrJ   rK   rF   rL   z!LIST skills is not supported for rm   rn   ro   rN   )list_paramsrP   rO   rW   r   rY   )rZ   query_paramsr\   r%   rP   rK   r!   r$   rJ   r   rY   r)   r]   )r.   r^   r_   r   r   ra   rb   r   list_skills_handlerr   rd   r8   re   r`   rf   transform_list_skills_requestrk   rl   r
   r7   r9   )rm   rn   ro   r!   r"   r$   r%   r:   r;   rE   rF   rJ   rP   r\   rv   rO   rZ   rw   rA   rB   s                       r   rr   rr   2  s7   6 J\
17<Q1R)/4Et)LJJ~u5=	 .77 &"- ,"<"<"B"BB.0DDkr#/ / E   "@@))*=>
 	# &-@AT@UVWW )+#(K "&K$*K! {+  %2,AAN B 

 7TT#) U 
\ 	..(!? !4 	/ 	
 )<<%'A 3)+!.::h'!::&67 = 
  
$$ 3 (
 	

s   BF C2F 	F,F''F,skill_idc           	        K   t               }	 t        j                         }d|d<   t        t        f| ||||d|}t        j                         }	t        |	j                  |      }
|j                  d|
       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)ar  
    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rz   r!   r"   r$   r%   Nr)   )r.   r/   r0   r   	get_skillr2   r3   r4   r5   r6   r7   r8   r9   rz   r!   r"   r$   r%   r:   r;   r<   r=   r>   r?   r@   rA   rB   s                 r   r|   r|     s     . J
%%'#|
'# 3
 
 &&(#CGGT2"2249JKK}-**H  %H L +  
$$ 3 (
 	

Y   CA.B* <B&=B* B(B* !C"B* %C&B* (B* *	C3CCCc                 V   t               }	 |j                  d      }|j                  dd      }|j                  dd      du }	t        di |}
|d}|t        j
                  j                  k(  rt               j                  | |	||      S t        j                  t        j                  |      	      }|t        d
|       |xs i }|j                  ||
      }ddlm} |j!                  |
j"                        }|j%                  | |xs t&        |
|      \  }}|j)                  |dd| id|i|       t*        j                  ||||
|||xs t,        |	|j                  d      |j                  d      
      }|S # t.        $ r}t        j0                  d||||      d}~ww xY w)ak  
    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
    rE   rF   Nr|   FTrG   rz   rJ   rK   rF   rL   zGET skill is not supported for rN   r   rR   rz   rU   rP   rO   rz   rW   r   rY   
rZ   r\   r%   rP   rK   r!   r$   rJ   r   rY   r)   r]   )r.   r^   r_   r   r   ra   rb   r   get_skill_handlerr   rd   r8   re   rf   rh   rS   ri   rU   transform_get_skill_requestDEFAULT_ANTHROPIC_API_BASErk   rl   r
   r7   r9   rz   r!   r"   r$   r%   r:   r;   rE   rF   rJ   rP   r\   rO   rS   rU   rZ   rA   rB   s                     r   r~   r~     s   . JS
17<Q1R)/4Et)LJJ|U3t;	 .77 &"- ,"<"<"B"BB.0BB!#/ /	 C   "@@))*=>
 	# &->?R>STUU  %2,AAN B 

 	K%22>3J3JK 2MM;!;)	 N 
W 	..'2!? !4 	/ 	
 )::'A 3)+!.::h'!::&67 ; 
  
$$ 3 (
 	

   A?F  C3F   	F(	F##F(c           	        K   t               }	 t        j                         }d|d<   t        t        f| ||||d|}t        j                         }	t        |	j                  |      }
|j                  d|
       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)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_skillr}   Nr)   )r.   r/   r0   r   delete_skillr2   r3   r4   r5   r6   r7   r8   r9   r   s                 r   r   r   T  s     . J
%%'"&
'# 3
 
 &&(#CGGT2"2249JKK}-**H  %H L +  
$$ 3 (
 	

r   c                 V   t               }	 |j                  d      }|j                  dd      }|j                  dd      du }	t        di |}
|d}|t        j
                  j                  k(  rt               j                  | |	||      S t        j                  t        j                  |      	      }|t        d
|       |xs i }|j                  ||
      }ddlm} |j!                  |
j"                        }|j%                  | |xs t&        |
|      \  }}|j)                  |dd| id|i|       t*        j                  ||||
|||xs t,        |	|j                  d      |j                  d      
      }|S # t.        $ r}t        j0                  d||||      d}~ww xY w)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
    rE   rF   Nr   FTrG   r   rL   z"DELETE skill is not supported for rN   r   rR   r   rz   rW   r   rY   r   r)   r]   )r.   r^   r_   r   r   ra   rb   r   delete_skill_handlerr   rd   r8   re   rf   rh   rS   ri   rU   transform_delete_skill_requestr   rk   rl   r
   r7   r9   r   s                     r   r   r     s   . JS
17<Q1R)/4Et)LJJ6$>	 .77 &"- ,"<"<"B"BB.0EE!#/ /	 F   "@@))*=>
 	# &-ABUAVWXX  %2,AAN B 

 	K%22>3J3JK 2PP;!;)	 Q 
W 	..'2!? !4 	/ 	
 )=='A 3)+!.::h'!::&67 > 
  
$$ 3 (
 	

r   )NNNNNNN)NNNN)4__doc__r/   r2   	functoolsr   typingr   r   r   r   r   r	   httpxr8   litellm.constantsr
   *litellm.litellm_core_utils.litellm_loggingr   LiteLLMLoggingObj+litellm.llms.base_llm.skills.transformationr   *litellm.llms.custom_httpx.llm_http_handlerr   #litellm.types.llms.anthropic_skillsr   r   r   r   r   litellm.types.routerr   litellm.types.utilsr   litellm.utilsr   r   rl   r   r   r   strfloatTimeoutr(   r1   intrq   rr   r|   r~   r   r   r]   r   r   <module>r      s  
    > >   - S K I  6 , 7 +, ;   	# !%#'.2,0+/59)-;
DI;
C=;
 DcN+;
 $sCx.)	;

 c3h(;
 eE5==012;
 "#;
 ;
 ;
| !%#'.2,0+/59)-
DI
C=
 DcN+
 $sCx.)	

 c3h(
 eE5==012
 "#
 5)CeO,,-
 
D  .2,059)-;
C=;

3-;
 SM;
 DcN+	;

 $sCx.);
 eE5==012;
 "#;
 ;
 ;
|  .2,059)-w
C=w

3-w
 SMw
 DcN+	w

 $sCx.)w
 eE5==012w
 "#w
 yc3E)EFFGw
 w
t  /3,059)-5
5
DcN+5
 $sCx.)5
 eE5==012	5

 "#5
 5
 5
p  /3,059)-j
j
DcN+j
 $sCx.)j
 eE5==012	j

 "#j
 5)CeO,,-j
 j
Z  /3,059)-5
5
DcN+5
 $sCx.)5
 eE5==012	5

 "#5
 5
 5
p  /3,059)-j
j
DcN+j
 $sCx.)j
 eE5==012	j

 "#j
 	#s4G*G HHIj
 j
r   