§
    øžyjº  ã            
      ó„  — U d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZmZmZ ddlmZmZ d3d
„Zd3d„Zd4d„Zd5d„Zd6d„Zd7d„Zddddddœdddœdddœdœddgd œd!œZd"ed#<   d$d%ddd&dœdddœd'd(dœdddœd)œddgd œd!œZd"ed*<   d8d-„Zd8d.„Z ej        dd/eeeg d0d1¬2¦  «          ej        d$d/eeeg d0d1¬2¦  «         dS )9z1xAI-specific Imagine video edit and extend tools.é    )ÚannotationsN)ÚAnyÚDictÚOptional)Úload_config)Úhas_xai_video_credentialsÚrun_xai_video_editÚrun_xai_video_extend)ÚregistryÚ
tool_errorÚreturnÚboolc                 óø   — 	 t          ¦   «         } n# t          $ r Y dS w xY wt          | t          ¦  «        r|                      d¦  «        nd }t          |t          ¦  «        o|                     d¦  «        dk    S )NFÚ	video_genÚproviderÚxai)r   Ú	ExceptionÚ
isinstanceÚdictÚget)ÚcfgÚsections     ú;/home/ragecks/.hermes/hermes-agent/tools/xai_video_tools.pyÚ_configured_for_xai_videor      s   € ðÝ‰mŒmˆˆøÝð ð ð Øˆuˆuðøøøå&0°µdÑ&;Ô&;ÐEˆc�gŠg�kÑ"Ô"Ð"À€GÝ�g�tÑ$Ô$ÐI¨¯ª°ZÑ)@Ô)@ÀEÒ)IÐIs   ‚ ‘
žc                 ó:   — t          ¦   «         ot          ¦   «         S ©N)r   r   © ó    r   Ú_check_xai_video_requirementsr      s   € Ý$Ñ&Ô&ÐFÕ+DÑ+FÔ+FÐFr   Úvaluer   úOptional[str]c                ó€   — t          | t          ¦  «        r(|                      ¦   «         r|                      ¦   «         S d S r   )r   ÚstrÚstrip©r    s    r   Ú_clean_stringr&      s6   € Ý�%�ÑÔð  %§+¢+¡-¤-ð Ø�{Š{‰}Œ}ÐØˆ4r   úOptional[int]c                óˆ   — | €d S t          | t          ¦  «        rd S 	 t          | ¦  «        S # t          t          f$ r Y d S w xY wr   )r   r   ÚintÚ	TypeErrorÚ
ValueErrorr%   s    r   Ú_coerce_intr,   %   s[   € Ø€}ØˆtÝ�%�ÑÔð ØˆtðÝ�5‰zŒzÐøÝ•zÐ"ð ð ð Øˆtˆtðøøøs   �, ¬AÁ Ar#   c                 ó4   — t          j        dddddœ¦  «        S )NFzzxAI video edit/extend tools require `video_gen.provider` to be configured as `xai` via `hermes tools` -> Video Generation.Úprovider_not_configuredr   )ÚsuccessÚerrorÚ
error_typer   )ÚjsonÚdumpsr   r   r   Ú_provider_not_configured_errorr4   0   s1   € ÝŒ:ØðJð 0Øðð ñ ô ð r   Ú	video_urlc                ó~   — t          | ¦  «        }|sdS |                     ¦   «                              d¦  «        r|S dS )z9Require a public HTTPS MP4 URL (``http``/``https`` only).N)zhttp://zhttps://)r&   ÚlowerÚ
startswith)r5   Úcleaneds     r   Ú_normalize_public_video_urlr:   <   sE   € å˜IÑ&Ô&€GØð ØˆtØ‡}‚}�„×!Ò!Ð"9Ñ:Ô:ð ØˆØˆ4r   Úxai_video_editzìEdit an existing video with xAI Imagine. This is separate from `video_generate` because video editing is provider-specific. `video_url` must be the public HTTPS MP4 URL from a prior Imagine result (`video` or `public_url` on files-cdn).ÚobjectÚstringz7Instruction for how xAI should modify the source video.)ÚtypeÚdescriptionui   Public HTTPS MP4 URL of the source video â€” the `video` or `public_url` from a prior xAI Imagine result.z$Optional xAI Imagine model override.©Úpromptr5   ÚmodelrA   )r>   Ú
propertiesÚrequired)Únamer?   Ú
parametersúDict[str, Any]ÚXAI_VIDEO_EDIT_SCHEMAÚxai_video_extendzðExtend an existing video with xAI Imagine. This is separate from `video_generate` because video extension is provider-specific. `video_url` must be the public HTTPS MP4 URL from a prior Imagine result (`video` or `public_url` on files-cdn).z9Instruction for how xAI should continue the source video.ÚintegerzNDesired extension duration in seconds. xAI clamps this to its supported range.©rA   r5   ÚdurationrB   ÚXAI_VIDEO_EXTEND_SCHEMAÚargsÚ_kwc                ó–  — t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }|st          d¦  «        S |st          d¦  «        S t	          ¦   «         st          ¦   «         S t          |||¬¦  «        }t          j        |¦  «        S )NrA   r5   rB   z%prompt is required for xAI video editú_video_url must be a public HTTPS MP4 URL (the `video`/`public_url` from a prior Imagine result)r@   )	r&   r   r:   r   r   r4   r	   r2   r3   )rN   rO   rA   r5   rB   Úresults         r   Ú_handle_xai_video_editrS   �   sÏ   € Ý˜4Ÿ8š8 HÑ-Ô-Ñ.Ô.€FÝ+¨D¯HªH°[Ñ,AÔ,AÑBÔB€IÝ˜$Ÿ(š( 7Ñ+Ô+Ñ,Ô,€Eàð CÝÐAÑBÔBÐBØð 
Ýð+ñ
ô 
ð 	
õ %Ñ&Ô&ð 0Ý-Ñ/Ô/Ð/åØØØðñ ô €Fõ
 Œ:�fÑÔÐr   c                óÜ  — t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }|st	          d¦  «        S |st	          d¦  «        S t          ¦   «         st          ¦   «         S t          ||||¬¦  «        }t          j	        |¦  «        S )NrA   r5   rB   rL   z'prompt is required for xAI video extendrQ   rK   )
r&   r   r:   r,   r   r   r4   r
   r2   r3   )rN   rO   rA   r5   rB   rL   rR   s          r   Ú_handle_xai_video_extendrU   ¤   së   € Ý˜4Ÿ8š8 HÑ-Ô-Ñ.Ô.€FÝ+¨D¯HªH°[Ñ,AÔ,AÑBÔB€IÝ˜$Ÿ(š( 7Ñ+Ô+Ñ,Ô,€EÝ˜4Ÿ8š8 JÑ/Ô/Ñ0Ô0€Hàð EÝÐCÑDÔDÐDØð 
Ýð+ñ
ô 
ð 	
õ %Ñ&Ô&ð 0Ý-Ñ/Ô/Ð/å!ØØØØð	ñ ô €Fõ Œ:�fÑÔÐr   r   FÚvideo)rE   ÚtoolsetÚschemaÚhandlerÚcheck_fnÚrequires_envÚis_asyncÚemoji)r   r   )r    r   r   r!   )r    r   r   r'   )r   r#   )r5   r   r   r!   )rN   rG   rO   r   r   r#   )Ú__doc__Ú
__future__r   r2   Útypingr   r   r   Úhermes_cli.configr   Úplugins.video_gen.xair   r	   r
   Útools.registryr   r   r   r   r&   r,   r4   r:   rH   Ú__annotations__rM   rS   rU   Úregisterr   r   r   ú<module>rf      sç  ðà 7Ð 7Ð 7à "Ð "Ð "Ð "Ð "Ð "à €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðJð Jð Jð JðGð Gð Gð Gðð ð ð ðð ð ð ð	ð 	ð 	ð 	ðð ð ð ð ð	9ð ð !ØXðð ð
 !ðDðð ð !ØEðð ð
ð 
ð" ˜{Ð+ð'ð ð)ð )Ð ð ð ð ñ ðB ð	9ð ð !ØZðð ð
 !ðDðð ð "ð.ðð ð !ØEðð ð'
ð 
ð0 ˜{Ð+ð5ð ð$+ð $+Ð ð $ð $ð $ñ $ðNð ð ð ð.ð ð ð ð2 €Ô Ø	ØØ Ø"Ø*ØØØ
ð	ñ 	ô 	ð 	ð €Ô Ø	ØØ"Ø$Ø*ØØØ
ð	ñ 	ô 	ð 	ð 	ð 	r   