transition method

bool transition(
  1. McpTaskRecord task,
  2. String status, {
  3. String? statusMessage,
  4. DateTime? now,
})

Move task to status; false (and no change) when the lifecycle does not allow it — a terminal task never changes again.

Implementation

bool transition(McpTaskRecord task, String status, {String? statusMessage, DateTime? now}) {
  if (!McpTaskStatus.allowed(task.status, status)) return false;
  task.status = status;
  if (statusMessage != null) task.statusMessage = statusMessage;
  task.lastUpdatedAt = (now ?? DateTime.now()).toUtc();
  if (task.isTerminal) {
    task.inputRequests.clear();
    if (!task._terminal.isCompleted) task._terminal.complete();
  }
  _changes.add(task);
  return true;
}