Files
agent-framework/dotnet/src/Microsoft.Agents.AI.Workflows/Execution/MessageEnvelope.cs
T
Tao ChenandGitHub 042099009f .NET: Workflow observability (#959)
* Add basic Workflow telemetry

* Add sample

* Add source propagation for executor spans

* Fix tests and address comments

* Fix formatting

* Fix declarative unit tests

* Address comments

* Remove Microsoft.Extensions.AI.Agents.EnableTelemetry

* Formatting

* Formatting

* Formatting

* fix solution

* Address comments

* Add workflow json definition for serialization

* Formmating

* Address comments
2025-09-30 23:40:04 +00:00

42 lines
1.4 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Agents.AI.Workflows.Checkpointing;
namespace Microsoft.Agents.AI.Workflows.Execution;
internal sealed class MessageEnvelope(
object message,
ExecutorIdentity source,
TypeId? declaredType = null,
string? targetId = null,
Dictionary<string, string>? traceContext = null)
{
public TypeId MessageType => declaredType ?? new(message.GetType());
public object Message => message;
public ExecutorIdentity Source => source;
public string? TargetId => targetId;
public Dictionary<string, string>? TraceContext => traceContext;
[MemberNotNullWhen(false, nameof(SourceId))]
public bool IsExternal => this.Source == ExecutorIdentity.None;
public string? SourceId => this.Source.Id;
internal MessageEnvelope(
object message,
ExecutorIdentity source,
Type declaredType,
string? targetId = null,
Dictionary<string, string>? traceContext = null) : this(message, source, new TypeId(declaredType), targetId, traceContext)
{
if (!declaredType.IsInstanceOfType(message))
{
throw new ArgumentException($"The declared type {declaredType} is not compatible with the message instance of type {message.GetType()}");
}
}
}