
    i                     |    d Z ddlmZ ddlmZmZmZ ddlmZ dde	e   de
dee   fdZdd	ee
ef   de
dee   fd
Zy)z%Utilities for skill schema conversion    )Any)	BaseModelFieldcreate_model)ParameterSchema
parameters
model_namereturnc                 &   | st        |t              S i }| D ]  }t        }|j                  }|dk(  rt        }nO|dk(  rt        }nC|dk(  rt
        }n7|dk(  rt        t        t        f   }n|dk(  rt        t           }n|dk(  rt        }|j                  |j                  nd	}|s|dz  }i }|j                  r|j                  |d
<   |r|t        di |f||j                  <   |t        dddi|f||j                  <    t        |fdt        i|S )a  Convert a list of ParameterSchema to a pydantic model for structured output

	Args:
		parameters: List of parameter schemas from the skill API
		model_name: Name for the generated pydantic model

	Returns:
		A pydantic BaseModel class with fields matching the parameter schemas
	__base__stringnumberbooleanobjectarraycookieNTdescriptiondefaultr    )r   r   strtypefloatbooldictr   listrequiredr   r   name)r   r	   fieldsparampython_type
param_typeis_requiredfield_kwargss           b/mnt/e/genesis-system/.venvs/browser-army/lib/python3.12/site-packages/browser_use/skills/utils.pyconvert_parameters_to_pydanticr&   
   s.    		j9	55 "KU+zz*8;X;Y;Xc3h;Wc;X; #(.."<$+ 
t#; ,
!&!2!2<$e&;l&;<6%**$e&ID&IL&IJ6%**E"KJ 	Z>)>v>>    schemac                    | rd| vrt        |t              S i }| j                  di       }t        | j                  dg             }|j	                         D ]T  \  }}|j                  dd      }|j                  d      }t
        }	|dk(  rt
        }	n|dk(  rt        }	n|dk(  rt        }	n|d	k(  rt        }	n|d
k(  rt        t
        t        f   }	n|dk(  r|j                  di       }
|
j                  dd      }|dk(  rt        t
           }	nf|dk(  rt        t           }	nS|dk(  rt        t           }	n@|d	k(  rt        t           }	n-|d
k(  rt        t        t
        t        f      }	nt        t           }	||v }|s|	dz  }	i }|r||d<   |r|	t        di |f||<   C|	t        dddi|f||<   W t        |fdt        i|S )ak  Convert a JSON schema to a pydantic model

	Args:
		schema: JSON schema dictionary (OpenAPI/JSON Schema format)
		model_name: Name for the generated pydantic model

	Returns:
		A pydantic BaseModel class matching the schema

	Note:
		This is a simplified converter that handles basic types.
		For complex nested schemas, consider using datamodel-code-generator.
	
propertiesr   r   r   r   r   r   integerr   r   r   itemsNr   r   r   )r   r   getsetr,   r   r   intr   r   r   r   r   )r(   r	   r   r*   required_fields
field_namefield_schemafield_type_strfield_descriptionr!   items_schema
items_typer#   r$   s                 r%   convert_json_schema_to_pydanticr7   B   s    	,f,	j9	55jjr*vzz*b12!+!1!1!3 1KZ##FH5."&&}5 +x;!;";";!c3h; ""7B/<  2:Hs)Khu+Kis)Kit*KhtCH~&Ks)K o-+	t#; ,!2<$e&;l&;<6*$e&ID&IL&IJ6*c1Kh 	Z>)>v>>r'   N)SkillParameters)SkillOutput)__doc__typingr   pydanticr   r   r   browser_use.skills.viewsr   r   r   r   r&   r   r7   r   r'   r%   <module>r>      si    +  3 3 45?tO/D 5?RU 5?nrs|n} 5?pJ?DcN J? J?`den`o J?r'   