// Copyright (c) Microsoft. All rights reserved.
using System.Collections.Generic;
using Microsoft.Shared.Diagnostics;
namespace Microsoft.Agents.Workflows;
///
/// Debug information about the SuperStep that finished running.
///
public sealed class SuperStepCompletionInfo(HashSet activatedExecutors, HashSet? instantiatedExecutors = null)
{
///
/// The unique identifiers of instances that processed messages during this SuperStep
///
public HashSet ActivatedExecutors { get; } = Throw.IfNull(activatedExecutors);
///
/// The unique identifiers of instances newly created during this SuperStep
///
public HashSet InstantiatedExecutors { get; } = instantiatedExecutors ?? [];
///
/// A flag indicating whether the managed state was written to during this SuperStep. If the run was started
/// with checkpointing, any updated during the checkpointing process are also included.
///
public bool StateUpdated { get; init; }
///
/// A flag indicating whether there are messages pending delivery after this SuperStep.
///
public bool HasPendingMessages { get; init; }
///
/// A flag indicating whether there are requests pending delivery after this SuperStep.
///
public bool HasPendingRequests { get; init; }
///
/// Gets the corresponding to the checkpoint created at the end of this SuperStep.
/// if checkpointing was not enabled when the run was started.
///
public CheckpointInfo? Checkpoint { get; init; } = null;
}