< Summary

Information
Class: Elsa.AI.Host.Tools.Workflows.WorkflowsSearchTool
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Workflows/WorkflowsSearchTool.cs
Line coverage
94%
Covered lines: 18
Uncovered lines: 1
Coverable lines: 19
Total lines: 32
Line coverage: 94.7%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
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()50%2283.33%

File(s)

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

#LineLine coverage
 1using Elsa.AI.Abstractions.Models;
 2using Elsa.AI.Host.Services;
 3using Elsa.Common.Models;
 4
 5namespace Elsa.AI.Host.Tools.Workflows;
 6
 457public class WorkflowsSearchTool(IServiceProvider serviceProvider, WorkflowGroundingMapper mapper, AIGroundingResultForm
 8{
 919    public override AIToolDefinition Definition { get; } = ReadOnlyDefinition(
 4510        "workflows.search",
 4511        "Search workflows",
 4512        "Search authorized workflow definitions by name, id, description, and version scope.",
 4513        GroundingToolSchemas.WithProperties(
 4514            ("query", GroundingToolSchemas.String("Free-text search term.")),
 4515            ("name", GroundingToolSchemas.String("Workflow name.")),
 4516            ("definitionId", GroundingToolSchemas.String("Logical workflow definition ID.")),
 4517            ("version", GroundingToolSchemas.Integer("Specific workflow version.")),
 4518            ("published", GroundingToolSchemas.Boolean("Search the published version instead of the latest version."))))
 19
 20    public override async ValueTask<AIToolResult> ExecuteAsync(AIToolExecutionContext context, CancellationToken cancell
 21    {
 122        var store = WorkflowDefinitionStore;
 123        if (store == null)
 024            return WorkflowStoreUnavailable();
 25
 126        var page = await store.FindManyAsync(CreateDefinitionFilter(context.Arguments), PageArgs.FromRange(0, 100), canc
 227        var definitions = page.Items.Where(x => IsTenantAllowed(x, context.TenantId)).ToList();
 228        var items = definitions.Select(x => AIGroundingJson.ToJsonObject(mapper.Map(x)));
 29
 130        return Formatter.CreateResult($"Found {definitions.Count} authorized workflow definitions.", items, definitions.
 131    }
 32}