§
    ‰eîi  ã                  óB   — d Z ddlmZ ddlmZmZmZ h d£Zdd	„Zdd„Z	dS )zLHelpers for translating OpenAI-style tool schemas to Gemini's schema subset.é    )Úannotations)ÚAnyÚDictÚList>   ÚenumÚtypeÚanyOfÚitemsÚtitleÚformatÚdefaultÚexampleÚmaximumÚminimumÚpatternÚmaxItemsÚminItemsÚnullableÚrequiredÚ	maxLengthÚ	minLengthÚ
propertiesÚdescriptionÚmaxPropertiesÚminPropertiesÚpropertyOrderingÚschemar   ÚreturnúDict[str, Any]c                óÄ  — t          | t          ¦  «        si S i }|                      ¦   «         D ]¿\  }}|t          vrŒ|dk    r`t          |t          ¦  «        sŒ+i }|                     ¦   «         D ]-\  }}t          |t          ¦  «        sŒt          |¦  «        ||<   Œ.|||<   Œu|dk    rt          |¦  «        ||<   ŒŽ|dk    r&t          |t          ¦  «        sŒªd„ |D ¦   «         ||<   Œº|||<   ŒÀ|                     d¦  «        }|                     d¦  «        }t          |t          ¦  «        r3|dv r/t          d„ |D ¦   «         ¦  «        r| 	                    dd	¦  «         |S )
a‡  Return a Gemini-compatible copy of a tool parameter schema.

    Hermes tool schemas are OpenAI-flavored JSON Schema and may contain keys
    such as ``$schema`` or ``additionalProperties`` that Google's Gemini
    ``Schema`` object rejects.  This helper preserves the documented Gemini
    subset and recursively sanitizes nested ``properties`` / ``items`` /
    ``anyOf`` definitions.
    r   r
   r	   c                óV   — g | ]&}t          |t          ¦  «        ¯t          |¦  «        ‘Œ'S © )Ú
isinstanceÚdictÚsanitize_gemini_schema©Ú.0Úitems     ú5/home/div/.hermes/hermes-agent/agent/gemini_schema.pyú
<listcomp>z*sanitize_gemini_schema.<locals>.<listcomp>E   s@   € ð ð ð àÝ˜d¥DÑ)Ô)ðÝ& tÑ,Ô,ðð ð ó    r   r   >   ÚnumberÚbooleanÚintegerc              3  óB   K  — | ]}t          |t          ¦  «         V — Œd S )N)r#   Ústrr&   s     r)   ú	<genexpr>z)sanitize_gemini_schema.<locals>.<genexpr>W   s/   è è € Ð>Ð>¨T•:˜d¥CÑ(Ô(Ð(Ð>Ð>Ð>Ð>Ð>Ð>r+   N)
r#   r$   r
   Ú_GEMINI_SCHEMA_ALLOWED_KEYSr0   r%   ÚlistÚgetÚanyÚpop)	r   ÚcleanedÚkeyÚvalueÚpropsÚ	prop_nameÚprop_schemaÚenum_valÚtype_vals	            r)   r%   r%   $   s©  € õ �f�dÑ#Ô#ð Øˆ	à €GØ—l’l‘n”nð ð ‰
ˆˆUØÕ1Ð1Ð1ØØ�,ÒÐÝ˜e¥TÑ*Ô*ð ØØ$&ˆEØ*/¯+ª+©-¬-ð Gð GÑ&�	˜;Ý! )­SÑ1Ô1ð ØÝ#9¸+Ñ#FÔ#F��iÑ Ð Ø ˆG�C‰LØØ�'Š>ˆ>Ý1°%Ñ8Ô8ˆG�C‰LØØ�'Š>ˆ>Ý˜e¥TÑ*Ô*ð Øðð à!ðñ ô ˆG�C‰Lð
 Øˆ�‰ˆð �{Š{˜6Ñ"Ô"€HØ�{Š{˜6Ñ"Ô"€HÝ�(�DÑ!Ô!ð & hÐ2RÐ&RÐ&RÝÐ>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ð 	&Ø�KŠK˜ Ñ%Ô%Ð%à€Nr+   Ú
parametersc                ó2   — t          | ¦  «        }|sdi dœS |S )z:Normalize tool parameters to a valid Gemini object schema.Úobject)r   r   )r%   )r?   r7   s     r)   Úsanitize_gemini_tool_parametersrB   ]   s,   € õ % ZÑ0Ô0€GØð 4Ø °Ð3Ð3Ð3Ø€Nr+   N)r   r   r   r   )r?   r   r   r   )
Ú__doc__Ú
__future__r   Útypingr   r   r   r2   r%   rB   r"   r+   r)   ú<module>rF      s€   ðØ RÐ Rà "Ð "Ð "Ð "Ð "Ð "à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "ð
ð ð Ð ð46ð 6ð 6ð 6ðrð ð ð ð ð r+   