feat(api): add parentTaskId support to task update and MCP create
Allow setting ParentTaskId when updating a task via the API (with validation that the parent exists) and when creating a task via the MCP create_task tool. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,13 @@ public class TasksController(ITaskRepository taskRepo, ILogger<TasksController>
|
|||||||
if (request.Description is not null) task.Description = request.Description;
|
if (request.Description is not null) task.Description = request.Description;
|
||||||
if (request.Category is not null) task.Category = request.Category;
|
if (request.Category is not null) task.Category = request.Category;
|
||||||
if (request.EstimatedMinutes.HasValue) task.EstimatedMinutes = request.EstimatedMinutes;
|
if (request.EstimatedMinutes.HasValue) task.EstimatedMinutes = request.EstimatedMinutes;
|
||||||
|
if (request.ParentTaskId.HasValue)
|
||||||
|
{
|
||||||
|
var parent = await taskRepo.GetByIdAsync(request.ParentTaskId.Value);
|
||||||
|
if (parent is null)
|
||||||
|
return BadRequest(ApiResponse.Fail("Parent task not found"));
|
||||||
|
task.ParentTaskId = request.ParentTaskId;
|
||||||
|
}
|
||||||
|
|
||||||
await taskRepo.UpdateAsync(task);
|
await taskRepo.UpdateAsync(task);
|
||||||
return Ok(ApiResponse<WorkTask>.Ok(task));
|
return Ok(ApiResponse<WorkTask>.Ok(task));
|
||||||
|
|||||||
@@ -6,4 +6,5 @@ public class UpdateTaskRequest
|
|||||||
public string? Description { get; set; }
|
public string? Description { get; set; }
|
||||||
public string? Category { get; set; }
|
public string? Category { get; set; }
|
||||||
public int? EstimatedMinutes { get; set; }
|
public int? EstimatedMinutes { get; set; }
|
||||||
|
public int? ParentTaskId { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,9 +39,10 @@ public sealed class TaskTools
|
|||||||
HttpClient client,
|
HttpClient client,
|
||||||
[Description("Title of the task")] string title,
|
[Description("Title of the task")] string title,
|
||||||
[Description("Optional description")] string? description = null,
|
[Description("Optional description")] string? description = null,
|
||||||
[Description("Optional category (e.g. Engineering, Email, LaserCutting)")] string? category = null)
|
[Description("Optional category (e.g. Engineering, Email, LaserCutting)")] string? category = null,
|
||||||
|
[Description("Optional parent task ID to create this as a subtask")] int? parentTaskId = null)
|
||||||
{
|
{
|
||||||
var payload = new { title, description, category };
|
var payload = new { title, description, category, parentTaskId };
|
||||||
var response = await client.PostAsJsonAsync("/api/tasks", payload, JsonOptions);
|
var response = await client.PostAsJsonAsync("/api/tasks", payload, JsonOptions);
|
||||||
return await response.Content.ReadAsStringAsync();
|
return await response.Content.ReadAsStringAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user