
    i                     F    d Z ddlmZmZ ddlmZmZ e G d d             Zy)z1Provider-agnostic tool specification dataclasses.    )	dataclassfield)AnyDictc                       e Zd ZU dZeed<   dZeed<    ee      Z	e
eef   ed<    ee      Ze
eef   ed<   de
eef   fd	Zde
eef   fd
Zy)ToolSpecz*Generic representation of a callable tool.name description)default_factory
parametersmetadatareturnc                 Z    d| j                   | j                  | j                  xs di ddS )z0Convert to OpenAI Responses API function schema.functionobjecttype
properties)r   r	   r   r   r	   r   r   selfs    =/Users/bowang/.openclaw/workspace/ChatDev/entity/tool_spec.pyto_openai_dictzToolSpec.to_openai_dict   s2     II++//Qhb-Q	
 	
    c                 X    | j                   | j                  | j                  xs di ddS )z-Convert to Gemini FunctionDeclaration schema.r   r   r   r   r   s    r   to_gemini_functionzToolSpec.to_gemini_function   s/     II++//Qhb-Q
 	
r   N)__name__
__module____qualname____doc__str__annotations__r   r   dictr   r   r   r   r   r    r   r   r   r      sj    4
IK!&t!<JS#X<$T:Hd38n:
S#X 

DcN 
r   r   N)r!   dataclassesr   r   typingr   r   r   r%   r   r   <module>r(      s'    7 (  
 
 
r   