
    "<i0                        d Z ddlmZ ddlZddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlZddlmZ ddlmZmZ dd	lmZmZ dd
lmZ e	rddlmZ dZddZddZd dZdS )!zrSEP-1686 task execution handlers.

Handles queuing tool/prompt/resource executions to Docket as background tasks.
    )annotationsN)suppress)datetimetimezone)TYPE_CHECKINGAny)McpError)INTERNAL_ERROR	ErrorData)_current_docketget_context)build_task_key)FastMCPi  serverr   	tool_namestr	argumentsdict[str, Any]	task_metareturnmcp.types.CallToolResultc                8  K   t          t          j                              }t          j        t
          j                                                  }t                      }|j	        }t          j                    }|#t          t          t          d                    t          ||d|          }	|                     |           d{V }
d| d| }d| d| d}t#          |j                                        t(          z             }|                                4 d{V }|                    ||	|           d{V  |                    |||           d{V  ddd          d{V  n# 1 d{V swxY w Y   t.          j                            d	d
i dd|ii          }t                      }t5          t6                    5  |j                            |           d{V  ddd           n# 1 swxY w Y    |                    |
j        |	          di | d{V  ddl m!} tE          |j        d          r,|j        j#        }|r|$                    |||	|j        |           t.          j        %                    g d|ddi          S )a  Handle tool execution as background task (SEP-1686).

    Queues the user's actual function to Docket (preserving signature for DI),
    stores raw return values, converts to MCP types on retrieval.

    Args:
        server: FastMCP server instance
        tool_name: Name of the tool to execute
        arguments: Tool arguments
        task_meta: Task metadata from request (contains ttl)

    Returns:
        CallToolResult: Task stub with task metadata in _meta
    N9Background tasks require a running FastMCP server contextcodemessagetoolfastmcp:task:::created_atex2.0notifications/tasks/created$modelcontextprotocol.io/related-tasktaskIdjsonrpcmethodparams_metakeyr   subscribe_to_task_updates_subscription_task_groupmodelcontextprotocol.io/taskworkingr&   status)contentr+    )&r   uuiduuid4r   nowr   utc	isoformatr   
session_idr   getr	   r   r
   r   get_toolintexecution_ttltotal_secondsTASK_MAPPING_TTL_BUFFER_SECONDSredissetmcptypesJSONRPCNotificationr   	Exceptionsessionsend_notificationaddr-   "fastmcp.server.tasks.subscriptionsr/   hasattrr0   
start_soonCallToolResult)r   r   r   r   server_task_id
created_atctxr<   dockettask_keyr   	redis_keycreated_at_keyttl_secondsrC   notificationr/   tgs                     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/server/tasks/handlers.pyhandle_tool_as_taskr[      s     , &&N hl++5577J --CJ ""F~#S  
 
 	
 j.&)LLH ++++++++D >
==^==IMZMM.MMMN**,,/NN K ||~~ D D D D D D Dii	8i<<<<<<<<<ii
{iCCCCCCCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D 900,2.5
	 1 	 	L --C	)		 : :k++L999999999: : : : : : : : : : : : : : :&**      	         MLLLLL s{677 	[1 	MM)   9##*(#- -
 $   s$   &=E55
E?E?!G<<H H prompt_namedict[str, Any] | Nonemcp.types.GetPromptResultc                "  K   t          t          j                              }t          j        t
          j                                                  }t                      }|j	        }t          j                    }|#t          t          t          d                    t          ||d|          }	|                     |           d{V }
d| d| }d| d| d}t#          |j                                        t(          z             }|                                4 d{V }|                    ||	|           d{V  |                    |||           d{V  ddd          d{V  n# 1 d{V swxY w Y   t.          j                            d	d
i dd|ii          }t5          t6                    5  |j                            |           d{V  ddd           n# 1 swxY w Y    |                    |
j        |	          di |pi  d{V  ddl m!} tE          |j        d          r,|j        j#        }|r|$                    |||	|j        |           t.          j        %                    dg d|ddi          S )a  Handle prompt execution as background task (SEP-1686).

    Queues the user's actual function to Docket (preserving signature for DI).

    Args:
        server: FastMCP server instance
        prompt_name: Name of the prompt to execute
        arguments: Prompt arguments
        task_meta: Task metadata from request (contains ttl)

    Returns:
        GetPromptResult: Task stub with task metadata in _meta
    Nr   r   promptr   r   r    r!   r#   r$   r%   r&   r'   r,   r   r.   r0    r1   r2   r3   )descriptionmessagesr+   r6   )&r   r7   r8   r   r9   r   r:   r;   r   r<   r   r=   r	   r   r
   r   
get_promptr?   r@   rA   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   rK   r-   rL   r/   rM   r0   rN   GetPromptResult)r   r\   r   r   rP   rQ   rR   r<   rS   rT   r`   rU   rV   rW   rC   rX   r/   rY   s                     rZ   handle_prompt_as_taskrf      s     * &&N hl++5577J --CJ ""F~#S  
 
 	
 j.(KPPH $$[11111111F >
==^==IMZMM.MMMN**,,/NN K ||~~ D D D D D D Dii	8i<<<<<<<<<ii
{iCCCCCCCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D 900,2.5
	 1 	 	L 
)		 : :k++L999999999: : : : : : : : : : : : : : :
&**
      
b         MLLLLL s{677 	[1 	MM)   9$$*(#- -
 % 	 	 	s$   &=E55
E?E?!G..G25G2urimcp.types.ServerResultc           	       K   t          t          j                              }t          j        t
          j                                                  }t                      }|j	        }t          j                    }|#t          t          t          d                    t          ||dt          |                    }	d| d| }
d| d| d}t!          |j                                        t&          z             }|                                4 d{V }|                    |
|	|           d{V  |                    |||           d{V  ddd          d{V  n# 1 d{V swxY w Y   t,          j                            d	d
i dd|ii          }t3          t4                    5  |j                            |           d{V  ddd           n# 1 swxY w Y   ddlm}m} tA          ||          r< |||j!                  pi } |"                    |j#        |	          di | d{V  n* |"                    |j#        |	                       d{V  ddl$m%} tM          |j        d          r,|j        j'        }|r|(                    |||	|j        |           t,          j        )                    t,          j        *                    g d|ddi                    S )aj  Handle resource read as background task (SEP-1686).

    Queues the user's actual function to Docket.

    Args:
        server: FastMCP server instance
        uri: Resource URI
        resource: Resource or ResourceTemplate object
        task_meta: Task metadata from request (contains ttl)

    Returns:
        ServerResult with ReadResourceResult stub
    NzBackground tasks require Docketr   resourcer   r   r    r!   r#   r$   r%   r&   r'   r   )FunctionResourceTemplatematch_uri_templater,   r.   r0   r1   r2   r3   )contentsr+   r6   )+r   r7   r8   r   r9   r   r:   r;   r   r<   r   r=   r	   r   r
   r   r?   r@   rA   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   fastmcp.resources.templaterk   rl   
isinstanceuri_templaterK   namerL   r/   rM   r0   rN   ServerResultReadResourceResult)r   rg   rj   r   rP   rQ   rR   r<   rS   rT   rU   rV   rW   rC   rX   rk   rl   r*   r/   rY   s                       rZ   handle_resource_as_taskrt      s     * &&N hl++5577J --CJ ""F~#9  
 
 	
 j.*c#hhOOH >
==^==IMZMM.MMMN**,,/NN K ||~~ D D D D D D Dii	8i<<<<<<<<<ii
{iCCCCCCCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D 900,2.5
	 1 	 	L 
)		 : :k++L999999999: : : : : : : : : : : : : : : XWWWWWWW(455 
##C)>??E2
fjjM  
 
     	 	 	 	 	 	 	 	

fjjM  
 
   	 	 	 	 	 	 	 MLLLLL s{677 	[1 	MM)   9!!	$$.,'1 1 	% 	
 	

 
 
s$   =E''
E14E13!G  G$'G$)
r   r   r   r   r   r   r   r   r   r   )
r   r   r\   r   r   r]   r   r   r   r^   )r   r   rg   r   r   r   r   rh   )__doc__
__future__r   r7   
contextlibr   r   r   typingr   r   	mcp.typesrE   mcp.shared.exceptionsr	   r
   r   fastmcp.server.dependenciesr   r   fastmcp.server.tasks.keysr   fastmcp.server.serverr   rB   r[   rf   rt   r6       rZ   <module>r      sF   
 # " " " " "        ' ' ' ' ' ' ' ' % % % % % % % %     * * * * * * / / / / / / / / D D D D D D D D 4 4 4 4 4 4 .------ #* k k k k\h h h hVp p p p p pr~   