
    kKj
                        d Z ddlmZ ddlmZ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 ddlmZ erdd	lmZ dd
lmZ ddlmZ ddlmZ ed   Z	 	 d	 	 	 	 	 	 	 	 	 ddZy)zjTask routing helper for MCP components.

Provides unified task mode enforcement and docket routing logic.
    )annotations)TYPE_CHECKINGAnyLiteralN)McpError)METHOD_NOT_FOUND	ErrorData)TaskMeta)submit_to_docket)Prompt)Resource)ResourceTemplate)Tool)toolresourcetemplatepromptc                  K   | j                   }t        |       j                   d| j                  xs | j                   d}|j
                  dk(  r|st        t        t        | d            |j                         s|rt        t        t        | d            |sy|j                  xs | j                  }t        ||| ||       d{   S 7 w)a-  Check task mode and submit to background if requested.

    Args:
        component: The MCP component
        task_type: Type of task ("tool", "resource", "template", "prompt")
        arguments: Arguments for tool/prompt/template execution
        task_meta: Task execution metadata. If provided, execute as background task.

    Returns:
        CreateTaskResult if submitted to docket, None for sync execution

    Raises:
        McpError: If mode="required" but no task metadata, or mode="forbidden"
                  but task metadata is present
    z ''requiredz" requires task-augmented execution)codemessagez* does not support task-augmented executionN)task_configtype__name__titlekeymoder   r	   r   supports_tasksfn_keyr   )	component	task_type	arguments	task_metar   entity_labelr    s          m/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/fastmcp/server/tasks/routing.pycheck_background_taskr'      s     * ''K 9o../r)//2RY]]1SSTUL :%i%'.(JK
 	
 %%'I%'.(RS
 	
  .F!)VY	9UUUUs   CCCC)NN)
r!   z+Tool | Resource | ResourceTemplate | Promptr"   TaskTyper#   zdict[str, Any] | Noner$   zTaskMeta | Nonereturnz!mcp.types.CreateTaskResult | None)__doc__
__future__r   typingr   r   r   	mcp.typesmcpmcp.shared.exceptionsr   r   r	   fastmcp.server.tasks.configr
   fastmcp.server.tasks.handlersr   fastmcp.prompts.baser   fastmcp.resources.baser   fastmcp.resources.templater   fastmcp.tools.baser   r(   r'        r&   <module>r8      s   
 # . .  * 1 0 :+/;';< (,!%	2V:2V2V %2V 	2V
 '2Vr7   