< Summary

Information
Class: Elsa.AI.Host.Services.RuntimeGroundingMapper
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Services/RuntimeGroundingMapper.cs
Line coverage
42%
Covered lines: 24
Uncovered lines: 32
Coverable lines: 56
Total lines: 72
Line coverage: 42.8%
Branch coverage
33%
Covered branches: 2
Total branches: 6
Branch coverage: 33.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Map(...)100%210%
Map(...)100%210%
MapIncident(...)33.33%66100%
MapState(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Services/RuntimeGroundingMapper.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Models;
 2using Elsa.Workflows.Management.Entities;
 3using Elsa.Workflows.Management.Models;
 4using Elsa.Workflows.Models;
 5
 6namespace Elsa.AI.Host.Services;
 7
 488public class RuntimeGroundingMapper(AIGroundingResultFormatter formatter)
 9{
 10    public RuntimeInstanceGroundingSummary Map(WorkflowInstanceSummary summary) =>
 011        new()
 012        {
 013            Id = summary.Id,
 014            TenantId = summary.TenantId,
 015            DefinitionId = summary.DefinitionId,
 016            DefinitionVersionId = summary.DefinitionVersionId,
 017            Version = summary.Version,
 018            Status = summary.Status.ToString(),
 019            SubStatus = summary.SubStatus.ToString(),
 020            CorrelationId = summary.CorrelationId,
 021            Name = summary.Name,
 022            IncidentCount = summary.IncidentCount,
 023            CreatedAt = summary.CreatedAt,
 024            UpdatedAt = summary.UpdatedAt,
 025            FinishedAt = summary.FinishedAt
 026        };
 27
 28    public RuntimeInstanceGroundingSummary Map(WorkflowInstance instance) =>
 029        new()
 030        {
 031            Id = instance.Id,
 032            TenantId = instance.TenantId,
 033            DefinitionId = instance.DefinitionId,
 034            DefinitionVersionId = instance.DefinitionVersionId,
 035            Version = instance.Version,
 036            Status = instance.Status.ToString(),
 037            SubStatus = instance.SubStatus.ToString(),
 038            CorrelationId = instance.CorrelationId,
 039            Name = instance.Name,
 040            IncidentCount = instance.IncidentCount,
 041            CreatedAt = instance.CreatedAt,
 042            UpdatedAt = instance.UpdatedAt,
 043            FinishedAt = instance.FinishedAt
 044        };
 45
 46    public IncidentGroundingSummary MapIncident(string workflowInstanceId, ActivityIncident incident) =>
 147        new()
 148        {
 149            WorkflowInstanceId = workflowInstanceId,
 150            ActivityId = incident.ActivityId,
 151            ActivityNodeId = incident.ActivityNodeId,
 152            ActivityType = incident.ActivityType,
 153            Message = incident.Message,
 154            ExceptionType = incident.Exception?.Type?.FullName,
 155            ExceptionMessage = incident.Exception?.Message,
 156            Timestamp = incident.Timestamp
 157        };
 58
 59    public JsonObject MapState(WorkflowInstance instance) =>
 160        formatter.RedactObject(new JsonObject
 161        {
 162            ["id"] = instance.Id,
 163            ["status"] = instance.Status.ToString(),
 164            ["subStatus"] = instance.SubStatus.ToString(),
 165            ["input"] = AIGroundingJson.ToJsonObject(instance.WorkflowState.Input),
 166            ["output"] = AIGroundingJson.ToJsonObject(instance.WorkflowState.Output),
 167            ["properties"] = AIGroundingJson.ToJsonObject(instance.WorkflowState.Properties),
 168            ["scheduledActivityCount"] = instance.WorkflowState.ScheduledActivities.Count,
 169            ["bookmarkCount"] = instance.WorkflowState.Bookmarks.Count,
 170            ["activityExecutionContextCount"] = instance.WorkflowState.ActivityExecutionContexts.Count
 171        });
 72}