transition method
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;
}