Ë
    ïñþ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j0                  dej2                  ej4                  z  fd„Zdedef   dej8                  dej:                  ej4                  z  fd„Zdedef   dej>                  dz  dej@                  ej4                  z  fd„Z!dedef   dejD                  dejF                  ej4                  z  fd„Z$dedef   dejJ                  dejL                  dejN                  ej4                  z  fd„Z(dedef   dejR                  dejL                  dejN                  ej4                  z  fd„Z*e G d „ d!«      «       Z+e(Z,e*Z-y)"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                   óp   — e Zd ZdZdedef   dej                  dej                  ej                  z  fd„Z
y)ÚGetTaskHandlerFnTzrHandler for tasks/get requests from server.

    WARNING: This is experimental and may change without notice.
    Úcontextr   ÚparamsÚreturnc              ƒ   ó   K  — y ­w©N© ©Úselfr   r   s      úe/root/aria/mcps/aria-brain/venv/lib/python3.12/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      sG   „ ñð
4à °Ð 4Ñ5ð4ð ×*Ñ*ð4ð 
×	Ñ	˜uŸ™Ñ	.ô	4r!   r   c                   óp   — e Zd ZdZdedef   dej                  dej                  ej                  z  fd„Z
y)ÚGetTaskResultHandlerFnTzuHandler for tasks/result requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   r   c              ƒ   ó   K  — y ­wr   r   r   s      r   r   z GetTaskResultHandlerFnT.__call__/   s   è ø€ ð 8;ùr   N)r   r   r   r   r	   r   r   ÚGetTaskPayloadRequestParamsÚGetTaskPayloadResultr    r   r   r!   r   r#   r#   )   sG   „ ñð
;à °Ð 4Ñ5ð;ð ×1Ñ1ð;ð 
×	#Ñ	# e§o¡oÑ	5ô	;r!   r#   c                   óv   — 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
y)ÚListTasksHandlerFnTzsHandler for tasks/list requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   Nr   c              ƒ   ó   K  — y ­w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   sL   „ ñð
6à °Ð 4Ñ5ð6ð ×,Ñ,¨tÑ3ð6ð 
×	Ñ	 §¡Ñ	0ô	6r!   r(   c                   óp   — e Zd ZdZdedef   dej                  dej                  ej                  z  fd„Z
y)ÚCancelTaskHandlerFnTzuHandler for tasks/cancel requests from server.

    WARNING: This is experimental and may change without notice.
    r   r   r   r   c              ƒ   ó   K  — y ­wr   r   r   s      r   r   zCancelTaskHandlerFnT.__call__I   s   è ø€ ð 47ùr   N)r   r   r   r   r	   r   r   ÚCancelTaskRequestParamsÚCancelTaskResultr    r   r   r!   r   r-   r-   C   sG   „ ñð
7à °Ð 4Ñ5ð7ð ×-Ñ-ð7ð 
×	Ñ	 %§/¡/Ñ	1ô	7r!   r-   c            	       óˆ   — 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y)	Ú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  — y ­wr   r   ©r   r   r   r3   s       r   r   z!TaskAugmentedSamplingFnT.__call__Z   ó   è ø€ ð
 47ùr   N)r   r   r   r   r	   r   r   ÚCreateMessageRequestParamsÚTaskMetadataÚCreateTaskResultr    r   r   r!   r   r2   r2   P   sW   „ ñð7à °Ð 4Ñ5ð7ð ×0Ñ0ð7ð ×)Ñ)ð	7ð
 
×	Ñ	 %§/¡/Ñ	1ô7r!   r2   c            	       óˆ   — 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y)	Ú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   r3   r   c              ƒ   ó   K  — y ­wr   r   r5   s       r   r   z$TaskAugmentedElicitationFnT.__call__l   r6   r   N)r   r   r   r   r	   r   r   ÚElicitRequestParamsr8   r9   r    r   r   r!   r   r;   r;   b   sW   „ ñð7à °Ð 4Ñ5ð7ð ×)Ñ)ð7ð ×)Ñ)ð	7ð
 
×	Ñ	 %§/¡/Ñ	1ô7r!   r;   r   r   r   r   c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nztasks/get not supported©ÚcodeÚmessage©r   r    ÚMETHOD_NOT_FOUND©r   r   s     r   Údefault_get_task_handlerrE   t   s%   è ø€ ô �?‰?Ü×#Ñ#Ø)ôð ùó   ‚&(c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nztasks/result not supportedr?   rB   rD   s     r   Údefault_get_task_result_handlerrH   ~   ó%   è ø€ ô �?‰?Ü×#Ñ#Ø,ôð ùrF   c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nztasks/list not supportedr?   rB   rD   s     r   Údefault_list_tasks_handlerrK   ˆ   s%   è ø€ ô �?‰?Ü×#Ñ#Ø*ôð ùrF   c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nztasks/cancel not supportedr?   rB   rD   s     r   Údefault_cancel_task_handlerrM   ’   rI   rF   r3   c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nz%Task-augmented sampling not supportedr?   ©r   r    ÚINVALID_REQUEST©r   r   r3   s      r   Údefault_task_augmented_samplingrR   œ   s%   è ø€ ô
 �?‰?Ü×"Ñ"Ø7ôð ùrF   c              ƒ   óT   K  — t        j                  t         j                  d¬«      S ­w)Nz(Task-augmented elicitation not supportedr?   rO   rQ   s      r   Ú"default_task_augmented_elicitationrT   §   s%   è ø€ ô
 �?‰?Ü×"Ñ"Ø:ôð ùrF   c                   ó^  — 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j2                  d
z  fd„Zedej8                  d	efd„«       Zdede f   de!ej8                  ejD                  f   d	d
fd„Z#y
)Ú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yd}|s|rkt        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"                  «       |¬«      S 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)rZ   rK   r[   rM   r\   rR   r]   rT   Ú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Ñ4Ô<^Ð^ˆô �H˜j¨,¸ÐHÔIØð KOÐÙ™?Ü"'×"EÑ"Eáô ×6Ñ6ÄU×EgÑEgÓEiÕjàá"ô "×<Ñ<ÄE×DjÑDjÓDlÕmàô#Ðô ×*Ñ*Ù08”×*Ñ*Ô,¸dÙ4>”5×.Ñ.Ó0Ø(ô
ð 	
àDHØ(ô
ð 	
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)ru   s    r   Úhandles_requestz(ExperimentalTaskHandlers.handles_requestò   sC   € ô Ø�L‰LÜ× Ñ ¤5×#>Ñ#>Ñ>Ä×AWÑAWÑWÔZ_×ZqÑZqÑqó
ð 	
r!   Úctxr   Ú	responderc              ƒ   óò  K  — t        t        j                  t        j                  z  «      }|j                  j
                  xt        j                  d˜ x�I\  } | j                  ||«      ƒ d{  –—† }|j                  |«      }|j                  |«      ƒ d{  –—†  y xt        j                  d˜ x�I\  } | j                  ||«      ƒ d{  –—† }|j                  |«      }|j                  |«      ƒ d{  –—†  y xt        j                  d˜ x�I\  } | j                  ||«      ƒ d{  –—† }|j                  |«      }|j                  |«      ƒ d{  –—†  y t        j                  d˜ x�H\  }| j                  ||«      ƒ d{  –—† }|j                  |«      }|j                  |«      ƒ d{  –—†  y 	 t!        dt#        |j                  j
                  «      › �«      ‚7 �Œu7 �ŒN7 �Œ7 Œõ7 ŒÃ7 Œ›7 Œk7 ŒC­w)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    ru   rx   ry   rX   Úvalidate_pythonÚrespondrz   rY   r{   rZ   r|   r[   Ú
ValueErrorÚtype)r   r~   r   Úclient_response_typer   ÚresponseÚclient_responses          r   Úhandle_requestz'ExperimentalTaskHandlers.handle_requestú   s»  è ø€ ô S^Ü×Ñ¤§¡Ñ0óS
Ðð ×Ñ×$Ñ$Ø4”×%Ñ%×4Ø!%§¡¨s°FÓ!;×;�Ø"6×"FÑ"FÀxÓ"P�Ø×'Ñ'¨Ó8×8Ñ8ð 5ð
 <”×,Ñ,×;Ø!%×!5Ñ!5°c¸6Ó!B×B�Ø"6×"FÑ"FÀxÓ"P�Ø×'Ñ'¨Ó8×8Ñ8ð <ð
 7”×'Ñ'×6Ø!%§¡°°fÓ!=×=�Ø"6×"FÑ"FÀxÓ"P�Ø×'Ñ'¨Ó8×8Ñ8ð 7ô
 ×(Ñ(Ö7Ø!%×!1Ñ!1°#°vÓ!>×>�Ø"6×"FÑ"FÀxÓ"P�Ø×'Ñ'¨Ó8×8Ñ8ð 8ð
 Ü Ð#;¼DÀ×ARÑAR×AWÑAWÓ<XÐ;YÐ!ZÓ[Ð[ð) <ùà8ùð Cùà8øð >øà8øð ?øà8ús�   ‚A-G7Á/G$Á0)G7ÂG'Â3G7ÃG*Ã)G7Ã7G-Ã83G7Ä+G/Ä,)G7ÅG1Å1G7ÆG3Æ)G7Æ1G5Æ23G7Ç'G7Ç*G7Ç-G7Ç/G7Ç1G7Ç3G7Ç5G7)$r   r   r   r   r   rE   rX   r   Ú__annotations__rH   rY   r#   rK   rZ   r(   rM   r[   r-   rR   r\   r2   rT   r]   r;   r   rl   rt   ÚstaticmethodÚServerRequestÚboolr}   r	   r   r
   r�   r‰   r   r!   r   rV   rV   ²   sø   … ññ" #(Ð0HÔ"I€HÐÓIÙ/4Ð=\Ô/]€OÐ,Ó]Ù&+Ð4NÔ&O€JÐ#ÓOÙ(-Ð6QÔ(R€KÐ%ÓRñ 49ÐA`Ô3aÐÐ0ÓaÙ9>ÐGiÔ9jÐÐ6Ójð"
 %×"=Ñ"=ÀÑ"Dó "
ðH ð
 ×!4Ñ!4ð 
¸ò 
ó ð
ð#\à˜O¨SÐ0Ñ1ð#\ð $ E×$7Ñ$7¸×9KÑ9KÐ$KÑLð#\ð 
ô	#\r!   rV   ).r   Údataclassesr   r   Útypingr   r   r   Úpydanticr   Ú	mcp.typesr   Úmcp.shared.contextr	   Úmcp.shared.sessionr
   Úmcp.client.sessionr   r   r#   r(   r-   r2   r;   r   r   r    rE   r%   r&   rH   r*   r+   rK   r/   r0   rM   r7   r8   r9   rR   r=   rT   rV   Ú(default_task_augmented_sampling_callbackÚ+default_task_augmented_elicitation_callbackr   r!   r   ú<module>r—      s7  ðñ÷ )ß /Ñ /å  å Ý -Ý /áÝ0ô
4˜ô 
4ô
;˜hô 
;ô
6˜(ô 
6ô
7˜8ô 
7ô7˜xô 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Ñ-óðØ˜O¨SÐ0Ñ1ðà×,Ñ,ðð ×%Ñ%ðð ×Ñ˜eŸo™oÑ-ó	ðØ˜O¨SÐ0Ñ1ðà×%Ñ%ðð ×%Ñ%ðð ×Ñ˜eŸo™oÑ-ó	ð ÷j\ð j\ó ðj\ð\ ,KÐ (Ø.PÑ +r!   