< Summary

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

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetText(...)100%1212100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework/AgentResponseExtensions.cs

#LineLine coverage
 1using Microsoft.Agents.AI;
 2
 3namespace NexusLabs.Needlr.AgentFramework;
 4
 5/// <summary>
 6/// Convenience extensions for <see cref="AgentResponse"/>.
 7/// </summary>
 8public static class AgentResponseExtensions
 9{
 10    /// <summary>
 11    /// Extracts the concatenated text content from all messages in the response.
 12    /// Returns <see langword="null"/> if the response has no messages or all messages
 13    /// have empty text.
 14    /// </summary>
 15    /// <remarks>
 16    /// <para>
 17    /// MAF's <see cref="AgentResponse.Messages"/> can contain multiple
 18    /// <see cref="Microsoft.Extensions.AI.ChatMessage"/> entries (e.g., tool-call results
 19    /// interleaved with assistant text). This method concatenates only the non-empty
 20    /// <c>Text</c> properties, separated by newlines, into a single string.
 21    /// </para>
 22    /// <para>
 23    /// Typical usage for standalone agent runs:
 24    /// <code>
 25    /// var response = await agent.RunAsync(prompt, cancellationToken: ct);
 26    /// var text = response.GetText(); // "The answer is 42."
 27    /// </code>
 28    /// </para>
 29    /// </remarks>
 30    public static string? GetText(this AgentResponse response)
 31    {
 732        ArgumentNullException.ThrowIfNull(response);
 33
 634        if (response.Messages is null or { Count: 0 })
 235            return null;
 36
 437        string? result = null;
 2438        foreach (var message in response.Messages)
 39        {
 840            if (string.IsNullOrWhiteSpace(message.Text))
 41                continue;
 42
 543            result = result is null
 544                ? message.Text
 545                : string.Concat(result, "\n", message.Text);
 46        }
 47
 448        return result;
 49    }
 50}