Ë
    ïñþid)  ã                  ó(  — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* erddl+m,Z,  ejZ                  e.«      Z/ G d„ d«      Z0y)zyExperimental handlers for the low-level MCP server.

WARNING: These APIs are experimental and may change without notice.
é    )ÚannotationsN)Ú	AwaitableÚCallable)ÚTYPE_CHECKING)ÚTaskSupport)Úcreate_call_wrapper)ÚMcpError)Úcancel_task)ÚInMemoryTaskStore)ÚInMemoryTaskMessageQueueÚTaskMessageQueue)Ú	TaskStore)ÚINVALID_PARAMSÚCancelTaskRequestÚCancelTaskResultÚ	ErrorDataÚGetTaskPayloadRequestÚGetTaskPayloadResultÚGetTaskRequestÚGetTaskResultÚListTasksRequestÚListTasksResultÚServerCapabilitiesÚServerResultÚServerTasksCapabilityÚServerTasksRequestsCapabilityÚTasksCallCapabilityÚTasksCancelCapabilityÚTasksListCapabilityÚTasksToolsCapability)ÚServerc                  óŽ   — e Zd ZdZ	 	 	 	 	 	 dd„Zedd„«       Zdd„Z	 	 d	 	 	 	 	 dd„Zdd„Z		 	 dd„Z
	 	 dd	„Z	 	 dd
„Z	 	 dd„Zy)ÚExperimentalHandlerszyExperimental request/notification handlers.

    WARNING: These APIs are experimental and may change without notice.
    c                ó<   — || _         || _        || _        d | _        y ©N)Ú_serverÚ_request_handlersÚ_notification_handlersÚ_task_support)ÚselfÚserverÚrequest_handlersÚnotification_handlerss       ú`/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/mcp/server/lowlevel/experimental.pyÚ__init__zExperimentalHandlers.__init__4   s#   € ð ˆŒØ!1ˆÔØ&;ˆÔ#Ø15ˆÕó    c                ó   — | j                   S )z/Get the task support configuration, if enabled.)r)   )r*   s    r.   Útask_supportz!ExperimentalHandlers.task_support?   s   € ð ×!Ñ!Ð!r0   c                ó|  ‡ — t        ˆ fd„t        t        t        t        fD «       «      sy t        «       |_        t        ‰ j                  v rt        «       |j                  _	        t        ‰ j                  v rt        «       |j                  _        t        t        t        «       ¬«      ¬«      |j                  _        y )Nc              3  ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr%   )r'   )Ú.0Úreq_typer*   s     €r.   ú	<genexpr>z;ExperimentalHandlers.update_capabilities.<locals>.<genexpr>F   s$   øè ø€ ò 
àð ˜×.Ñ.Ô.ñ
ùs   ƒ)Úcall)Útools)Úanyr   r   r   r   r   Útasksr'   r   Úlistr   Úcancelr   r    r   Úrequests)r*   Úcapabilitiess   ` r.   Úupdate_capabilitiesz(ExperimentalHandlers.update_capabilitiesD   s‘   ø€ äó 
ä+Ô-=Ô?PÔRgÐhô
ô 
ð ä2Ó4ˆÔÜ˜t×5Ñ5Ñ5Ü&9Ó&;ˆL×ÑÔ#Ü × 6Ñ 6Ñ6Ü(=Ó(?ˆL×ÑÔ%ä&CÜ&Ô,?Ó,AÔBô'
ˆ×ÑÕ#r0   Nc                óŽ   — |€
t        «       }|€
t        «       }t        ||¬«      | _        | j	                  «        | j                  S )a]  
        Enable experimental task support.

        This sets up the task infrastructure and auto-registers default handlers
        for tasks/get, tasks/result, tasks/list, and tasks/cancel.

        Args:
            store: Custom TaskStore implementation (defaults to InMemoryTaskStore)
            queue: Custom TaskMessageQueue implementation (defaults to InMemoryTaskMessageQueue)

        Returns:
            The TaskSupport configuration object

        Example:
            # Simple in-memory setup
            server.experimental.enable_tasks()

            # Custom store/queue for distributed systems
            server.experimental.enable_tasks(
                store=RedisTaskStore(redis_url),
                queue=RedisTaskMessageQueue(redis_url),
            )

        WARNING: This API is experimental and may change without notice.
        )ÚstoreÚqueue)r   r   r   r)   Ú_register_default_task_handlers)r*   rB   rC   s      r.   Úenable_tasksz!ExperimentalHandlers.enable_tasksV   sG   € ð< ˆ=Ü%Ó'ˆEØˆ=Ü,Ó.ˆEä(¨u¸EÔBˆÔð 	×,Ñ,Ô.à×!Ñ!Ð!r0   c                ó˜  ‡ ‡— ‰ j                   €J ‚‰ j                   Št        ‰ j                  vrdˆfd„}|‰ j                  t        <   t        ‰ j                  vrdˆ ˆfd„}|‰ j                  t        <   t        ‰ j                  vrdˆfd„}|‰ j                  t        <   t
        ‰ j                  vrd	ˆfd„}|‰ j                  t
        <   yy)
z.Register default handlers for task operations.Nc              “  ó¦  •K  — ‰j                   j                  | j                  j                  «      ƒ d {  –—† }|€1t	        t        t        d| j                  j                  › �¬«      «      ‚t        t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«      «      S 7 Œ˜­w)NzTask not found: )ÚcodeÚmessage)ÚtaskIdÚstatusÚstatusMessageÚ	createdAtÚlastUpdatedAtÚttlÚpollInterval)rB   Úget_taskÚparamsrJ   r	   r   r   r   r   rK   rL   rM   rN   rO   rP   )ÚreqÚtaskÚsupports     €r.   Ú_default_get_taskzOExperimentalHandlers._register_default_task_handlers.<locals>._default_get_taskˆ   s®   øè ø€ Ø$Ÿ]™]×3Ñ3°C·J±J×4EÑ4EÓF×F�Ø�<Ü"Ü!Ü!/Ø&6°s·z±z×7HÑ7HÐ6IÐ$Jôóð ô $Ü!Ø#Ÿ{™{Ø#Ÿ{™{Ø&*×&8Ñ&8Ø"&§.¡.Ø&*×&8Ñ&8Ø ŸH™HØ%)×%6Ñ%6ôó
ð 
ð Gús   ƒ3C¶C·BCc              “  óÄ   •K  — ‰j                   j                  }‰j                  j                  | |j                  |j
                  «      ƒ d {  –—† }t        |«      S 7 Œ­wr%   )r&   Úrequest_contextÚhandlerÚhandleÚsessionÚ
request_idr   )rS   ÚctxÚresultr*   rU   s      €€r.   Ú_default_get_task_resultzVExperimentalHandlers._register_default_task_handlers.<locals>._default_get_task_result¢   sJ   øè ø€ Ø—l‘l×2Ñ2�Ø&Ÿ™×5Ñ5°c¸3¿;¹;ÈÏÉÓW×W�Ü# FÓ+Ð+ð Xús   ƒAA ÁAÁA c              “  óÐ   •K  — | j                   r| j                   j                  nd }‰j                  j                  |«      ƒ d {  –—† \  }}t	        t        ||¬«      «      S 7 Œ­w)N)r;   Ú
nextCursor)rR   ÚcursorrB   Ú
list_tasksr   r   )rS   rb   r;   Únext_cursorrU   s       €r.   Ú_default_list_taskszQExperimentalHandlers._register_default_task_handlers.<locals>._default_list_tasks¬   sR   øè ø€ Ø.1¯jªj˜Ÿ™×*Ò*¸d�Ø+2¯=©=×+CÑ+CÀFÓ+K×%KÑ"��{Ü#¤O¸%ÈKÔ$XÓYÐYð &Lús   ƒAA&ÁA$ÁA&c              “  óŠ   •K  — t        ‰j                  | j                  j                  «      ƒ d {  –—† }t	        |«      S 7 Œ­wr%   )r
   rB   rR   rJ   r   )rS   r^   rU   s     €r.   Ú_default_cancel_taskzRExperimentalHandlers._register_default_task_handlers.<locals>._default_cancel_task¶   s5   øè ø€ Ü*¨7¯=©=¸#¿*¹*×:KÑ:KÓL×L�Ü# FÓ+Ð+ð Mús   ƒ.A±A²A©rS   r   Úreturnr   ©rS   r   ri   r   ©rS   r   ri   r   ©rS   r   ri   r   )r)   r   r'   r   r   r   )r*   rV   r_   re   rg   rU   s   `    @r.   rD   z4ExperimentalHandlers._register_default_task_handlers€   sÉ   ù€ à×!Ñ!Ð-Ð-Ð-Ø×$Ñ$ˆô  ×!7Ñ!7Ñ7õð* 6GˆD×"Ñ"¤>Ñ2ô !¨×(>Ñ(>Ñ>ö,ð
 =UˆD×"Ñ"Ô#8Ñ9ô  4×#9Ñ#9Ñ9õZð
 8KˆD×"Ñ"Ô#3Ñ4ô  D×$:Ñ$:Ñ:õ,ð 9MˆD×"Ñ"Ô#4Ò5ð ;r0   c                ó   ‡ — 	 	 	 	 dˆ fd„}|S )zxRegister a handler for listing tasks.

        WARNING: This API is experimental and may change without notice.
        c                ó†   •‡— t         j                  d«       t        | t        «      Šdˆfd„}|‰j                  t        <   | S )Nz(Registering handler for ListTasksRequestc              “  óF   •K  —  ‰| «      ƒ d {  –—† }t        |«      S 7 Œ­wr%   ©r   ©rS   r^   Úwrappers     €r.   rY   zCExperimentalHandlers.list_tasks.<locals>.decorator.<locals>.handlerÍ   ó#   øè ø€ Ù& s›|×+�Ü# FÓ+Ð+ð ,úó   ƒ!��!rk   )ÚloggerÚdebugr   r   r'   ©ÚfuncrY   rr   r*   s     @€r.   Ú	decoratorz2ExperimentalHandlers.list_tasks.<locals>.decoratorÇ   s<   ù€ ô �L‰LÐCÔDÜ)¨$Ô0@ÓAˆGõ,ð 8?ˆD×"Ñ"Ô#3Ñ4ØˆKr0   )rx   ú8Callable[[ListTasksRequest], Awaitable[ListTasksResult]]ri   rz   © ©r*   ry   s   ` r.   rc   zExperimentalHandlers.list_tasks¼   s    ø€ ð	ØJð	àEõ	ð Ðr0   c                ó   ‡ — 	 	 	 	 dˆ fd„}|S )z~Register a handler for getting task status.

        WARNING: This API is experimental and may change without notice.
        c                ó†   •‡— t         j                  d«       t        | t        «      Šdˆfd„}|‰j                  t        <   | S )Nz&Registering handler for GetTaskRequestc              “  óF   •K  —  ‰| «      ƒ d {  –—† }t        |«      S 7 Œ­wr%   rp   rq   s     €r.   rY   zAExperimentalHandlers.get_task.<locals>.decorator.<locals>.handleræ   rs   rt   rh   )ru   rv   r   r   r'   rw   s     @€r.   ry   z0ExperimentalHandlers.get_task.<locals>.decoratorà   s:   ù€ ô �L‰LÐAÔBÜ)¨$´Ó?ˆGõ,ð 6=ˆD×"Ñ"¤>Ñ2ØˆKr0   )rx   ú4Callable[[GetTaskRequest], Awaitable[GetTaskResult]]ri   r€   r{   r|   s   ` r.   rQ   zExperimentalHandlers.get_taskÖ   s    ø€ ð	ØFð	àAõ	ð Ðr0   c                ó   ‡ — 	 	 	 	 dˆ fd„}|S )z‡Register a handler for getting task results/payload.

        WARNING: This API is experimental and may change without notice.
        c                ó†   •‡— t         j                  d«       t        | t        «      Šdˆfd„}|‰j                  t        <   | S )Nz-Registering handler for GetTaskPayloadRequestc              “  óF   •K  —  ‰| «      ƒ d {  –—† }t        |«      S 7 Œ­wr%   rp   rq   s     €r.   rY   zHExperimentalHandlers.get_task_result.<locals>.decorator.<locals>.handler   rs   rt   rj   )ru   rv   r   r   r'   rw   s     @€r.   ry   z7ExperimentalHandlers.get_task_result.<locals>.decoratorú   s=   ù€ ô �L‰LÐHÔIÜ)¨$Ô0EÓFˆGõ,ð =DˆD×"Ñ"Ô#8Ñ9ØˆKr0   )rx   úBCallable[[GetTaskPayloadRequest], Awaitable[GetTaskPayloadResult]]ri   r„   r{   r|   s   ` r.   Úget_task_resultz$ExperimentalHandlers.get_task_resultï   s    ø€ ð	ØTð	àOõ	ð Ðr0   c                ó   ‡ — 	 	 	 	 dˆ fd„}|S )z{Register a handler for cancelling tasks.

        WARNING: This API is experimental and may change without notice.
        c                ó†   •‡— t         j                  d«       t        | t        «      Šdˆfd„}|‰j                  t        <   | S )Nz)Registering handler for CancelTaskRequestc              “  óF   •K  —  ‰| «      ƒ d {  –—† }t        |«      S 7 Œ­wr%   rp   rq   s     €r.   rY   zDExperimentalHandlers.cancel_task.<locals>.decorator.<locals>.handler  rs   rt   rl   )ru   rv   r   r   r'   rw   s     @€r.   ry   z3ExperimentalHandlers.cancel_task.<locals>.decorator  s=   ù€ ô �L‰LÐDÔEÜ)¨$Ô0AÓBˆGõ,ð 9@ˆD×"Ñ"Ô#4Ñ5ØˆKr0   )rx   ú:Callable[[CancelTaskRequest], Awaitable[CancelTaskResult]]ri   r‰   r{   r|   s   ` r.   r
   z ExperimentalHandlers.cancel_task	  s    ø€ ð	ØLð	àGõ	ð Ðr0   )r+   r!   r,   z2dict[type, Callable[..., Awaitable[ServerResult]]]r-   z*dict[type, Callable[..., Awaitable[None]]])ri   zTaskSupport | None)r?   r   ri   ÚNone)NN)rB   zTaskStore | NonerC   zTaskMessageQueue | Noneri   r   )ri   rŠ   )ri   z~Callable[[Callable[[ListTasksRequest], Awaitable[ListTasksResult]]], Callable[[ListTasksRequest], Awaitable[ListTasksResult]]])ri   zvCallable[[Callable[[GetTaskRequest], Awaitable[GetTaskResult]]], Callable[[GetTaskRequest], Awaitable[GetTaskResult]]])ri   z’Callable[[Callable[[GetTaskPayloadRequest], Awaitable[GetTaskPayloadResult]]], Callable[[GetTaskPayloadRequest], Awaitable[GetTaskPayloadResult]]])ri   z‚Callable[[Callable[[CancelTaskRequest], Awaitable[CancelTaskResult]]], Callable[[CancelTaskRequest], Awaitable[CancelTaskResult]]])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   Úpropertyr2   r@   rE   rD   rc   rQ   r…   r
   r{   r0   r.   r#   r#   .   s°   „ ñð
	6àð	6ð Mð	6ð  Jó		6ð ò"ó ð"ó
ð( #'Ø)-ð("àð("ð 'ð("ð 
ó	("óT:Mðxð
óð4ð
óð2ð
óð4ð
ôr0   r#   )1rŽ   Ú
__future__r   ÚloggingÚcollections.abcr   r   Útypingr   Ú$mcp.server.experimental.task_supportr   Ú#mcp.server.lowlevel.func_inspectionr   Úmcp.shared.exceptionsr	   Ú%mcp.shared.experimental.tasks.helpersr
   Ú2mcp.shared.experimental.tasks.in_memory_task_storer   Ú+mcp.shared.experimental.tasks.message_queuer   r   Ú#mcp.shared.experimental.tasks.storer   Ú	mcp.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Úmcp.server.lowlevel.serverr!   Ú	getLoggerr‹   ru   r#   r{   r0   r.   ú<module>rž      sl   ðñõ
 #ã ß /Ý  å <Ý CÝ *Ý =Ý Pß bÝ 9÷÷ ÷ ÷ ÷ ñ* Ý1à	ˆ×	Ñ	˜8Ó	$€÷sò sr0   