< Summary

Information
Class: UIBlazor.Components.MessageContent
Assembly: UIBlazor
File(s): /home/runner/work/InvAit/InvAit/UIBlazor/Components/MessageContent.razor
Tag: 71_26091983037
Line coverage
0%
Covered lines: 0
Uncovered lines: 15
Coverable lines: 15
Total lines: 48
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 16
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
BuildRenderTree(...)0%272160%
get_Message()100%210%
get_OnToolApproval()100%210%
get_ToolManager()100%210%
OnToolApprovalHandler()100%210%

File(s)

/home/runner/work/InvAit/InvAit/UIBlazor/Components/MessageContent.razor

#LineLine coverage
 1<div class="ai-chat-message">
 02    @if (Message.Role != ChatMessageRole.Assistant)
 3    {
 4        <MarkdownBlock Content="@Message.Content" />
 5    }
 6    else
 7    {
 08        toolCount = 0;
 09        @if (!string.IsNullOrEmpty(Message.ReasoningContent))
 10        {
 011            var header = Message.Timings is { Reasoning.TotalMilliseconds: > 100 }
 012                ? $"{SharedResource.Thinking} {Message.Timings.Reasoning.TotalSeconds.ToString("F1")} sec"
 013                : SharedResource.Thinking;
 14            <Details Text="@header" Icon="fa-solid fa-lightbulb" class="reasoning-details">
 15                <MarkdownBlock Content="@Message.ReasoningContent" />
 16            </Details>
 17        }
 18
 019        @foreach (var segment in Message.Segments)
 20        {
 021            if (segment.Type == SegmentType.Tool)
 22            {
 23                <ToolCallBlock @key="segment.Id"
 24                    Segment="@segment"
 25                    OnApproval="@OnToolApprovalHandler"
 26                    ToolResult="@(toolCount < Message.ToolResults.Count ? Message.ToolResults[toolCount] : null)" />
 027                toolCount++;
 28            }
 029            else if (segment.Type is SegmentType.Markdown)
 30            {
 31                <MarkdownBlock @key="segment.Id" Content="@segment.CurrentLine.ToString()" />
 32            }
 33        }
 34    }
 35</div>
 36
 37@code {
 038    [Parameter] public VisualChatMessage Message { get; set; } = new();
 039    [Parameter] public EventCallback<(string MessageId, string SegmentId, bool Approved)> OnToolApproval { get; set; }
 040    [Inject] private IToolManager ToolManager { get; set; } = null!;
 41
 42    private int toolCount;
 43
 44    private async Task OnToolApprovalHandler((string SegmentId, bool Approved) args)
 45    {
 046        await OnToolApproval.InvokeAsync((Message.Id, args.SegmentId, args.Approved));
 047    }
 48}