§
    éŽ’j /  ã                   ó,  — U d Z ddlZddlmZ ddlmZ ddlmZ ej	        dfej
        dfej        dfej        d	fej        d
fej        dfej        dfej        dfej        dfej        dfej        dfgZeeeef                  ed<    G d„ d¦  «        ZdS )z<Manages registration and execution of Antigravity SDK hooks.é    N)ÚAny)Útypes)ÚhooksÚ_on_session_start_hooksÚ_on_session_end_hooksÚ_pre_turn_hooksÚ_post_turn_hooksÚ_pre_tool_call_decide_hooksÚ_post_tool_call_hooksÚ_on_tool_error_hooksÚ_on_interaction_hooksÚ_on_compaction_hooksÚ_pre_step_hooks_listÚ_post_step_hooks_listÚ_HOOK_TYPE_REGISTRYc                   óè  — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d4deej                 dz  deej                 dz  deej                 dz  deej	                 dz  deej
                 dz  deej                 dz  d	eej                 dz  d
eej                 dz  deej                 dz  deej                 dz  deej                 dz  fd„Zedefd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej	        df         fd„¦   «         Zedeej
        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Zedeej        df         fd„¦   «         Z de!fd„Z"d5d„Z#d5d „Z$d!e%j&        dz  deej'        ej(        f         fd"„Z)d#ej(        d$e*ddfd%„Z+d#ej(        d&e%j,        deej'        e%j,        ej-        f         fd'„Z.d(ej-        d)e!ddfd*„Z/d(ej-        d+e0deej'        e!f         fd,„Z1d#ej(        d-e!deej'        e!ej-        f         fd.„Z2d#ej(        d/e%j3        ddfd0„Z4d#ej(        d1e%j3        ddfd2„Z5d#ej(        d1e%j3        ddfd3„Z6dS )6Ú
HookRunnerzAManages collections of specific hook types and dispatches events.NÚon_session_start_hooksÚon_session_end_hooksÚpre_turn_hooksÚpost_turn_hooksÚpre_tool_call_decide_hooksÚpost_tool_call_hooksÚon_tool_error_hooksÚon_interaction_hooksÚon_compaction_hooksÚ_pre_step_hooksÚ_post_step_hooksc                 óü   — |pg | _         |pg | _        |pg | _        |pg | _        |pg | _        |pg | _        |pg | _        |pg | _        |	pg | _        |
pg | _	        |pg | _
        t          j        ¦   «         | _        d S ©N)r   r   r   r	   r
   r   r   r   r   r   r   Ú
hooks_baseÚSessionContextÚsession_context)Úselfr   r   r   r   r   r   r   r   r   r   r   s               úRC:\Projects\DSCons\.venv\Lib\site-packages\google\antigravity\hooks\hook_runner.pyÚ__init__zHookRunner.__init__-   sª   € ð  $:Ð#?¸R€DÔ Ø!5Ð!;¸€DÔØ)Ð/¨R€DÔØ+Ð1¨r€DÔØ'AÐ'GÀR€DÔ$Ø!5Ð!;¸€DÔØ 3Ð 9°r€DÔØ!5Ð!;¸€DÔØ 3Ð 9°r€DÔØ /Ð 5°2€DÔØ!1Ð!7°R€DÔå%Ô4Ñ6Ô6€DÔÐÐó    Úreturnc                 ó¤   — t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        f¦  «        S )z)Returns True if any hooks are registered.)Úanyr   r   r   r	   r
   r   r   r   r   r   r   ©r$   s    r%   Ú	has_hookszHookRunner.has_hooksK   s]   € õ ØÔ$ØÔ"ØÔØÔØÔ(ØÔ"ØÔ!ØÔ"ØÔ!ØÔ!ØÔ"ðñ ô ð r'   .c                 ó*   — t          | j        ¦  «        S r    )Útupler   r+   s    r%   r   z!HookRunner.on_session_start_hooks\   s   € å�Ô-Ñ.Ô.Ð.r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.on_session_end_hooks`   ó   € å�Ô+Ñ,Ô,Ð,r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.pre_turn_hooksd   s   € å�Ô%Ñ&Ô&Ð&r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r	   r+   s    r%   r   zHookRunner.post_turn_hooksh   s   € å�Ô&Ñ'Ô'Ð'r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r
   r+   s    r%   r   z%HookRunner.pre_tool_call_decide_hooksl   s   € õ �Ô1Ñ2Ô2Ð2r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.post_tool_call_hooksr   r0   r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.on_tool_error_hooksv   ó   € å�Ô*Ñ+Ô+Ð+r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.on_interaction_hooksz   r0   r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner.on_compaction_hooks~   r6   r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner._pre_step_hooks‚   r6   r'   c                 ó*   — t          | j        ¦  «        S r    )r.   r   r+   s    r%   r   zHookRunner._post_step_hooks†   r0   r'   Úhookc                 óÐ   — d}t           D ]:\  }}t          ||¦  «        r%t          | |¦  «                             |¦  «         d}Œ;|st	          dt          |¦  «        › �¦  «        ‚dS )z•Registers a hook by inferring its type.

    Args:
      hook: The hook to register.

    Raises:
      ValueError: If the hook type is unknown.
    FTzUnknown hook type: N)r   Ú
isinstanceÚgetattrÚappendÚ
ValueErrorÚtype)r$   r;   Ú
registeredÚ	hook_typeÚ	attr_names        r%   Úregister_hookzHookRunner.register_hookŠ   s‚   € ð €JÝ 3ð ð Ñˆ	�9Ý	�D˜)Ñ	$Ô	$ð Ý��iÑ Ô ×'Ò'¨Ñ-Ô-Ð-Øˆ
øØð ;ÝÐ9­T°$©Z¬ZÐ9Ð9Ñ:Ô:Ð:ð;ð ;r'   c              ƒ   ób   K  — | j         D ]$}|                     | j        d¬¦  «        ƒ d{V —† Œ%dS )z8Dispatches session start events to all registered hooks.N©ÚcontextÚdata)r   Úrunr#   ©r$   r;   s     r%   Údispatch_session_startz!HookRunner.dispatch_session_startœ   sP   è è € àÔ,ð >ð >ˆØ�HŠH˜TÔ1¸ˆHÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð>ð >r'   c              ƒ   ób   K  — | j         D ]$}|                     | j        d¬¦  «        ƒ d{V —† Œ%dS )z6Dispatches session end events to all registered hooks.NrG   )r   rJ   r#   rK   s     r%   Údispatch_session_endzHookRunner.dispatch_session_end¡   sP   è è € àÔ*ð >ð >ˆØ�HŠH˜TÔ1¸ˆHÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð>ð >r'   Úpromptc              ƒ   óÖ   K  — |pd}t          j        | j        ¦  «        }| j        D ],}|                     ||¬¦  «        ƒ d{V —†}|j        s||fc S Œ-t          j        d¬¦  «        |fS )z´Dispatches pre-turn events.

    Args:
      prompt: The user prompt, which may be text, multimodal content, or None.

    Returns:
      A tuple of (HookResult, TurnContext).
    Ú rG   NT©Úallow)r!   ÚTurnContextr#   r   rJ   rS   Ú
HookResult)r$   rO   Úturn_contextr;   Úress        r%   Údispatch_pre_turnzHookRunner.dispatch_pre_turn§   s–   è è € ð ˆ\�r€FÝÔ)¨$Ô*>Ñ?Ô?€LØÔ$ð !ð !ˆØ—(’( <°f�(Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=€cØŒYð !Ø�LÐ Ð Ð Ð ð!åÔ  tÐ,Ñ,Ô,¨lÐ:Ð:r'   rV   Úresponsec              ƒ   óX   K  — | j         D ]}|                     ||¬¦  «        ƒ d{V —† Œ dS )zƒDispatches post-turn events.

    Args:
      turn_context: The current turn context.
      response: The model response text.
    rG   N)r	   rJ   )r$   rV   rY   r;   s       r%   Údispatch_post_turnzHookRunner.dispatch_post_turnº   sO   è è € ð Ô%ð :ð :ˆØ�HŠH˜\°ˆHÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ð:ð :r'   Ú	tool_callc              ƒ   óÎ  K  — t          j        |¦  «        }|}t          j        d¬¦  «        }d}| j        D ]~}|                     ||¬¦  «        ƒ d{V —†}|j        s|||fc S |}|j        �Ht          |j        ¦  «        }	|	 	                    |j        ¦  «         | 
                    d|	i¬¦  «        }d}Œ|r*| 
                    dt          |j        ¦  «        i¬¦  «        }|||fS )	zÓDispatches pre-tool call events.

    Args:
      turn_context: The current turn context.
      tool_call: The tool call to evaluate.

    Returns:
      A tuple of (HookResult, ToolCall, OperationContext).
    TrR   FrG   NÚargs)ÚupdateÚmodified_args)r!   ÚOperationContextrU   r
   rJ   rS   r`   Údictr^   r_   Ú
model_copy)
r$   rV   r\   Ú
op_contextÚcurrent_tool_callÚlast_allow_resultÚhad_modificationsr;   rW   Úmerged_argss
             r%   Údispatch_pre_tool_callz!HookRunner.dispatch_pre_tool_callÇ   s:  è è € õ  Ô,¨\Ñ:Ô:€JØ!ÐÝ"Ô-°DÐ9Ñ9Ô9ÐØÐàÔ0ð !ð !ˆØ—(’( :Ð4E�(ÑFÔFÐFÐFÐFÐFÐFÐF€cØŒYð 2ØÐ% zÐ1Ð1Ð1Ð1àÐØ	Ô	Ð	&ÝÐ,Ô1Ñ2Ô2ˆØ×Ò˜3Ô,Ñ-Ô-Ð-Ø-×8Ò8Ø˜KÐ(ð 9ñ 
ô 
Ðð !Ðøàð Ø+×6Ò6Ø!¥4Ð(9Ô(>Ñ#?Ô#?Ð@ð 7ñ ô Ðð Ð/°Ð;Ð;r'   rd   Úresultc              ƒ   óX   K  — | j         D ]}|                     ||¬¦  «        ƒ d{V —† Œ dS )z�Dispatches post-tool call events.

    Args:
      op_context: The current operation context.
      result: The result of the tool call.
    rG   N)r   rJ   )r$   rd   rj   r;   s       r%   Údispatch_post_tool_callz"HookRunner.dispatch_post_tool_callñ   sO   è è € ð Ô*ð 6ð 6ˆØ�HŠH˜Z¨fˆHÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð6ð 6r'   Úerrorc              ƒ   óJ  K  — | j         D ]ƒ}	 |                     ||¬¦  «        ƒ d{V —†}|�t          j        d¬¦  «        |fc S Œ<# t          $ r;}t          j        d¦  «         t          j        dd|› �¬¦  «        dfcY d}~c S d}~ww xY wt          j        d¬¦  «        dfS )	z¾Dispatches tool error events.

    Args:
      op_context: The current operation context.
      error: The raised exception.

    Returns:
      A tuple of (HookResult, adjusted_error).
    rG   NTrR   z#Critical failure in OnToolErrorHookFzError recovery failed: ©rS   Úmessage)r   rJ   r!   rU   Ú	ExceptionÚloggingÚ	exception)r$   rd   rm   r;   rW   Úes         r%   Údispatch_on_tool_errorz!HookRunner.dispatch_on_tool_errorý   s  è è € ð Ô)ð 
ð 
ˆð
Ø—H’H Z°e�HÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<ˆØˆ?ÝÔ&¨TÐ2Ñ2Ô2°CÐ7Ð
7Ð
7Ð
7ð øåð 
ð 
ð 
ÝÔÐ?Ñ@Ô@Ð@åÔ!ØÐ%B¸qÐ%BÐ%Bðñ ô ð ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøõ Ô  uÐ-Ñ-Ô-¨tÐ3Ð3s   �5AÁ
BÁ.BÁ>BÂBÚinteraction_specc              ƒ   óæ   K  — t          j        |¦  «        }| j        D ];}|                     ||¬¦  «        ƒ d{V —†}|�t          j        d¬¦  «        ||fc S Œ<t          j        dd¬¦  «        d|fS )zåDispatches interaction events.

    Args:
      turn_context: The current turn context.
      interaction_spec: The spec for the requested interaction.

    Returns:
      A tuple of (HookResult, response, OperationContext).
    rG   NTrR   Fz'No interaction hook handled the requestro   )r!   ra   r   rJ   rU   )r$   rV   rv   rd   r;   rW   s         r%   Údispatch_interactionzHookRunner.dispatch_interaction  s®   è è € õ Ô,¨\Ñ:Ô:€JØÔ*ð Bð BˆØ—(’( :Ð4D�(ÑEÔEÐEÐEÐEÐEÐEÐE€cØ	ˆÝÔ$¨4Ð0Ñ0Ô0°#°zÐAÐAÐAÐAð 
õ 	ÔØÐ!Jð	
ñ 	
ô 	
ð 	Øðð r'   rI   c              ƒ   ó€   K  — t          j        |¦  «        }| j        D ]}|                     ||¬¦  «        ƒ d{V —† Œ dS )zˆDispatches compaction events.

    Args:
      turn_context: The current turn context.
      data: Data about the compaction event.
    rG   N)r!   ra   r   rJ   )r$   rV   rI   rd   r;   s        r%   Údispatch_compactionzHookRunner.dispatch_compaction3  s_   è è € õ Ô,¨\Ñ:Ô:€JØÔ)ð 4ð 4ˆØ�HŠH˜Z¨dˆHÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð4ð 4r'   Ústepc              ƒ   óX   K  — | j         D ]}|                     ||¬¦  «        ƒ d{V —† Œ dS )z2Dispatches internal pre-step observability events.rG   N)r   rJ   ©r$   rV   r{   r;   s       r%   Údispatch_pre_stepzHookRunner.dispatch_pre_stepA  sO   è è € ð Ô$ð 6ð 6ˆØ�HŠH˜\°ˆHÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð6ð 6r'   c              ƒ   óX   K  — | j         D ]}|                     ||¬¦  «        ƒ d{V —† Œ dS )z3Dispatches internal post-step observability events.rG   N)r   rJ   r}   s       r%   Údispatch_post_stepzHookRunner.dispatch_post_stepH  sO   è è € ð Ô%ð 6ð 6ˆØ�HŠH˜\°ˆHÑ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð6ð 6r'   )NNNNNNNNNNN)r(   N)7Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úlistr!   ÚOnSessionStartHookÚOnSessionEndHookÚPreTurnHookÚPostTurnHookÚPreToolCallDecideHookÚPostToolCallHookÚOnToolErrorHookÚOnInteractionHookÚOnCompactionHookÚ_PreStepHookÚ_PostStepHookr&   ÚpropertyÚboolr,   r.   r   r   r   r   r   r   r   r   r   r   r   r   rE   rL   rN   r   ÚContentrU   rT   rX   Ústrr[   ÚToolCallra   ri   rl   rq   ru   rx   ÚSteprz   r~   r€   © r'   r%   r   r   *   sò  € € € € € ØIÐIð LPØGKØ<@Ø>Bð ØGKØEIØHLØFJØ>BØ@Dð7ð 7à" :Ô#@ÔAÀDÑHð7ð ! Ô!<Ô=ÀÑDð7ð ˜:Ô1Ô2°TÑ9ð	7ð
 ˜JÔ3Ô4°tÑ;ð7ð ˆzÔ/Ô
0°4Ñ
7ð7ð ! Ô!<Ô=ÀÑDð7ð   
Ô :Ô;¸dÑBð7ð ! Ô!=Ô>ÀÑEð7ð   
Ô ;Ô<¸tÑCð7ð ˜JÔ3Ô4°tÑ;ð7ð ˜ZÔ5Ô6¸Ñ=ð7ð 7ð 7ð 7ð< ð˜ð ð ð ñ „8ðð  ð/ e¨JÔ,IÈ3Ð,NÔ&Oð /ð /ð /ñ „8ð/ð ð- E¨*Ô*EÀsÐ*JÔ$Kð -ð -ð -ñ „8ð-ð ð'˜e JÔ$:¸CÐ$?Ô@ð 'ð 'ð 'ñ „8ð'ð ð(˜u ZÔ%<¸cÐ%AÔBð (ð (ð (ñ „8ð(ð ð3àˆZÔ-¨sÐ2Ô3ð3ð 3ð 3ñ „8ð3ð
 ð- E¨*Ô*EÀsÐ*JÔ$Kð -ð -ð -ñ „8ð-ð ð, 5¨Ô)CÀSÐ)HÔ#Ið ,ð ,ð ,ñ „8ð,ð ð- E¨*Ô*FÈÐ*KÔ$Lð -ð -ð -ñ „8ð-ð ð, 5¨Ô)DÀcÐ)IÔ#Jð ,ð ,ð ,ñ „8ð,ð ð,˜u ZÔ%<¸cÐ%AÔBð ,ð ,ð ,ñ „8ð,ð ð-  jÔ&>ÀÐ&CÔ Dð -ð -ð -ñ „8ð-ð; ð ;ð ;ð ;ð ;ð$>ð >ð >ð >ð
>ð >ð >ð >ð;Ø”M DÑ(ð;àˆZÔ" JÔ$:Ð:Ô;ð;ð ;ð ;ð ;ð&
:Ø$Ô0ð
:Ø<?ð
:àð
:ð 
:ð 
:ð 
:ð(<àÔ*ð(<ð ”ð(<ð ØÔ˜Uœ^¨ZÔ-HÐHôð	(<ð (<ð (<ð (<ðT
6Ø"Ô3ð
6Ø=@ð
6àð
6ð 
6ð 
6ð 
6ð4Ø"Ô3ð4Ø<Eð4àˆZÔ" CÐ'Ô(ð4ð 4ð 4ð 4ð8Ø$Ô0ðØDGðàˆZÔ" C¨Ô)DÐDÔEðð ð ð ð44Ø$Ô0ð4Ø8=¼
ð4àð4ð 4ð 4ð 4ð6Ø$Ô0ð6Ø8=¼
ð6àð6ð 6ð 6ð 6ð6Ø$Ô0ð6Ø8=¼
ð6àð6ð 6ð 6ð 6ð 6ð 6r'   r   )r„   rr   Útypingr   Úgoogle.antigravityr   Úgoogle.antigravity.hooksr   r!   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r   r…   r.   rA   r”   Ú__annotations__r   r—   r'   r%   ú<module>rœ      s9  ðð CÐ BÐ Bà €€€Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð Ô"Ð$=Ð>ØÔ Ð"9Ð:ØÔÐ.Ð/ØÔÐ0Ð1ØÔ%Ð'DÐEØÔ Ð"9Ð:ØÔÐ!7Ð8ØÔ!Ð#:Ð;ØÔ Ð"8Ð9ØÔÐ4Ð5ØÔÐ6Ð7ð/Ð �T˜%  c 	Ô*Ô+ð ð ñ ðc6ð c6ð c6ð c6ð c6ñ c6ô c6ð c6ð c6ð c6r'   