§
    )`ƒi;  ã                   óH   — d Z ddlmZ ddlmZmZmZmZ  G d„ d¦  «        ZdS )zÿ
TaskContext - Pure task state management.

This module provides TaskContext, which manages task state without any
server/session dependencies. It can be used standalone for distributed
workers or wrapped by ServerTaskContext for full server integration.
é    )Ú	TaskStore)ÚTASK_STATUS_COMPLETEDÚTASK_STATUS_FAILEDÚResultÚTaskc                   ó®   — e Zd ZdZdedefd„Zedefd„¦   «         Z	edefd„¦   «         Z
edefd„¦   «         Zdd
„Zdedd	fd„Zdedd	fd„Zdedd	fd„Zd	S )ÚTaskContexta—  
    Pure task state management - no session dependencies.

    This class handles:
    - Task state (status, result)
    - Cancellation tracking
    - Store interactions

    For server-integrated features (elicit, create_message, notifications),
    use ServerTaskContext from mcp.server.experimental.

    Example (distributed worker):
        async def worker_job(task_id: str):
            store = RedisTaskStore(redis_url)
            task = await store.get_task(task_id)
            ctx = TaskContext(task=task, store=store)

            await ctx.update_status("Working...")
            result = await do_work()
            await ctx.complete(result)
    ÚtaskÚstorec                 ó0   — || _         || _        d| _        d S )NF)Ú_taskÚ_storeÚ
_cancelled)Úselfr
   r   s      úy/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/shared/experimental/tasks/context.pyÚ__init__zTaskContext.__init__$   s   € ØˆŒ
ØˆŒØˆŒˆˆó    Úreturnc                 ó   — | j         j        S )zThe task identifier.)r   ÚtaskId©r   s    r   Útask_idzTaskContext.task_id)   s   € ð ŒzÔ Ð r   c                 ó   — | j         S )zThe current task state.)r   r   s    r   r
   zTaskContext.task.   s   € ð ŒzÐr   c                 ó   — | j         S )z(Whether cancellation has been requested.©r   r   s    r   Úis_cancelledzTaskContext.is_cancelled3   s   € ð ŒÐr   Nc                 ó   — d| _         dS )z§
        Request cancellation of this task.

        This sets is_cancelled=True. Task work should check this
        periodically and exit gracefully if set.
        TNr   r   s    r   Úrequest_cancellationz TaskContext.request_cancellation8   s   € ð ˆŒˆˆr   Úmessagec              ƒ   ób   K  — | j                              | j        |¬¦  «        ƒ d{V —†| _        dS )zn
        Update the task's status message.

        Args:
            message: The new status message
        )Ústatus_messageN)r   Úupdate_taskr   r   )r   r   s     r   Úupdate_statuszTaskContext.update_statusA   sP   è è € ð  œ;×2Ò2ØŒLØ"ð 3ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆŒ
ˆ
ˆ
r   Úresultc              ƒ   ó¸   K  — | j                              | j        |¦  «        ƒ d{V —† | j                              | j        t          ¬¦  «        ƒ d{V —†| _        dS )zv
        Mark the task as completed with the given result.

        Args:
            result: The task result
        N)Ústatus)r   Ústore_resultr   r"   r   r   )r   r$   s     r   ÚcompletezTaskContext.completeM   s|   è è € ð Œk×&Ò& t¤|°VÑ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Øœ;×2Ò2ØŒLÝ(ð 3ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆŒ
ˆ
ˆ
r   Úerrorc              ƒ   ón   K  — | j                              | j        t          |¬¦  «        ƒ d{V —†| _        dS )zt
        Mark the task as failed with an error message.

        Args:
            error: The error message
        )r&   r!   N)r   r"   r   r   r   )r   r)   s     r   ÚfailzTaskContext.failZ   sS   è è € ð  œ;×2Ò2ØŒLÝ%Ø ð 3ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆŒ
ˆ
ˆ
r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚpropertyÚstrr   r
   Úboolr   r   r#   r   r(   r+   © r   r   r	   r	      s/  € € € € € ðð ð, ˜Tð  ¨)ð  ð  ð  ð  ð
 ð!˜ð !ð !ð !ñ „Xð!ð ðdð ð ð ñ „Xðð ð˜dð ð ð ñ „Xððð ð ð ð

¨3ð 

°4ð 

ð 

ð 

ð 

ð
 Vð 
°ð 
ð 
ð 
ð 
ð
 ð 
¨ð 
ð 
ð 
ð 
ð 
ð 
r   r	   N)	r/   Ú#mcp.shared.experimental.tasks.storer   Ú	mcp.typesr   r   r   r   r	   r3   r   r   ú<module>r6      sƒ   ððð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MðX
ð X
ð X
ð X
ð X
ñ X
ô X
ð X
ð X
ð X
r   