< Summary

Information
Class: NexusLabs.Needlr.AgentFramework.Workflows.Diagnostics.AgentDiagnosticsPlugin
Assembly: NexusLabs.Needlr.AgentFramework.Workflows
File(s): /home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Workflows/Diagnostics/AgentDiagnosticsPlugin.cs
Line coverage
100%
Covered lines: 15
Uncovered lines: 0
Coverable lines: 15
Total lines: 43
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Configure(...)100%11100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Workflows/Diagnostics/AgentDiagnosticsPlugin.cs

#LineLine coverage
 1using Microsoft.Agents.AI;
 2using Microsoft.Extensions.DependencyInjection;
 3
 4using NexusLabs.Needlr.AgentFramework;
 5using NexusLabs.Needlr.AgentFramework.Diagnostics;
 6using NexusLabs.Needlr.AgentFramework.Progress;
 7
 8namespace NexusLabs.Needlr.AgentFramework.Workflows.Diagnostics;
 9
 10/// <summary>
 11/// <see cref="IAIAgentBuilderPlugin"/> that wires the diagnostics middleware layers
 12/// into every agent created by the factory. Emits <see cref="IAgentMetrics"/>
 13/// counters/histograms and <see cref="IProgressEvent"/> events in real-time.
 14/// </summary>
 15internal sealed class AgentDiagnosticsPlugin : IAIAgentBuilderPlugin
 16{
 17    private readonly IServiceProvider _serviceProvider;
 18
 3619    internal AgentDiagnosticsPlugin(IServiceProvider serviceProvider)
 20    {
 3621        _serviceProvider = serviceProvider;
 3622    }
 23
 24    /// <inheritdoc />
 25    public void Configure(AIAgentBuilderPluginOptions options)
 26    {
 3927        ArgumentNullException.ThrowIfNull(options);
 28
 3929        var builder = options.AgentBuilder;
 30
 3931        var writer = _serviceProvider.GetRequiredService<IAgentDiagnosticsWriter>();
 3932        var metrics = _serviceProvider.GetRequiredService<IAgentMetrics>();
 33
 3934        var runMiddleware = new DiagnosticsAgentRunMiddleware("Agent", writer, metrics);
 3935        builder.Use(
 3936            runFunc: runMiddleware.HandleAsync,
 3937            runStreamingFunc: runMiddleware.HandleStreamingAsync);
 38
 3939        var progressAccessor = _serviceProvider.GetRequiredService<IProgressReporterAccessor>();
 3940        var toolCallCollector = _serviceProvider.GetService<IToolCallCollector>();
 3941        DiagnosticsFunctionCallingMiddleware.Wire(builder, metrics, progressAccessor, toolCallCollector);
 3942    }
 43}