
    KiT2                        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y)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  c                ~  K   t        t        j                               }t        j                  t
        j                        j                         }t               }|j                  }t        j                         }|t        t        t        d            t        ||d|      }	| j!                  |       d{   }
|j#                  d| d|       }|j#                  d| d| d      }t%        |j&                  j)                         t*        z         }|j-                         4 d{   }|j/                  ||	|       d{    |j/                  |||       d{    ddd      d{    t0        j2                  j5                  d	d
i dd|ii      }t               }t7        t8              5  |j:                  j=                  |       d{    ddd        |j?                  |
j"                  |	      di | d{    ddl m!} tE        |j:                  d      r7|j:                  jF                  }|r|jI                  |||	|j:                  |       t0        j2                  jK                  g d|ddi      S 7 7 `7 G7 .7 !# 1 d{  7  sw Y   2xY w7 # 1 sw Y   xY w7 w)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#    )&struuiduuid4r   nowr   utc	isoformatr   
session_idr   getr	   r   r
   r   get_toolr%   intexecution_ttltotal_secondsTASK_MAPPING_TTL_BUFFER_SECONDSredissetmcptypesJSONRPCNotificationr   	Exceptionsessionsend_notificationadd"fastmcp.server.tasks.subscriptionsr'   hasattrr(   
start_soonCallToolResult)server	tool_name	arguments	task_metaserver_task_id
created_atctxr5   dockettask_keyr   task_meta_keycreated_at_keyttl_secondsr<   notificationr'   tgs                     i/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/fastmcp/server/tasks/handlers.pyhandle_tool_as_taskrX      s    , &N hll+557J -CJ   "F~#S
 	
 j.&)LH ++D JJzl!N;KLMMZZ

|1^$4K@N **,/NNK ||~ D DiixKi@@@ii
{iCCCD D 9900,2.5
	 1 	L -C	)	 :kk++L999:&**    	   M s{{67[[11MM) 99##*(#-
 $  q ,D@CD D D D( 	:: :s   B7J=9J:A1J=+J,J=/JJJ#J$J(J=3J4AJ=8J/J-J/.J=
J;A>J=J=JJJ=J*J J*%J=-J//J84J=c                t  K   t        t        j                               }t        j                  t
        j                        j                         }t               }|j                  }t        j                         }|t        t        t        d            t        ||d|      }	| j!                  |       d{   }
|j#                  d| d|       }|j#                  d| d| d      }t%        |j&                  j)                         t*        z         }|j-                         4 d{   }|j/                  ||	|       d{    |j/                  |||       d{    ddd      d{    t0        j2                  j5                  d	d
i dd|ii      }t7        t8              5  |j:                  j=                  |       d{    ddd        |j?                  |
j"                  |	      di |xs i  d{    ddl m!} tE        |j:                  d      r7|j:                  jF                  }|r|jI                  |||	|j:                  |       t0        j2                  jK                  dg d|ddi      S 7 7 [7 B7 )7 # 1 d{  7  sw Y   -xY w7 # 1 sw Y   xY w7 w)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&   r(    r)   r*   r+   )descriptionmessagesr#   r.   )&r/   r0   r1   r   r2   r   r3   r4   r   r5   r   r6   r	   r   r
   r   
get_promptr%   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rA   rB   rC   rD   rE   r'   rF   r(   rG   GetPromptResult)rI   prompt_namerK   rL   rM   rN   rO   r5   rP   rQ   rZ   rR   rS   rT   r<   rU   r'   rV   s                     rW   handle_prompt_as_taskra      s    * &N hll+557J -CJ   "F~#S
 	
 j.(KPH $$[11F JJzl!N;KLMMZZ

|1^$4K@N **,/NNK ||~ D DiixKi@@@ii
{iCCCD D 9900,2.5
	 1 	L 
)	 :kk++L999:
&**

    
b   M s{{67[[11MM) 99$$*(#-
 % 	 	k 2D@CD D D D" 	:: :
s   B7J89J:A1J8+J,J8/JJ	J#J$J(J83J4:J8.J*J(J*2J8J6A?J8J8	JJJ8J%JJ% J8(J**J3/J8c           	     2  K   t        t        j                               }t        j                  t
        j                        j                         }t               }|j                  }t        j                         }|t        t        t        d            t        ||dt        |            }	|j!                  d| d|       }
|j!                  d| d| d      }t#        |j$                  j'                         t(        z         }|j+                         4 d{   }|j-                  |
|	|       d{    |j-                  |||       d{    ddd      d{    t.        j0                  j3                  d	d
i dd|ii      }t5        t6              5  |j8                  j;                  |       d{    ddd       ddlm}m } tC        ||      rC |||jD                        xs i } |jG                  |jH                  |	      di | d{    n* |jG                  |jH                  |	              d{    ddl%m&} tO        |j8                  d      r7|j8                  jP                  }|r|jS                  |||	|j8                  |       t.        j0                  jU                  t.        j0                  jW                  g d|ddi            S 7 7 7 7 # 1 d{  7  sw Y   xY w7 F# 1 sw Y   FxY w7 7 έw)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
    Nr   r   resourcer   r   r   r   r   r   r   r   r   r   )FunctionResourceTemplatematch_uri_templater$   r&   r(   r)   r*   r+   )contentsr#   r.   ),r/   r0   r1   r   r2   r   r3   r4   r   r5   r   r6   r	   r   r
   r   r%   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   rA   rB   rC   fastmcp.resources.templaterd   re   
isinstanceuri_templaterD   namerE   r'   rF   r(   rG   ServerResultReadResourceResult)rI   urirc   rL   rM   rN   rO   r5   rP   rQ   rR   rS   rT   r<   rU   rd   re   r"   r'   rV   s                       rW   handle_resource_as_taskrn      s	    * &N hll+557J -CJ   "F~#S
 	
 j.*c#hOH JJzl!N;KLMMZZ

|1^$4K@N **,/NNK ||~ D DiixKi@@@ii
{iCCCD D 9900,2.5
	 1 	L 
)	 :kk++L999: X(45#C)>)>?E2
fjjMM  
   	 	

fjjMM  
  	 	 M s{{67[[11MM) 99!!		$$.,'1 	% 	

 
kD@CD D D D" 	:: :	
	s   DLK!LK-7K$8K-K'K-L#K*$:LL=L>LALL*LLBL$K-'K-*L-L 3K64L ;LLL	LL)
rI   r   rJ   r/   rK   dict[str, Any]rL   ro   returnzmcp.types.CallToolResult)
rI   r   r`   r/   rK   zdict[str, Any] | NonerL   ro   rp   zmcp.types.GetPromptResult)rI   r   rm   r/   rL   ro   rp   zmcp.types.ServerResult)__doc__
__future__r   r0   
contextlibr   r   r   typingr   r   	mcp.typesr>   mcp.shared.exceptionsr	   r
   r   fastmcp.server.dependenciesr   r   fastmcp.server.tasks.keysr   fastmcp.server.serverr   r;   rX   ra   rn   r.       rW   <module>r{      s   
 #   ' %  * / D 4- #* nnn n 	n
 nbkkk %k 	k
 k\ss	s 	s
 srz   