§
    ­eîi'*  ã            	       ó  — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ erddlmZ  G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdedef         dej        dej        ej        z  fd„Zdedef         dej        dej        ej        z  fd„Zdedef         dej        dz  dej         ej        z  fd„Z!dedef         dej"        dej#        ej        z  fd„Z$dedef         dej%        dej&        dej'        ej        z  fd„Z(dedef         dej)        dej&        dej'        ej        z  fd„Z*e G d „ d!¦  «        ¦   «         Z+e(Z,e*Z-dS )"a  
Experimental task handler protocols for server -> client requests.

This module provides Protocol types and default handlers for when servers
send task-related requests to clients (the reverse of normal client -> server flow).

WARNING: These APIs are experimental and may change without notice.

Use cases:
- Server sends task-augmented sampling/elicitation request to client
- Client creates a local task, spawns background work, returns CreateTaskResult
- Server polls client's task status via tasks/get, tasks/result, etc.
é    )Ú	dataclassÚfield)ÚTYPE_CHECKINGÚAnyÚProtocol)ÚTypeAdapterN)ÚRequestContext)ÚRequestResponder)ÚClientSessionc                   óZ   — e Zd ZdZdedef         dej        dej        ej	        z  fd„Z
dS )ÚGetTaskHandlerFnTzrHandler for tasks/get requests from server.

    WARNING: This is experimental and may change without notice.
    Úcontextr   ÚparamsÚreturnc              ƒ   ó
   K  — d S ©N© ©Úselfr   r   s      úi/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/mcp/client/experimental/task_handlers.pyÚ__call__zGetTaskHandlerFnT.__call__"   s   è è € ð 14°ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   ÚtypesÚGetTaskRequestParamsÚGetTaskResultÚ	ErrorDatar   r   r   r   r   r      se   € € € € € ðð ð
4à °Ð 4Ô5ð4ð Ô*ð4ð 
Ô	˜uœÑ	.ð	4ð 4ð 4ð 4ð 4ð 4r   r   c                   óZ   — e Zd ZdZdedef         dej        dej        ej	        z  fd„Z
dS )ÚGetTaskResultHandlerFnTzuHandler for tasks/result requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   r   c              ƒ   ó
   K  — d S r   r   r   s      r   r   z GetTaskResultHandlerFnT.__call__/   s   è è € ð 8;°sr   N)r   r   r   r   r	   r   r   ÚGetTaskPayloadRequestParamsÚGetTaskPayloadResultr    r   r   r   r   r"   r"   )   se   € € € € € ðð ð
;à °Ð 4Ô5ð;ð Ô1ð;ð 
Ô	# e¤oÑ	5ð	;ð ;ð ;ð ;ð ;ð ;r   r"   c                   ó`   — e Zd ZdZdedef         dej        dz  dej        ej	        z  fd„Z
dS )ÚListTasksHandlerFnTzsHandler for tasks/list requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   Nr   c              ƒ   ó
   K  — d S r   r   r   s      r   r   zListTasksHandlerFnT.__call__<   s   è è € ð 36°#r   )r   r   r   r   r	   r   r   ÚPaginatedRequestParamsÚListTasksResultr    r   r   r   r   r'   r'   6   sj   € € € € € ðð ð
6à °Ð 4Ô5ð6ð Ô,¨tÑ3ð6ð 
Ô	 ¤Ñ	0ð	6ð 6ð 6ð 6ð 6ð 6r   r'   c                   óZ   — e Zd ZdZdedef         dej        dej        ej	        z  fd„Z
dS )ÚCancelTaskHandlerFnTzuHandler for tasks/cancel requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   r   c              ƒ   ó
   K  — d S r   r   r   s      r   r   zCancelTaskHandlerFnT.__call__I   s   è è € ð 47°3r   N)r   r   r   r   r	   r   r   ÚCancelTaskRequestParamsÚCancelTaskResultr    r   r   r   r   r,   r,   C   se   € € € € € ðð ð
7à °Ð 4Ô5ð7ð Ô-ð7ð 
Ô	 %¤/Ñ	1ð	7ð 7ð 7ð 7ð 7ð 7r   r,   c            	       óh   — e Zd ZdZdedef         dej        dej        dej	        ej
        z  fd„ZdS )	ÚTaskAugmentedSamplingFnTaR  Handler for task-augmented sampling/createMessage requests from server.

    When server sends a CreateMessageRequest with task field, this callback
    is invoked. The callback should create a task, spawn background work,
    and return CreateTaskResult immediately.

    WARNING: This is experimental and may change without notice.
    r   r   r   Útask_metadatar   c              ƒ   ó
   K  — d S r   r   ©r   r   r   r2   s       r   r   z!TaskAugmentedSamplingFnT.__call__Z   ó   è è € ð
 47°3r   N)r   r   r   r   r	   r   r   ÚCreateMessageRequestParamsÚTaskMetadataÚCreateTaskResultr    r   r   r   r   r1   r1   P   sr   € € € € € ðð ð7à °Ð 4Ô5ð7ð Ô0ð7ð Ô)ð	7ð
 
Ô	 %¤/Ñ	1ð7ð 7ð 7ð 7ð 7ð 7r   r1   c            	       óh   — e Zd ZdZdedef         dej        dej        dej	        ej
        z  fd„ZdS )	ÚTaskAugmentedElicitationFnTaH  Handler for task-augmented elicitation/create requests from server.

    When server sends an ElicitRequest with task field, this callback
    is invoked. The callback should create a task, spawn background work,
    and return CreateTaskResult immediately.

    WARNING: This is experimental and may change without notice.
    r   r   r   r2   r   c              ƒ   ó
   K  — d S r   r   r4   s       r   r   z$TaskAugmentedElicitationFnT.__call__l   r5   r   N)r   r   r   r   r	   r   r   ÚElicitRequestParamsr7   r8   r    r   r   r   r   r:   r:   b   sr   € € € € € ðð ð7à °Ð 4Ô5ð7ð Ô)ð7ð Ô)ð	7ð
 
Ô	 %¤/Ñ	1ð7ð 7ð 7ð 7ð 7ð 7r   r:   r   r   r   r   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nztasks/get not supported©ÚcodeÚmessage©r   r    ÚMETHOD_NOT_FOUND©r   r   s     r   Údefault_get_task_handlerrD   t   s*   è è € õ Œ?ÝÔ#Ø)ðñ ô ð r   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nztasks/result not supportedr>   rA   rC   s     r   Údefault_get_task_result_handlerrF   ~   ó*   è è € õ Œ?ÝÔ#Ø,ðñ ô ð r   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nztasks/list not supportedr>   rA   rC   s     r   Údefault_list_tasks_handlerrI   ˆ   s*   è è € õ Œ?ÝÔ#Ø*ðñ ô ð r   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nztasks/cancel not supportedr>   rA   rC   s     r   Údefault_cancel_task_handlerrK   ’   rG   r   r2   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nz%Task-augmented sampling not supportedr>   ©r   r    ÚINVALID_REQUEST©r   r   r2   s      r   Údefault_task_augmented_samplingrP   œ   s*   è è € õ
 Œ?ÝÔ"Ø7ðñ ô ð r   c              ƒ   óF   K  — t          j        t           j        d¬¦  «        S )Nz(Task-augmented elicitation not supportedr>   rM   rO   s      r   Ú"default_task_augmented_elicitationrR   §   s*   è è € õ
 Œ?ÝÔ"Ø:ðñ ô ð r   c                   ón  — e Zd ZU dZ ee¬¦  «        Zeed<    ee	¬¦  «        Z
eed<    ee¬¦  «        Zeed<    ee¬¦  «        Zeed<    ee¬¦  «        Zeed<    ee¬¦  «        Zeed<   d	ej        d
z  fd„Zedej        d	efd„¦   «         Zdede f         de!ej        ej"        f         d	d
fd„Z#d
S )ÚExperimentalTaskHandlersaB  Container for experimental task handlers.

    Groups all task-related handlers that handle server -> client requests.
    This includes both pure task requests (get, list, cancel, result) and
    task-augmented request handlers (sampling, elicitation with task field).

    WARNING: These APIs are experimental and may change without notice.

    Example:
        handlers = ExperimentalTaskHandlers(
            get_task=my_get_task_handler,
            list_tasks=my_list_tasks_handler,
        )
        session = ClientSession(..., experimental_task_handlers=handlers)
    )ÚdefaultÚget_taskÚget_task_resultÚ
list_tasksÚcancel_taskÚaugmented_samplingÚaugmented_elicitationr   Nc                 óö  — | j         t          u}| j        t          u}| j        t
          u}| j        t          u}t          ||||g¦  «        sdS d}|s|rft          j
        |r&t          j        t          j        ¦   «         ¬¦  «        nd|r&t          j        t          j        ¦   «         ¬¦  «        nd¬¦  «        }t          j        |rt          j        ¦   «         nd|rt          j        ¦   «         nd|¬¦  «        S )a4  Build ClientTasksCapability from the configured handlers.

        Returns a capability object that reflects which handlers are configured
        (i.e., not using the default "not supported" handlers).

        Returns:
            ClientTasksCapability if any handlers are provided, None otherwise
        N)ÚcreateMessage)Úcreate)ÚsamplingÚelicitation)ÚlistÚcancelÚrequests)rX   rI   rY   rK   rZ   rP   r[   rR   Úanyr   ÚClientTasksRequestsCapabilityÚTasksSamplingCapabilityÚTasksCreateMessageCapabilityÚTasksElicitationCapabilityÚ TasksCreateElicitationCapabilityÚClientTasksCapabilityÚTasksListCapabilityÚTasksCancelCapability)r   Úhas_listÚ
has_cancelÚhas_samplingÚhas_elicitationÚrequests_capabilitys         r   Úbuild_capabilityz)ExperimentalTaskHandlers.build_capabilityÎ   s%  € ð ”?Õ*DÐDˆØÔ%Õ-HÐHˆ
ØÔ.Õ6UÐUˆØÔ4Õ<^Ð^ˆõ �H˜j¨,¸ÐHÑIÔIð 	Ø�4ð KOÐØð 	˜?ð 	Ý"'Ô"Eàð�Ô6ÅUÔEgÑEiÔEiÐjÑjÔjÐjàà"ð�EÔ<ÅEÔDjÑDlÔDlÐmÑmÔmÐmàð#ñ #ô #Ðõ Ô*Ø08ÐB•Ô*Ñ,Ô,Ð,¸dØ4>ÐH•5Ô.Ñ0Ô0Ð0ÀDØ(ð
ñ 
ô 
ð 	
r   Úrequestc                 óŽ   — t          | j        t          j        t          j        z  t          j        z  t          j        z  ¦  «        S )z5Check if this handler handles the given request type.)Ú
isinstanceÚrootr   ÚGetTaskRequestÚGetTaskPayloadRequestÚListTasksRequestÚCancelTaskRequest)rs   s    r   Úhandles_requestz(ExperimentalTaskHandlers.handles_requestò   s:   € õ ØŒLÝÔ ¥5Ô#>Ñ>ÅÔAWÑWÕZ_ÔZqÑqñ
ô 
ð 	
r   Úctxr   Ú	responderc              ƒ   óÐ  K  — t          t          j        t          j        z  ¦  «        }|j        j        xt          j        d˜ x�R\  } |                      ||¦  «        ƒ d{V —†}|                     |¦  «        }| 	                    |¦  «        ƒ d{V —† dS  xt          j
        d˜ x�R\  } |                      ||¦  «        ƒ d{V —†}|                     |¦  «        }| 	                    |¦  «        ƒ d{V —† dS  xt          j        d˜ x�R\  } |                      ||¦  «        ƒ d{V —†}|                     |¦  «        }| 	                    |¦  «        ƒ d{V —† dS  t          j        d˜ x�Q\  }|                      ||¦  «        ƒ d{V —†}|                     |¦  «        }| 	                    |¦  «        ƒ d{V —† dS  	 t!          dt#          |j        j        ¦  «        › �¦  «        ‚)zŽHandle a task-related request from the server.

        Call handles_request() first to check if this handler can handle the request.
        )r   NzUnhandled request type: )r   r   ÚClientResultr    rs   rv   rw   rV   Úvalidate_pythonÚrespondrx   rW   ry   rX   rz   rY   Ú
ValueErrorÚtype)r   r|   r}   Úclient_response_typer   ÚresponseÚclient_responses          r   Úhandle_requestz'ExperimentalTaskHandlers.handle_requestú   st  è è € õ S^ÝÔ¥¤Ñ0ñS
ô S
Ðð ÔÔ$Ø4•Ô%Ð4Ð4Ð4Ð4Ñ4¨V¨VØ!%§¢¨s°FÑ!;Ô!;Ð;Ð;Ð;Ð;Ð;Ð;�Ø"6×"FÒ"FÀxÑ"PÔ"P�Ø×'Ò'¨Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð 5ð
 <•Ô,Ð;Ð;Ð;Ð;Ñ;°F°FØ!%×!5Ò!5°c¸6Ñ!BÔ!BÐBÐBÐBÐBÐBÐB�Ø"6×"FÒ"FÀxÑ"PÔ"P�Ø×'Ò'¨Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð <ð
 7•Ô'Ð6Ð6Ð6Ð6Ñ6¨v¨vØ!%§¢°°fÑ!=Ô!=Ð=Ð=Ð=Ð=Ð=Ð=�Ø"6×"FÒ"FÀxÑ"PÔ"P�Ø×'Ò'¨Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð 7õ
 Ô(Ð7Ð7Ð7Ð7Ñ7°Ø!%×!1Ò!1°#°vÑ!>Ô!>Ð>Ð>Ð>Ð>Ð>Ð>�Ø"6×"FÒ"FÀxÑ"PÔ"P�Ø×'Ò'¨Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð 8ð
 Ý Ð!Z½DÀÔARÔAWÑ<XÔ<XÐ!ZÐ!ZÑ[Ô[Ð[r   )$r   r   r   r   r   rD   rV   r   Ú__annotations__rF   rW   r"   rI   rX   r'   rK   rY   r,   rP   rZ   r1   rR   r[   r:   r   rj   rr   ÚstaticmethodÚServerRequestÚboolr{   r	   r   r
   r   r‡   r   r   r   rT   rT   ²   sˆ  € € € € € € ðð ð" #( %Ð0HÐ"IÑ"IÔ"I€HÐÐIÐIÑIØ/4¨uÐ=\Ð/]Ñ/]Ô/]€OÐ,Ð]Ð]Ñ]Ø&+ eÐ4NÐ&OÑ&OÔ&O€JÐ#ÐOÐOÑOØ(-¨Ð6QÐ(RÑ(RÔ(R€KÐ%ÐRÐRÑRð 49°5ÐA`Ð3aÑ3aÔ3aÐÐ0ÐaÐaÑaØ9>¸ÐGiÐ9jÑ9jÔ9jÐÐ6ÐjÐjÑjð"
 %Ô"=ÀÑ"Dð "
ð "
ð "
ð "
ðH ð
 Ô!4ð 
¸ð 
ð 
ð 
ñ „\ð
ð#\à˜O¨SÐ0Ô1ð#\ð $ EÔ$7¸Ô9KÐ$KÔLð#\ð 
ð	#\ð #\ð #\ð #\ð #\ð #\r   rT   ).r   Údataclassesr   r   Útypingr   r   r   Úpydanticr   Ú	mcp.typesr   Úmcp.shared.contextr	   Úmcp.shared.sessionr
   Úmcp.client.sessionr   r   r"   r'   r,   r1   r:   r   r   r    rD   r$   r%   rF   r)   r*   rI   r.   r/   rK   r6   r7   r8   rP   r<   rR   rT   Ú(default_task_augmented_sampling_callbackÚ+default_task_augmented_elicitation_callbackr   r   r   ú<module>r•      s¼  ððð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /àð 1Ø0Ð0Ð0Ð0Ð0Ð0ð
4ð 
4ð 
4ð 
4ð 
4˜ñ 
4ô 
4ð 
4ð
;ð 
;ð 
;ð 
;ð 
;˜hñ 
;ô 
;ð 
;ð
6ð 
6ð 
6ð 
6ð 
6˜(ñ 
6ô 
6ð 
6ð
7ð 
7ð 
7ð 
7ð 
7˜8ñ 
7ô 
7ð 
7ð7ð 7ð 7ð 7ð 7˜xñ 7ô 7ð 7ð$7ð 7ð 7ð 7ð 7 (ñ 7ô 7ð 7ð$Ø˜O¨SÐ0Ô1ðàÔ&ðð Ô˜5œ?Ñ*ðð ð ð ðØ˜O¨SÐ0Ô1ðàÔ-ðð Ô %¤/Ñ1ðð ð ð ðØ˜O¨SÐ0Ô1ðàÔ(¨4Ñ/ðð Ô˜Uœ_Ñ,ðð ð ð ðØ˜O¨SÐ0Ô1ðàÔ)ðð Ô˜eœoÑ-ðð ð ð ðØ˜O¨SÐ0Ô1ðàÔ,ðð Ô%ðð Ô˜eœoÑ-ð	ð ð ð ðØ˜O¨SÐ0Ô1ðàÔ%ðð Ô%ðð Ô˜eœoÑ-ð	ð ð ð ð ðj\ð j\ð j\ð j\ð j\ñ j\ô j\ñ „ðj\ð\ ,KÐ (Ø.PÐ +Ð +Ð +r   