// Copyright (c) Microsoft. All rights reserved.
using System.Text.Json.Serialization;
namespace Microsoft.Agents.AI.Workflows;
///
/// Base class for -scoped events.
///
[JsonDerivedType(typeof(ExecutorEvent))]
[JsonDerivedType(typeof(SuperStepEvent))]
[JsonDerivedType(typeof(WorkflowStartedEvent))]
[JsonDerivedType(typeof(WorkflowErrorEvent))]
[JsonDerivedType(typeof(WorkflowWarningEvent))]
[JsonDerivedType(typeof(WorkflowOutputEvent))]
[JsonDerivedType(typeof(RequestInfoEvent))]
public class WorkflowEvent(object? data = null)
{
///
/// Optional payload
///
public object? Data => data;
///
public override string ToString() =>
this.Data is not null ?
$"{this.GetType().Name}(Data: {this.Data.GetType()} = {this.Data})" :
$"{this.GetType().Name}()";
}