< Summary

Information
Class: Elsa.AI.Host.Tools.Workflows.WorkflowDefinitionTool
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Workflows/WorkflowDefinitionTool.cs
Line coverage
57%
Covered lines: 11
Uncovered lines: 8
Coverable lines: 19
Total lines: 31
Line coverage: 57.8%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Definition()100%11100%
ExecuteAsync()0%4260%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Workflows/WorkflowDefinitionTool.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Models;
 2using Elsa.AI.Host.Services;
 3
 4namespace Elsa.AI.Host.Tools.Workflows;
 5
 456public class WorkflowDefinitionTool(IServiceProvider serviceProvider, WorkflowGroundingMapper mapper, AIGroundingResultF
 7{
 908    public override AIToolDefinition Definition { get; } = ReadOnlyDefinition(
 459        "workflows.getDefinition",
 4510        "Get workflow definition",
 4511        "Get a model-safe workflow definition summary with version metadata and graph hints.",
 4512        GroundingToolSchemas.WithProperties(
 4513            ("id", GroundingToolSchemas.String("Workflow definition version ID.")),
 4514            ("versionId", GroundingToolSchemas.String("Workflow definition version ID.")),
 4515            ("definitionId", GroundingToolSchemas.String("Logical workflow definition ID.")),
 4516            ("version", GroundingToolSchemas.Integer("Specific workflow version.")),
 4517            ("published", GroundingToolSchemas.Boolean("Resolve the published version instead of the latest version.")))
 18
 19    public override async ValueTask<AIToolResult> ExecuteAsync(AIToolExecutionContext context, CancellationToken cancell
 20    {
 021        var store = WorkflowDefinitionStore;
 022        if (store == null)
 023            return WorkflowStoreUnavailable();
 24
 025        var definition = await store.FindAsync(CreateDefinitionFilter(context.Arguments), cancellationToken);
 026        if (definition == null || !IsTenantAllowed(definition, context.TenantId))
 027            return new AIToolResult { Status = AIToolInvocationStatus.Failed, Error = "Workflow definition was not found
 28
 029        return Formatter.CreateResult($"Resolved workflow definition {definition.DefinitionId} v{definition.Version}.", 
 030    }
 31}