< Summary

Information
Class: Elsa.AI.Host.Tools.Activities.ActivitiesSearchTool
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Activities/ActivitiesSearchTool.cs
Line coverage
96%
Covered lines: 26
Uncovered lines: 1
Coverable lines: 27
Total lines: 42
Line coverage: 96.2%
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%2292.85%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Activities/ActivitiesSearchTool.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Models;
 2using Elsa.AI.Host.Services;
 3using Elsa.AI.Host.Tools;
 4using Elsa.Workflows;
 5
 6namespace Elsa.AI.Host.Tools.Activities;
 7
 458public class ActivitiesSearchTool(IServiceProvider serviceProvider, ActivityGroundingSearchService searchService, AIGrou
 9{
 9110    public override AIToolDefinition Definition { get; } = ReadOnlyDefinition(
 4511        "activities.search",
 4512        "Search activities",
 4513        "Search installed Activity Registry descriptors by name, category, type, version, ports, and trigger behavior.",
 4514        GroundingToolSchemas.WithProperties(
 4515            ("query", GroundingToolSchemas.String("Free-text search term.")),
 4516            ("category", GroundingToolSchemas.String("Activity category.")),
 4517            ("type", GroundingToolSchemas.String("Activity type name or short name.")),
 4518            ("version", GroundingToolSchemas.Integer("Activity version.")),
 4519            ("input", GroundingToolSchemas.String("Input name or display name.")),
 4520            ("output", GroundingToolSchemas.String("Output name or display name.")),
 4521            ("trigger", GroundingToolSchemas.Boolean("Whether the activity can start a workflow."))));
 22
 23    public override ValueTask<AIToolResult> ExecuteAsync(AIToolExecutionContext context, CancellationToken cancellationT
 24    {
 125        var registry = serviceProvider.GetService(typeof(IActivityRegistry)) as IActivityRegistry;
 126        if (registry == null)
 027            return ValueTask.FromResult(formatter.Unavailable("Activity Registry"));
 28
 129        var descriptors = searchService.Search(
 130            registry,
 131            GetString(context.Arguments, "query"),
 132            GetString(context.Arguments, "category"),
 133            GetString(context.Arguments, "type"),
 134            GetInt(context.Arguments, "version"),
 135            GetString(context.Arguments, "input"),
 136            GetString(context.Arguments, "output"),
 137            GetBool(context.Arguments, "trigger"));
 138        var items = descriptors.Select(searchService.Map);
 39
 140        return ValueTask.FromResult(formatter.CreateResult($"Found {descriptors.Count} installed activities.", items, de
 41    }
 42}