using System.ComponentModel; using ClaudeDo.Data.Models; using ClaudeDo.Data.Repositories; using TaskStatus = ClaudeDo.Data.Models.TaskStatus; namespace ClaudeDo.Ui.Services; public interface IWorkerClient : INotifyPropertyChanged { bool IsConnected { get; } event Action? TaskStartedEvent; event Action? TaskFinishedEvent; event Action? TaskUpdatedEvent; /// Raised once when the SignalR connection is first established, and again on every reconnect. event Action? ConnectionRestoredEvent; event Action? WorktreeUpdatedEvent; event Action? ListUpdatedEvent; event Action? TaskMessageEvent; event Action? PlanningMergeStartedEvent; event Action? PlanningSubtaskMergedEvent; event Action>? PlanningMergeConflictEvent; event Action? PlanningMergeAbortedEvent; event Action? PlanningCompletedEvent; Task WakeQueueAsync(); Task RunNowAsync(string taskId); Task ContinueTaskAsync(string taskId, string followUpPrompt); Task ResetTaskAsync(string taskId); Task CancelTaskAsync(string taskId); Task> GetAgentsAsync(); Task GetListConfigAsync(string listId); Task UpdateTaskAgentSettingsAsync(UpdateTaskAgentSettingsDto dto); Task SetTaskStatusAsync(string taskId, TaskStatus status); Task ApproveReviewAsync(string taskId); Task RejectReviewToQueueAsync(string taskId, string feedback); Task RejectReviewToIdleAsync(string taskId); Task CancelReviewAsync(string taskId); Task StartPlanningSessionAsync(string taskId, CancellationToken ct = default); Task OpenInteractiveTerminalAsync(string taskId, CancellationToken ct = default); Task ResumePlanningSessionAsync(string taskId, CancellationToken ct = default); Task DiscardPlanningSessionAsync(string taskId, bool dequeueQueuedChildren = false, CancellationToken ct = default); Task FinalizePlanningSessionAsync(string taskId, bool queueAgentTasks = true, CancellationToken ct = default); Task GetPendingDraftCountAsync(string taskId, CancellationToken ct = default); Task GetMergeTargetsAsync(string taskId); Task> GetPlanningAggregateAsync(string planningTaskId); Task BuildPlanningIntegrationBranchAsync(string planningTaskId, string targetBranch); Task MergeAllPlanningAsync(string planningTaskId, string targetBranch); Task ContinuePlanningMergeAsync(string planningTaskId); Task AbortPlanningMergeAsync(string planningTaskId); Task QueuePlanningSubtasksAsync(string parentTaskId, CancellationToken ct = default); Task GetWeekReportAsync(DateOnly start, DateOnly end); Task GenerateWeekReportAsync(DateOnly start, DateOnly end); Task> GetDailyNotesAsync(DateOnly day); Task AddDailyNoteAsync(DateOnly day, string text); Task UpdateDailyNoteAsync(string id, string text); Task DeleteDailyNoteAsync(string id); }