@@ -109,6 +109,62 @@ class IClient {
109109 // ==========================================================================================================
110110 virtual std::future<JSONValue> CallTool (const std::string& name,
111111 const JSONValue& arguments) = 0;
112+ // ==========================================================================================================
113+ // Invokes a server tool using task augmentation and returns the created task metadata.
114+ // Args:
115+ // name: The tool name.
116+ // arguments: JSON object containing the tool parameters.
117+ // task: Optional task retention metadata.
118+ // Returns:
119+ // A future with the created task information.
120+ // ==========================================================================================================
121+ virtual std::future<CreateTaskResult> CallToolTask (const std::string& name,
122+ const JSONValue& arguments,
123+ const TaskMetadata& task) = 0;
124+
125+ // //////////////////////////////////////// Task operations /////////////////////////////////////////////////
126+ // ==========================================================================================================
127+ // Retrieves the latest task state for the given task id.
128+ // Args:
129+ // taskId: Receiver-generated task identifier.
130+ // Returns:
131+ // A future with the current task metadata.
132+ // ==========================================================================================================
133+ virtual std::future<Task> GetTask (const std::string& taskId) = 0;
134+ // ==========================================================================================================
135+ // Lists receiver-side tasks (non-paged helper).
136+ // Args:
137+ // (none)
138+ // Returns:
139+ // A future with all currently known tasks.
140+ // ==========================================================================================================
141+ virtual std::future<std::vector<Task>> ListTasks () = 0;
142+ // ==========================================================================================================
143+ // Lists receiver-side tasks with optional paging.
144+ // Args:
145+ // cursor: Optional opaque cursor indicating the starting position.
146+ // limit: Optional maximum number of tasks to return; must be positive when provided.
147+ // Returns:
148+ // A future with a task page and optional nextCursor.
149+ // ==========================================================================================================
150+ virtual std::future<TasksListResult> ListTasksPaged (const std::optional<std::string>& cursor,
151+ const std::optional<int >& limit) = 0;
152+ // ==========================================================================================================
153+ // Retrieves the original result payload for a terminal task.
154+ // Args:
155+ // taskId: Receiver-generated task identifier.
156+ // Returns:
157+ // A future with either the original result payload or the original error payload.
158+ // ==========================================================================================================
159+ virtual std::future<JSONValue> GetTaskResult (const std::string& taskId) = 0;
160+ // ==========================================================================================================
161+ // Requests cancellation for a receiver-side task.
162+ // Args:
163+ // taskId: Receiver-generated task identifier.
164+ // Returns:
165+ // A future with the updated task metadata.
166+ // ==========================================================================================================
167+ virtual std::future<Task> CancelTask (const std::string& taskId) = 0;
112168
113169 // //////////////////////////////////////// Resource operations /////////////////////////////////////////////
114170 // ==========================================================================================================
@@ -343,6 +399,17 @@ class IClient {
343399 using ProgressHandler = std::function<void (const std::string& token, double progress, const std::string& message)>;
344400 virtual void SetProgressHandler (ProgressHandler handler) = 0;
345401
402+ // //////////////////////////////////////// Task status tracking ////////////////////////////////////////////
403+ // ==========================================================================================================
404+ // Registers a task status notification handler.
405+ // Args:
406+ // handler: Callback receiving the latest task snapshot from notifications/tasks/status.
407+ // Returns:
408+ // (none)
409+ // ==========================================================================================================
410+ using TaskStatusHandler = std::function<void (const Task&)>;
411+ virtual void SetTaskStatusHandler (TaskStatusHandler handler) = 0;
412+
346413 // ////////////////////////////////////////// Error handling ////////////////////////////////////////////////
347414 // ==========================================================================================================
348415 // Registers an error handler to receive transport/client errors.
@@ -407,6 +474,15 @@ class Client : public IClient {
407474 const std::optional<int >& limit) override ;
408475 std::future<JSONValue> CallTool (const std::string& name,
409476 const JSONValue& arguments) override ;
477+ std::future<CreateTaskResult> CallToolTask (const std::string& name,
478+ const JSONValue& arguments,
479+ const TaskMetadata& task) override ;
480+ std::future<Task> GetTask (const std::string& taskId) override ;
481+ std::future<std::vector<Task>> ListTasks () override ;
482+ std::future<TasksListResult> ListTasksPaged (const std::optional<std::string>& cursor,
483+ const std::optional<int >& limit) override ;
484+ std::future<JSONValue> GetTaskResult (const std::string& taskId) override ;
485+ std::future<Task> CancelTask (const std::string& taskId) override ;
410486
411487 std::future<std::vector<Resource>> ListResources () override ;
412488 std::future<ResourcesListResult> ListResourcesPaged (const std::optional<std::string>& cursor,
@@ -441,6 +517,7 @@ class Client : public IClient {
441517 void SetNotificationHandler (const std::string& method, NotificationHandler handler) override ;
442518 void RemoveNotificationHandler (const std::string& method) override ;
443519 void SetProgressHandler (ProgressHandler handler) override ;
520+ void SetTaskStatusHandler (TaskStatusHandler handler) override ;
444521 void SetErrorHandler (ErrorHandler handler) override ;
445522
446523 // Validation (opt-in)
0 commit comments