< Summary

Information
Class: NexusLabs.Needlr.AgentFramework.Evaluation.PipelineEvaluationExtensions
Assembly: NexusLabs.Needlr.AgentFramework.Evaluation
File(s): /home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Evaluation/PipelineEvaluationExtensions.cs
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 44
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ToEvaluationInputs(...)100%44100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Evaluation/PipelineEvaluationExtensions.cs

#LineLine coverage
 1using Microsoft.Extensions.AI;
 2
 3using NexusLabs.Needlr.AgentFramework.Diagnostics;
 4
 5namespace NexusLabs.Needlr.AgentFramework.Evaluation;
 6
 7/// <summary>
 8/// Extensions that convert <see cref="IPipelineRunResult"/> into the input shape expected
 9/// by <c>Microsoft.Extensions.AI.Evaluation</c> evaluators.
 10/// </summary>
 11public static class PipelineEvaluationExtensions
 12{
 13    /// <summary>
 14    /// Projects a pipeline run result into <see cref="EvaluationInputs"/> for the full
 15    /// pipeline. Input messages are collected from all stages that have diagnostics, and
 16    /// the response is taken from the last stage that produced a non-null
 17    /// <see cref="ChatResponse"/>.
 18    /// </summary>
 19    /// <param name="result">The pipeline run result to convert.</param>
 20    /// <returns>
 21    /// An <see cref="EvaluationInputs"/> whose <see cref="EvaluationInputs.Messages"/> is
 22    /// the union of all stage input messages, and whose
 23    /// <see cref="EvaluationInputs.ModelResponse"/> is the last stage's response. When no
 24    /// stage produced a response, the returned response contains a single empty assistant
 25    /// message so evaluators always receive a non-null <see cref="ChatResponse"/>.
 26    /// </returns>
 27    /// <exception cref="ArgumentNullException"><paramref name="result"/> is <see langword="null"/>.</exception>
 28    public static EvaluationInputs ToEvaluationInputs(this IPipelineRunResult result)
 29    {
 430        ArgumentNullException.ThrowIfNull(result);
 31
 332        var allInputMessages = result.Stages
 633            .Where(s => s.Diagnostics is not null)
 634            .SelectMany(s => s.Diagnostics!.InputMessages)
 335            .ToList();
 36
 337        var lastResponse = result.Stages
 838            .LastOrDefault(s => s.FinalResponse is not null)?.FinalResponse;
 339        var chatResponse = lastResponse
 340            ?? new ChatResponse(new ChatMessage(ChatRole.Assistant, string.Empty));
 41
 342        return new EvaluationInputs(allInputMessages, chatResponse);
 43    }
 44}