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:
2026-02-27 00:20:27 -05:00
parent 5db92d5127
commit 4b2a5a2707
3 changed files with 11 additions and 2 deletions

View File

@@ -173,6 +173,13 @@ public class TasksController(ITaskRepository taskRepo, ILogger<TasksController>
if (request.Description is not null) task.Description = request.Description;
if (request.Category is not null) task.Category = request.Category;
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);
return Ok(ApiResponse<WorkTask>.Ok(task));

View File

@@ -6,4 +6,5 @@ public class UpdateTaskRequest
public string? Description { get; set; }
public string? Category { get; set; }
public int? EstimatedMinutes { get; set; }
public int? ParentTaskId { get; set; }
}

View File

@@ -39,9 +39,10 @@ public sealed class TaskTools
HttpClient client,
[Description("Title of the task")] string title,
[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);
return await response.Content.ReadAsStringAsync();
}