| AgentFrameworkMetricsOptions |
Configuration options for the agent framework's OpenTelemetry metrics and tracing. |
| AgentRunDiagnosticsBuilder |
Thread-safe accumulator for diagnostics captured during a single agent run. Implements IDiagnosticsSink so writers (middleware, loops) record through a stable interface rather than coupling to the concrete builder. |
| AgentRunDiagnosticsTimelineExtensions |
Extensions for producing ordered timeline views of an IAgentRunDiagnostics. |
| AgentRunDiagnosticsTranscriptExtensions |
Extensions for rendering an IAgentRunDiagnostics as a human-readable markdown transcript. |
| ChatCompletionCollectorHolder |
DI-registered singleton that holds the IChatCompletionCollector instance. The diagnostics middleware sets the real collector during factory construction; consumers resolve this to access it. Unlike a static holder, each DI container has its own instance, making it testable and thread-safe across containers. |
| ChatCompletionDiagnostics |
Diagnostics for a single LLM chat completion call within an agent run. |
| DiagnosticsCharCounter |
Computes character counts of chat messages, responses, tool arguments, and tool results for diagnostics capture. Character counts are a direct programmatic measure of payload size — distinct from the LLM-provider-reported TokenUsage — and are useful for detecting chat-reducer drift, prompt bloat, and unexpectedly large tool responses during evaluation. |
| DiagnosticsFunctionInvocationExtensions |
Extension methods for wiring DiagnosticsFunctionInvokingChatClient into an MEAI chat client pipeline. |
| DiagnosticsFunctionInvokingChatClient |
A Microsoft.Extensions.AI.FunctionInvokingChatClient that records per-tool-call diagnostics, OTel metrics, and Activity spans for every function invocation. This is the MEAI-native equivalent of the MAF DiagnosticsFunctionCallingMiddleware in Workflows. |
| DiagnosticsRecordingChatClient |
Microsoft.Extensions.AI.DelegatingChatClient that routes calls through a NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.DiagnosticsChatClientMiddleware and is detectable via GetService. Because this extends Microsoft.Extensions.AI.DelegatingChatClient, MEAI's GetService walks the delegation chain and returns this instance when queried by type — enabling idempotent middleware installation. |
| DiagnosticsTimelineEntry |
A single entry in an agent run's ordered timeline of chat completions and tool calls. |
| HarnessArtifactDiagnostics |
Privacy-safe, structured evidence for one artifact offload or rehydration decision. Carries only categorical classifications, byte counts, and a bounded reference identity — never an artifact body, a serialized raw result, a workspace path, an owner user/orchestration/session identity, or a raw exception message. Every instance is produced by NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactDiagnostics.ForOffload(NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactOutcomeCategory,NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactContentCategory,NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactDecisionReason,System.Int32,System.Int32,System.String) or NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactDiagnostics.ForRehydration(NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactOutcomeCategory,NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessArtifactDecisionReason,System.Nullable{System.Int32},System.Int32,System.String), each of which only accepts the outcome and reason values valid for that operation, so a snapshot can never mix the two decisions' state machines. |
| HarnessContextAttribution |
Privacy-safe UTF-8 byte attribution for one artifact offload or rehydration decision: how many bytes were observed coming in, and how many artifact-derived bytes actually resulted from the decision. Always measured in UTF-8 bytes regardless of the operation, so an offload's "shrink to a reference" and a rehydration's "expand from a reference" are reported through the same two-number shape. Never carries the artifact body itself — only byte counts and, transitively via ReferenceId on the snapshot this attribution rides along with, a bounded reference identity. OutputUtf8Bytes is null for failure and recovery-required outcomes; the caller may still emit a separate bounded error string for those outcomes, but that string is not part of the artifact-derived output counted here. |
| HarnessContextCategoryContribution |
One category's contribution to a successful compaction/assembly decision's final size. The sum of every Size across a HarnessContextDiagnostics instance's CategoryContributions always equals that instance's FinalSize exactly, because both are computed from the same final entries using the same estimator that governed the policy decision. |
| HarnessContextDiagnostics |
Privacy-safe, structured evidence for one hybrid context compaction/assembly decision. Carries only categorical outcomes/stages, an explicit measurement unit, sizes, an attempt count, per-category size/entry-count contributions, and a final sequence-validity flag — never raw message text, artifact bodies, workspace paths, owner identities, tool arguments/results, exception text, or classifier output text. Every instance is produced by NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextDiagnostics.ForSuccess(NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextCompactionOutcome,NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextMeasurementUnit,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Collections.Generic.IReadOnlyList{NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextAssemblyStageCategory},System.Collections.Generic.IReadOnlyList{NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextCategoryContribution}) or NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextDiagnostics.ForTermination(NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextCompactionOutcome,NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextMeasurementUnit,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Collections.Generic.IReadOnlyList{NexusLabs.Foundry.MicrosoftAgentFramework.Diagnostics.HarnessContextAssemblyStageCategory}), mirroring exactly the success/termination split of the internal assembly result this snapshot describes. |
| PipelineMetricsOptions |
Configuration options for pipeline-shape OpenTelemetry metrics emitted by IPipelineMetrics. Sibling of AgentFrameworkMetricsOptions — that type scopes the per-agent-run meter; this one scopes the pipeline-runner meter. |
| StageTermination |
Describes why a pipeline stage terminated. Framework cases carry structured metadata (e.g. MaxIterationsReached knows the limit and the iterations used); application narrative goes through Custom. |
| StageTermination.BudgetPressure |
The token budget tracker reported usage above the configured budget pressure threshold, and the loop ran one final finalization iteration before terminating. |
| StageTermination.Cancelled |
The loop was cancelled via System.Threading.CancellationToken. |
| StageTermination.Completed |
The stage's IsComplete predicate returned true after an iteration — the stage achieved its goal. |
| StageTermination.CompletedEarlyAfterToolCall |
The IsComplete predicate returned true after a tool call within an iteration. This is a success termination — the stage achieved its goal and the loop exited early to avoid a wasted chat completion call. |
| StageTermination.Custom |
Application-specific termination cause not covered by framework cases. Use this from an onLoopCompleted callback when a stage has app-specific semantics (e.g. "Reconciled — 7 outstanding issues"). |
| StageTermination.Failed |
The stage threw an exception, OR the iterative loop reported an unrecoverable error (in which case the loop's error message is wrapped in an System.InvalidOperationException here). |
| StageTermination.MaxIterationsReached |
The loop exhausted its configured iteration limit without the IsComplete predicate returning true. |
| StageTermination.MaxToolCallsReached |
The cumulative tool-call count across all iterations exceeded the configured MaxTotalToolCalls limit. |
| StageTermination.NaturalCompletion |
The model produced a text response without requesting tool calls, signalling natural completion of the task. |
| StageTermination.Skipped |
The stage was skipped via a ShouldSkip predicate on StageExecutionPolicy. Reason is optional because the current predicate signature does not supply one. |
| StageTermination.StallDetected |
The loop detected that consecutive iterations produced nearly identical token usage, indicating the LLM is repeating the same work without making progress. |
| TeeDiagnosticsSink |
An IDiagnosticsSink that dispatches every record to N inner sinks. Owns its own sequence counters so all sinks see consistent sequence numbers. |
| TokenUsage |
Token usage breakdown for a single LLM call or aggregate across an agent run. |
| ToolCallCollectorHolder |
DI-registered singleton that holds the IToolCallCollector instance. The diagnostics middleware sets the real collector during factory construction; consumers resolve this to access it. Unlike a static holder, each DI container has its own instance, making it testable and thread-safe across containers. |
| ToolCallDiagnostics |
Diagnostics for a single tool/function invocation within an agent run. |
| WorkflowRunOptions |
Options for running a workflow with diagnostics and progress reporting. Consolidates the parameters for RunWithDiagnosticsAsync into a single record to avoid excessive parameter counts. |