-
Notifications
You must be signed in to change notification settings - Fork 30
Adds "Elsa.OpenAI" capabilities #98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: patch/3.5.2
Are you sure you want to change the base?
Changes from all commits
55078bf
e1f50a1
5cee431
1b31732
62b39ff
87e5549
406bf34
3bef2ed
bbb29d1
cef5989
de908f7
93494b5
5a23617
b4d33a4
fb3a862
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -403,3 +403,7 @@ FodyWeavers.xsd | |
|
|
||
| # JetBrains Rider | ||
| *.sln.iml | ||
| # Local environment files | ||
| .env | ||
| .env.local | ||
| appsettings.local.json | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,99 +1,107 @@ | ||
| <Project> | ||
| <PropertyGroup> | ||
| <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> | ||
| <CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled> | ||
| </PropertyGroup> | ||
| <PropertyGroup> | ||
| <ElsaVersion>3.5.2</ElsaVersion> | ||
| <ElsaStudioVersion>3.5.2</ElsaStudioVersion> | ||
| <MicrosoftVersion>9.0.9</MicrosoftVersion> | ||
| </PropertyGroup> | ||
| <ItemGroup Label="Elsa"> | ||
| <PackageVersion Include="Elsa" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Alterations" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Api.Common" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Common" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.Common" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.MySql" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.Sqlite" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.SqlServer" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.PostgreSql" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Features" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.JavaScript" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Liquid" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Workflows.Core" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Workflows.Api" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Http" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Identity" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.MassTransit" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.MassTransit.RabbitMq" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Webhooks" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Workflows.Management" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Workflows.Runtime" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Workflows.Runtime.ProtoActor" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Tenants" Version="$(ElsaVersion)"/> | ||
| <PackageVersion Include="Elsa.Testing.Shared.Component" Version="$(ElsaVersion)"/> | ||
| </ItemGroup> | ||
| <ItemGroup Label="Elsa Studio"> | ||
| <PackageVersion Include="Elsa.Studio.Shared" Version="$(ElsaStudioVersion)"/> | ||
| <PackageVersion Include="Elsa.Studio.Workflows.Core" Version="$(ElsaStudioVersion)"/> | ||
| <PackageVersion Include="Elsa.Studio.Workflows" Version="$(ElsaStudioVersion)"/> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <PackageVersion Include="Azure.Identity" Version="1.14.0"/> | ||
| <PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.1"/> | ||
| <PackageVersion Include="Azure.ResourceManager" Version="1.13.1"/> | ||
| <PackageVersion Include="Azure.ResourceManager.AppContainers" Version="1.4.0"/> | ||
| <PackageVersion Include="Azure.ResourceManager.Resources" Version="1.10.0"/> | ||
| <PackageVersion Include="Azure.ResourceManager.ServiceBus" Version="1.1.0"/> | ||
| <PackageVersion Include="Azure.Storage.Blobs" Version="12.24.1"/> | ||
| <PackageVersion Include="BenchmarkDotNet" Version="0.15.2"/> | ||
| <PackageVersion Include="Bogus" Version="35.6.3"/> | ||
| <PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2"/> | ||
| <PackageVersion Include="coverlet.collector" Version="6.0.4"/> | ||
| <PackageVersion Include="FastEndpoints" Version="6.2.0"/> | ||
| <PackageVersion Include="FastEndpoints.Security" Version="6.2.0"/> | ||
| <PackageVersion Include="FastEndpoints.Swagger" Version="6.2.0"/> | ||
| <PackageVersion Include="Fody" Version="6.9.2"/> | ||
| <PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1"/> | ||
| <PackageVersion Include="Humanizer.Core" Version="2.14.1"/> | ||
| <PackageVersion Include="JetBrains.Annotations" Version="2024.3.0"/> | ||
| <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.14.0"/> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="1.1.6"/> | ||
| <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1"/> | ||
| <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0"/> | ||
| <PackageVersion Include="NSubstitute" Version="5.3.0"/> | ||
| <PackageVersion Include="Refit" Version="8.0.0"/> | ||
| <PackageVersion Include="Refit.HttpClientFactory" Version="8.0.0"/> | ||
| <PackageVersion Include="SlackNet" Version="0.16.1"/> | ||
| <PackageVersion Include="Testcontainers" Version="4.6.0"/> | ||
| <PackageVersion Include="Testcontainers.PostgreSql" Version="4.6.0"/> | ||
| <PackageVersion Include="Testcontainers.RabbitMq" Version="4.6.0"/> | ||
| <PackageVersion Include="WebhooksCore" Version="0.0.1"/> | ||
| <PackageVersion Include="xunit" Version="2.9.3"/> | ||
| <PackageVersion Include="xunit.abstractions" Version="2.0.3"/> | ||
| <PackageVersion Include="xunit.categories" Version="3.0.1"/> | ||
| <PackageVersion Include="xunit.extensibility.core" Version="2.9.3"/> | ||
| <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1"/> | ||
| <PackageVersion Include="System.Linq.Async" Version="6.0.3"/> | ||
| <PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Data.Sqlite" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.Extensions.AI" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="Microsoft.SemanticKernel" Version="1.57.0"/> | ||
| <PackageVersion Include="Microsoft.SemanticKernel.Core" Version="1.57.0"/> | ||
| <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4"/> | ||
| <PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.3.efcore.9.0.0"/> | ||
| <PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(MicrosoftVersion)"/> | ||
| <PackageVersion Include="System.Text.Json" Version="$(MicrosoftVersion)"/> | ||
| </ItemGroup> | ||
| <PropertyGroup> | ||
| <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> | ||
| <CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled> | ||
| </PropertyGroup> | ||
| <PropertyGroup> | ||
| <ElsaVersion>3.5.2</ElsaVersion> | ||
| <ElsaStudioVersion>3.5.2</ElsaStudioVersion> | ||
| <MicrosoftVersion>9.0.9</MicrosoftVersion> | ||
| </PropertyGroup> | ||
| <ItemGroup Label="Elsa"> | ||
| <PackageVersion Include="coverlet.msbuild" Version="6.0.4"> | ||
| <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
| <PrivateAssets>all</PrivateAssets> | ||
| </PackageVersion> | ||
| <PackageVersion Include="Elsa" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Alterations" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Api.Common" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Common" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.Common" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.MySql" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.Sqlite" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.SqlServer" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.EntityFrameworkCore.PostgreSql" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Features" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.JavaScript" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Liquid" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Workflows.Core" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Workflows.Api" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Http" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Identity" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.MassTransit" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.MassTransit.RabbitMq" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Webhooks" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Workflows.Management" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Workflows.Runtime" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Workflows.Runtime.ProtoActor" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Tenants" Version="$(ElsaVersion)" /> | ||
| <PackageVersion Include="Elsa.Testing.Shared.Component" Version="$(ElsaVersion)" /> | ||
| </ItemGroup> | ||
| <ItemGroup Label="Elsa Studio"> | ||
| <PackageVersion Include="Elsa.Studio.Shared" Version="$(ElsaStudioVersion)" /> | ||
| <PackageVersion Include="Elsa.Studio.Workflows.Core" Version="$(ElsaStudioVersion)" /> | ||
| <PackageVersion Include="Elsa.Studio.Workflows" Version="$(ElsaStudioVersion)" /> | ||
| </ItemGroup> | ||
| <ItemGroup> | ||
| <PackageVersion Include="Azure.Identity" Version="1.14.0" /> | ||
| <PackageVersion Include="Azure.Messaging.ServiceBus" Version="7.20.1" /> | ||
| <PackageVersion Include="Azure.ResourceManager" Version="1.13.1" /> | ||
| <PackageVersion Include="Azure.ResourceManager.AppContainers" Version="1.4.0" /> | ||
| <PackageVersion Include="Azure.ResourceManager.Resources" Version="1.10.0" /> | ||
| <PackageVersion Include="Azure.ResourceManager.ServiceBus" Version="1.1.0" /> | ||
| <PackageVersion Include="Azure.Storage.Blobs" Version="12.24.1" /> | ||
| <PackageVersion Include="BenchmarkDotNet" Version="0.15.2" /> | ||
| <PackageVersion Include="Bogus" Version="35.6.3" /> | ||
| <PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> | ||
| <PackageVersion Include="coverlet.collector" Version="6.0.4" /> | ||
| <PackageVersion Include="FastEndpoints" Version="6.2.0" /> | ||
| <PackageVersion Include="FastEndpoints.Security" Version="6.2.0" /> | ||
| <PackageVersion Include="FastEndpoints.Swagger" Version="6.2.0" /> | ||
| <PackageVersion Include="Fody" Version="6.9.2" /> | ||
| <PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" /> | ||
| <PackageVersion Include="Humanizer.Core" Version="2.14.1" /> | ||
| <PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" /> | ||
| <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.14.0" /> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite.Design" Version="1.1.6" /> | ||
| <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> | ||
| <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" /> | ||
| <PackageVersion Include="Moq" Version="4.20.72" /> | ||
| <PackageVersion Include="NSubstitute" Version="5.3.0" /> | ||
| <PackageVersion Include="Refit" Version="8.0.0" /> | ||
| <PackageVersion Include="Refit.HttpClientFactory" Version="8.0.0" /> | ||
| <PackageVersion Include="SlackNet" Version="0.16.1" /> | ||
| <PackageVersion Include="Testcontainers" Version="4.6.0" /> | ||
| <PackageVersion Include="Testcontainers.PostgreSql" Version="4.6.0" /> | ||
| <PackageVersion Include="Testcontainers.RabbitMq" Version="4.6.0" /> | ||
| <PackageVersion Include="WebhooksCore" Version="0.0.1" /> | ||
| <PackageVersion Include="xunit" Version="2.9.3" /> | ||
| <PackageVersion Include="xunit.abstractions" Version="2.0.3" /> | ||
| <PackageVersion Include="xunit.categories" Version="3.0.1" /> | ||
| <PackageVersion Include="xunit.extensibility.core" Version="2.9.3" /> | ||
| <PackageVersion Include="xunit.runner.visualstudio" Version="3.1.1" /> | ||
| <PackageVersion Include="System.Linq.Async" Version="6.0.3" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Data.Sqlite" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.AI" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.SemanticKernel" Version="1.57.0" /> | ||
| <PackageVersion Include="Microsoft.SemanticKernel.Core" Version="1.57.0" /> | ||
| <PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" /> | ||
| <PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.3.efcore.9.0.0" /> | ||
| <PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="System.Text.Json" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="OpenAI" Version="2.7.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftVersion)" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftVersion)" /> | ||
| </ItemGroup> | ||
| </Project> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,93 @@ | ||
| using Elsa.Workflows; | ||
| using Elsa.Workflows.Attributes; | ||
| using Elsa.Workflows.Models; | ||
| using JetBrains.Annotations; | ||
| using OpenAI.Chat; | ||
|
|
||
| namespace Elsa.OpenAI.Activities.Chat; | ||
|
|
||
| /// <summary> | ||
| /// Completes a chat conversation using OpenAI's Chat API. | ||
| /// </summary> | ||
| [Activity( | ||
| "Elsa.OpenAI.Chat", | ||
| "OpenAI Chat", | ||
| "Completes a chat conversation using OpenAI's Chat API.", | ||
| DisplayName = "Complete Chat")] | ||
| [UsedImplicitly] | ||
| public class CompleteChat : OpenAIActivity | ||
| { | ||
| /// <summary> | ||
| /// The user message or prompt to complete. | ||
| /// </summary> | ||
| [Input(Description = "The user message or prompt to complete.")] | ||
| public Input<string> Prompt { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// Optional system message to provide context or instructions. | ||
| /// </summary> | ||
| [Input(Description = "Optional system message to provide context or instructions.")] | ||
| public Input<string?> SystemMessage { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// The maximum number of tokens to generate. | ||
| /// </summary> | ||
| [Input(Description = "The maximum number of tokens to generate.")] | ||
| public Input<int?> MaxTokens { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// Controls randomness: 0.0 is deterministic, 1.0 is maximum randomness. | ||
| /// </summary> | ||
| [Input(Description = "Controls randomness: 0.0 is deterministic, 1.0 is maximum randomness.")] | ||
| public Input<float?> Temperature { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// The completion result from the chat model. | ||
| /// </summary> | ||
| [Output(Description = "The completion result from the chat model.")] | ||
| public Output<string> Result { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// The total tokens used in the request. | ||
| /// </summary> | ||
| [Output(Description = "The total tokens used in the request.")] | ||
| public Output<int?> TotalTokens { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// The finish reason for the completion. | ||
| /// </summary> | ||
| [Output(Description = "The finish reason for the completion.")] | ||
| public Output<string?> FinishReason { get; set; } = null!; | ||
|
|
||
| /// <summary> | ||
| /// Executes the activity. | ||
| /// </summary> | ||
| protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) | ||
| { | ||
| string prompt = context.Get(Prompt)!; | ||
| string? systemMessage = context.Get(SystemMessage); | ||
| int? maxTokens = context.Get(MaxTokens); | ||
| float? temperature = context.Get(Temperature); | ||
|
Comment on lines
+69
to
+70
|
||
|
|
||
| ChatClient client = GetChatClient(context); | ||
|
|
||
| try | ||
| { | ||
| // Build a simple prompt string for now | ||
| string fullPrompt = systemMessage != null ? $"{systemMessage}\n\n{prompt}" : prompt; | ||
|
Comment on lines
+76
to
+77
|
||
|
|
||
| ChatCompletion completion = await client.CompleteChatAsync(fullPrompt); | ||
|
|
||
| context.Set(Result, completion.Content?[0]?.Text ?? string.Empty); | ||
| context.Set(TotalTokens, completion.Usage?.TotalTokenCount); | ||
| context.Set(FinishReason, completion.FinishReason.ToString()); | ||
| } | ||
| catch (Exception ex) | ||
| { | ||
| context.Set(Result, $"Error: {ex.Message}"); | ||
| context.Set(TotalTokens, null); | ||
| context.Set(FinishReason, "error"); | ||
Zettersten marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| throw; | ||
| } | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The coverlet.msbuild package is placed in the "Elsa" ItemGroup label, but it's a testing/code coverage tool rather than an Elsa package. Consider moving it to the main ItemGroup section with other testing packages for better organization.