namespace ClaudeDo.Worker.State; public interface ITaskStateService { Task EnqueueAsync(string taskId, CancellationToken ct); Task StartRunningAsync(string taskId, DateTime startedAt, CancellationToken ct); Task CompleteAsync(string taskId, DateTime finishedAt, string? result, CancellationToken ct); Task SubmitForReviewAsync(string taskId, DateTime finishedAt, string? result, CancellationToken ct); Task FailAsync(string taskId, DateTime finishedAt, string? error, CancellationToken ct); Task CancelAsync(string taskId, DateTime finishedAt, CancellationToken ct); Task ResetToIdleAsync(string taskId, CancellationToken ct); Task ApproveReviewAsync(string taskId, CancellationToken ct); Task RejectToQueueAsync(string taskId, string feedback, CancellationToken ct); Task RejectToIdleAsync(string taskId, CancellationToken ct); Task ClearReviewFeedbackAsync(string taskId, CancellationToken ct); Task ForceSetStatusAsync(string taskId, ClaudeDo.Data.Models.TaskStatus status, CancellationToken ct); Task StartPlanningAsync(string parentId, CancellationToken ct); Task FinalizePlanningAsync(string parentId, CancellationToken ct); Task BlockOnAsync(string taskId, string predecessorTaskId, CancellationToken ct); Task UnblockAsync(string taskId, CancellationToken ct); Task RecoverStaleRunningAsync(string reason, CancellationToken ct); }