From e8e1d1801a242cfac9d3f5ccd416d59e9d57e73a Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 22 Apr 2025 00:54:06 +0100 Subject: [PATCH 01/23] Move SQL activities over from core. --- .github/workflows/pr.yml | 41 ++++ Directory.Packages.props | 201 +++++++++--------- Elsa.Integrations.sln | 47 +++- src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj | 18 ++ src/sql/Elsa.Sql.MySql/FodyWeavers.xml | 3 + src/sql/Elsa.Sql.MySql/MySqlClient.cs | 16 ++ .../Elsa.Sql.PostgreSql.csproj | 18 ++ src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml | 3 + .../Elsa.Sql.PostgreSql/PostgreSqlClient.cs | 16 ++ .../Elsa.Sql.SqlServer.csproj | 18 ++ src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml | 3 + src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs | 16 ++ .../Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj | 18 ++ src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml | 3 + src/sql/Elsa.Sql.Sqlite/SqliteClient.cs | 16 ++ .../Activities/SqlCodeOptionsProvider.cs | 10 + src/sql/Elsa.Sql/Activities/SqlCommand.cs | 88 ++++++++ src/sql/Elsa.Sql/Activities/SqlQuery.cs | 90 ++++++++ src/sql/Elsa.Sql/Activities/SqlSingleValue.cs | 88 ++++++++ src/sql/Elsa.Sql/Client/BaseSqlClient.cs | 151 +++++++++++++ src/sql/Elsa.Sql/Client/ISqlClient.cs | 43 ++++ .../Elsa.Sql/Contracts/ISqlClientFactory.cs | 14 ++ .../Contracts/ISqlClientNamesProvider.cs | 11 + src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs | 26 +++ src/sql/Elsa.Sql/Elsa.Sql.csproj | 15 ++ .../Expressions/SqlExpressionHandler.cs | 29 +++ .../Elsa.Sql/Extensions/ModuleExtensions.cs | 22 ++ src/sql/Elsa.Sql/Factory/SqlClientFactory.cs | 43 ++++ src/sql/Elsa.Sql/Features/SqlFeature.cs | 63 ++++++ src/sql/Elsa.Sql/FodyWeavers.xml | 3 + src/sql/Elsa.Sql/Models/EvaluatedQuery.cs | 35 +++ .../Providers/SqlClientNamesProvider.cs | 23 ++ .../SqlExpressionDescriptorProvider.cs | 29 +++ src/sql/Elsa.Sql/Services/ClientStore.cs | 36 ++++ src/sql/Elsa.Sql/Services/SqlEvaluator.cs | 92 ++++++++ .../UIHints/SqlClientsDropDownProvider.cs | 18 ++ 36 files changed, 1266 insertions(+), 100 deletions(-) create mode 100644 .github/workflows/pr.yml create mode 100644 src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj create mode 100644 src/sql/Elsa.Sql.MySql/FodyWeavers.xml create mode 100644 src/sql/Elsa.Sql.MySql/MySqlClient.cs create mode 100644 src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj create mode 100644 src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml create mode 100644 src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs create mode 100644 src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj create mode 100644 src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml create mode 100644 src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs create mode 100644 src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj create mode 100644 src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml create mode 100644 src/sql/Elsa.Sql.Sqlite/SqliteClient.cs create mode 100644 src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs create mode 100644 src/sql/Elsa.Sql/Activities/SqlCommand.cs create mode 100644 src/sql/Elsa.Sql/Activities/SqlQuery.cs create mode 100644 src/sql/Elsa.Sql/Activities/SqlSingleValue.cs create mode 100644 src/sql/Elsa.Sql/Client/BaseSqlClient.cs create mode 100644 src/sql/Elsa.Sql/Client/ISqlClient.cs create mode 100644 src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs create mode 100644 src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs create mode 100644 src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs create mode 100644 src/sql/Elsa.Sql/Elsa.Sql.csproj create mode 100644 src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs create mode 100644 src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs create mode 100644 src/sql/Elsa.Sql/Factory/SqlClientFactory.cs create mode 100644 src/sql/Elsa.Sql/Features/SqlFeature.cs create mode 100644 src/sql/Elsa.Sql/FodyWeavers.xml create mode 100644 src/sql/Elsa.Sql/Models/EvaluatedQuery.cs create mode 100644 src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs create mode 100644 src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs create mode 100644 src/sql/Elsa.Sql/Services/ClientStore.cs create mode 100644 src/sql/Elsa.Sql/Services/SqlEvaluator.cs create mode 100644 src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..d99b63e7 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------ +# +# +# This code was generated. +# +# - To turn off auto-generation set: +# +# [CustomGitHubActions (AutoGenerate = false)] +# +# - To trigger manual generation invoke: +# +# nuke --generate-configuration GitHubActions_pr --host GitHubActions +# +# +# ------------------------------------------------------------------------------ + +name: pr + +on: + pull_request: + branches: + - main + paths: + - '**/*' + +concurrency: + group: ${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + ubuntu-latest: + name: ubuntu-latest + runs-on: ubuntu-latest + steps: + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: | + 9.x + - uses: actions/checkout@v4 + - name: 'Run: Compile, Test, Pack' + run: ./build.cmd Compile Test Pack diff --git a/Directory.Packages.props b/Directory.Packages.props index bfe6051f..1d358690 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,101 +1,104 @@ - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 5f176d11..84a9af77 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.12.35527.113 d17.12 +VisualStudioVersion = 17.12.35527.113 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{527248D6-B851-4C8D-8667-E2FB0A91DABF}" ProjectSection(SolutionItems) = preProject @@ -77,6 +77,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Pe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql", "src\Sql\Elsa.Sql\Elsa.Sql.csproj", "{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.SqlServer", "src\sql\Elsa.Sql.SqlServer\Elsa.Sql.SqlServer.csproj", "{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.Sqlite", "src\sql\Elsa.Sql.Sqlite\Elsa.Sql.Sqlite.csproj", "{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.PostgreSql", "src\sql\Elsa.Sql.PostgreSql\Elsa.Sql.PostgreSql.csproj", "{AA90183E-F009-F88A-9081-BAB6E5ED6B22}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.MySql", "src\sql\Elsa.Sql.MySql\Elsa.Sql.MySql.csproj", "{78CBE43C-0EF2-048E-987B-A603A38099E6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -103,6 +115,10 @@ Global {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Debug|Any CPU.Build.0 = Debug|Any CPU {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Release|Any CPU.Build.0 = Release|Any CPU + {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.Build.0 = Release|Any CPU {A1ADCCC2-01DD-41BA-8A81-FAAE96EC729D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A1ADCCC2-01DD-41BA-8A81-FAAE96EC729D}.Debug|Any CPU.Build.0 = Debug|Any CPU {A1ADCCC2-01DD-41BA-8A81-FAAE96EC729D}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -155,6 +171,26 @@ Global {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.Build.0 = Release|Any CPU + {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.Build.0 = Release|Any CPU + {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.Build.0 = Release|Any CPU + {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.Build.0 = Release|Any CPU + {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.Build.0 = Release|Any CPU + {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -181,5 +217,14 @@ Global {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {4455BAC7-FD3C-4429-A2A2-44A83A331056} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {3E782B62-87D8-F5FD-CA2D-0D524C5BB530} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {266D14A8-4D8F-795F-169F-A7E7B4F23D1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {AA90183E-F009-F88A-9081-BAB6E5ED6B22} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {78CBE43C-0EF2-048E-987B-A603A38099E6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} EndGlobalSection EndGlobal diff --git a/src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj b/src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj new file mode 100644 index 00000000..54c6148d --- /dev/null +++ b/src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj @@ -0,0 +1,18 @@ + + + + + Provides client implementations for interacting with MySql databases. + + elsa module activities sql mysql + + + + + + + + + + + diff --git a/src/sql/Elsa.Sql.MySql/FodyWeavers.xml b/src/sql/Elsa.Sql.MySql/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/sql/Elsa.Sql.MySql/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sql/Elsa.Sql.MySql/MySqlClient.cs b/src/sql/Elsa.Sql.MySql/MySqlClient.cs new file mode 100644 index 00000000..60669f7d --- /dev/null +++ b/src/sql/Elsa.Sql.MySql/MySqlClient.cs @@ -0,0 +1,16 @@ +using MySql.Data.MySqlClient; +using Elsa.Sql.Client; +using System.Data.Common; + +namespace Elsa.Sql.MySql; + +/// +/// MySql client implementation. +/// +/// +public class MySqlClient(string connectionString) : BaseSqlClient(connectionString) +{ + protected override DbConnection CreateConnection() => new MySqlConnection(_connectionString); + + protected override DbCommand CreateCommand(string query, DbConnection connection) => new MySqlCommand(query, (MySqlConnection)connection); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj b/src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj new file mode 100644 index 00000000..82a29085 --- /dev/null +++ b/src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj @@ -0,0 +1,18 @@ + + + + + Provides client implementations for interacting with PostgreSql databases. + + elsa module activities sql postgresql + + + + + + + + + + + diff --git a/src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml b/src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs b/src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs new file mode 100644 index 00000000..5eb5982b --- /dev/null +++ b/src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs @@ -0,0 +1,16 @@ +using Npgsql; +using Elsa.Sql.Client; +using System.Data.Common; + +namespace Elsa.Sql.PostgreSql; + +/// +/// PostgreSQL client implementation. +/// +/// +public class PostgreSqlClient(string connectionString) : BaseSqlClient(connectionString) +{ + protected override DbConnection CreateConnection() => new NpgsqlConnection(_connectionString); + + protected override DbCommand CreateCommand(string query, DbConnection connection) => new NpgsqlCommand(query, (NpgsqlConnection)connection); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj b/src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj new file mode 100644 index 00000000..cab38ce9 --- /dev/null +++ b/src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj @@ -0,0 +1,18 @@ + + + + + Provides client implementations for interacting with Microsoft SQL Server databases. + + elsa module activities sql mssqlserver sqlserver + + + + + + + + + + + diff --git a/src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml b/src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs b/src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs new file mode 100644 index 00000000..e8780c35 --- /dev/null +++ b/src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs @@ -0,0 +1,16 @@ +using System.Data.Common; +using Elsa.Sql.Client; +using Microsoft.Data.SqlClient; + +namespace Elsa.Sql.SqlServer; + +/// +/// Microsoft SQL server client implementation. +/// +/// +public class SqlServerClient(string connectionString) : BaseSqlClient(connectionString) +{ + protected override DbConnection CreateConnection() => new SqlConnection(_connectionString); + + protected override DbCommand CreateCommand(string query, DbConnection connection) => new SqlCommand(query, (SqlConnection)connection); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj b/src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj new file mode 100644 index 00000000..43bf2bf5 --- /dev/null +++ b/src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj @@ -0,0 +1,18 @@ + + + + + Provides client implementations for interacting with Sqlite databases. + + elsa module activities sql sqlite + + + + + + + + + + + diff --git a/src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml b/src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sql/Elsa.Sql.Sqlite/SqliteClient.cs b/src/sql/Elsa.Sql.Sqlite/SqliteClient.cs new file mode 100644 index 00000000..ec43f524 --- /dev/null +++ b/src/sql/Elsa.Sql.Sqlite/SqliteClient.cs @@ -0,0 +1,16 @@ +using System.Data.Common; +using Elsa.Sql.Client; +using Microsoft.Data.Sqlite; + +namespace Elsa.Sql.Sqlite; + +/// +/// Sqlite client implementation. +/// +/// +public class SqliteClient(string connectionString) : BaseSqlClient(connectionString) +{ + protected override DbConnection CreateConnection() => new SqliteConnection(_connectionString); + + protected override DbCommand CreateCommand(string query, DbConnection connection) => new SqliteCommand(query, (SqliteConnection)connection); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs b/src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs new file mode 100644 index 00000000..f61bad42 --- /dev/null +++ b/src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs @@ -0,0 +1,10 @@ +using System.Reflection; +using Elsa.Workflows.UIHints.CodeEditor; + +// ReSharper disable once CheckNamespace +namespace Elsa.Sql.Activities; + +internal class SqlCodeOptionsProvider : CodeEditorOptionsProviderBase +{ + protected override string GetLanguage(PropertyInfo propertyInfo, object? context) => "sql"; +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Activities/SqlCommand.cs b/src/sql/Elsa.Sql/Activities/SqlCommand.cs new file mode 100644 index 00000000..bc906878 --- /dev/null +++ b/src/sql/Elsa.Sql/Activities/SqlCommand.cs @@ -0,0 +1,88 @@ +using System.Runtime.CompilerServices; +using Elsa.Expressions.Models; +using Elsa.Extensions; +using Elsa.Sql.Contracts; +using Elsa.Sql.UIHints; +using Elsa.Workflows; +using Elsa.Workflows.Attributes; +using Elsa.Workflows.Models; +using Elsa.Workflows.UIHints; + +namespace Elsa.Sql.Activities; + +/// +/// Execute given SQL command and returns the number of rows affected. +/// +[Activity("Elsa", "SQL", "Execute given SQL command and returns the number of rows affected.", DisplayName = "SQL Command", Kind = ActivityKind.Task)] +public class SqlCommand : Activity +{ + /// + /// + /// + public SqlCommand([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line) + { + } + + /// + /// Database client to connect with. + /// + [Input( + Description = "Database client.", + UIHint = InputUIHints.DropDown, + UIHandler = typeof(SqlClientsDropDownProvider))] + public Input Client { get; set; } = default!; + + /// + /// Connection string. + /// + [Input( + Description = "Connection string.", + CanContainSecrets = true)] + public Input ConnectionString { get; set; } = default!; + + /// + /// Command to run against the database. + /// + [Input( + Description = "Command to run against the database.", + DefaultSyntax = "Sql", + UIHint = InputUIHints.CodeEditor, + UIHandler = typeof(SqlCodeOptionsProvider) + )] + public Input Command { get; set; } = default!; + + + /// + /// The number of affected rows. + /// + [Output( + Description = "The number of rows affected.")] + public Output Result { get; set; } = default!; + + + /// + /// + /// + protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) + { + var command = Command.GetOrDefault(context); + + // If no command was specified, there's nothing to do. + if (string.IsNullOrWhiteSpace(command)) + return; + + // Get and execute the SQL evaluator. + var evaluator = context.GetRequiredService(); + var evaluatedQuery = await evaluator.EvaluateAsync(command, context.ExpressionExecutionContext, new ExpressionEvaluatorOptions(), context.CancellationToken); + + // Create client + var factory = context.GetRequiredService(); + var client = factory.CreateClient(Client.GetOrDefault(context), ConnectionString.GetOrDefault(context)); + + // Execute command + var result = await client.ExecuteCommandAsync(evaluatedQuery); + context.Set(Result, result); + + await CompleteAsync(context); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Activities/SqlQuery.cs b/src/sql/Elsa.Sql/Activities/SqlQuery.cs new file mode 100644 index 00000000..5b721aed --- /dev/null +++ b/src/sql/Elsa.Sql/Activities/SqlQuery.cs @@ -0,0 +1,90 @@ +using System.Data; +using System.Runtime.CompilerServices; +using Elsa.Expressions.Models; +using Elsa.Extensions; +using Elsa.Sql.Contracts; +using Elsa.Sql.UIHints; +using Elsa.Workflows; +using Elsa.Workflows.Attributes; +using Elsa.Workflows.Models; +using Elsa.Workflows.UIHints; + +namespace Elsa.Sql.Activities; + +/// +/// Execute given SQL query and return the resulting data. +/// +[Activity("Elsa", "SQL", "Execute given SQL query and return the resulting data.", DisplayName = "SQL Query", Kind = ActivityKind.Task)] +public class SqlQuery : Activity +{ + /// + /// + /// + public SqlQuery([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line) + { + } + + /// + /// Database client to connect with. + /// + [Input( + Description = "Database client.", + UIHint = InputUIHints.DropDown, + UIHandler = typeof(SqlClientsDropDownProvider))] + public Input Client { get; set; } = default!; + + /// + /// Connection string. + /// + [Input( + Description = "Connection string.", + CanContainSecrets = true)] + public Input ConnectionString { get; set; } = default!; + + /// + /// Query to run against the database. + /// + [Input( + Description = "Query to run against the database.", + DefaultSyntax = "Sql", + UIHint = InputUIHints.CodeEditor, + UIHandler = typeof(SqlCodeOptionsProvider) + )] + public Input Query { get; set; } = default!; + + + /// + /// of queried results. + /// + [Output( + Description = "DataSet of queried results.", + IsSerializable = false)] + public Output Results { get; set; } = default!; + + + /// + /// + /// + protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) + { + var query = Query.GetOrDefault(context); + + // If no query was specified, there's nothing to do. + if (string.IsNullOrWhiteSpace(query)) + return; + + // Get and execute the SQL evaluator. + var evaluator = context.GetRequiredService(); + var evaluatedQuery = await evaluator.EvaluateAsync(query, context.ExpressionExecutionContext, new ExpressionEvaluatorOptions(), context.CancellationToken); + + // Create client + var factory = context.GetRequiredService(); + var client = factory.CreateClient(Client.GetOrDefault(context), ConnectionString.GetOrDefault(context)); + + // Execute query + var results = await client.ExecuteQueryAsync(evaluatedQuery); + context.Set(Results, results); + + await CompleteAsync(context); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Activities/SqlSingleValue.cs b/src/sql/Elsa.Sql/Activities/SqlSingleValue.cs new file mode 100644 index 00000000..4c05dc44 --- /dev/null +++ b/src/sql/Elsa.Sql/Activities/SqlSingleValue.cs @@ -0,0 +1,88 @@ +using System.Runtime.CompilerServices; +using Elsa.Expressions.Models; +using Elsa.Extensions; +using Elsa.Sql.Contracts; +using Elsa.Sql.UIHints; +using Elsa.Workflows; +using Elsa.Workflows.Attributes; +using Elsa.Workflows.Models; +using Elsa.Workflows.UIHints; + +namespace Elsa.Sql.Activities; + +/// +/// Execute given SQL command and return a single result. +/// +[Activity("Elsa", "SQL", "Execute given SQL command and return a single result.", DisplayName = "SQL Single Value", Kind = ActivityKind.Task)] +public class SqlSingleValue : Activity +{ + /// + /// + /// + public SqlSingleValue([CallerFilePath] string? source = default, [CallerLineNumber] int? line = default) : base(source, line) + { + } + + /// + /// Database client to connect with. + /// + [Input( + Description = "Database client.", + UIHint = InputUIHints.DropDown, + UIHandler = typeof(SqlClientsDropDownProvider))] + public Input Client { get; set; } = default!; + + /// + /// Connection string. + /// + [Input( + Description = "Connection string.", + CanContainSecrets = true)] + public Input ConnectionString { get; set; } = default!; + + /// + /// Command to run against the database. + /// + [Input( + Description = "Query to run against the database.", + DefaultSyntax = "Sql", + UIHint = InputUIHints.CodeEditor, + UIHandler = typeof(SqlCodeOptionsProvider) + )] + public Input Command { get; set; } = default!; + + + /// + /// Command result. + /// + [Output( + Description = "Command result.")] + public Output Result { get; set; } = default!; + + + /// + /// + /// + protected override async ValueTask ExecuteAsync(ActivityExecutionContext context) + { + var command = Command.GetOrDefault(context); + + // If no command was specified, there's nothing to do. + if (string.IsNullOrWhiteSpace(command)) + return; + + // Get and execute the SQL evaluator. + var evaluator = context.GetRequiredService(); + var evaluatedQuery = await evaluator.EvaluateAsync(command, context.ExpressionExecutionContext, new ExpressionEvaluatorOptions(), context.CancellationToken); + + // Create client + var factory = context.GetRequiredService(); + var client = factory.CreateClient(Client.GetOrDefault(context), ConnectionString.GetOrDefault(context)); + + // Execute command + var result = await client.ExecuteScalarAsync(evaluatedQuery); + context.Set(Result, result); + + await CompleteAsync(context); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Client/BaseSqlClient.cs b/src/sql/Elsa.Sql/Client/BaseSqlClient.cs new file mode 100644 index 00000000..9f7cca11 --- /dev/null +++ b/src/sql/Elsa.Sql/Client/BaseSqlClient.cs @@ -0,0 +1,151 @@ +using System.Data; +using System.Data.Common; +using Elsa.Sql.Models; + +namespace Elsa.Sql.Client; + +public abstract class BaseSqlClient : ISqlClient +{ + /// + /// The connection string used to connect with the database. + /// + protected readonly string _connectionString; + + /// + /// The marker used when injecting parameters into a query. + /// Default: "@" + /// + public virtual string ParameterMarker { get; set; } = "@"; + + /// + /// The text following the ParameterMarker when injecting parameters into a query. + /// Default: "param" + /// + public virtual string ParameterText { get; set; } = "p"; + + /// + /// Set to true to add a counter to the end of the parameter string. + /// Default: true + /// + public virtual bool IncrementParameter { get; set; } = true; + + /// + /// Default base implementation for an SQL client. + /// + /// + protected BaseSqlClient(string connectionString) => _connectionString = connectionString; + + /// + /// Create a connection using the client specific connection. + /// + /// + protected abstract DbConnection CreateConnection(); + + /// + /// Create a command using the client specific connection. + /// + /// + /// + /// + protected abstract DbCommand CreateCommand(string query, DbConnection connection); + + /// + /// + /// + public async Task ExecuteCommandAsync(EvaluatedQuery evaluatedQuery) + { + using var connection = CreateConnection(); + connection.Open(); + var command = CreateCommand(evaluatedQuery.Query, connection); + AddCommandParameters(command, evaluatedQuery.Parameters); + + var result = await command.ExecuteNonQueryAsync(); + return result; + } + + /// + /// + /// + public async Task ExecuteScalarAsync(EvaluatedQuery evaluatedQuery) + { + using var connection = CreateConnection(); + connection.Open(); + var command = CreateCommand(evaluatedQuery.Query, connection); + AddCommandParameters(command, evaluatedQuery.Parameters); + + var result = await command.ExecuteScalarAsync(); + return result; + } + + /// + /// + /// + public async Task ExecuteQueryAsync(EvaluatedQuery evaluatedQuery) + { + using var connection = CreateConnection(); + connection.Open(); + var command = CreateCommand(evaluatedQuery.Query, connection); + AddCommandParameters(command, evaluatedQuery.Parameters); + + using var reader = await command.ExecuteReaderAsync(); + return await Task.FromResult(ReadAsDataSet(reader)); + } + + /// + /// Add parameters into the query to prevent SQL injection. + /// + /// Command to add the parameters to + /// Parameters to add + /// + private DbCommand AddCommandParameters(DbCommand command, Dictionary parameters) + { + foreach (var param in parameters) + { + var dbParam = command.CreateParameter(); + dbParam.ParameterName = param.Key; + dbParam.Value = param.Value ?? DBNull.Value; + command.Parameters.Add(dbParam); + } + return command; + } + + /// + /// Returns data as a . + /// + /// Reader to return data from. + /// of data. + private DataSet ReadAsDataSet(IDataReader reader) + { + var dataSet = new DataSet("dataset"); + dataSet.Tables.Add(ReadAsDataTable(reader)); + return dataSet; + } + + /// + /// Returns data as a . + /// + /// Reader to return data from. + /// of data. + private DataTable ReadAsDataTable(IDataReader reader) + { + var data = new DataTable(); + var schemaTable =reader.GetSchemaTable(); + + foreach (DataRow row in schemaTable.Rows) + { + string colName = row.Field("ColumnName"); + Type t = row.Field("DataType"); + data.Columns.Add(colName, t); + } + + while (reader.Read()) + { + var newRow = data.Rows.Add(); + foreach (DataColumn col in data.Columns) + { + newRow[col.ColumnName] = reader[col.ColumnName]; + } + } + return data; + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Client/ISqlClient.cs b/src/sql/Elsa.Sql/Client/ISqlClient.cs new file mode 100644 index 00000000..2cc3eb5b --- /dev/null +++ b/src/sql/Elsa.Sql/Client/ISqlClient.cs @@ -0,0 +1,43 @@ +using System.Data; +using Elsa.Sql.Models; + +namespace Elsa.Sql.Client; + +public interface ISqlClient +{ + /// + /// The marker used when injecting parameters into a query. + /// + public string ParameterMarker { get; set; } + + /// + /// The text following the ParameterMarker when injecting parameters into a query. + /// + public string ParameterText { get; set; } + + /// + /// Set to true to add a counter to the end of the parameter string. + /// + public bool IncrementParameter { get; set; } + + /// + /// Asynchronously executes a Transact-SQL statement against the connection and returns the number of rows affected. + /// + /// The evaluated query to execute. + /// The number of rows affected. + public Task ExecuteCommandAsync(EvaluatedQuery evaluatedQuery); + + /// + /// Asynchronously executes the query, and returns the first column of the first row in the result set returned by the query. Additional columns or rows are ignored. + /// + /// The evaluated query to execute. + /// The first column of the first row in the result set, or a null reference if the result set is empty. Returns a maximum of 2033 characters. + public Task ExecuteScalarAsync(EvaluatedQuery evaluatedQuery); + + /// + /// Asynchronously executes the query, and returns a dataset of data returned by the query. + /// + /// The evaluated query to execute. + /// DataSet of the queried data + public Task ExecuteQueryAsync(EvaluatedQuery evaluatedQuery); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs b/src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs new file mode 100644 index 00000000..de2d7771 --- /dev/null +++ b/src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs @@ -0,0 +1,14 @@ +using Elsa.Sql.Client; + +namespace Elsa.Sql.Contracts; + +public interface ISqlClientFactory +{ + /// + /// Create an instance of the registered client. + /// + /// The name of the registered client to create. This can either be clientName used during registration or the default nameof(client) itself. + /// Connection string. + /// + public ISqlClient CreateClient(string clientName, string connectionString); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs b/src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs new file mode 100644 index 00000000..b1b48eef --- /dev/null +++ b/src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs @@ -0,0 +1,11 @@ +namespace Elsa.Sql.Contracts; + +public interface ISqlClientNamesProvider +{ + /// + /// Returns a dictionary of registered clients. + /// + /// A token to monitor cancellation requests. + /// A of registered client names their . + Task> GetRegisteredSqlClientNamesAsync(CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs b/src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs new file mode 100644 index 00000000..0817f409 --- /dev/null +++ b/src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs @@ -0,0 +1,26 @@ +using Elsa.Expressions.Models; +using Elsa.Sql.Models; +using JetBrains.Annotations; + +namespace Elsa.Sql.Contracts; + +/// +/// Evaluates SQL expressions. +/// +[PublicAPI] +public interface ISqlEvaluator +{ + /// + /// Evaluates a SQL expression. + /// + /// The expression to evaluate. + /// The context in which the expression is evaluated. + /// A set of options. + /// An optional cancellation token. + /// The result. + Task EvaluateAsync( + string expression, + ExpressionExecutionContext context, + ExpressionEvaluatorOptions options, + CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Elsa.Sql.csproj b/src/sql/Elsa.Sql/Elsa.Sql.csproj new file mode 100644 index 00000000..3bfeab35 --- /dev/null +++ b/src/sql/Elsa.Sql/Elsa.Sql.csproj @@ -0,0 +1,15 @@ + + + + + Provides activities to interact with sql databases. + + elsa module activities sql + + + + + + + + diff --git a/src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs b/src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs new file mode 100644 index 00000000..a3e131f4 --- /dev/null +++ b/src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs @@ -0,0 +1,29 @@ +using Elsa.Sql.Contracts; +using Elsa.Expressions.Contracts; +using Elsa.Expressions.Helpers; +using Elsa.Expressions.Models; + +namespace Elsa.Sql.Expressions; + +/// +/// Evaluates SQL expressions. +/// +public class SqlExpressionHandler : IExpressionHandler +{ + private readonly ISqlEvaluator _sqlEvaluator; + + /// + /// Initializes a new instance of the class. + /// + public SqlExpressionHandler(ISqlEvaluator sqlEvaluator) + { + _sqlEvaluator = sqlEvaluator; + } + + /// + public async ValueTask EvaluateAsync(Expression expression, Type returnType, ExpressionExecutionContext context, ExpressionEvaluatorOptions options) + { + var script = expression.Value.ConvertTo() ?? ""; + return await _sqlEvaluator.EvaluateAsync(script, context, options); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs b/src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs new file mode 100644 index 00000000..4ab8e85e --- /dev/null +++ b/src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs @@ -0,0 +1,22 @@ +using Elsa.Features.Services; +using Elsa.Sql.Features; + +namespace Elsa.Sql.Extensions; + +/// +/// Provides methods to install and configure SQL client features. +/// +public static class ModuleExtensions +{ + /// + /// Adds the feature to the system. + /// + /// + /// + /// + public static IModule UseSql(this IModule configuration, Action? configure = default) + { + configuration.Configure(configure); + return configuration; + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Factory/SqlClientFactory.cs b/src/sql/Elsa.Sql/Factory/SqlClientFactory.cs new file mode 100644 index 00000000..4422b099 --- /dev/null +++ b/src/sql/Elsa.Sql/Factory/SqlClientFactory.cs @@ -0,0 +1,43 @@ +using Elsa.Sql.Client; +using Elsa.Sql.Contracts; +using Elsa.Sql.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Sql.Factory; + +/// +/// SQL client factory +/// +public class SqlClientFactory : ISqlClientFactory +{ + private readonly IServiceProvider _serviceProvider; + + public SqlClientFactory(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider; + + /// + /// + /// + public ISqlClient CreateClient(string clientName, string connectionString) + { + if (string.IsNullOrEmpty(clientName)) + { + throw new ArgumentException($"Client name can not be empty or null.", nameof(clientName)); + } + if (string.IsNullOrEmpty(connectionString)) + { + throw new ArgumentException($"Connection string can not be empty or null.", nameof(connectionString)); + } + if (_serviceProvider.GetRequiredService().Clients.TryGetValue(clientName, out var clientType)) + { + try + { + return ActivatorUtilities.CreateInstance(_serviceProvider, clientType, connectionString) as ISqlClient; + } + catch (Exception ex) + { + throw new InvalidOperationException($"Unable to create instance of '{clientName}' of type '{clientType}'.", ex); + } + } + throw new ArgumentException($"No registered SQL client provider for '{clientName}'."); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Features/SqlFeature.cs b/src/sql/Elsa.Sql/Features/SqlFeature.cs new file mode 100644 index 00000000..882f1c50 --- /dev/null +++ b/src/sql/Elsa.Sql/Features/SqlFeature.cs @@ -0,0 +1,63 @@ +using Elsa.Extensions; +using Elsa.Features.Abstractions; +using Elsa.Features.Services; +using Elsa.Sql.Activities; +using Elsa.Sql.Contracts; +using Elsa.Sql.Factory; +using Elsa.Sql.Providers; +using Elsa.Sql.Services; +using Elsa.Sql.UIHints; +using Elsa.Workflows; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Sql.Features; + +/// +/// Setup SQL client features +/// +public class SqlFeature : FeatureBase +{ + /// + /// Set a callback to configure . + /// + public Action Clients { get; set; } = _ => { }; + + /// + /// + /// + /// + public SqlFeature(IModule module) : base(module) + { + } + + /// + /// + /// + public override void Configure() + { + Module.AddActivitiesFrom(); + } + + /// + /// + /// + public override void Apply() + { + Services + // Services + .AddSingleton(provider => + { + ClientStore clientRegistry = new(); + Clients.Invoke(clientRegistry); + return clientRegistry; + }) + .AddSingleton() + .AddScoped() + + // Providers + .AddExpressionDescriptorProvider() + .AddScoped() + .AddScoped() + .AddScoped(); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/FodyWeavers.xml b/src/sql/Elsa.Sql/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/sql/Elsa.Sql/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Models/EvaluatedQuery.cs b/src/sql/Elsa.Sql/Models/EvaluatedQuery.cs new file mode 100644 index 00000000..1570fab0 --- /dev/null +++ b/src/sql/Elsa.Sql/Models/EvaluatedQuery.cs @@ -0,0 +1,35 @@ +namespace Elsa.Sql.Models +{ + /// + /// Represents a safely formatted SQL expression result. + /// + public class EvaluatedQuery + { + /// + /// Query with parameterized values + /// + public string Query { get; set; } + + /// + /// Parameters to inject into the query at execution + /// + public Dictionary Parameters { get; set; } = new Dictionary(); + + /// + /// An evaluated query response. + /// + /// The evaluated query + public EvaluatedQuery(string query) => Query = query; + + /// + /// An evaluated query response. + /// + /// The evaluated query + /// Parameters to pass into the parameterized query + public EvaluatedQuery(string query, Dictionary parameters) + { + Query = query; + Parameters = parameters; + } + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs b/src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs new file mode 100644 index 00000000..f94aaeef --- /dev/null +++ b/src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs @@ -0,0 +1,23 @@ +using Elsa.Sql.Contracts; +using Elsa.Sql.Services; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Sql.Providers; + +/// +/// Returns registered client names +/// +public class SqlClientNamesProvider : ISqlClientNamesProvider +{ + private readonly IServiceProvider _serviceProvider; + + public SqlClientNamesProvider(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider; + + /// + /// + /// + public Task> GetRegisteredSqlClientNamesAsync(CancellationToken cancellationToken) + { + return Task.FromResult(_serviceProvider.GetRequiredService().Clients); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs b/src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs new file mode 100644 index 00000000..6ac53e82 --- /dev/null +++ b/src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs @@ -0,0 +1,29 @@ +using Elsa.Expressions.Contracts; +using Elsa.Expressions.Models; +using Elsa.Extensions; +using Elsa.Sql.Expressions; +using Microsoft.Extensions.DependencyInjection; + +namespace Elsa.Sql.Providers; + +/// +/// Provides SQL expression descriptors. +/// +public class SqlExpressionDescriptorProvider : IExpressionDescriptorProvider +{ + /// + /// Gets the name of the expression type. + /// + private const string TypeName = "Sql"; + + public IEnumerable GetDescriptors() + { + yield return new() + { + Type = TypeName, + DisplayName = "SQL", + Properties = new { MonacoLanguage = "sql" }.ToDictionary(), + HandlerFactory = ActivatorUtilities.GetServiceOrCreateInstance + }; + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Services/ClientStore.cs b/src/sql/Elsa.Sql/Services/ClientStore.cs new file mode 100644 index 00000000..d76727ae --- /dev/null +++ b/src/sql/Elsa.Sql/Services/ClientStore.cs @@ -0,0 +1,36 @@ +using Elsa.Sql.Client; + +namespace Elsa.Sql.Services; +public class ClientStore +{ + private readonly Dictionary clients = new(); + + /// + /// Dictionary of registered clients and their type. + /// + public IReadOnlyDictionary Clients => clients; + + /// + /// Registers the specified client type with the store. + /// The client type must inherit from . + /// + /// + /// The type of the client to be registered. The client must be a class that implements the interface. + /// + /// + /// The name of the client to register. If not provided, the name defaults to nameof(TClient). + /// This value is used as a key to identify the client in the store. + /// + /// + /// Thrown when a client with the same name is already registered in the store. + /// + /// + /// This method registers a client type to the store using a unique key. The key is either the provided or the default name derived from . + /// + public void Register(string? name) where TClient : class, ISqlClient + { + var key = string.IsNullOrEmpty(name) ? nameof(TClient) : name; + if (clients.ContainsKey(key)) { throw new InvalidOperationException($"Client with key '{name}' is already registered."); } + clients.Add(key, typeof(TClient)); + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/Services/SqlEvaluator.cs b/src/sql/Elsa.Sql/Services/SqlEvaluator.cs new file mode 100644 index 00000000..10ee5a0d --- /dev/null +++ b/src/sql/Elsa.Sql/Services/SqlEvaluator.cs @@ -0,0 +1,92 @@ +using System.Text; +using Elsa.Expressions.Models; +using Elsa.Extensions; +using Elsa.Sql.Contracts; +using Elsa.Sql.Models; +using Elsa.Workflows; + +namespace Elsa.Sql.Services; + +/// +/// A SQL expression evaluator. +/// +/// +/// Initializes a new instance of the class.WS +/// +public class SqlEvaluator() : ISqlEvaluator +{ + private WorkflowExecutionContext executionContext; + private ActivityExecutionContext activityContext; + private ExpressionExecutionContext expressionContext; + + /// + public async Task EvaluateAsync( + string expression, + ExpressionExecutionContext context, + ExpressionEvaluatorOptions options, + CancellationToken cancellationToken = default) + { + if (!expression.Contains("{{")) return new EvaluatedQuery(expression); + + expressionContext = context; + executionContext = context.GetWorkflowExecutionContext(); + activityContext = context.GetActivityExecutionContext(); + + // Create client + var factory = context.GetRequiredService(); + var client = factory.CreateClient(activityContext.ActivityState["Client"].ToString(), activityContext.ActivityState["ConnectionString"].ToString()); + + var sb = new StringBuilder(); + int start = 0; + var parameters = new Dictionary(); + int paramIndex = 0; + + while (start < expression.Length) + { + int openIndex = expression.IndexOf("{{", start); + if (openIndex == -1) + { + sb.Append(expression.AsSpan(start)); + break; + } + + // Append everything before {{ + sb.Append(expression.AsSpan(start, openIndex - start)); + + // Find the closing }} + int closeIndex = expression.IndexOf("}}", openIndex + 2); + if (closeIndex == -1) throw new FormatException("Unmatched '{{' found in SQL expression."); + + // Extract key + string key = expression.Substring(openIndex + 2, closeIndex - openIndex - 2).Trim(); + if (string.IsNullOrEmpty(key)) throw new FormatException("Empty placeholder '{{}}' is not allowed."); + + // Resolve value and replace with parameterized name + var counterValue = client.IncrementParameter ? paramIndex++.ToString() : string.Empty; + string paramName = $"{client.ParameterMarker}{client.ParameterText}{counterValue}"; + parameters[paramName] = ResolveValue(key); + + sb.Append(paramName); + start = closeIndex + 2; + } + + return new EvaluatedQuery(sb.ToString(), parameters); + } + + private object? ResolveValue(string key) + { + return key switch + { + "Workflow.Definition.Id" => executionContext.Workflow.Identity.DefinitionId, + "Workflow.Definition.Version.Id" => executionContext.Workflow.Identity.Id, + "Workflow.Definition.Version" => executionContext.Workflow.Identity.Version, + "Workflow.Instance.Id" => activityContext.WorkflowExecutionContext.Id, + "Correlation.Id" => activityContext.WorkflowExecutionContext.CorrelationId, + "LastResult" => expressionContext.GetLastResult(), + var i when i.StartsWith("Input.") => executionContext.Input.TryGetValue(i.Substring(6), out var v) ? v : null, + var o when o.StartsWith("Output.") => executionContext.Output.TryGetValue(o.Substring(7), out var v) ? v : null, + var v when v.StartsWith("Variables.") => executionContext.Variables.FirstOrDefault(x => x.Name == v.Substring(10), null)?.Value ?? null, + _ => throw new NullReferenceException($"No matching property found for {{{{{key}}}}}.") + }; + } +} \ No newline at end of file diff --git a/src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs b/src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs new file mode 100644 index 00000000..019271df --- /dev/null +++ b/src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs @@ -0,0 +1,18 @@ +using System.Reflection; +using Elsa.Sql.Contracts; +using Elsa.Workflows.UIHints.Dropdown; + +namespace Elsa.Sql.UIHints; + +/// +/// Provides registered clients for the Client input field. +/// +/// +public class SqlClientsDropDownProvider(ISqlClientNamesProvider sqlClientNamesProvider) : DropDownOptionsProviderBase +{ + protected override async ValueTask> GetItemsAsync(PropertyInfo propertyInfo, object? context, CancellationToken cancellationToken) + { + var clients = await sqlClientNamesProvider.GetRegisteredSqlClientNamesAsync(cancellationToken); + return clients.Select(x => new SelectListItem(x.Key, x.Key)).ToList(); + } +} \ No newline at end of file From 6f579d5e2bfeb6690da6b6093b30e5a1b81bc1c6 Mon Sep 17 00:00:00 2001 From: Matt Date: Tue, 22 Apr 2025 01:06:33 +0100 Subject: [PATCH 02/23] Update projects & namespaces to now include Integrations within them. --- Elsa.Integrations.sln | 60 +++++++++---------- .../Elsa.Integrations.Sql.MySql.csproj} | 2 +- .../FodyWeavers.xml | 0 .../MySqlClient.cs | 4 +- .../Elsa.Integrations.Sql.PostgreSql.csproj} | 2 +- .../FodyWeavers.xml | 0 .../PostgreSqlClient.cs | 4 +- .../Elsa.Integrations.Sql.SqlServer.csproj} | 2 +- .../FodyWeavers.xml | 0 .../SqlServerClient.cs | 4 +- .../Elsa.Integrations.Sql.Sqlite.csproj} | 2 +- .../FodyWeavers.xml | 0 .../SqliteClient.cs | 4 +- .../Activities/SqlCodeOptionsProvider.cs | 2 +- .../Activities/SqlCommand.cs | 6 +- .../Activities/SqlQuery.cs | 6 +- .../Activities/SqlSingleValue.cs | 6 +- .../Client/BaseSqlClient.cs | 4 +- .../Client/ISqlClient.cs | 4 +- .../Contracts/ISqlClientFactory.cs | 4 +- .../Contracts/ISqlClientNamesProvider.cs | 2 +- .../Contracts/ISqlEvaluator.cs | 4 +- .../Elsa.Integrations.Sql.csproj} | 0 .../Expressions/SqlExpressionHandler.cs | 4 +- .../Extensions/ModuleExtensions.cs | 4 +- .../Factory/SqlClientFactory.cs | 8 +-- .../Features/SqlFeature.cs | 14 ++--- .../FodyWeavers.xml | 0 .../Models/EvaluatedQuery.cs | 2 +- .../Providers/SqlClientNamesProvider.cs | 6 +- .../SqlExpressionDescriptorProvider.cs | 4 +- .../Services/ClientStore.cs | 4 +- .../Services/SqlEvaluator.cs | 6 +- .../UIHints/SqlClientsDropDownProvider.cs | 4 +- 34 files changed, 89 insertions(+), 89 deletions(-) rename src/sql/{Elsa.Sql.MySql/Elsa.Sql.MySql.csproj => Elsa.Integrations.Sql.MySql/Elsa.Integrations.Sql.MySql.csproj} (80%) rename src/sql/{Elsa.Sql.MySql => Elsa.Integrations.Sql.MySql}/FodyWeavers.xml (100%) rename src/sql/{Elsa.Sql.MySql => Elsa.Integrations.Sql.MySql}/MySqlClient.cs (86%) rename src/sql/{Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj => Elsa.Integrations.Sql.PostgreSql/Elsa.Integrations.Sql.PostgreSql.csproj} (80%) rename src/sql/{Elsa.Sql.PostgreSql => Elsa.Integrations.Sql.PostgreSql}/FodyWeavers.xml (100%) rename src/sql/{Elsa.Sql.PostgreSql => Elsa.Integrations.Sql.PostgreSql}/PostgreSqlClient.cs (86%) rename src/sql/{Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj => Elsa.Integrations.Sql.SqlServer/Elsa.Integrations.Sql.SqlServer.csproj} (82%) rename src/sql/{Elsa.Sql.SqlServer => Elsa.Integrations.Sql.SqlServer}/FodyWeavers.xml (100%) rename src/sql/{Elsa.Sql.SqlServer => Elsa.Integrations.Sql.SqlServer}/SqlServerClient.cs (86%) rename src/sql/{Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj => Elsa.Integrations.Sql.Sqlite/Elsa.Integrations.Sql.Sqlite.csproj} (81%) rename src/sql/{Elsa.Sql.Sqlite => Elsa.Integrations.Sql.Sqlite}/FodyWeavers.xml (100%) rename src/sql/{Elsa.Sql.Sqlite => Elsa.Integrations.Sql.Sqlite}/SqliteClient.cs (86%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Activities/SqlCodeOptionsProvider.cs (86%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Activities/SqlCommand.cs (95%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Activities/SqlQuery.cs (95%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Activities/SqlSingleValue.cs (95%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Client/BaseSqlClient.cs (98%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Client/ISqlClient.cs (95%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Contracts/ISqlClientFactory.cs (85%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Contracts/ISqlClientNamesProvider.cs (90%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Contracts/ISqlEvaluator.cs (91%) rename src/sql/{Elsa.Sql/Elsa.Sql.csproj => Elsa.Integrations.Sql/Elsa.Integrations.Sql.csproj} (100%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Expressions/SqlExpressionHandler.cs (90%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Extensions/ModuleExtensions.cs (87%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Factory/SqlClientFactory.cs (89%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Features/SqlFeature.cs (85%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/FodyWeavers.xml (100%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Models/EvaluatedQuery.cs (96%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Providers/SqlClientNamesProvider.cs (83%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Providers/SqlExpressionDescriptorProvider.cs (90%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Services/ClientStore.cs (95%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/Services/SqlEvaluator.cs (96%) rename src/sql/{Elsa.Sql => Elsa.Integrations.Sql}/UIHints/SqlClientsDropDownProvider.cs (89%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 84a9af77..a3f199a3 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -79,15 +79,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Pe EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql", "src\Sql\Elsa.Sql\Elsa.Sql.csproj", "{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql", "src\sql\Elsa.Integrations.Sql\Elsa.Integrations.Sql.csproj", "{C28570E2-EE0E-CE53-CB56-7927CAB23E1E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.SqlServer", "src\sql\Elsa.Sql.SqlServer\Elsa.Sql.SqlServer.csproj", "{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.MySql", "src\sql\Elsa.Integrations.Sql.MySql\Elsa.Integrations.Sql.MySql.csproj", "{9398D427-0A19-552F-AD3F-42F06A39DA8C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.Sqlite", "src\sql\Elsa.Sql.Sqlite\Elsa.Sql.Sqlite.csproj", "{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.PostgreSql", "src\sql\Elsa.Integrations.Sql.PostgreSql\Elsa.Integrations.Sql.PostgreSql.csproj", "{BD398E79-90DF-510C-2419-C135CCF55C47}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.PostgreSql", "src\sql\Elsa.Sql.PostgreSql\Elsa.Sql.PostgreSql.csproj", "{AA90183E-F009-F88A-9081-BAB6E5ED6B22}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.Sqlite", "src\sql\Elsa.Integrations.Sql.Sqlite\Elsa.Integrations.Sql.Sqlite.csproj", "{3ECB4951-DB9A-C129-F6BD-432AEAEA5997}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Sql.MySql", "src\sql\Elsa.Sql.MySql\Elsa.Sql.MySql.csproj", "{78CBE43C-0EF2-048E-987B-A603A38099E6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.SqlServer", "src\sql\Elsa.Integrations.Sql.SqlServer\Elsa.Integrations.Sql.SqlServer.csproj", "{80692FAE-701B-F877-198B-2B93A428B0C0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -171,26 +171,26 @@ Global {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Debug|Any CPU.Build.0 = Debug|Any CPU {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.Build.0 = Release|Any CPU - {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.Build.0 = Release|Any CPU - {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.Build.0 = Release|Any CPU - {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.Build.0 = Release|Any CPU - {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.Build.0 = Release|Any CPU - {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.Build.0 = Release|Any CPU + {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Release|Any CPU.Build.0 = Release|Any CPU + {9398D427-0A19-552F-AD3F-42F06A39DA8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9398D427-0A19-552F-AD3F-42F06A39DA8C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9398D427-0A19-552F-AD3F-42F06A39DA8C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9398D427-0A19-552F-AD3F-42F06A39DA8C}.Release|Any CPU.Build.0 = Release|Any CPU + {BD398E79-90DF-510C-2419-C135CCF55C47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD398E79-90DF-510C-2419-C135CCF55C47}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD398E79-90DF-510C-2419-C135CCF55C47}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD398E79-90DF-510C-2419-C135CCF55C47}.Release|Any CPU.Build.0 = Release|Any CPU + {3ECB4951-DB9A-C129-F6BD-432AEAEA5997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3ECB4951-DB9A-C129-F6BD-432AEAEA5997}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3ECB4951-DB9A-C129-F6BD-432AEAEA5997}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3ECB4951-DB9A-C129-F6BD-432AEAEA5997}.Release|Any CPU.Build.0 = Release|Any CPU + {80692FAE-701B-F877-198B-2B93A428B0C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {80692FAE-701B-F877-198B-2B93A428B0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {80692FAE-701B-F877-198B-2B93A428B0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {80692FAE-701B-F877-198B-2B93A428B0C0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -218,11 +218,11 @@ Global {4455BAC7-FD3C-4429-A2A2-44A83A331056} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {3E782B62-87D8-F5FD-CA2D-0D524C5BB530} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {266D14A8-4D8F-795F-169F-A7E7B4F23D1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {AA90183E-F009-F88A-9081-BAB6E5ED6B22} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {78CBE43C-0EF2-048E-987B-A603A38099E6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {C28570E2-EE0E-CE53-CB56-7927CAB23E1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {9398D427-0A19-552F-AD3F-42F06A39DA8C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {BD398E79-90DF-510C-2419-C135CCF55C47} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {3ECB4951-DB9A-C129-F6BD-432AEAEA5997} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {80692FAE-701B-F877-198B-2B93A428B0C0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj b/src/sql/Elsa.Integrations.Sql.MySql/Elsa.Integrations.Sql.MySql.csproj similarity index 80% rename from src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj rename to src/sql/Elsa.Integrations.Sql.MySql/Elsa.Integrations.Sql.MySql.csproj index 54c6148d..6e26bf91 100644 --- a/src/sql/Elsa.Sql.MySql/Elsa.Sql.MySql.csproj +++ b/src/sql/Elsa.Integrations.Sql.MySql/Elsa.Integrations.Sql.MySql.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/sql/Elsa.Sql.MySql/FodyWeavers.xml b/src/sql/Elsa.Integrations.Sql.MySql/FodyWeavers.xml similarity index 100% rename from src/sql/Elsa.Sql.MySql/FodyWeavers.xml rename to src/sql/Elsa.Integrations.Sql.MySql/FodyWeavers.xml diff --git a/src/sql/Elsa.Sql.MySql/MySqlClient.cs b/src/sql/Elsa.Integrations.Sql.MySql/MySqlClient.cs similarity index 86% rename from src/sql/Elsa.Sql.MySql/MySqlClient.cs rename to src/sql/Elsa.Integrations.Sql.MySql/MySqlClient.cs index 60669f7d..7f855c36 100644 --- a/src/sql/Elsa.Sql.MySql/MySqlClient.cs +++ b/src/sql/Elsa.Integrations.Sql.MySql/MySqlClient.cs @@ -1,8 +1,8 @@ using MySql.Data.MySqlClient; -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; using System.Data.Common; -namespace Elsa.Sql.MySql; +namespace Elsa.Integrations.Sql.MySql; /// /// MySql client implementation. diff --git a/src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj b/src/sql/Elsa.Integrations.Sql.PostgreSql/Elsa.Integrations.Sql.PostgreSql.csproj similarity index 80% rename from src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj rename to src/sql/Elsa.Integrations.Sql.PostgreSql/Elsa.Integrations.Sql.PostgreSql.csproj index 82a29085..d145ce88 100644 --- a/src/sql/Elsa.Sql.PostgreSql/Elsa.Sql.PostgreSql.csproj +++ b/src/sql/Elsa.Integrations.Sql.PostgreSql/Elsa.Integrations.Sql.PostgreSql.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml b/src/sql/Elsa.Integrations.Sql.PostgreSql/FodyWeavers.xml similarity index 100% rename from src/sql/Elsa.Sql.PostgreSql/FodyWeavers.xml rename to src/sql/Elsa.Integrations.Sql.PostgreSql/FodyWeavers.xml diff --git a/src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs b/src/sql/Elsa.Integrations.Sql.PostgreSql/PostgreSqlClient.cs similarity index 86% rename from src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs rename to src/sql/Elsa.Integrations.Sql.PostgreSql/PostgreSqlClient.cs index 5eb5982b..ae8f4fab 100644 --- a/src/sql/Elsa.Sql.PostgreSql/PostgreSqlClient.cs +++ b/src/sql/Elsa.Integrations.Sql.PostgreSql/PostgreSqlClient.cs @@ -1,8 +1,8 @@ using Npgsql; -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; using System.Data.Common; -namespace Elsa.Sql.PostgreSql; +namespace Elsa.Integrations.Sql.PostgreSql; /// /// PostgreSQL client implementation. diff --git a/src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj b/src/sql/Elsa.Integrations.Sql.SqlServer/Elsa.Integrations.Sql.SqlServer.csproj similarity index 82% rename from src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj rename to src/sql/Elsa.Integrations.Sql.SqlServer/Elsa.Integrations.Sql.SqlServer.csproj index cab38ce9..c461f677 100644 --- a/src/sql/Elsa.Sql.SqlServer/Elsa.Sql.SqlServer.csproj +++ b/src/sql/Elsa.Integrations.Sql.SqlServer/Elsa.Integrations.Sql.SqlServer.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml b/src/sql/Elsa.Integrations.Sql.SqlServer/FodyWeavers.xml similarity index 100% rename from src/sql/Elsa.Sql.SqlServer/FodyWeavers.xml rename to src/sql/Elsa.Integrations.Sql.SqlServer/FodyWeavers.xml diff --git a/src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs b/src/sql/Elsa.Integrations.Sql.SqlServer/SqlServerClient.cs similarity index 86% rename from src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs rename to src/sql/Elsa.Integrations.Sql.SqlServer/SqlServerClient.cs index e8780c35..982b592e 100644 --- a/src/sql/Elsa.Sql.SqlServer/SqlServerClient.cs +++ b/src/sql/Elsa.Integrations.Sql.SqlServer/SqlServerClient.cs @@ -1,8 +1,8 @@ using System.Data.Common; -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; using Microsoft.Data.SqlClient; -namespace Elsa.Sql.SqlServer; +namespace Elsa.Integrations.Sql.SqlServer; /// /// Microsoft SQL server client implementation. diff --git a/src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj b/src/sql/Elsa.Integrations.Sql.Sqlite/Elsa.Integrations.Sql.Sqlite.csproj similarity index 81% rename from src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj rename to src/sql/Elsa.Integrations.Sql.Sqlite/Elsa.Integrations.Sql.Sqlite.csproj index 43bf2bf5..2276854d 100644 --- a/src/sql/Elsa.Sql.Sqlite/Elsa.Sql.Sqlite.csproj +++ b/src/sql/Elsa.Integrations.Sql.Sqlite/Elsa.Integrations.Sql.Sqlite.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml b/src/sql/Elsa.Integrations.Sql.Sqlite/FodyWeavers.xml similarity index 100% rename from src/sql/Elsa.Sql.Sqlite/FodyWeavers.xml rename to src/sql/Elsa.Integrations.Sql.Sqlite/FodyWeavers.xml diff --git a/src/sql/Elsa.Sql.Sqlite/SqliteClient.cs b/src/sql/Elsa.Integrations.Sql.Sqlite/SqliteClient.cs similarity index 86% rename from src/sql/Elsa.Sql.Sqlite/SqliteClient.cs rename to src/sql/Elsa.Integrations.Sql.Sqlite/SqliteClient.cs index ec43f524..40b4dace 100644 --- a/src/sql/Elsa.Sql.Sqlite/SqliteClient.cs +++ b/src/sql/Elsa.Integrations.Sql.Sqlite/SqliteClient.cs @@ -1,8 +1,8 @@ using System.Data.Common; -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; using Microsoft.Data.Sqlite; -namespace Elsa.Sql.Sqlite; +namespace Elsa.Integrations.Sql.Sqlite; /// /// Sqlite client implementation. diff --git a/src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs b/src/sql/Elsa.Integrations.Sql/Activities/SqlCodeOptionsProvider.cs similarity index 86% rename from src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs rename to src/sql/Elsa.Integrations.Sql/Activities/SqlCodeOptionsProvider.cs index f61bad42..7337676e 100644 --- a/src/sql/Elsa.Sql/Activities/SqlCodeOptionsProvider.cs +++ b/src/sql/Elsa.Integrations.Sql/Activities/SqlCodeOptionsProvider.cs @@ -2,7 +2,7 @@ using Elsa.Workflows.UIHints.CodeEditor; // ReSharper disable once CheckNamespace -namespace Elsa.Sql.Activities; +namespace Elsa.Integrations.Sql.Activities; internal class SqlCodeOptionsProvider : CodeEditorOptionsProviderBase { diff --git a/src/sql/Elsa.Sql/Activities/SqlCommand.cs b/src/sql/Elsa.Integrations.Sql/Activities/SqlCommand.cs similarity index 95% rename from src/sql/Elsa.Sql/Activities/SqlCommand.cs rename to src/sql/Elsa.Integrations.Sql/Activities/SqlCommand.cs index bc906878..b72f2168 100644 --- a/src/sql/Elsa.Sql/Activities/SqlCommand.cs +++ b/src/sql/Elsa.Integrations.Sql/Activities/SqlCommand.cs @@ -1,14 +1,14 @@ using System.Runtime.CompilerServices; using Elsa.Expressions.Models; using Elsa.Extensions; -using Elsa.Sql.Contracts; -using Elsa.Sql.UIHints; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.UIHints; using Elsa.Workflows; using Elsa.Workflows.Attributes; using Elsa.Workflows.Models; using Elsa.Workflows.UIHints; -namespace Elsa.Sql.Activities; +namespace Elsa.Integrations.Sql.Activities; /// /// Execute given SQL command and returns the number of rows affected. diff --git a/src/sql/Elsa.Sql/Activities/SqlQuery.cs b/src/sql/Elsa.Integrations.Sql/Activities/SqlQuery.cs similarity index 95% rename from src/sql/Elsa.Sql/Activities/SqlQuery.cs rename to src/sql/Elsa.Integrations.Sql/Activities/SqlQuery.cs index 5b721aed..333b41ae 100644 --- a/src/sql/Elsa.Sql/Activities/SqlQuery.cs +++ b/src/sql/Elsa.Integrations.Sql/Activities/SqlQuery.cs @@ -2,14 +2,14 @@ using System.Runtime.CompilerServices; using Elsa.Expressions.Models; using Elsa.Extensions; -using Elsa.Sql.Contracts; -using Elsa.Sql.UIHints; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.UIHints; using Elsa.Workflows; using Elsa.Workflows.Attributes; using Elsa.Workflows.Models; using Elsa.Workflows.UIHints; -namespace Elsa.Sql.Activities; +namespace Elsa.Integrations.Sql.Activities; /// /// Execute given SQL query and return the resulting data. diff --git a/src/sql/Elsa.Sql/Activities/SqlSingleValue.cs b/src/sql/Elsa.Integrations.Sql/Activities/SqlSingleValue.cs similarity index 95% rename from src/sql/Elsa.Sql/Activities/SqlSingleValue.cs rename to src/sql/Elsa.Integrations.Sql/Activities/SqlSingleValue.cs index 4c05dc44..83387c72 100644 --- a/src/sql/Elsa.Sql/Activities/SqlSingleValue.cs +++ b/src/sql/Elsa.Integrations.Sql/Activities/SqlSingleValue.cs @@ -1,14 +1,14 @@ using System.Runtime.CompilerServices; using Elsa.Expressions.Models; using Elsa.Extensions; -using Elsa.Sql.Contracts; -using Elsa.Sql.UIHints; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.UIHints; using Elsa.Workflows; using Elsa.Workflows.Attributes; using Elsa.Workflows.Models; using Elsa.Workflows.UIHints; -namespace Elsa.Sql.Activities; +namespace Elsa.Integrations.Sql.Activities; /// /// Execute given SQL command and return a single result. diff --git a/src/sql/Elsa.Sql/Client/BaseSqlClient.cs b/src/sql/Elsa.Integrations.Sql/Client/BaseSqlClient.cs similarity index 98% rename from src/sql/Elsa.Sql/Client/BaseSqlClient.cs rename to src/sql/Elsa.Integrations.Sql/Client/BaseSqlClient.cs index 9f7cca11..b8ebd5f7 100644 --- a/src/sql/Elsa.Sql/Client/BaseSqlClient.cs +++ b/src/sql/Elsa.Integrations.Sql/Client/BaseSqlClient.cs @@ -1,8 +1,8 @@ using System.Data; using System.Data.Common; -using Elsa.Sql.Models; +using Elsa.Integrations.Sql.Models; -namespace Elsa.Sql.Client; +namespace Elsa.Integrations.Sql.Client; public abstract class BaseSqlClient : ISqlClient { diff --git a/src/sql/Elsa.Sql/Client/ISqlClient.cs b/src/sql/Elsa.Integrations.Sql/Client/ISqlClient.cs similarity index 95% rename from src/sql/Elsa.Sql/Client/ISqlClient.cs rename to src/sql/Elsa.Integrations.Sql/Client/ISqlClient.cs index 2cc3eb5b..9dc84358 100644 --- a/src/sql/Elsa.Sql/Client/ISqlClient.cs +++ b/src/sql/Elsa.Integrations.Sql/Client/ISqlClient.cs @@ -1,7 +1,7 @@ using System.Data; -using Elsa.Sql.Models; +using Elsa.Integrations.Sql.Models; -namespace Elsa.Sql.Client; +namespace Elsa.Integrations.Sql.Client; public interface ISqlClient { diff --git a/src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientFactory.cs similarity index 85% rename from src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs rename to src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientFactory.cs index de2d7771..c705686b 100644 --- a/src/sql/Elsa.Sql/Contracts/ISqlClientFactory.cs +++ b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientFactory.cs @@ -1,6 +1,6 @@ -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; -namespace Elsa.Sql.Contracts; +namespace Elsa.Integrations.Sql.Contracts; public interface ISqlClientFactory { diff --git a/src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientNamesProvider.cs similarity index 90% rename from src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs rename to src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientNamesProvider.cs index b1b48eef..d2a723cb 100644 --- a/src/sql/Elsa.Sql/Contracts/ISqlClientNamesProvider.cs +++ b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlClientNamesProvider.cs @@ -1,4 +1,4 @@ -namespace Elsa.Sql.Contracts; +namespace Elsa.Integrations.Sql.Contracts; public interface ISqlClientNamesProvider { diff --git a/src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlEvaluator.cs similarity index 91% rename from src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs rename to src/sql/Elsa.Integrations.Sql/Contracts/ISqlEvaluator.cs index 0817f409..b7e35120 100644 --- a/src/sql/Elsa.Sql/Contracts/ISqlEvaluator.cs +++ b/src/sql/Elsa.Integrations.Sql/Contracts/ISqlEvaluator.cs @@ -1,8 +1,8 @@ using Elsa.Expressions.Models; -using Elsa.Sql.Models; +using Elsa.Integrations.Sql.Models; using JetBrains.Annotations; -namespace Elsa.Sql.Contracts; +namespace Elsa.Integrations.Sql.Contracts; /// /// Evaluates SQL expressions. diff --git a/src/sql/Elsa.Sql/Elsa.Sql.csproj b/src/sql/Elsa.Integrations.Sql/Elsa.Integrations.Sql.csproj similarity index 100% rename from src/sql/Elsa.Sql/Elsa.Sql.csproj rename to src/sql/Elsa.Integrations.Sql/Elsa.Integrations.Sql.csproj diff --git a/src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs b/src/sql/Elsa.Integrations.Sql/Expressions/SqlExpressionHandler.cs similarity index 90% rename from src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs rename to src/sql/Elsa.Integrations.Sql/Expressions/SqlExpressionHandler.cs index a3e131f4..9f1a7639 100644 --- a/src/sql/Elsa.Sql/Expressions/SqlExpressionHandler.cs +++ b/src/sql/Elsa.Integrations.Sql/Expressions/SqlExpressionHandler.cs @@ -1,9 +1,9 @@ -using Elsa.Sql.Contracts; +using Elsa.Integrations.Sql.Contracts; using Elsa.Expressions.Contracts; using Elsa.Expressions.Helpers; using Elsa.Expressions.Models; -namespace Elsa.Sql.Expressions; +namespace Elsa.Integrations.Sql.Expressions; /// /// Evaluates SQL expressions. diff --git a/src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs b/src/sql/Elsa.Integrations.Sql/Extensions/ModuleExtensions.cs similarity index 87% rename from src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs rename to src/sql/Elsa.Integrations.Sql/Extensions/ModuleExtensions.cs index 4ab8e85e..b7db68d5 100644 --- a/src/sql/Elsa.Sql/Extensions/ModuleExtensions.cs +++ b/src/sql/Elsa.Integrations.Sql/Extensions/ModuleExtensions.cs @@ -1,7 +1,7 @@ using Elsa.Features.Services; -using Elsa.Sql.Features; +using Elsa.Integrations.Sql.Features; -namespace Elsa.Sql.Extensions; +namespace Elsa.Integrations.Sql.Extensions; /// /// Provides methods to install and configure SQL client features. diff --git a/src/sql/Elsa.Sql/Factory/SqlClientFactory.cs b/src/sql/Elsa.Integrations.Sql/Factory/SqlClientFactory.cs similarity index 89% rename from src/sql/Elsa.Sql/Factory/SqlClientFactory.cs rename to src/sql/Elsa.Integrations.Sql/Factory/SqlClientFactory.cs index 4422b099..55c9266d 100644 --- a/src/sql/Elsa.Sql/Factory/SqlClientFactory.cs +++ b/src/sql/Elsa.Integrations.Sql/Factory/SqlClientFactory.cs @@ -1,9 +1,9 @@ -using Elsa.Sql.Client; -using Elsa.Sql.Contracts; -using Elsa.Sql.Services; +using Elsa.Integrations.Sql.Client; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.Services; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Sql.Factory; +namespace Elsa.Integrations.Sql.Factory; /// /// SQL client factory diff --git a/src/sql/Elsa.Sql/Features/SqlFeature.cs b/src/sql/Elsa.Integrations.Sql/Features/SqlFeature.cs similarity index 85% rename from src/sql/Elsa.Sql/Features/SqlFeature.cs rename to src/sql/Elsa.Integrations.Sql/Features/SqlFeature.cs index 882f1c50..2a3fb297 100644 --- a/src/sql/Elsa.Sql/Features/SqlFeature.cs +++ b/src/sql/Elsa.Integrations.Sql/Features/SqlFeature.cs @@ -1,16 +1,16 @@ using Elsa.Extensions; using Elsa.Features.Abstractions; using Elsa.Features.Services; -using Elsa.Sql.Activities; -using Elsa.Sql.Contracts; -using Elsa.Sql.Factory; -using Elsa.Sql.Providers; -using Elsa.Sql.Services; -using Elsa.Sql.UIHints; +using Elsa.Integrations.Sql.Activities; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.Factory; +using Elsa.Integrations.Sql.Providers; +using Elsa.Integrations.Sql.Services; +using Elsa.Integrations.Sql.UIHints; using Elsa.Workflows; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Sql.Features; +namespace Elsa.Integrations.Sql.Features; /// /// Setup SQL client features diff --git a/src/sql/Elsa.Sql/FodyWeavers.xml b/src/sql/Elsa.Integrations.Sql/FodyWeavers.xml similarity index 100% rename from src/sql/Elsa.Sql/FodyWeavers.xml rename to src/sql/Elsa.Integrations.Sql/FodyWeavers.xml diff --git a/src/sql/Elsa.Sql/Models/EvaluatedQuery.cs b/src/sql/Elsa.Integrations.Sql/Models/EvaluatedQuery.cs similarity index 96% rename from src/sql/Elsa.Sql/Models/EvaluatedQuery.cs rename to src/sql/Elsa.Integrations.Sql/Models/EvaluatedQuery.cs index 1570fab0..12a99af7 100644 --- a/src/sql/Elsa.Sql/Models/EvaluatedQuery.cs +++ b/src/sql/Elsa.Integrations.Sql/Models/EvaluatedQuery.cs @@ -1,4 +1,4 @@ -namespace Elsa.Sql.Models +namespace Elsa.Integrations.Sql.Models { /// /// Represents a safely formatted SQL expression result. diff --git a/src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs b/src/sql/Elsa.Integrations.Sql/Providers/SqlClientNamesProvider.cs similarity index 83% rename from src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs rename to src/sql/Elsa.Integrations.Sql/Providers/SqlClientNamesProvider.cs index f94aaeef..ca4929dc 100644 --- a/src/sql/Elsa.Sql/Providers/SqlClientNamesProvider.cs +++ b/src/sql/Elsa.Integrations.Sql/Providers/SqlClientNamesProvider.cs @@ -1,8 +1,8 @@ -using Elsa.Sql.Contracts; -using Elsa.Sql.Services; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.Services; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Sql.Providers; +namespace Elsa.Integrations.Sql.Providers; /// /// Returns registered client names diff --git a/src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs b/src/sql/Elsa.Integrations.Sql/Providers/SqlExpressionDescriptorProvider.cs similarity index 90% rename from src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs rename to src/sql/Elsa.Integrations.Sql/Providers/SqlExpressionDescriptorProvider.cs index 6ac53e82..034ac8e5 100644 --- a/src/sql/Elsa.Sql/Providers/SqlExpressionDescriptorProvider.cs +++ b/src/sql/Elsa.Integrations.Sql/Providers/SqlExpressionDescriptorProvider.cs @@ -1,10 +1,10 @@ using Elsa.Expressions.Contracts; using Elsa.Expressions.Models; using Elsa.Extensions; -using Elsa.Sql.Expressions; +using Elsa.Integrations.Sql.Expressions; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Sql.Providers; +namespace Elsa.Integrations.Sql.Providers; /// /// Provides SQL expression descriptors. diff --git a/src/sql/Elsa.Sql/Services/ClientStore.cs b/src/sql/Elsa.Integrations.Sql/Services/ClientStore.cs similarity index 95% rename from src/sql/Elsa.Sql/Services/ClientStore.cs rename to src/sql/Elsa.Integrations.Sql/Services/ClientStore.cs index d76727ae..2a17cade 100644 --- a/src/sql/Elsa.Sql/Services/ClientStore.cs +++ b/src/sql/Elsa.Integrations.Sql/Services/ClientStore.cs @@ -1,6 +1,6 @@ -using Elsa.Sql.Client; +using Elsa.Integrations.Sql.Client; -namespace Elsa.Sql.Services; +namespace Elsa.Integrations.Sql.Services; public class ClientStore { private readonly Dictionary clients = new(); diff --git a/src/sql/Elsa.Sql/Services/SqlEvaluator.cs b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs similarity index 96% rename from src/sql/Elsa.Sql/Services/SqlEvaluator.cs rename to src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs index 10ee5a0d..ebc41a9c 100644 --- a/src/sql/Elsa.Sql/Services/SqlEvaluator.cs +++ b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs @@ -1,11 +1,11 @@ using System.Text; using Elsa.Expressions.Models; using Elsa.Extensions; -using Elsa.Sql.Contracts; -using Elsa.Sql.Models; +using Elsa.Integrations.Sql.Contracts; +using Elsa.Integrations.Sql.Models; using Elsa.Workflows; -namespace Elsa.Sql.Services; +namespace Elsa.Integrations.Sql.Services; /// /// A SQL expression evaluator. diff --git a/src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs b/src/sql/Elsa.Integrations.Sql/UIHints/SqlClientsDropDownProvider.cs similarity index 89% rename from src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs rename to src/sql/Elsa.Integrations.Sql/UIHints/SqlClientsDropDownProvider.cs index 019271df..e1a6f4d1 100644 --- a/src/sql/Elsa.Sql/UIHints/SqlClientsDropDownProvider.cs +++ b/src/sql/Elsa.Integrations.Sql/UIHints/SqlClientsDropDownProvider.cs @@ -1,8 +1,8 @@ using System.Reflection; -using Elsa.Sql.Contracts; +using Elsa.Integrations.Sql.Contracts; using Elsa.Workflows.UIHints.Dropdown; -namespace Elsa.Sql.UIHints; +namespace Elsa.Integrations.Sql.UIHints; /// /// Provides registered clients for the Client input field. From e7c95a23d6cbfaa0b7e24f8045ae0c70a96f99a2 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 2 May 2025 22:55:42 +0100 Subject: [PATCH 03/23] Updates SqlEvaluator to add support for dynamic variable setting. --- src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs index ebc41a9c..f03af79e 100644 --- a/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs +++ b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs @@ -85,7 +85,7 @@ public async Task EvaluateAsync( "LastResult" => expressionContext.GetLastResult(), var i when i.StartsWith("Input.") => executionContext.Input.TryGetValue(i.Substring(6), out var v) ? v : null, var o when o.StartsWith("Output.") => executionContext.Output.TryGetValue(o.Substring(7), out var v) ? v : null, - var v when v.StartsWith("Variables.") => executionContext.Variables.FirstOrDefault(x => x.Name == v.Substring(10), null)?.Value ?? null, + var v when v.StartsWith("Variables.") => expressionContext.GetVariableInScope(v.Substring(10)) ?? null, _ => throw new NullReferenceException($"No matching property found for {{{{{key}}}}}.") }; } From 2503f3195c8b822bed2ca640e626e35e71ba2cca Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 2 May 2025 23:12:19 +0100 Subject: [PATCH 04/23] Update SqlEvaluator expression keyword resolver for using variables. Changes from 'Variables.' to 'Variable.' to match other properties singular naming convention. --- src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs index f03af79e..4795ec5c 100644 --- a/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs +++ b/src/sql/Elsa.Integrations.Sql/Services/SqlEvaluator.cs @@ -85,7 +85,7 @@ public async Task EvaluateAsync( "LastResult" => expressionContext.GetLastResult(), var i when i.StartsWith("Input.") => executionContext.Input.TryGetValue(i.Substring(6), out var v) ? v : null, var o when o.StartsWith("Output.") => executionContext.Output.TryGetValue(o.Substring(7), out var v) ? v : null, - var v when v.StartsWith("Variables.") => expressionContext.GetVariableInScope(v.Substring(10)) ?? null, + var v when v.StartsWith("Variable.") => expressionContext.GetVariableInScope(v.Substring(10)) ?? null, _ => throw new NullReferenceException($"No matching property found for {{{{{key}}}}}.") }; } From 7ddddafff0b1d3ee1a98241a64b800552d9cc08d Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:31:45 +0100 Subject: [PATCH 05/23] Adds new README-TEMPLATE for new integrations and updated CONTRIBUTEING to reflect this new requirement. --- CONTRIBUTING.md | 13 ++- Elsa.Integrations.sln | 4 + README-TEMPLATE.md | 212 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 224 insertions(+), 5 deletions(-) create mode 100644 README-TEMPLATE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fc395ad..60777412 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,10 +36,13 @@ git checkout -b feature/integration-name ``` Follow the repository's structure when adding a new integration: ``` -Elsa.Integrations.ServiceName/ - ├── Services/ - ├── Activities/ - ├── AI/ +[integration-name]/ + ├── README.md + └── Elsa.Integrations.[integration-name]/ + ├── Services/ + ├── Activities/ + ├── AI/ + ... ``` ### 5️⃣ Commit & Push @@ -65,7 +68,7 @@ Our team will review your PR, provide feedback if necessary, and merge it once a ## 🛠 Contribution Guidelines - **Code Style**: Follow `.editorconfig` settings and existing project conventions. -- **Documentation**: Every new integration must have a `README.md` inside its folder explaining how to use it. +- **Documentation**: Every integration must have a `README.md` at the root of its folder. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). - **Tests**: If possible, add unit/integration tests for your changes. --- diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index a3f199a3..9d518136 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -19,6 +19,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{DE icon.png = icon.png LICENSE = LICENSE NuGet.Config = NuGet.Config + README-TEMPLATE.md = README-TEMPLATE.md README.md = README.md EndProjectSection EndProject @@ -78,6 +79,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" + ProjectSection(SolutionItems) = preProject + src\sql\README.md = src\sql\README.md + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql", "src\sql\Elsa.Integrations.Sql\Elsa.Integrations.Sql.csproj", "{C28570E2-EE0E-CE53-CB56-7927CAB23E1E}" EndProject diff --git a/README-TEMPLATE.md b/README-TEMPLATE.md new file mode 100644 index 00000000..05f47596 --- /dev/null +++ b/README-TEMPLATE.md @@ -0,0 +1,212 @@ +# ℹ️ README Template for New Integrations + +This template outlines the recommended structure for your integrations README. +It's designed to showcase all the key features of your integration, provide clear usage instructions and help maintain consistent documentation across all integrations. + +Example sentences / hints have been provided for each section to get your started but these should be changed to fit the context of your integration. + +Hints are marked with an ℹ️ ( ) ℹ️ and should be removed from your README. + +For convenience, you can search and replace the following keywords for quicker boiler plate setup: + +| Keyword | Description | Example | +|-----------|--------------|----------| +| [integration-name] | Name of the integration | YourIntegration | +| [CompatibleVersion] | Version the integration works with | V3 | + +## 📦 Integration Structure +Each integration should be organized into its own folder. Copy this README template file into the root of your integration's directory and rename it to `README.md`. For example: +``` +[integration-name]/ + ├── README.md + ├── Elsa.Integrations.[integration-name]/ + │ ├── Services/ + │ ├── Activities/ + │ ├── AI/ + └── Elsa.Integrations.[integration-name].Implementation/ + ├── Services/ + ├── Activities/ + ├── AI/ +``` + + +⛔ **Remove this header section from your README.** ⛔ + +--- + +# [integration-name] Integration + +
+ 📖 Table of Contents +
    +
  1. Overview
  2. +
  3. Features
  4. +
  5. + Getting Started + +
  6. +
  7. + Configuration + +
  8. +
  9. Usage
  10. +
  11. Activities
  12. +
  13. Examples
  14. +
  15. Planned Features
  16. +
  17. Limitations
  18. +
  19. Troubleshooting
  20. +
  21. Notes & Comments
  22. +
+
+ +## 🧠 Overview + +This package extends [Elsa Workflows](https://github.com/elsa-workflows/elsa-core) with support for **[integration-name]**. It introduces custom activities that make it easy to integrate [integration-name] features directly into your workflow logic. + +## ✨ Key Features + +- Activities: `DoSomething`, `DoSomethingElse` and `DoSomethingAlso` +- Highlight the key features from your integration. + +--- + +## ⚡ Getting Started + +### 📋 Prerequisites + +- Elsa Workflows **[CompatibleVersion]** installed in your project. +- Access to the [integration-name] system or API (credentials, URL, etc.). + +## 🛠 Installation + +The following NuGet packages are available for this integration: + +```bash +Elsa.Integration.[integration-name] +Elsa.Integration.[integration-name].Implementation1 +Elsa.Integration.[integration-name].Implementation2 +``` + +You can install the clients via NuGet: + +```bash +dotnet add package Elsa.Integration.[integration-name].Implementation1 +``` + +## ⚙️ Configuration + +### Program.cs + +Register the integration in your application startup: + +```csharp +using Elsa.Extensions; +using Elsa.[integration-name]; + +services.AddElsa(elsa => + { + elsa.Use[integration-name](options => + { + options.Property1 = "value1" + options.Config = options => + { + options.Property2 = "value2"; + }; + }) + } +``` + +### Appsettings.json (If applicable) +Or via `appsettings.json`: + +```json +"Elsa": { + "[integration-name]": { + "Property1": "value1", + "Config": { + "Property2": "value2" + } + } +} +``` + +--- + +## 📌 Usage + +Once the implementation is registered with your required implementations, the activities will be ready to use, either via code or [Elsa Studio](https://github.com/elsa-workflows/elsa-studio). + +## 🚀 Activities + +This integration comes with the following activities: + +### DoSomething + +| Properties | Type | Description | Input/Output | Notes | +| ---------- | ---- | ----------- | --- | ----- | +| SomeInput | int? | A brief summery of what this input is for. | Input | Perhaps the min / max values allowed. | +| OtherInput | string? / Secret | A brief summery of what this input is for. | Input | - | +| TheOutput | object? | A brief summery of what this output is for. | Output | - | + +### DoSomethingElse + +| Properties | Type | Description | Input/Output | Notes | +| ---------- | ---- | ----------- | --- | ----- | +| SomeInput | int? | A brief summery of what this input is for. | Input | Perhaps the min / max values allowed. | +| OtherInput | string? / Secret | A brief summery of what this input is for. | Input | - | +| TheOutput | object? | A brief summery of what this output is for. | Output | - | + + +## 🧪 Examples + +### Example of your feature + +ℹ️ (List some code snippets / picture examples of how to use aspects of your integration to help others learn how to use them.) ℹ️ + +--- + +## 🚧 Limitations + +ℹ️ (Bullet point known limitations, if any. For example:) ℹ️ + +- Does not support async +- Requires an active and reachable [integration-name] service endpoint + +--- + +## 🆘 Troubleshooting + +### Common Errors + +ℹ️ (Bullet points known errors, if any. For example:) ℹ️ + +- **`NullReferenceException`** + Ensure all required configuration values (API key, endpoint, etc.) are correctly set. + +- **`401 Unauthorized`** + Verify that your API key is valid and the endpoint is correct. + +- **`Activity not found`** + Ensure the activity was registered in `Program.cs` or `Startup.cs` using `.AddActivity<>()`. + +--- + +## 🗺️ Planned Features + +ℹ️ (Checkbox points for planned features, if any. For example:) ℹ️ + +- [ ] Add async retry/backoff support +- [ ] Add integration tests + +--- + +## 🗒️ Notes & Comments + +This integration was developed to add [integration-name] functionality to Elsa Workflows. +If you have ideas for improvement, encounter issues, or want to share how you're using it, feel free to open an issue or start a discussion! \ No newline at end of file From dc0bc3aa26eb3b8bc9b593bb2e40899b6ad307e6 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:32:03 +0100 Subject: [PATCH 06/23] Adds Sql README. --- src/sql/README.md | 199 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 src/sql/README.md diff --git a/src/sql/README.md b/src/sql/README.md new file mode 100644 index 00000000..b8f5fb94 --- /dev/null +++ b/src/sql/README.md @@ -0,0 +1,199 @@ +# Sql Integration + +
+ 📖 Table of Contents +
    +
  1. Overview
  2. +
  3. Features
  4. +
  5. + Getting Started + +
  6. +
  7. + Configuration + +
  8. +
  9. Usage
  10. +
  11. Activities
  12. +
  13. Examples
  14. +
  15. Planned Features
  16. +
  17. Limitations
  18. +
  19. Troubleshooting
  20. +
  21. Notes & Comments
  22. +
+
+ +## 🧠 Overview + +This package extends [Elsa Workflows](https://github.com/elsa-workflows/elsa-core) with support for **Sql**. It introduces custom activities that make it easy to integrate Sql features directly into your workflow logic. + +## ✨ Key Features + +- Activities: `SqlQuery`, `SqlCommand` and `SqlSingleValue` +- Automatic sql parameterization of Variables, Inputs, Outputs and other keywords to help Sql injection. +- Add-in approach to each database provider, with the ability to easily integrate other providers using the `ISqlClient` interface. +- Syntax highlighting for SQL + +--- + +## ⚡ Getting Started + +### 📋 Prerequisites + +- Elsa Workflows **V3** installed in your project. +- Access to the database (credentials, server address, etc...). + +## 🛠 Installation + +The following NuGet packages are available for this integration: + +```bash +Elsa.Integration.Sql +Elsa.Integration.Sql.MySql +Elsa.Integration.Sql.PostgreSql +Elsa.Integration.Sql.Sqlite +Elsa.Integration.Sql.SqlServer +``` + +You can install the clients via NuGet: + +```bash +dotnet add package Elsa.Integration.Sql. +``` + +## ⚙️ Configuration + +### Program.cs + +Register the integration in your `Program.cs` startup: + +```csharp +using Elsa.Extensions; +using Elsa.Sql.Extensions; +using Elsa.Sql.MySql; +using Elsa.Sql.PostgreSql; +using Elsa.Sql.Sqlite; +using Elsa.Sql.SqlServer; + +services.AddElsa(elsa => + { + elsa.UseSql(options => + { + options.Clients = client => + { + client.Register("MySql"); + client.Register("PostgreSql"); + client.Register("Sqlite"); + client.Register("Sql Server"); + }; + }) + } +``` + +Note: Names within the `("")` are optional. +These are used for retrieving the client implementation and for displaying a user friendly name in Elsa Studio. +If no name is provided, the client class name will be given as the default value, i.e. `SqliteClient`. + +### Appsettings.json +There are no configuration options that can be set in `appsettings.json` for this integration. + +--- + +## 📌 Usage + +Once the implementation is registered with your required clients, the activities will be ready to use, either via code or [Elsa Studio](https://github.com/elsa-workflows/elsa-studio). + +## 🚀 Activities + +This integration comes with the following activities: + +### SqlQuery + +| Properties | Type | Description | Input/Output | Notes | +| ---------- | ---- | ----------- | --- | ----- | +| Client | string? | The client to use, populated from registered clients in `Program.cs`. | Input | - | +| ConnectionString | string? / Secret | Database connection string. Can also be from a secret. | Input | - | +| Query | string? | Query string. Expressions can also be used with `{{ }}`. | Input | - | +| Results | DataSet? | Results from executing the query. | Output | Can not be serialized. | + +### SqlCommand + +| Properties | Type | Description | Input/Output | Notes | +| ---------- | ---- | ----------- | --- | ----- | +| Client | string? | The client to use, populated from registered clients in `Program.cs`. | Input | - | +| ConnectionString | string? / Secret | Database connection string. Can also be from a secret. | Input | - | +| Command | string? | Command string. Expressions can also be used with `{{ }}`. | Input | - | +| Result | int? | The number of rows affected. | Output | - | + +### SqlSingleValue + +| Properties | Type | Description | Input/Output | Notes | +| ---------- | ---- | ----------- | --- | ----- | +| Client | string? | The client to use, populated from registered clients in `Program.cs`. | Input | - | +| ConnectionString | string? / Secret | Database connection string. Can also be from a secret. | Input | - | +| Query | string? | Query string. Expressions can also be used with `{{ }}`. | Input | - | +| Result | object? | Result from executing the command. | Output | - | + + + +## 🧪 Examples + +### Expressions + +Expressions can be used to dynamically populate the query with workflow properties. +The `SqlEvaluator` will then use the properties set in the `ISqlClient` to parameterize the query for that clients implementation. +For example, a SQL Server query: + +```sql +SELECT * FROM [Users] WHERE [Name] = {{Variable.Name}} AND [Age] > {{Input.Age}}; +``` + +Will be converted into: + +```sql +SELECT * FROM [Users] WHERE [Name] = @p1 AND [Age] > @p2; +``` + +Before being executed with the properties values. + +--- + +## 🗺️ Planned Features + +- [ ] Add contextual autocomplete +- [ ] Connection and query validation against the database +- [ ] A basic SQL designer + +--- + +## 🚧 Limitations + +### DataSet Return Type + +The `SqlQuery` activity returns results as a DataSet to give developers the option to transpose the results into whatever format they need. +However, DataSet can **not** be serialized by `System.Text.Json.JsonSerializer` and therefore the activities `Results` attribute is set to `IsSerializable = false`. + +If the DataSet needs to be used by another activity it can be stored in a variable of type `object`, provided the Storage type is changed from (the default) `'Workflow Instance'` to `'Memory'`. This prevents Elsa trying to serialize it into the database after execution, which would cause the Workflow to crash. + +There is a future development idea would add a “VariableStorageDriver” feature what would enable you to store the result of a variable externally from the serialized data, but this is not implemented yet. + +--- + +## 🆘 Troubleshooting + +### Common Errors + +- **`Client not showing in the Studio drop down`** + Ensure the Sql client provider is registered in `Program.cs` using `elsa.UseSql(options => ... )`. + +--- + +## 🗒️ Notes & Comments +This integration was developed to add Sql functionality to Elsa Workflows. +If you have ideas for improvement, encounter issues, or want to share how you're using it, feel free to open an issue or start a discussion. \ No newline at end of file From ee42b89b4046472c225278362cfb60ddf8cab3f3 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:40:14 +0100 Subject: [PATCH 07/23] Move Slack into its own folder. --- Elsa.Integrations.sln | 17 ++++++++++------- .../Activities/Channels/CreateChannel.cs | 0 .../Activities/Channels/GetChannel.cs | 0 .../Activities/Channels/GetChannelMessage.cs | 0 .../Activities/Channels/KickUser.cs | 0 .../Activities/Channels/LeaveChannel.cs | 0 .../Activities/Channels/ListChannels.cs | 0 .../Activities/Channels/ListMembersInChannel.cs | 0 .../Activities/Channels/SetChannelPurpose.cs | 0 .../Activities/Channels/SetChannelTopic.cs | 0 .../Activities/Events/SlackEventActivity.cs | 0 .../Activities/Events/WatchDirectMessages.cs | 0 .../Activities/Events/WatchFiles.cs | 0 .../Events/WatchMultipartyDirectMessages.cs | 0 .../Activities/Events/WatchNewEvents.cs | 0 .../Events/WatchPublicChannelMessages.cs | 0 .../Activities/Events/WatchUsers.cs | 0 .../Activities/Files/UploadFile.cs | 0 .../Activities/Messages/CreateMessage.cs | 0 .../Activities/Messages/DeleteMessage.cs | 0 .../Activities/Messages/PinMessage.cs | 0 .../Activities/Messages/UnpinMessage.cs | 0 .../Activities/Messages/UpdateMessage.cs | 0 .../Activities/Reactions/AddReaction.cs | 0 .../Activities/Reactions/ListReactions.cs | 0 .../Activities/Reactions/RemoveReaction.cs | 0 .../Activities/Reminders/CompleteReminder.cs | 0 .../Activities/Reminders/CreateReminder.cs | 0 .../Activities/Reminders/DeleteReminder.cs | 0 .../Activities/Reminders/GetReminder.cs | 0 .../Activities/Reminders/ListReminders.cs | 0 .../Activities/Search/SearchForMessage.cs | 0 .../Activities/SlackActivity.cs | 0 .../Activities/SlackTriggerActivity.cs | 0 .../Activities/Stars/RemoveSavedItem.cs | 0 .../Activities/Stars/SaveItem.cs | 0 .../Activities/Users/GetUser.cs | 0 .../Activities/Users/ListUsers.cs | 0 .../Activities/Users/SearchForUser.cs | 0 .../Activities/Users/SetStatus.cs | 0 .../Elsa.Integrations.Slack.csproj | 0 .../Features/SlackFeature.cs | 0 .../Elsa.Integrations.Slack/FodyWeavers.xml | 0 .../Services/SlackClientFactory.cs | 0 .../Elsa.Integrations.Slack.Tests.csproj | 4 +--- 45 files changed, 11 insertions(+), 10 deletions(-) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/CreateChannel.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/GetChannel.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/GetChannelMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/KickUser.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/LeaveChannel.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/ListChannels.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/ListMembersInChannel.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/SetChannelPurpose.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Channels/SetChannelTopic.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/SlackEventActivity.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchDirectMessages.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchFiles.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchMultipartyDirectMessages.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchNewEvents.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchPublicChannelMessages.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Events/WatchUsers.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Files/UploadFile.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Messages/CreateMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Messages/DeleteMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Messages/PinMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Messages/UnpinMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Messages/UpdateMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reactions/AddReaction.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reactions/ListReactions.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reactions/RemoveReaction.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reminders/CompleteReminder.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reminders/CreateReminder.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reminders/DeleteReminder.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reminders/GetReminder.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Reminders/ListReminders.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Search/SearchForMessage.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/SlackActivity.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/SlackTriggerActivity.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Stars/RemoveSavedItem.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Stars/SaveItem.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Users/GetUser.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Users/ListUsers.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Users/SearchForUser.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Activities/Users/SetStatus.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Elsa.Integrations.Slack.csproj (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Features/SlackFeature.cs (100%) rename src/{ => slack}/Elsa.Integrations.Slack/FodyWeavers.xml (100%) rename src/{ => slack}/Elsa.Integrations.Slack/Services/SlackClientFactory.cs (100%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 9d518136..d15aed84 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -23,8 +23,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{DE README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Slack", "src\Elsa.Integrations.Slack\Elsa.Integrations.Slack.csproj", "{9732E404-11B5-48DB-B5D9-97997F018830}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A99FA26E-2098-403A-BD04-6BBCFBE3AC7D}" ProjectSection(SolutionItems) = preProject test\Directory.Build.props = test\Directory.Build.props @@ -93,6 +91,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.Sqlit EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.SqlServer", "src\sql\Elsa.Integrations.Sql.SqlServer\Elsa.Integrations.Sql.SqlServer.csproj", "{80692FAE-701B-F877-198B-2B93A428B0C0}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{AD4F2AD8-ADFB-40A4-B39E-15EE3544587F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Slack", "src\slack\Elsa.Integrations.Slack\Elsa.Integrations.Slack.csproj", "{1B26082A-070B-4E1F-773F-9A7DD6170A98}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -103,10 +105,6 @@ Global {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Debug|Any CPU.Build.0 = Debug|Any CPU {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Release|Any CPU.ActiveCfg = Release|Any CPU {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Release|Any CPU.Build.0 = Release|Any CPU - {9732E404-11B5-48DB-B5D9-97997F018830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9732E404-11B5-48DB-B5D9-97997F018830}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9732E404-11B5-48DB-B5D9-97997F018830}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9732E404-11B5-48DB-B5D9-97997F018830}.Release|Any CPU.Build.0 = Release|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.Build.0 = Debug|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -195,13 +193,16 @@ Global {80692FAE-701B-F877-198B-2B93A428B0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU {80692FAE-701B-F877-198B-2B93A428B0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU {80692FAE-701B-F877-198B-2B93A428B0C0}.Release|Any CPU.Build.0 = Release|Any CPU + {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {A8666FC4-66E1-4766-A22B-C410D42D03DD} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {9732E404-11B5-48DB-B5D9-97997F018830} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {128B2FC3-81A7-4327-9665-9155B05F21DA} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {71D93DC7-A455-4EDC-86DB-826CCEECEEF8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {BC283CFE-D542-4D40-AE7F-6888B876AA2B} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} @@ -227,6 +228,8 @@ Global {BD398E79-90DF-510C-2419-C135CCF55C47} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {3ECB4951-DB9A-C129-F6BD-432AEAEA5997} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {80692FAE-701B-F877-198B-2B93A428B0C0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {1B26082A-070B-4E1F-773F-9A7DD6170A98} = {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/CreateChannel.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/CreateChannel.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/CreateChannel.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/CreateChannel.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/GetChannel.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/GetChannel.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/GetChannel.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/GetChannel.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/GetChannelMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/GetChannelMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/GetChannelMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/GetChannelMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/KickUser.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/KickUser.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/KickUser.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/KickUser.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/LeaveChannel.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/LeaveChannel.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/LeaveChannel.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/LeaveChannel.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/ListChannels.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/ListChannels.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/ListChannels.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/ListChannels.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/ListMembersInChannel.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/ListMembersInChannel.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/ListMembersInChannel.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/ListMembersInChannel.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/SetChannelPurpose.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/SetChannelPurpose.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/SetChannelPurpose.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/SetChannelPurpose.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Channels/SetChannelTopic.cs b/src/slack/Elsa.Integrations.Slack/Activities/Channels/SetChannelTopic.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Channels/SetChannelTopic.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Channels/SetChannelTopic.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/SlackEventActivity.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/SlackEventActivity.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/SlackEventActivity.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/SlackEventActivity.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchDirectMessages.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchDirectMessages.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchDirectMessages.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchDirectMessages.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchFiles.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchFiles.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchFiles.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchFiles.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchMultipartyDirectMessages.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchMultipartyDirectMessages.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchMultipartyDirectMessages.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchMultipartyDirectMessages.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchNewEvents.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchNewEvents.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchNewEvents.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchNewEvents.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchPublicChannelMessages.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchPublicChannelMessages.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchPublicChannelMessages.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchPublicChannelMessages.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Events/WatchUsers.cs b/src/slack/Elsa.Integrations.Slack/Activities/Events/WatchUsers.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Events/WatchUsers.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Events/WatchUsers.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Files/UploadFile.cs b/src/slack/Elsa.Integrations.Slack/Activities/Files/UploadFile.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Files/UploadFile.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Files/UploadFile.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Messages/CreateMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Messages/CreateMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Messages/CreateMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Messages/CreateMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Messages/DeleteMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Messages/DeleteMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Messages/DeleteMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Messages/DeleteMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Messages/PinMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Messages/PinMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Messages/PinMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Messages/PinMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Messages/UnpinMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Messages/UnpinMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Messages/UnpinMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Messages/UnpinMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Messages/UpdateMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Messages/UpdateMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Messages/UpdateMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Messages/UpdateMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reactions/AddReaction.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reactions/AddReaction.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reactions/AddReaction.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reactions/AddReaction.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reactions/ListReactions.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reactions/ListReactions.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reactions/ListReactions.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reactions/ListReactions.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reactions/RemoveReaction.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reactions/RemoveReaction.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reactions/RemoveReaction.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reactions/RemoveReaction.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reminders/CompleteReminder.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reminders/CompleteReminder.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reminders/CompleteReminder.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reminders/CompleteReminder.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reminders/CreateReminder.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reminders/CreateReminder.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reminders/CreateReminder.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reminders/CreateReminder.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reminders/DeleteReminder.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reminders/DeleteReminder.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reminders/DeleteReminder.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reminders/DeleteReminder.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reminders/GetReminder.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reminders/GetReminder.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reminders/GetReminder.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reminders/GetReminder.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Reminders/ListReminders.cs b/src/slack/Elsa.Integrations.Slack/Activities/Reminders/ListReminders.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Reminders/ListReminders.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Reminders/ListReminders.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Search/SearchForMessage.cs b/src/slack/Elsa.Integrations.Slack/Activities/Search/SearchForMessage.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Search/SearchForMessage.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Search/SearchForMessage.cs diff --git a/src/Elsa.Integrations.Slack/Activities/SlackActivity.cs b/src/slack/Elsa.Integrations.Slack/Activities/SlackActivity.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/SlackActivity.cs rename to src/slack/Elsa.Integrations.Slack/Activities/SlackActivity.cs diff --git a/src/Elsa.Integrations.Slack/Activities/SlackTriggerActivity.cs b/src/slack/Elsa.Integrations.Slack/Activities/SlackTriggerActivity.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/SlackTriggerActivity.cs rename to src/slack/Elsa.Integrations.Slack/Activities/SlackTriggerActivity.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Stars/RemoveSavedItem.cs b/src/slack/Elsa.Integrations.Slack/Activities/Stars/RemoveSavedItem.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Stars/RemoveSavedItem.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Stars/RemoveSavedItem.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Stars/SaveItem.cs b/src/slack/Elsa.Integrations.Slack/Activities/Stars/SaveItem.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Stars/SaveItem.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Stars/SaveItem.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Users/GetUser.cs b/src/slack/Elsa.Integrations.Slack/Activities/Users/GetUser.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Users/GetUser.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Users/GetUser.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Users/ListUsers.cs b/src/slack/Elsa.Integrations.Slack/Activities/Users/ListUsers.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Users/ListUsers.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Users/ListUsers.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Users/SearchForUser.cs b/src/slack/Elsa.Integrations.Slack/Activities/Users/SearchForUser.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Users/SearchForUser.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Users/SearchForUser.cs diff --git a/src/Elsa.Integrations.Slack/Activities/Users/SetStatus.cs b/src/slack/Elsa.Integrations.Slack/Activities/Users/SetStatus.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Activities/Users/SetStatus.cs rename to src/slack/Elsa.Integrations.Slack/Activities/Users/SetStatus.cs diff --git a/src/Elsa.Integrations.Slack/Elsa.Integrations.Slack.csproj b/src/slack/Elsa.Integrations.Slack/Elsa.Integrations.Slack.csproj similarity index 100% rename from src/Elsa.Integrations.Slack/Elsa.Integrations.Slack.csproj rename to src/slack/Elsa.Integrations.Slack/Elsa.Integrations.Slack.csproj diff --git a/src/Elsa.Integrations.Slack/Features/SlackFeature.cs b/src/slack/Elsa.Integrations.Slack/Features/SlackFeature.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Features/SlackFeature.cs rename to src/slack/Elsa.Integrations.Slack/Features/SlackFeature.cs diff --git a/src/Elsa.Integrations.Slack/FodyWeavers.xml b/src/slack/Elsa.Integrations.Slack/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Slack/FodyWeavers.xml rename to src/slack/Elsa.Integrations.Slack/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Slack/Services/SlackClientFactory.cs b/src/slack/Elsa.Integrations.Slack/Services/SlackClientFactory.cs similarity index 100% rename from src/Elsa.Integrations.Slack/Services/SlackClientFactory.cs rename to src/slack/Elsa.Integrations.Slack/Services/SlackClientFactory.cs diff --git a/test/unit/Elsa.Integrations.Slack.Tests/Elsa.Integrations.Slack.Tests.csproj b/test/unit/Elsa.Integrations.Slack.Tests/Elsa.Integrations.Slack.Tests.csproj index 757ef39d..5c08c458 100644 --- a/test/unit/Elsa.Integrations.Slack.Tests/Elsa.Integrations.Slack.Tests.csproj +++ b/test/unit/Elsa.Integrations.Slack.Tests/Elsa.Integrations.Slack.Tests.csproj @@ -1,7 +1,5 @@ - - + - From 501b44f566572f6fd02df20bf06c60ce24779962 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:43:06 +0100 Subject: [PATCH 08/23] Move Azure into its own folder. --- Elsa.Integrations.sln | 31 ++++++++++--------- .../Activities/MessageReceived.cs | 0 .../Activities/SendMessage.cs | 0 .../Contracts/IQueueProvider.cs | 0 .../Contracts/IServiceBusInitializer.cs | 0 .../Contracts/ISubscriptionProvider.cs | 0 .../Contracts/ITopicProvider.cs | 0 .../Contracts/IWorkerManager.cs | 0 .../Elsa.Integrations.AzureServiceBus.csproj | 0 .../Extensions/ModuleExtensions.cs | 0 .../Features/AzureServiceBusFeature.cs | 0 .../FodyWeavers.xml | 0 .../Handlers/UpdateWorkers.cs | 0 .../CreateQueuesTopicsAndSubscriptions.cs | 0 .../Models/MessageReceivedStimulus.cs | 0 .../Models/QueueDefinition.cs | 0 .../Models/ReceivedServiceBusMessageModel.cs | 0 .../Models/SubscriptionDefinition.cs | 0 .../Models/TopicDefinition.cs | 0 .../Options/AzureServiceBusOptions.cs | 0 ...rationQueueTopicAndSubscriptionProvider.cs | 0 .../Services/ServiceBusInitializer.cs | 0 .../Services/Worker.cs | 0 .../Services/WorkerManager.cs | 0 .../Tasks/StartWorkers.cs | 0 .../Activities/UploadBlobActivity.cs | 0 .../Elsa.Integrations.AzureStorage.csproj | 0 .../Extensions/ParallelBlockBlobUploader.cs | 0 .../Features/AzureStorageFeature.cs | 0 .../FodyWeavers.xml | 0 .../Serialization/JsonStreamer.cs | 0 .../Services/BlobContainerClientFactory.cs | 0 .../Services/BlobServiceClientFactory.cs | 0 ...ions.AzureServiceBus.ComponentTests.csproj | 26 ++++++++-------- 34 files changed, 30 insertions(+), 27 deletions(-) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Activities/MessageReceived.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Activities/SendMessage.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Contracts/IQueueProvider.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Contracts/IServiceBusInitializer.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Contracts/ISubscriptionProvider.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Contracts/ITopicProvider.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Contracts/IWorkerManager.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Elsa.Integrations.AzureServiceBus.csproj (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Extensions/ModuleExtensions.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Features/AzureServiceBusFeature.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/FodyWeavers.xml (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Handlers/UpdateWorkers.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/HostedServices/CreateQueuesTopicsAndSubscriptions.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Models/MessageReceivedStimulus.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Models/QueueDefinition.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Models/ReceivedServiceBusMessageModel.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Models/SubscriptionDefinition.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Models/TopicDefinition.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Options/AzureServiceBusOptions.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Providers/ConfigurationQueueTopicAndSubscriptionProvider.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Services/ServiceBusInitializer.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Services/Worker.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Services/WorkerManager.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Activities/UploadBlobActivity.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Elsa.Integrations.AzureStorage.csproj (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Extensions/ParallelBlockBlobUploader.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Features/AzureStorageFeature.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/FodyWeavers.xml (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Serialization/JsonStreamer.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Services/BlobContainerClientFactory.cs (100%) rename src/{ => azure}/Elsa.Integrations.AzureStorage/Services/BlobServiceClientFactory.cs (100%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index d15aed84..3a2cb7f6 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -8,8 +8,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{527248D6-B85 src\Directory.Build.props = src\Directory.Build.props EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureStorage", "src\Elsa.Integrations.AzureStorage\Elsa.Integrations.AzureStorage.csproj", "{A8666FC4-66E1-4766-A22B-C410D42D03DD}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution", "solution", "{DE39E491-5DDC-40F4-91D5-7F5FAF0E1884}" ProjectSection(SolutionItems) = preProject .gitignore = .gitignore @@ -32,8 +30,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.OrchardCore", "src\Elsa.Integrations.OrchardCore\Elsa.Integrations.OrchardCore.csproj", "{71D93DC7-A455-4EDC-86DB-826CCEECEEF8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureServiceBus", "src\Elsa.Integrations.AzureServiceBus\Elsa.Integrations.AzureServiceBus.csproj", "{BC283CFE-D542-4D40-AE7F-6888B876AA2B}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{D0212324-351E-4CA6-95EE-27754B5367CC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3948BAF0-023F-4B43-8E77-56C3B00C6EFD}" @@ -95,16 +91,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{AD4F2AD8 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Slack", "src\slack\Elsa.Integrations.Slack\Elsa.Integrations.Slack.csproj", "{1B26082A-070B-4E1F-773F-9A7DD6170A98}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure", "azure", "{45B793EC-7BFF-45C0-BD0E-2D1601C8D01E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureServiceBus", "src\azure\Elsa.Integrations.AzureServiceBus\Elsa.Integrations.AzureServiceBus.csproj", "{098825FF-A9AB-4888-E8B7-A796774C210B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureStorage", "src\azure\Elsa.Integrations.AzureStorage\Elsa.Integrations.AzureStorage.csproj", "{CA62F376-8144-19CD-65F4-E346C2E53F4C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A8666FC4-66E1-4766-A22B-C410D42D03DD}.Release|Any CPU.Build.0 = Release|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.Build.0 = Debug|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -113,10 +111,6 @@ Global {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Debug|Any CPU.Build.0 = Debug|Any CPU {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Release|Any CPU.ActiveCfg = Release|Any CPU {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Release|Any CPU.Build.0 = Release|Any CPU - {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BC283CFE-D542-4D40-AE7F-6888B876AA2B}.Release|Any CPU.Build.0 = Release|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -197,15 +191,21 @@ Global {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Debug|Any CPU.Build.0 = Debug|Any CPU {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Release|Any CPU.ActiveCfg = Release|Any CPU {1B26082A-070B-4E1F-773F-9A7DD6170A98}.Release|Any CPU.Build.0 = Release|Any CPU + {098825FF-A9AB-4888-E8B7-A796774C210B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {098825FF-A9AB-4888-E8B7-A796774C210B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {098825FF-A9AB-4888-E8B7-A796774C210B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {098825FF-A9AB-4888-E8B7-A796774C210B}.Release|Any CPU.Build.0 = Release|Any CPU + {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {A8666FC4-66E1-4766-A22B-C410D42D03DD} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {128B2FC3-81A7-4327-9665-9155B05F21DA} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {71D93DC7-A455-4EDC-86DB-826CCEECEEF8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {BC283CFE-D542-4D40-AE7F-6888B876AA2B} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {3948BAF0-023F-4B43-8E77-56C3B00C6EFD} = {D0212324-351E-4CA6-95EE-27754B5367CC} {AF041BAE-B45A-428B-B7F5-921CCB895558} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} {60461F37-79E1-4EBB-8742-9F6578C6A745} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} @@ -230,6 +230,9 @@ Global {80692FAE-701B-F877-198B-2B93A428B0C0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {1B26082A-070B-4E1F-773F-9A7DD6170A98} = {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} + {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {098825FF-A9AB-4888-E8B7-A796774C210B} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} + {CA62F376-8144-19CD-65F4-E346C2E53F4C} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/Elsa.Integrations.AzureServiceBus/Activities/MessageReceived.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Activities/MessageReceived.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Activities/MessageReceived.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Activities/MessageReceived.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Activities/SendMessage.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Activities/SendMessage.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Activities/SendMessage.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Activities/SendMessage.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Contracts/IQueueProvider.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IQueueProvider.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Contracts/IQueueProvider.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IQueueProvider.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Contracts/IServiceBusInitializer.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IServiceBusInitializer.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Contracts/IServiceBusInitializer.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IServiceBusInitializer.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Contracts/ISubscriptionProvider.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Contracts/ISubscriptionProvider.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Contracts/ISubscriptionProvider.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Contracts/ISubscriptionProvider.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Contracts/ITopicProvider.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Contracts/ITopicProvider.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Contracts/ITopicProvider.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Contracts/ITopicProvider.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Contracts/IWorkerManager.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IWorkerManager.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Contracts/IWorkerManager.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Contracts/IWorkerManager.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Elsa.Integrations.AzureServiceBus.csproj b/src/azure/Elsa.Integrations.AzureServiceBus/Elsa.Integrations.AzureServiceBus.csproj similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Elsa.Integrations.AzureServiceBus.csproj rename to src/azure/Elsa.Integrations.AzureServiceBus/Elsa.Integrations.AzureServiceBus.csproj diff --git a/src/Elsa.Integrations.AzureServiceBus/Extensions/ModuleExtensions.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Extensions/ModuleExtensions.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Features/AzureServiceBusFeature.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Features/AzureServiceBusFeature.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Features/AzureServiceBusFeature.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Features/AzureServiceBusFeature.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/FodyWeavers.xml b/src/azure/Elsa.Integrations.AzureServiceBus/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/FodyWeavers.xml rename to src/azure/Elsa.Integrations.AzureServiceBus/FodyWeavers.xml diff --git a/src/Elsa.Integrations.AzureServiceBus/Handlers/UpdateWorkers.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Handlers/UpdateWorkers.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Handlers/UpdateWorkers.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Handlers/UpdateWorkers.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/HostedServices/CreateQueuesTopicsAndSubscriptions.cs b/src/azure/Elsa.Integrations.AzureServiceBus/HostedServices/CreateQueuesTopicsAndSubscriptions.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/HostedServices/CreateQueuesTopicsAndSubscriptions.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/HostedServices/CreateQueuesTopicsAndSubscriptions.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Models/MessageReceivedStimulus.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Models/MessageReceivedStimulus.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Models/MessageReceivedStimulus.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Models/MessageReceivedStimulus.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Models/QueueDefinition.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Models/QueueDefinition.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Models/QueueDefinition.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Models/QueueDefinition.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Models/ReceivedServiceBusMessageModel.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Models/ReceivedServiceBusMessageModel.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Models/ReceivedServiceBusMessageModel.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Models/ReceivedServiceBusMessageModel.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Models/SubscriptionDefinition.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Models/SubscriptionDefinition.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Models/SubscriptionDefinition.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Models/SubscriptionDefinition.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Models/TopicDefinition.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Models/TopicDefinition.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Models/TopicDefinition.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Models/TopicDefinition.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Options/AzureServiceBusOptions.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Options/AzureServiceBusOptions.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Options/AzureServiceBusOptions.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Options/AzureServiceBusOptions.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Providers/ConfigurationQueueTopicAndSubscriptionProvider.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Providers/ConfigurationQueueTopicAndSubscriptionProvider.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Providers/ConfigurationQueueTopicAndSubscriptionProvider.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Providers/ConfigurationQueueTopicAndSubscriptionProvider.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Services/ServiceBusInitializer.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Services/ServiceBusInitializer.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Services/ServiceBusInitializer.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Services/ServiceBusInitializer.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Services/Worker.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Services/Worker.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Services/Worker.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Services/Worker.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Services/WorkerManager.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Services/WorkerManager.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Services/WorkerManager.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Services/WorkerManager.cs diff --git a/src/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs similarity index 100% rename from src/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs rename to src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs diff --git a/src/Elsa.Integrations.AzureStorage/Activities/UploadBlobActivity.cs b/src/azure/Elsa.Integrations.AzureStorage/Activities/UploadBlobActivity.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Activities/UploadBlobActivity.cs rename to src/azure/Elsa.Integrations.AzureStorage/Activities/UploadBlobActivity.cs diff --git a/src/Elsa.Integrations.AzureStorage/Elsa.Integrations.AzureStorage.csproj b/src/azure/Elsa.Integrations.AzureStorage/Elsa.Integrations.AzureStorage.csproj similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Elsa.Integrations.AzureStorage.csproj rename to src/azure/Elsa.Integrations.AzureStorage/Elsa.Integrations.AzureStorage.csproj diff --git a/src/Elsa.Integrations.AzureStorage/Extensions/ParallelBlockBlobUploader.cs b/src/azure/Elsa.Integrations.AzureStorage/Extensions/ParallelBlockBlobUploader.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Extensions/ParallelBlockBlobUploader.cs rename to src/azure/Elsa.Integrations.AzureStorage/Extensions/ParallelBlockBlobUploader.cs diff --git a/src/Elsa.Integrations.AzureStorage/Features/AzureStorageFeature.cs b/src/azure/Elsa.Integrations.AzureStorage/Features/AzureStorageFeature.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Features/AzureStorageFeature.cs rename to src/azure/Elsa.Integrations.AzureStorage/Features/AzureStorageFeature.cs diff --git a/src/Elsa.Integrations.AzureStorage/FodyWeavers.xml b/src/azure/Elsa.Integrations.AzureStorage/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.AzureStorage/FodyWeavers.xml rename to src/azure/Elsa.Integrations.AzureStorage/FodyWeavers.xml diff --git a/src/Elsa.Integrations.AzureStorage/Serialization/JsonStreamer.cs b/src/azure/Elsa.Integrations.AzureStorage/Serialization/JsonStreamer.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Serialization/JsonStreamer.cs rename to src/azure/Elsa.Integrations.AzureStorage/Serialization/JsonStreamer.cs diff --git a/src/Elsa.Integrations.AzureStorage/Services/BlobContainerClientFactory.cs b/src/azure/Elsa.Integrations.AzureStorage/Services/BlobContainerClientFactory.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Services/BlobContainerClientFactory.cs rename to src/azure/Elsa.Integrations.AzureStorage/Services/BlobContainerClientFactory.cs diff --git a/src/Elsa.Integrations.AzureStorage/Services/BlobServiceClientFactory.cs b/src/azure/Elsa.Integrations.AzureStorage/Services/BlobServiceClientFactory.cs similarity index 100% rename from src/Elsa.Integrations.AzureStorage/Services/BlobServiceClientFactory.cs rename to src/azure/Elsa.Integrations.AzureStorage/Services/BlobServiceClientFactory.cs diff --git a/test/component/Elsa.Integrations.AzureServiceBus.ComponentTests/Elsa.Integrations.AzureServiceBus.ComponentTests.csproj b/test/component/Elsa.Integrations.AzureServiceBus.ComponentTests/Elsa.Integrations.AzureServiceBus.ComponentTests.csproj index ca8ec8de..ca4c52cd 100644 --- a/test/component/Elsa.Integrations.AzureServiceBus.ComponentTests/Elsa.Integrations.AzureServiceBus.ComponentTests.csproj +++ b/test/component/Elsa.Integrations.AzureServiceBus.ComponentTests/Elsa.Integrations.AzureServiceBus.ComponentTests.csproj @@ -1,25 +1,25 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + From 5e2c931deda94036770277ece63590c8b8bc4098 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:46:04 +0100 Subject: [PATCH 09/23] Move OrchardCore into its own folder. --- Elsa.Integrations.sln | 17 ++++++++++------- .../Activities/ContentItemEvent.cs | 0 .../Activities/CreateContentItem.cs | 0 .../Activities/LocalizeContentItem.cs | 0 .../Activities/PatchContentItem.cs | 0 .../Activities/ResolveTags.cs | 0 .../Activities/SendGraphQLQuery.cs | 0 .../Activities/UploadMedia.cs | 0 .../OrchardContentItemsEventActivityProvider.cs | 0 .../Client/Contracts/IGraphQLClient.cs | 0 .../Client/Contracts/IRestApiClient.cs | 0 .../Client/Contracts/ISecurityTokenClient.cs | 0 .../Client/Contracts/ISecurityTokenService.cs | 0 .../AuthenticatingDelegatingHandler.cs | 0 ...hardCoreClientServiceCollectionExtensions.cs | 0 .../Client/Models/CreateContentItemRequest.cs | 0 .../Client/Models/LocalizeContentItemRequest.cs | 0 .../Client/Models/PatchContentItemRequest.cs | 0 .../Client/Models/ResolveTagsRequest.cs | 0 .../Client/Models/SecurityToken.cs | 0 .../Client/Options/OrchardCoreClientOptions.cs | 0 .../Client/Services/DefaultGraphQLClient.cs | 0 .../Client/Services/DefaultRestApiClient.cs | 0 .../Services/DefaultSecurityTokenClient.cs | 0 .../Services/DefaultSecurityTokenService.cs | 0 .../Elsa.Integrations.OrchardCore | 0 .../Elsa.Integrations.OrchardCore.csproj | 0 .../Extensions/ModuleExtensions.cs | 0 .../Features/OrchardCoreFeature.cs | 0 .../FodyWeavers.xml | 0 .../InvokeOrchardWebhookEventActivities.cs | 0 .../Helpers/OrchardCoreActivityNameHelper.cs | 0 .../Models/WebhookEventDescriptor.cs | 0 .../Options/OrchardCoreOptions.cs | 0 .../Stimuli/ContentItemEventStimulus.cs | 0 .../WebhookEventTypes.cs | 0 .../WebhookPayloads/ContentItemEventPayload.cs | 0 37 files changed, 10 insertions(+), 7 deletions(-) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/ContentItemEvent.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/CreateContentItem.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/LocalizeContentItem.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/PatchContentItem.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/ResolveTags.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/SendGraphQLQuery.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Activities/UploadMedia.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/ActivityProviders/OrchardContentItemsEventActivityProvider.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Contracts/IGraphQLClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Contracts/IRestApiClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenService.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/DelegatingHandlers/AuthenticatingDelegatingHandler.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Extensions/OrchardCoreClientServiceCollectionExtensions.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Models/CreateContentItemRequest.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Models/LocalizeContentItemRequest.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Models/PatchContentItemRequest.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Models/ResolveTagsRequest.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Models/SecurityToken.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Options/OrchardCoreClientOptions.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Services/DefaultGraphQLClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Services/DefaultRestApiClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenClient.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenService.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore.csproj (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Extensions/ModuleExtensions.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Features/OrchardCoreFeature.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/FodyWeavers.xml (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Handlers/InvokeOrchardWebhookEventActivities.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Helpers/OrchardCoreActivityNameHelper.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Models/WebhookEventDescriptor.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Options/OrchardCoreOptions.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/Stimuli/ContentItemEventStimulus.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/WebhookEventTypes.cs (100%) rename src/{ => orchardcore}/Elsa.Integrations.OrchardCore/WebhookPayloads/ContentItemEventPayload.cs (100%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 3a2cb7f6..9dfe57b7 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -28,8 +28,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A99FA26E-2 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", "src\Elsa.Integrations.Telnyx\Elsa.Integrations.Telnyx.csproj", "{128B2FC3-81A7-4327-9665-9155B05F21DA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.OrchardCore", "src\Elsa.Integrations.OrchardCore\Elsa.Integrations.OrchardCore.csproj", "{71D93DC7-A455-4EDC-86DB-826CCEECEEF8}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{D0212324-351E-4CA6-95EE-27754B5367CC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3948BAF0-023F-4B43-8E77-56C3B00C6EFD}" @@ -97,6 +95,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureServ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureStorage", "src\azure\Elsa.Integrations.AzureStorage\Elsa.Integrations.AzureStorage.csproj", "{CA62F376-8144-19CD-65F4-E346C2E53F4C}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "orchardcore", "orchardcore", "{AAD61D93-7C78-42C4-9F37-2564D127A668}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.OrchardCore", "src\orchardcore\Elsa.Integrations.OrchardCore\Elsa.Integrations.OrchardCore.csproj", "{C1929745-1160-E32A-FE78-AD09FDBA05B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -107,10 +109,6 @@ Global {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.Build.0 = Debug|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.Build.0 = Release|Any CPU - {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {71D93DC7-A455-4EDC-86DB-826CCEECEEF8}.Release|Any CPU.Build.0 = Release|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -199,13 +197,16 @@ Global {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Debug|Any CPU.Build.0 = Debug|Any CPU {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA62F376-8144-19CD-65F4-E346C2E53F4C}.Release|Any CPU.Build.0 = Release|Any CPU + {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {128B2FC3-81A7-4327-9665-9155B05F21DA} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {71D93DC7-A455-4EDC-86DB-826CCEECEEF8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {3948BAF0-023F-4B43-8E77-56C3B00C6EFD} = {D0212324-351E-4CA6-95EE-27754B5367CC} {AF041BAE-B45A-428B-B7F5-921CCB895558} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} {60461F37-79E1-4EBB-8742-9F6578C6A745} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} @@ -233,6 +234,8 @@ Global {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {098825FF-A9AB-4888-E8B7-A796774C210B} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} {CA62F376-8144-19CD-65F4-E346C2E53F4C} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} + {AAD61D93-7C78-42C4-9F37-2564D127A668} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {C1929745-1160-E32A-FE78-AD09FDBA05B7} = {AAD61D93-7C78-42C4-9F37-2564D127A668} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/Elsa.Integrations.OrchardCore/Activities/ContentItemEvent.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/ContentItemEvent.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/ContentItemEvent.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/ContentItemEvent.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/CreateContentItem.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/CreateContentItem.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/CreateContentItem.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/CreateContentItem.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/LocalizeContentItem.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/LocalizeContentItem.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/LocalizeContentItem.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/LocalizeContentItem.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/PatchContentItem.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/PatchContentItem.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/PatchContentItem.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/PatchContentItem.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/ResolveTags.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/ResolveTags.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/ResolveTags.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/ResolveTags.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/SendGraphQLQuery.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/SendGraphQLQuery.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/SendGraphQLQuery.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/SendGraphQLQuery.cs diff --git a/src/Elsa.Integrations.OrchardCore/Activities/UploadMedia.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Activities/UploadMedia.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Activities/UploadMedia.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Activities/UploadMedia.cs diff --git a/src/Elsa.Integrations.OrchardCore/ActivityProviders/OrchardContentItemsEventActivityProvider.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/ActivityProviders/OrchardContentItemsEventActivityProvider.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/ActivityProviders/OrchardContentItemsEventActivityProvider.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/ActivityProviders/OrchardContentItemsEventActivityProvider.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Contracts/IGraphQLClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/IGraphQLClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Contracts/IGraphQLClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/IGraphQLClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Contracts/IRestApiClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/IRestApiClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Contracts/IRestApiClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/IRestApiClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenService.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenService.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenService.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Contracts/ISecurityTokenService.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/DelegatingHandlers/AuthenticatingDelegatingHandler.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/DelegatingHandlers/AuthenticatingDelegatingHandler.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/DelegatingHandlers/AuthenticatingDelegatingHandler.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/DelegatingHandlers/AuthenticatingDelegatingHandler.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Extensions/OrchardCoreClientServiceCollectionExtensions.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Extensions/OrchardCoreClientServiceCollectionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Extensions/OrchardCoreClientServiceCollectionExtensions.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Extensions/OrchardCoreClientServiceCollectionExtensions.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Models/CreateContentItemRequest.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/CreateContentItemRequest.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Models/CreateContentItemRequest.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/CreateContentItemRequest.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Models/LocalizeContentItemRequest.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/LocalizeContentItemRequest.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Models/LocalizeContentItemRequest.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/LocalizeContentItemRequest.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Models/PatchContentItemRequest.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/PatchContentItemRequest.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Models/PatchContentItemRequest.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/PatchContentItemRequest.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Models/ResolveTagsRequest.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/ResolveTagsRequest.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Models/ResolveTagsRequest.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/ResolveTagsRequest.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Models/SecurityToken.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/SecurityToken.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Models/SecurityToken.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Models/SecurityToken.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Options/OrchardCoreClientOptions.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Options/OrchardCoreClientOptions.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Options/OrchardCoreClientOptions.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Options/OrchardCoreClientOptions.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Services/DefaultGraphQLClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultGraphQLClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Services/DefaultGraphQLClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultGraphQLClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Services/DefaultRestApiClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultRestApiClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Services/DefaultRestApiClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultRestApiClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenClient.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenClient.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenClient.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenClient.cs diff --git a/src/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenService.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenService.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenService.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Client/Services/DefaultSecurityTokenService.cs diff --git a/src/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore b/src/orchardcore/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore rename to src/orchardcore/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore diff --git a/src/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore.csproj b/src/orchardcore/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore.csproj similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore.csproj rename to src/orchardcore/Elsa.Integrations.OrchardCore/Elsa.Integrations.OrchardCore.csproj diff --git a/src/Elsa.Integrations.OrchardCore/Extensions/ModuleExtensions.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Extensions/ModuleExtensions.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.OrchardCore/Features/OrchardCoreFeature.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Features/OrchardCoreFeature.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Features/OrchardCoreFeature.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Features/OrchardCoreFeature.cs diff --git a/src/Elsa.Integrations.OrchardCore/FodyWeavers.xml b/src/orchardcore/Elsa.Integrations.OrchardCore/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.OrchardCore/FodyWeavers.xml rename to src/orchardcore/Elsa.Integrations.OrchardCore/FodyWeavers.xml diff --git a/src/Elsa.Integrations.OrchardCore/Handlers/InvokeOrchardWebhookEventActivities.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Handlers/InvokeOrchardWebhookEventActivities.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Handlers/InvokeOrchardWebhookEventActivities.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Handlers/InvokeOrchardWebhookEventActivities.cs diff --git a/src/Elsa.Integrations.OrchardCore/Helpers/OrchardCoreActivityNameHelper.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Helpers/OrchardCoreActivityNameHelper.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Helpers/OrchardCoreActivityNameHelper.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Helpers/OrchardCoreActivityNameHelper.cs diff --git a/src/Elsa.Integrations.OrchardCore/Models/WebhookEventDescriptor.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Models/WebhookEventDescriptor.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Models/WebhookEventDescriptor.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Models/WebhookEventDescriptor.cs diff --git a/src/Elsa.Integrations.OrchardCore/Options/OrchardCoreOptions.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Options/OrchardCoreOptions.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Options/OrchardCoreOptions.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Options/OrchardCoreOptions.cs diff --git a/src/Elsa.Integrations.OrchardCore/Stimuli/ContentItemEventStimulus.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/Stimuli/ContentItemEventStimulus.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/Stimuli/ContentItemEventStimulus.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/Stimuli/ContentItemEventStimulus.cs diff --git a/src/Elsa.Integrations.OrchardCore/WebhookEventTypes.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/WebhookEventTypes.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/WebhookEventTypes.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/WebhookEventTypes.cs diff --git a/src/Elsa.Integrations.OrchardCore/WebhookPayloads/ContentItemEventPayload.cs b/src/orchardcore/Elsa.Integrations.OrchardCore/WebhookPayloads/ContentItemEventPayload.cs similarity index 100% rename from src/Elsa.Integrations.OrchardCore/WebhookPayloads/ContentItemEventPayload.cs rename to src/orchardcore/Elsa.Integrations.OrchardCore/WebhookPayloads/ContentItemEventPayload.cs From 44494131d9068281141baaf36b1dd0f46108de09 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 01:47:27 +0100 Subject: [PATCH 10/23] Move Telnyx into its own folder. --- Elsa.Integrations.sln | 17 ++++++++++------- .../Activities/AnswerCall.cs | 0 .../Activities/AnswerCallBase.cs | 0 .../Activities/BridgeCalls.cs | 0 .../Activities/BridgeCallsBase.cs | 0 .../Activities/CallAnswered.cs | 0 .../Activities/CallHangup.cs | 0 .../Elsa.Integrations.Telnyx/Activities/Dial.cs | 0 .../Activities/DialAndWait.cs | 0 .../Activities/FlowAnswerCall.cs | 0 .../Activities/FlowBridgeCalls.cs | 0 .../Activities/FlowHangupCall.cs | 0 .../Activities/FlowPlayAudio.cs | 0 .../Activities/FlowSpeakText.cs | 0 .../Activities/FlowStartRecording.cs | 0 .../Activities/FlowStopAudioPlayback.cs | 0 .../Activities/GatherUsingAudio.cs | 0 .../Activities/GatherUsingSpeak.cs | 0 .../Activities/GetCallStatus.cs | 0 .../Activities/HangupCall.cs | 0 .../Activities/HangupCallBase.cs | 0 .../Activities/IncomingCall.cs | 0 .../Activities/LookupNumber.cs | 0 .../Activities/PlayAudio.cs | 0 .../Activities/PlayAudioBase.cs | 0 .../Activities/SpeakText.cs | 0 .../Activities/SpeakTextBase.cs | 0 .../Activities/StartRecording.cs | 0 .../Activities/StartRecordingBase.cs | 0 .../Activities/StopAudioPlayback.cs | 0 .../Activities/StopAudioPlaybackBase.cs | 0 .../Activities/StopRecording.cs | 0 .../Activities/TransferCall.cs | 0 .../Activities/WebhookEvent.cs | 0 .../Attributes/WebhookActivityAttribute.cs | 0 .../Attributes/WebhookAttribute.cs | 0 .../Attributes/WebhookDrivenAttribute.cs | 0 .../Bookmarks/AnswerCallStimulus.cs | 0 .../Bookmarks/CallAnsweredStimulus.cs | 0 .../Bookmarks/CallHangupStimulus.cs | 0 .../Bookmarks/IncomingCallCatchAllStimulus.cs | 0 .../Bookmarks/IncomingCallFromStimulus.cs | 0 .../Bookmarks/IncomingCallToStimulus.cs | 0 .../Bookmarks/WebhookEventStimulus.cs | 0 .../Client/Implementations/TelnyxClient.cs | 0 .../Client/Models/AnsweringMachineConfig.cs | 0 .../Client/Models/Errors.cs | 0 .../Client/Models/Header.cs | 0 .../Client/Models/PlayAudioResponse.cs | 0 .../Client/Models/Requests.cs | 0 .../Client/Models/Responses.cs | 0 .../Client/Services/ICallsApi.cs | 0 .../Client/Services/INumberLookupApi.cs | 0 .../Client/Services/ITelnyxClient.cs | 0 .../Elsa.Integrations.Telnyx/Constants.cs | 0 .../Contracts/IWebhookHandler.cs | 0 .../Elsa.Integrations.Telnyx.csproj | 0 .../Events/TelnyxWebhookReceived.cs | 0 .../MissingCallControlAppIdException.cs | 0 .../Exceptions/MissingCallControlIdException.cs | 0 .../Exceptions/MissingFromNumberException.cs | 0 .../Exceptions/TelnyxException.cs | 0 .../Extensions/ActivityExecutionExtensions.cs | 0 .../Extensions/ApiExceptionExtensions.cs | 0 .../Extensions/DependencyInjectionExtensions.cs | 0 .../Extensions/EndpointsExtensions.cs | 0 .../Extensions/ModuleExtensions.cs | 0 .../Extensions/PayloadExtensions.cs | 0 .../Extensions/StringExtensions.cs | 0 .../Features/TelnyxFeature.cs | 0 .../Elsa.Integrations.Telnyx/FodyWeavers.xml | 0 .../Handlers/TriggerAnswerCallActivities.cs | 0 .../Handlers/TriggerCallAnsweredActivities.cs | 0 .../Handlers/TriggerCallBridgedActivities.cs | 0 .../Handlers/TriggerCallHangupActivities.cs | 0 .../Handlers/TriggerIncomingCallActivities.cs | 0 .../Handlers/TriggerWebhookActivities.cs | 0 .../Handlers/TriggerWebhookDrivenActivities.cs | 0 .../Helpers/PayloadSerializer.cs | 0 .../Helpers/WebhookPayloadTypes.cs | 0 .../Helpers/WebhookSerializerOptions.cs | 0 .../Models/BridgedCallsOutput.cs | 0 .../Models/CallRecordingUrls.cs | 0 .../Models/ClientStatePayload.cs | 0 .../Models/TelnyxRecord.cs | 0 .../Models/TelnyxWebhook.cs | 0 .../Models/TelnyxWebhookData.cs | 0 .../Models/TelnyxWebhookMeta.cs | 0 .../Options/TelnyxOptions.cs | 0 .../Payloads/Abstractions/CallPayload.cs | 0 .../Payloads/Abstractions/CallPlayback.cs | 0 .../Payloads/Abstractions/Payload.cs | 0 .../Payloads/Call/CallAnsweredPayload.cs | 0 .../Payloads/Call/CallBridgedPayload.cs | 0 .../Payloads/Call/CallDtmfReceivedPayload.cs | 0 .../Payloads/Call/CallGatherEndedPayload.cs | 0 .../Payloads/Call/CallHangupPayload.cs | 0 .../Payloads/Call/CallInitiatedPayload.cs | 0 .../Call/CallMachineDetectionEndedBase.cs | 0 .../Payloads/Call/CallMachineGreetingEnded.cs | 0 .../Call/CallMachineGreetingEndedBase.cs | 0 .../Call/CallMachinePremiumDetectionEnded.cs | 0 .../Call/CallMachinePremiumGreetingEnded.cs | 0 .../Payloads/Call/CallPlaybackEndedPayload.cs | 0 .../Payloads/Call/CallPlaybackStartedPayload.cs | 0 .../Payloads/Call/CallRecordingSavedPayload.cs | 0 .../Payloads/Call/CallSpeakEnded.cs | 0 .../Payloads/Call/CallSpeakStarted.cs | 0 .../Payloads/UnsupportedPayload.cs | 0 .../Providers/WebhookEventActivityProvider.cs | 0 .../Serialization/SnakeCaseNamingPolicy.cs | 0 .../Serialization/WebhookDataJsonConverter.cs | 0 .../Services/WebhookHandler.cs | 0 .../WebhookActivityTypeNames.cs | 0 .../WebhookEventTypes.cs | 0 115 files changed, 10 insertions(+), 7 deletions(-) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/AnswerCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/AnswerCallBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/BridgeCalls.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/BridgeCallsBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/CallAnswered.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/CallHangup.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/Dial.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/DialAndWait.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowAnswerCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowBridgeCalls.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowHangupCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowPlayAudio.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowSpeakText.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowStartRecording.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/FlowStopAudioPlayback.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/GatherUsingAudio.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/GatherUsingSpeak.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/GetCallStatus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/HangupCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/HangupCallBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/IncomingCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/LookupNumber.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/PlayAudio.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/PlayAudioBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/SpeakText.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/SpeakTextBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/StartRecording.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/StartRecordingBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/StopAudioPlayback.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/StopAudioPlaybackBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/StopRecording.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/TransferCall.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Activities/WebhookEvent.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Attributes/WebhookActivityAttribute.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Attributes/WebhookAttribute.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Attributes/WebhookDrivenAttribute.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/AnswerCallStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/CallAnsweredStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/CallHangupStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallCatchAllStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallFromStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallToStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Bookmarks/WebhookEventStimulus.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Implementations/TelnyxClient.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/AnsweringMachineConfig.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/Errors.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/Header.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/PlayAudioResponse.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/Requests.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Models/Responses.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Services/ICallsApi.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Services/INumberLookupApi.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Client/Services/ITelnyxClient.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Constants.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Contracts/IWebhookHandler.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Elsa.Integrations.Telnyx.csproj (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Events/TelnyxWebhookReceived.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlAppIdException.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlIdException.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Exceptions/MissingFromNumberException.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Exceptions/TelnyxException.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/ActivityExecutionExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/ApiExceptionExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/DependencyInjectionExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/EndpointsExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/ModuleExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/PayloadExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Extensions/StringExtensions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Features/TelnyxFeature.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/FodyWeavers.xml (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerAnswerCallActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerCallAnsweredActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerCallBridgedActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerCallHangupActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerIncomingCallActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookDrivenActivities.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Helpers/PayloadSerializer.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Helpers/WebhookPayloadTypes.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Helpers/WebhookSerializerOptions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/BridgedCallsOutput.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/CallRecordingUrls.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/ClientStatePayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/TelnyxRecord.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/TelnyxWebhook.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/TelnyxWebhookData.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Models/TelnyxWebhookMeta.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Options/TelnyxOptions.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPlayback.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Abstractions/Payload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallAnsweredPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallBridgedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallDtmfReceivedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallGatherEndedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallHangupPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallInitiatedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineDetectionEndedBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEnded.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEndedBase.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumDetectionEnded.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumGreetingEnded.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackEndedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackStartedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallRecordingSavedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakEnded.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakStarted.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Payloads/UnsupportedPayload.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Providers/WebhookEventActivityProvider.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Serialization/SnakeCaseNamingPolicy.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Serialization/WebhookDataJsonConverter.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/Services/WebhookHandler.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/WebhookActivityTypeNames.cs (100%) rename src/{ => telnyx}/Elsa.Integrations.Telnyx/WebhookEventTypes.cs (100%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 9dfe57b7..c7e4d9eb 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -26,8 +26,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A99FA26E-2 test\Directory.Build.props = test\Directory.Build.props EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", "src\Elsa.Integrations.Telnyx\Elsa.Integrations.Telnyx.csproj", "{128B2FC3-81A7-4327-9665-9155B05F21DA}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{D0212324-351E-4CA6-95EE-27754B5367CC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3948BAF0-023F-4B43-8E77-56C3B00C6EFD}" @@ -99,16 +97,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "orchardcore", "orchardcore" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.OrchardCore", "src\orchardcore\Elsa.Integrations.OrchardCore\Elsa.Integrations.OrchardCore.csproj", "{C1929745-1160-E32A-FE78-AD09FDBA05B7}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{D71D34D1-91B0-463F-84A4-3117CE4BBED6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", "src\telnyx\Elsa.Integrations.Telnyx\Elsa.Integrations.Telnyx.csproj", "{C61EF9E3-807F-42D8-2C6E-EA155EABBD49}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {128B2FC3-81A7-4327-9665-9155B05F21DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {128B2FC3-81A7-4327-9665-9155B05F21DA}.Release|Any CPU.Build.0 = Release|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -201,12 +199,15 @@ Global {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1929745-1160-E32A-FE78-AD09FDBA05B7}.Release|Any CPU.Build.0 = Release|Any CPU + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {128B2FC3-81A7-4327-9665-9155B05F21DA} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {3948BAF0-023F-4B43-8E77-56C3B00C6EFD} = {D0212324-351E-4CA6-95EE-27754B5367CC} {AF041BAE-B45A-428B-B7F5-921CCB895558} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} {60461F37-79E1-4EBB-8742-9F6578C6A745} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D} @@ -236,6 +237,8 @@ Global {CA62F376-8144-19CD-65F4-E346C2E53F4C} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} {AAD61D93-7C78-42C4-9F37-2564D127A668} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {C1929745-1160-E32A-FE78-AD09FDBA05B7} = {AAD61D93-7C78-42C4-9F37-2564D127A668} + {D71D34D1-91B0-463F-84A4-3117CE4BBED6} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49} = {D71D34D1-91B0-463F-84A4-3117CE4BBED6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/Elsa.Integrations.Telnyx/Activities/AnswerCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/AnswerCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/AnswerCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/AnswerCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/AnswerCallBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/AnswerCallBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/AnswerCallBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/AnswerCallBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/BridgeCalls.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/BridgeCalls.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/BridgeCalls.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/BridgeCalls.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/BridgeCallsBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/BridgeCallsBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/BridgeCallsBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/BridgeCallsBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/CallAnswered.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/CallAnswered.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/CallAnswered.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/CallAnswered.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/CallHangup.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/CallHangup.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/CallHangup.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/CallHangup.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/Dial.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/Dial.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/Dial.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/Dial.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/DialAndWait.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/DialAndWait.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/DialAndWait.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/DialAndWait.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowAnswerCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowAnswerCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowAnswerCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowAnswerCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowBridgeCalls.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowBridgeCalls.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowBridgeCalls.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowBridgeCalls.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowHangupCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowHangupCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowHangupCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowHangupCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowPlayAudio.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowPlayAudio.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowPlayAudio.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowPlayAudio.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowSpeakText.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowSpeakText.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowSpeakText.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowSpeakText.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowStartRecording.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowStartRecording.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowStartRecording.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowStartRecording.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/FlowStopAudioPlayback.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowStopAudioPlayback.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/FlowStopAudioPlayback.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/FlowStopAudioPlayback.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/GatherUsingAudio.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/GatherUsingAudio.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/GatherUsingAudio.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/GatherUsingAudio.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/GatherUsingSpeak.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/GatherUsingSpeak.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/GatherUsingSpeak.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/GatherUsingSpeak.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/GetCallStatus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/GetCallStatus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/GetCallStatus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/GetCallStatus.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/HangupCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/HangupCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/HangupCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/HangupCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/HangupCallBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/HangupCallBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/HangupCallBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/HangupCallBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/IncomingCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/IncomingCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/IncomingCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/IncomingCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/LookupNumber.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/LookupNumber.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/LookupNumber.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/LookupNumber.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/PlayAudio.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/PlayAudio.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/PlayAudio.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/PlayAudio.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/PlayAudioBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/PlayAudioBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/PlayAudioBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/PlayAudioBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/SpeakText.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/SpeakText.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/SpeakText.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/SpeakText.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/SpeakTextBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/SpeakTextBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/SpeakTextBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/SpeakTextBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/StartRecording.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/StartRecording.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/StartRecording.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/StartRecording.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/StartRecordingBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/StartRecordingBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/StartRecordingBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/StartRecordingBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/StopAudioPlayback.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/StopAudioPlayback.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/StopAudioPlayback.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/StopAudioPlayback.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/StopAudioPlaybackBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/StopAudioPlaybackBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/StopAudioPlaybackBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/StopAudioPlaybackBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/StopRecording.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/StopRecording.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/StopRecording.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/StopRecording.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/TransferCall.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/TransferCall.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/TransferCall.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/TransferCall.cs diff --git a/src/Elsa.Integrations.Telnyx/Activities/WebhookEvent.cs b/src/telnyx/Elsa.Integrations.Telnyx/Activities/WebhookEvent.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Activities/WebhookEvent.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Activities/WebhookEvent.cs diff --git a/src/Elsa.Integrations.Telnyx/Attributes/WebhookActivityAttribute.cs b/src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookActivityAttribute.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Attributes/WebhookActivityAttribute.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookActivityAttribute.cs diff --git a/src/Elsa.Integrations.Telnyx/Attributes/WebhookAttribute.cs b/src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookAttribute.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Attributes/WebhookAttribute.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookAttribute.cs diff --git a/src/Elsa.Integrations.Telnyx/Attributes/WebhookDrivenAttribute.cs b/src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookDrivenAttribute.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Attributes/WebhookDrivenAttribute.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Attributes/WebhookDrivenAttribute.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/AnswerCallStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/AnswerCallStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/AnswerCallStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/AnswerCallStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/CallAnsweredStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/CallAnsweredStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/CallAnsweredStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/CallAnsweredStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/CallHangupStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/CallHangupStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/CallHangupStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/CallHangupStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallCatchAllStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallCatchAllStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallCatchAllStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallCatchAllStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallFromStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallFromStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallFromStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallFromStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallToStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallToStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallToStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/IncomingCallToStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Bookmarks/WebhookEventStimulus.cs b/src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/WebhookEventStimulus.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Bookmarks/WebhookEventStimulus.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Bookmarks/WebhookEventStimulus.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Implementations/TelnyxClient.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Implementations/TelnyxClient.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Implementations/TelnyxClient.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Implementations/TelnyxClient.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/AnsweringMachineConfig.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/AnsweringMachineConfig.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/AnsweringMachineConfig.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/AnsweringMachineConfig.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/Errors.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Errors.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/Errors.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Errors.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/Header.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Header.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/Header.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Header.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/PlayAudioResponse.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/PlayAudioResponse.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/PlayAudioResponse.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/PlayAudioResponse.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/Requests.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Requests.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/Requests.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Requests.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Models/Responses.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Responses.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Models/Responses.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Models/Responses.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Services/ICallsApi.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Services/ICallsApi.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Services/ICallsApi.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Services/ICallsApi.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Services/INumberLookupApi.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Services/INumberLookupApi.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Services/INumberLookupApi.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Services/INumberLookupApi.cs diff --git a/src/Elsa.Integrations.Telnyx/Client/Services/ITelnyxClient.cs b/src/telnyx/Elsa.Integrations.Telnyx/Client/Services/ITelnyxClient.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Client/Services/ITelnyxClient.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Client/Services/ITelnyxClient.cs diff --git a/src/Elsa.Integrations.Telnyx/Constants.cs b/src/telnyx/Elsa.Integrations.Telnyx/Constants.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Constants.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Constants.cs diff --git a/src/Elsa.Integrations.Telnyx/Contracts/IWebhookHandler.cs b/src/telnyx/Elsa.Integrations.Telnyx/Contracts/IWebhookHandler.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Contracts/IWebhookHandler.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Contracts/IWebhookHandler.cs diff --git a/src/Elsa.Integrations.Telnyx/Elsa.Integrations.Telnyx.csproj b/src/telnyx/Elsa.Integrations.Telnyx/Elsa.Integrations.Telnyx.csproj similarity index 100% rename from src/Elsa.Integrations.Telnyx/Elsa.Integrations.Telnyx.csproj rename to src/telnyx/Elsa.Integrations.Telnyx/Elsa.Integrations.Telnyx.csproj diff --git a/src/Elsa.Integrations.Telnyx/Events/TelnyxWebhookReceived.cs b/src/telnyx/Elsa.Integrations.Telnyx/Events/TelnyxWebhookReceived.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Events/TelnyxWebhookReceived.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Events/TelnyxWebhookReceived.cs diff --git a/src/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlAppIdException.cs b/src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlAppIdException.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlAppIdException.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlAppIdException.cs diff --git a/src/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlIdException.cs b/src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlIdException.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlIdException.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingCallControlIdException.cs diff --git a/src/Elsa.Integrations.Telnyx/Exceptions/MissingFromNumberException.cs b/src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingFromNumberException.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Exceptions/MissingFromNumberException.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Exceptions/MissingFromNumberException.cs diff --git a/src/Elsa.Integrations.Telnyx/Exceptions/TelnyxException.cs b/src/telnyx/Elsa.Integrations.Telnyx/Exceptions/TelnyxException.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Exceptions/TelnyxException.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Exceptions/TelnyxException.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/ActivityExecutionExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/ActivityExecutionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/ActivityExecutionExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/ActivityExecutionExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/ApiExceptionExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/ApiExceptionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/ApiExceptionExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/ApiExceptionExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/DependencyInjectionExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/DependencyInjectionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/DependencyInjectionExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/DependencyInjectionExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/EndpointsExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/EndpointsExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/EndpointsExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/EndpointsExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/ModuleExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/ModuleExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/PayloadExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/PayloadExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/PayloadExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/PayloadExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Extensions/StringExtensions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Extensions/StringExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Extensions/StringExtensions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Extensions/StringExtensions.cs diff --git a/src/Elsa.Integrations.Telnyx/Features/TelnyxFeature.cs b/src/telnyx/Elsa.Integrations.Telnyx/Features/TelnyxFeature.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Features/TelnyxFeature.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Features/TelnyxFeature.cs diff --git a/src/Elsa.Integrations.Telnyx/FodyWeavers.xml b/src/telnyx/Elsa.Integrations.Telnyx/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Telnyx/FodyWeavers.xml rename to src/telnyx/Elsa.Integrations.Telnyx/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerAnswerCallActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerAnswerCallActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerAnswerCallActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerAnswerCallActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerCallAnsweredActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallAnsweredActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerCallAnsweredActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallAnsweredActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerCallBridgedActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallBridgedActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerCallBridgedActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallBridgedActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerCallHangupActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallHangupActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerCallHangupActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerCallHangupActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerIncomingCallActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerIncomingCallActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerIncomingCallActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerIncomingCallActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookDrivenActivities.cs b/src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookDrivenActivities.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookDrivenActivities.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Handlers/TriggerWebhookDrivenActivities.cs diff --git a/src/Elsa.Integrations.Telnyx/Helpers/PayloadSerializer.cs b/src/telnyx/Elsa.Integrations.Telnyx/Helpers/PayloadSerializer.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Helpers/PayloadSerializer.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Helpers/PayloadSerializer.cs diff --git a/src/Elsa.Integrations.Telnyx/Helpers/WebhookPayloadTypes.cs b/src/telnyx/Elsa.Integrations.Telnyx/Helpers/WebhookPayloadTypes.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Helpers/WebhookPayloadTypes.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Helpers/WebhookPayloadTypes.cs diff --git a/src/Elsa.Integrations.Telnyx/Helpers/WebhookSerializerOptions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Helpers/WebhookSerializerOptions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Helpers/WebhookSerializerOptions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Helpers/WebhookSerializerOptions.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/BridgedCallsOutput.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/BridgedCallsOutput.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/BridgedCallsOutput.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/BridgedCallsOutput.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/CallRecordingUrls.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/CallRecordingUrls.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/CallRecordingUrls.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/CallRecordingUrls.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/ClientStatePayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/ClientStatePayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/ClientStatePayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/ClientStatePayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/TelnyxRecord.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxRecord.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/TelnyxRecord.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxRecord.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/TelnyxWebhook.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhook.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/TelnyxWebhook.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhook.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/TelnyxWebhookData.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhookData.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/TelnyxWebhookData.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhookData.cs diff --git a/src/Elsa.Integrations.Telnyx/Models/TelnyxWebhookMeta.cs b/src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhookMeta.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Models/TelnyxWebhookMeta.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Models/TelnyxWebhookMeta.cs diff --git a/src/Elsa.Integrations.Telnyx/Options/TelnyxOptions.cs b/src/telnyx/Elsa.Integrations.Telnyx/Options/TelnyxOptions.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Options/TelnyxOptions.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Options/TelnyxOptions.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPlayback.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPlayback.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPlayback.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/CallPlayback.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Abstractions/Payload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/Payload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Abstractions/Payload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Abstractions/Payload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallAnsweredPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallAnsweredPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallAnsweredPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallAnsweredPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallBridgedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallBridgedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallBridgedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallBridgedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallDtmfReceivedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallDtmfReceivedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallDtmfReceivedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallDtmfReceivedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallGatherEndedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallGatherEndedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallGatherEndedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallGatherEndedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallHangupPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallHangupPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallHangupPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallHangupPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallInitiatedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallInitiatedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallInitiatedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallInitiatedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineDetectionEndedBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineDetectionEndedBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineDetectionEndedBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineDetectionEndedBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEnded.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEnded.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEnded.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEnded.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEndedBase.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEndedBase.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEndedBase.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachineGreetingEndedBase.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumDetectionEnded.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumDetectionEnded.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumDetectionEnded.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumDetectionEnded.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumGreetingEnded.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumGreetingEnded.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumGreetingEnded.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallMachinePremiumGreetingEnded.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackEndedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackEndedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackEndedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackEndedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackStartedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackStartedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackStartedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallPlaybackStartedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallRecordingSavedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallRecordingSavedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallRecordingSavedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallRecordingSavedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakEnded.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakEnded.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakEnded.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakEnded.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakStarted.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakStarted.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakStarted.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/Call/CallSpeakStarted.cs diff --git a/src/Elsa.Integrations.Telnyx/Payloads/UnsupportedPayload.cs b/src/telnyx/Elsa.Integrations.Telnyx/Payloads/UnsupportedPayload.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Payloads/UnsupportedPayload.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Payloads/UnsupportedPayload.cs diff --git a/src/Elsa.Integrations.Telnyx/Providers/WebhookEventActivityProvider.cs b/src/telnyx/Elsa.Integrations.Telnyx/Providers/WebhookEventActivityProvider.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Providers/WebhookEventActivityProvider.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Providers/WebhookEventActivityProvider.cs diff --git a/src/Elsa.Integrations.Telnyx/Serialization/SnakeCaseNamingPolicy.cs b/src/telnyx/Elsa.Integrations.Telnyx/Serialization/SnakeCaseNamingPolicy.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Serialization/SnakeCaseNamingPolicy.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Serialization/SnakeCaseNamingPolicy.cs diff --git a/src/Elsa.Integrations.Telnyx/Serialization/WebhookDataJsonConverter.cs b/src/telnyx/Elsa.Integrations.Telnyx/Serialization/WebhookDataJsonConverter.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Serialization/WebhookDataJsonConverter.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Serialization/WebhookDataJsonConverter.cs diff --git a/src/Elsa.Integrations.Telnyx/Services/WebhookHandler.cs b/src/telnyx/Elsa.Integrations.Telnyx/Services/WebhookHandler.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/Services/WebhookHandler.cs rename to src/telnyx/Elsa.Integrations.Telnyx/Services/WebhookHandler.cs diff --git a/src/Elsa.Integrations.Telnyx/WebhookActivityTypeNames.cs b/src/telnyx/Elsa.Integrations.Telnyx/WebhookActivityTypeNames.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/WebhookActivityTypeNames.cs rename to src/telnyx/Elsa.Integrations.Telnyx/WebhookActivityTypeNames.cs diff --git a/src/Elsa.Integrations.Telnyx/WebhookEventTypes.cs b/src/telnyx/Elsa.Integrations.Telnyx/WebhookEventTypes.cs similarity index 100% rename from src/Elsa.Integrations.Telnyx/WebhookEventTypes.cs rename to src/telnyx/Elsa.Integrations.Telnyx/WebhookEventTypes.cs From a05c8f95ce872035d3de021e432bb2167623ffbf Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 02:10:46 +0100 Subject: [PATCH 11/23] Include supported expressions in Sql README. --- src/sql/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/sql/README.md b/src/sql/README.md index b8f5fb94..cfc89ca8 100644 --- a/src/sql/README.md +++ b/src/sql/README.md @@ -160,7 +160,19 @@ Will be converted into: SELECT * FROM [Users] WHERE [Name] = @p1 AND [Age] > @p2; ``` -Before being executed with the properties values. + +### Supported Expressions + +```csharp +{{Workflow.Definition.Id}} +{{Workflow.Definition.Version}} +{{Workflow.Instance.Id}} +{{Correlation.Id}} +{{LastResult}} +{{Input.}} +{{Output.}} +{{Variable.}} +``` --- From f6f5fbfa2a2700c49702acea1ac184b4ac7d0aa6 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 12:38:10 +0100 Subject: [PATCH 12/23] Update docs to allow support for README's in either category folders or project files. --- CONTRIBUTING.md | 5 ++--- README-TEMPLATE.md | 24 +++++++++++++++++++++--- README.md | 39 ++++++++++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60777412..9d994c4f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,8 +36,7 @@ git checkout -b feature/integration-name ``` Follow the repository's structure when adding a new integration: ``` -[integration-name]/ - ├── README.md +[category-name]/ └── Elsa.Integrations.[integration-name]/ ├── Services/ ├── Activities/ @@ -68,7 +67,7 @@ Our team will review your PR, provide feedback if necessary, and merge it once a ## 🛠 Contribution Guidelines - **Code Style**: Follow `.editorconfig` settings and existing project conventions. -- **Documentation**: Every integration must have a `README.md` at the root of its folder. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). +- **Documentation**: Every integration must have a `README.md` at the root of its category folder or project. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). - **Tests**: If possible, add unit/integration tests for your changes. --- diff --git a/README-TEMPLATE.md b/README-TEMPLATE.md index 05f47596..f224a9f2 100644 --- a/README-TEMPLATE.md +++ b/README-TEMPLATE.md @@ -15,18 +15,36 @@ For convenience, you can search and replace the following keywords for quicker b | [CompatibleVersion] | Version the integration works with | V3 | ## 📦 Integration Structure -Each integration should be organized into its own folder. Copy this README template file into the root of your integration's directory and rename it to `README.md`. For example: +Each integration should be organized into its own category folder. +Copy this README template file into the root of your integration's directory or project and rename it to `README.md`. +For example: ``` -[integration-name]/ +[category-name]/ ├── README.md ├── Elsa.Integrations.[integration-name]/ │ ├── Services/ │ ├── Activities/ │ ├── AI/ - └── Elsa.Integrations.[integration-name].Implementation/ + └── Elsa.Integrations.[integration-name].Implementation1/ ├── Services/ ├── Activities/ ├── AI/ + ... + +OR + +[category-name]/ + ├── Elsa.Integrations.[integration-name].Implementation1/ + │ ├── README.md + │ ├── Services/ + │ ├── Activities/ + │ ├── AI/ + └── Elsa.Integrations.[integration-name].Implementation2/ + ├── README.md + ├── Services/ + ├── Activities/ + ├── AI/ + ... ``` diff --git a/README.md b/README.md index 7eeb0668..aab0f379 100644 --- a/README.md +++ b/README.md @@ -87,20 +87,41 @@ Below is the current status of each integration. Checkboxes indicate implementat | [ ] | **OPC UA** | Browse nodes, Read/Write values, Subscribe/Unsubscribe nodes | `Elsa.Integrations.OPC.UA` | | | [ ] | **Modbus** | Read/Write coils, Read discrete Inputs, Read/Write registers | `Elsa.Integrations.Modbus` | | | [ ] | **MQTT Sparkplug** | Discover and Subscribe to topics, Publish messages | `Elsa.Integrations.MQTT.Sparkplug` | | + --- ## 📦 Structure Each integration is structured as a standalone package under the `Elsa.Integrations` namespace. Example: -``` -Elsa.Integrations.Gmail/ - ├── Services/ - ├── Activities/ - ├── AI/ -Elsa.Integrations.Telegram/ - ├── Services/ - ├── Activities/ - ├── AI/ + +```plaintext +... +├─azure/ +│ ├── Elsa.Integrations.AzureServiceBus/ +│ │ ├── README.md +│ │ ├── Services/ +│ │ ├── Activities/ +│ │ ├── AI/ +│ │ └── ... +│ └── Elsa.Integrations.AzureStorage/ +│ ├── README.md +│ ├── Services/ +│ ├── Activities/ +│ ├── AI/ +│ └── ... +├─sql/ +│ ├── README.md +│ ├── Elsa.Integrations.Sql/ +│ │ ├── Services/ +│ │ ├── Activities/ +│ │ ├── AI/ +│ │ └── ... +│ └── Elsa.Integrations.Sql.Sqlite/ +│ ├── Services/ +│ ├── Activities/ +│ ├── AI/ +│ └── ... +... ``` ## ⚡ Getting Started From 70aa9e8117b233679d1cbbde57a2dd96c90d1df4 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 3 May 2025 15:17:40 +0100 Subject: [PATCH 13/23] Move Agents into its own folder. Removed Elsa.Common version from Elsa.Integrations.Agents.Persistence .csproj file. --- Elsa.Integrations.sln | 143 +++++++++--------- ...tence.EntityFrameworkCore.SqlServer.csproj | 18 --- .../Activities/AgentActivity.cs | 0 .../AgentActivityProvider.cs | 0 ...Elsa.Integrations.Agents.Activities.csproj | 0 ...tions.Agents.Activities.csproj.DotSettings | 0 .../AgentActivitiesFeatureModuleExtensions.cs | 0 .../Features/AgentActivitiesFeature.cs | 0 .../FodyWeavers.xml | 0 .../Handlers/RefreshActivityRegistry.cs | 0 .../Elsa.Integrations.Agents.Api.csproj | 0 ...Integrations.Agents.Api.csproj.DotSettings | 0 .../Endpoints/Agents/BulkDelete/Endpoint.cs | 0 .../Endpoints/Agents/Create/Endpoint.cs | 0 .../Endpoints/Agents/Delete/Endpoint.cs | 0 .../Endpoints/Agents/Delete/Request.cs | 0 .../Agents/GenerateUniqueName/Endpoint.cs | 0 .../Endpoints/Agents/Get/Endpoint.cs | 0 .../Endpoints/Agents/Get/Request.cs | 0 .../Endpoints/Agents/Invoke/Endpoint.cs | 0 .../Endpoints/Agents/Invoke/Request.cs | 0 .../Endpoints/Agents/IsUniqueName/Endpoint.cs | 0 .../Endpoints/Agents/List/Endpoint.cs | 0 .../Endpoints/Agents/Update/Endpoint.cs | 0 .../Endpoints/ApiKeys/BulkDelete/Endpoint.cs | 0 .../Endpoints/ApiKeys/Create/Endpoint.cs | 0 .../Endpoints/ApiKeys/Delete/Endpoint.cs | 0 .../Endpoints/ApiKeys/Delete/Request.cs | 0 .../Endpoints/ApiKeys/Get/Endpoint.cs | 0 .../Endpoints/ApiKeys/Get/Request.cs | 0 .../Endpoints/ApiKeys/List/Endpoint.cs | 0 .../Endpoints/ApiKeys/Update/Endpoint.cs | 0 .../Endpoints/Plugins/List/Endpoint.cs | 0 .../Endpoints/Services/BulkDelete/Endpoint.cs | 0 .../Endpoints/Services/Create/Endpoint.cs | 0 .../Endpoints/Services/Delete/Endpoint.cs | 0 .../Endpoints/Services/Delete/Request.cs | 0 .../Endpoints/Services/Get/Endpoint.cs | 0 .../Endpoints/Services/Get/Request.cs | 0 .../Endpoints/Services/List/Endpoint.cs | 0 .../Endpoints/Services/Update/Endpoint.cs | 0 .../Extensions/AgentDefinitionExtensions.cs | 0 .../Extensions/ModuleExtensions.cs | 0 .../Features/AgentsApiFeature.cs | 0 .../FodyWeavers.xml | 0 .../Abstractions/PluginProvider.cs | 0 .../Contracts/IAgentServiceProvider.cs | 0 .../Contracts/IKernelConfigProvider.cs | 0 .../Contracts/IPluginDiscoverer.cs | 0 .../Contracts/IPluginProvider.cs | 0 .../Contracts/IServiceDiscoverer.cs | 0 .../Elsa.Integrations.Agents.Core.csproj | 6 +- ...ntegrations.Agents.Core.csproj.DotSettings | 0 .../Extensions/AgentConfigExtensions.cs | 0 .../Extensions/FunctionResultExtensions.cs | 0 .../Extensions/ModuleExtensions.cs | 0 .../Extensions/ServiceCollectionExtensions.cs | 0 .../Features/AgentsFeature.cs | 0 .../FodyWeavers.xml | 0 .../Models/InvokeAgentResult.cs | 0 .../Models/KernelBuilderContext.cs | 0 .../Models/PluginDescriptor.cs | 0 .../Options/AgentsOptions.cs | 0 .../Plugins/ImageGeneratorPlugin.cs | 0 .../OpenAIChatCompletionProvider.cs | 0 .../OpenAITextToImageProvider.cs | 0 .../Services/AgentInvoker.cs | 0 .../ConfigurationKernelConfigProvider.cs | 0 .../Services/KernelFactory.cs | 0 .../Services/PluginDiscoverer.cs | 0 .../Services/ServiceDiscoverer.cs | 0 .../Agents/AgentInputModel.cs | 0 .../Agents/AgentModel.cs | 0 .../ApiKeys/ApiKeyInputModel.cs | 0 .../ApiKeys/ApiKeyModel.cs | 0 .../BulkActions/BulkDeleteRequest.cs | 0 .../BulkActions/BulkDeleteResponse.cs | 0 .../Configs/AgentConfig.cs | 0 .../Configs/ApiKeyConfig.cs | 0 .../Configs/ExecutionSettingsConfig.cs | 0 .../Configs/FunctionConfig.cs | 0 .../Configs/InputVariableConfig.cs | 0 .../Configs/KernelConfig.cs | 0 .../Configs/OutputVariableConfig.cs | 0 .../Configs/ServiceConfig.cs | 0 .../Elsa.Integrations.Agents.Models.csproj | 0 ...egrations.Agents.Models.csproj.DotSettings | 0 .../FodyWeavers.xml | 0 .../Plugins/PluginDescriptor.cs | 0 .../Services/ServiceInputModel.cs | 0 .../Services/ServiceModel.cs | 0 .../UniqueName/GenerateUniqueNameResponse.cs | 0 .../UniqueName/IsUniqueNameRequest.cs | 0 .../UniqueName/IsUniqueNameResponse.cs | 0 .../AgentsMySqlProvidersExtensions.cs | 0 .../DbContextFactories.cs | 0 ...rsistence.EntityFrameworkCore.MySql.csproj | 0 .../FodyWeavers.xml | 0 .../20250302144856_V3_4.Designer.cs | 0 .../Migrations/20250302144856_V3_4.cs | 0 .../AgentsDbContextModelSnapshot.cs | 0 .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 0 ...ence.EntityFrameworkCore.PostgreSql.csproj | 0 .../FodyWeavers.xml | 0 .../20250302144916_V3_4.Designer.cs | 0 .../Migrations/20250302144916_V3_4.cs | 0 .../AgentsDbContextModelSnapshot.cs | 0 .../PostgreSqlProvidersExtensions.cs | 0 .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 0 ...tence.EntityFrameworkCore.SqlServer.csproj | 18 +++ .../FodyWeavers.xml | 0 .../20250302144957_V3_4.Designer.cs | 0 .../Migrations/20250302144957_V3_4.cs | 0 .../AgentsDbContextModelSnapshot.cs | 0 .../SqlServerProvidersExtensions.cs | 0 .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 0 ...sistence.EntityFrameworkCore.Sqlite.csproj | 0 .../FodyWeavers.xml | 0 .../20250302144940_V3_4.Designer.cs | 0 .../Migrations/20250302144940_V3_4.cs | 0 .../AgentsDbContextModelSnapshot.cs | 0 .../SqliteProvidersExtensions.cs | 0 .../efcore-3.4.sh | 0 .../Configurations.cs | 0 .../DbContext.cs | 0 .../EFCoreAgentStore.cs | 0 .../EFCoreApiKeyStore.cs | 0 .../EFCoreServiceStore.cs | 0 ...nts.Persistence.EntityFrameworkCore.csproj | 0 .../Extensions.cs | 0 .../Feature.cs | 0 .../FodyWeavers.xml | 0 .../Contracts/IAgentManager.cs | 0 .../Contracts/IAgentStore.cs | 0 .../Contracts/IApiKeyStore.cs | 0 .../Contracts/IServiceStore.cs | 0 ...lsa.Integrations.Agents.Persistence.csproj | 4 - ...ions.Agents.Persistence.csproj.DotSettings | 0 .../Entities/AgentDefinition.cs | 0 .../Entities/ApiKeyDefinition.cs | 0 .../Entities/ServiceDefinition.cs | 0 .../Extensions/ModuleExtensions.cs | 0 .../Features/AgentPersistenceFeature.cs | 0 .../Filters/AgentDefinitionFilter.cs | 0 .../Filters/ApiKeyDefinitionFilter.cs | 0 .../Filters/ServiceDefinitionFilter.cs | 0 .../FodyWeavers.xml | 0 .../Notifications/AgentDefinitionCreated.cs | 0 .../Notifications/AgentDefinitionDeleted.cs | 0 .../Notifications/AgentDefinitionUpdated.cs | 0 .../AgentDefinitionsDeletedInBulk.cs | 0 .../Services/AgentManager.cs | 0 .../Services/MemoryAgentStore.cs | 0 .../Services/MemoryApiKeyStore.cs | 0 .../Services/MemoryServiceStore.cs | 0 .../Services/StoreKernelConfigProvider.cs | 0 159 files changed, 94 insertions(+), 95 deletions(-) delete mode 100644 src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Activities/AgentActivity.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/ActivityProviders/AgentActivityProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj.DotSettings (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Features/AgentActivitiesFeature.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Activities/Handlers/RefreshActivityRegistry.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj.DotSettings (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Create/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/List/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Agents/Update/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Plugins/List/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Create/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Request.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/List/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Endpoints/Services/Update/Endpoint.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Extensions/AgentDefinitionExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Extensions/ModuleExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/Features/AgentsApiFeature.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Api/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Abstractions/PluginProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Contracts/IAgentServiceProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Contracts/IKernelConfigProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Contracts/IPluginDiscoverer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Contracts/IPluginProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Contracts/IServiceDiscoverer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj (90%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj.DotSettings (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Extensions/AgentConfigExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Extensions/FunctionResultExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Extensions/ModuleExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Extensions/ServiceCollectionExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Features/AgentsFeature.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Models/InvokeAgentResult.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Models/KernelBuilderContext.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Models/PluginDescriptor.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Options/AgentsOptions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Plugins/ImageGeneratorPlugin.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Services/AgentInvoker.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Services/ConfigurationKernelConfigProvider.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Services/KernelFactory.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Services/PluginDiscoverer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Core/Services/ServiceDiscoverer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Agents/AgentInputModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Agents/AgentModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyInputModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteRequest.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteResponse.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/AgentConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/ApiKeyConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/ExecutionSettingsConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/FunctionConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/InputVariableConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/KernelConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/OutputVariableConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Configs/ServiceConfig.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj.DotSettings (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Plugins/PluginDescriptor.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Services/ServiceInputModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/Services/ServiceModel.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameRequest.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameResponse.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs (100%) create mode 100644 src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Contracts/IAgentManager.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Contracts/IAgentStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Contracts/IApiKeyStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Contracts/IServiceStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj (81%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj.DotSettings (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Entities/AgentDefinition.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Entities/ApiKeyDefinition.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Entities/ServiceDefinition.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Extensions/ModuleExtensions.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Features/AgentPersistenceFeature.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Filters/AgentDefinitionFilter.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Filters/ApiKeyDefinitionFilter.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Filters/ServiceDefinitionFilter.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/FodyWeavers.xml (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionCreated.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionDeleted.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionUpdated.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionsDeletedInBulk.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Services/AgentManager.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Services/MemoryAgentStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Services/MemoryApiKeyStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Services/MemoryServiceStore.cs (100%) rename src/{ => agents}/Elsa.Integrations.Agents.Persistence/Services/StoreKernelConfigProvider.cs (100%) diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index c7e4d9eb..d3456008 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -48,26 +48,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.AzureServ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.TestServer.Web", "test\component\Elsa.TestServer.Web\Elsa.TestServer.Web.csproj", "{91D7599F-B4BC-4C2E-A346-56DDCD6F9FDC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Activities", "src\Elsa.Integrations.Agents.Activities\Elsa.Integrations.Agents.Activities.csproj", "{328F9C5A-60BD-4996-9422-32637BB1A55B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Api", "src\Elsa.Integrations.Agents.Api\Elsa.Integrations.Agents.Api.csproj", "{2FB8910D-9310-4DA3-9151-80AA401134A8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Core", "src\Elsa.Integrations.Agents.Core\Elsa.Integrations.Agents.Core.csproj", "{293490F1-E0A1-4067-BDEB-E6CE09649749}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Models", "src\Elsa.Integrations.Agents.Models\Elsa.Integrations.Agents.Models.csproj", "{4E6009CF-5525-4AD3-B898-205EC493FB15}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence", "src\Elsa.Integrations.Agents.Persistence\Elsa.Integrations.Agents.Persistence.csproj", "{863E1AD1-7C87-48B0-8274-A7FE0FC31C60}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj", "{E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj", "{0366AA72-4E2C-4416-A3C9-BB1964EAAB89}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj", "{59AE52F2-8F9F-44A2-92E8-ED4EEB895F31}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj", "{4455BAC7-FD3C-4429-A2A2-44A83A331056}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" ProjectSection(SolutionItems) = preProject src\sql\README.md = src\sql\README.md @@ -101,6 +81,28 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{D71D34 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", "src\telnyx\Elsa.Integrations.Telnyx\Elsa.Integrations.Telnyx.csproj", "{C61EF9E3-807F-42D8-2C6E-EA155EABBD49}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agents", "agents", "{5220DB25-20E9-4D07-801C-A970E71FB21C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Core", "src\agents\Elsa.Integrations.Agents.Core\Elsa.Integrations.Agents.Core.csproj", "{5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Activities", "src\agents\Elsa.Integrations.Agents.Activities\Elsa.Integrations.Agents.Activities.csproj", "{1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Api", "src\agents\Elsa.Integrations.Agents.Api\Elsa.Integrations.Agents.Api.csproj", "{803E4C85-C898-7F96-0C9B-3B1738F450C9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Models", "src\agents\Elsa.Integrations.Agents.Models\Elsa.Integrations.Agents.Models.csproj", "{5EFF79C1-CAC8-72E6-B97E-0A0327293389}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence", "src\agents\Elsa.Integrations.Agents.Persistence\Elsa.Integrations.Agents.Persistence.csproj", "{2F068118-E972-CBCB-1D84-8B1B8AB779CD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj", "{54D75227-4330-4F73-8BB8-54697C0CEA88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj", "{EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj", "{12AB96A5-5BCB-1F24-F368-40925F6C20E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{38E6D902-BF27-5356-BE90-B6EA79E2A780}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj", "{147E36AC-D212-1D28-3ABD-28AC1BC54FB5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -123,46 +125,6 @@ Global {91D7599F-B4BC-4C2E-A346-56DDCD6F9FDC}.Debug|Any CPU.Build.0 = Debug|Any CPU {91D7599F-B4BC-4C2E-A346-56DDCD6F9FDC}.Release|Any CPU.ActiveCfg = Release|Any CPU {91D7599F-B4BC-4C2E-A346-56DDCD6F9FDC}.Release|Any CPU.Build.0 = Release|Any CPU - {328F9C5A-60BD-4996-9422-32637BB1A55B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {328F9C5A-60BD-4996-9422-32637BB1A55B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {328F9C5A-60BD-4996-9422-32637BB1A55B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {328F9C5A-60BD-4996-9422-32637BB1A55B}.Release|Any CPU.Build.0 = Release|Any CPU - {2FB8910D-9310-4DA3-9151-80AA401134A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FB8910D-9310-4DA3-9151-80AA401134A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FB8910D-9310-4DA3-9151-80AA401134A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FB8910D-9310-4DA3-9151-80AA401134A8}.Release|Any CPU.Build.0 = Release|Any CPU - {293490F1-E0A1-4067-BDEB-E6CE09649749}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {293490F1-E0A1-4067-BDEB-E6CE09649749}.Debug|Any CPU.Build.0 = Debug|Any CPU - {293490F1-E0A1-4067-BDEB-E6CE09649749}.Release|Any CPU.ActiveCfg = Release|Any CPU - {293490F1-E0A1-4067-BDEB-E6CE09649749}.Release|Any CPU.Build.0 = Release|Any CPU - {4E6009CF-5525-4AD3-B898-205EC493FB15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4E6009CF-5525-4AD3-B898-205EC493FB15}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4E6009CF-5525-4AD3-B898-205EC493FB15}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4E6009CF-5525-4AD3-B898-205EC493FB15}.Release|Any CPU.Build.0 = Release|Any CPU - {863E1AD1-7C87-48B0-8274-A7FE0FC31C60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {863E1AD1-7C87-48B0-8274-A7FE0FC31C60}.Debug|Any CPU.Build.0 = Debug|Any CPU - {863E1AD1-7C87-48B0-8274-A7FE0FC31C60}.Release|Any CPU.ActiveCfg = Release|Any CPU - {863E1AD1-7C87-48B0-8274-A7FE0FC31C60}.Release|Any CPU.Build.0 = Release|Any CPU - {E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC}.Release|Any CPU.Build.0 = Release|Any CPU - {0366AA72-4E2C-4416-A3C9-BB1964EAAB89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0366AA72-4E2C-4416-A3C9-BB1964EAAB89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0366AA72-4E2C-4416-A3C9-BB1964EAAB89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0366AA72-4E2C-4416-A3C9-BB1964EAAB89}.Release|Any CPU.Build.0 = Release|Any CPU - {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31}.Release|Any CPU.Build.0 = Release|Any CPU - {4455BAC7-FD3C-4429-A2A2-44A83A331056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4455BAC7-FD3C-4429-A2A2-44A83A331056}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4455BAC7-FD3C-4429-A2A2-44A83A331056}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4455BAC7-FD3C-4429-A2A2-44A83A331056}.Release|Any CPU.Build.0 = Release|Any CPU - {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2}.Release|Any CPU.Build.0 = Release|Any CPU {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Debug|Any CPU.Build.0 = Debug|Any CPU {C28570E2-EE0E-CE53-CB56-7927CAB23E1E}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -203,6 +165,46 @@ Global {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Debug|Any CPU.Build.0 = Debug|Any CPU {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.ActiveCfg = Release|Any CPU {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.Build.0 = Release|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.Build.0 = Release|Any CPU + {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Release|Any CPU.Build.0 = Release|Any CPU + {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Release|Any CPU.Build.0 = Release|Any CPU + {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Release|Any CPU.Build.0 = Release|Any CPU + {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Release|Any CPU.Build.0 = Release|Any CPU + {54D75227-4330-4F73-8BB8-54697C0CEA88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54D75227-4330-4F73-8BB8-54697C0CEA88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54D75227-4330-4F73-8BB8-54697C0CEA88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54D75227-4330-4F73-8BB8-54697C0CEA88}.Release|Any CPU.Build.0 = Release|Any CPU + {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Release|Any CPU.Build.0 = Release|Any CPU + {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Release|Any CPU.Build.0 = Release|Any CPU + {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Release|Any CPU.Build.0 = Release|Any CPU + {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -214,16 +216,6 @@ Global {A1ADCCC2-01DD-41BA-8A81-FAAE96EC729D} = {AF041BAE-B45A-428B-B7F5-921CCB895558} {2175629F-FA99-4840-9F12-3FE7417706B9} = {60461F37-79E1-4EBB-8742-9F6578C6A745} {91D7599F-B4BC-4C2E-A346-56DDCD6F9FDC} = {60461F37-79E1-4EBB-8742-9F6578C6A745} - {328F9C5A-60BD-4996-9422-32637BB1A55B} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {2FB8910D-9310-4DA3-9151-80AA401134A8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {293490F1-E0A1-4067-BDEB-E6CE09649749} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {4E6009CF-5525-4AD3-B898-205EC493FB15} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {863E1AD1-7C87-48B0-8274-A7FE0FC31C60} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {E441ED7C-A9AF-4CC6-AA4D-02ECD38075CC} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {0366AA72-4E2C-4416-A3C9-BB1964EAAB89} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {59AE52F2-8F9F-44A2-92E8-ED4EEB895F31} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {4455BAC7-FD3C-4429-A2A2-44A83A331056} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {4955F8F7-B4D2-4695-9C29-A2DC9DDCD8E2} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {C28570E2-EE0E-CE53-CB56-7927CAB23E1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {9398D427-0A19-552F-AD3F-42F06A39DA8C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} @@ -239,6 +231,17 @@ Global {C1929745-1160-E32A-FE78-AD09FDBA05B7} = {AAD61D93-7C78-42C4-9F37-2564D127A668} {D71D34D1-91B0-463F-84A4-3117CE4BBED6} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {C61EF9E3-807F-42D8-2C6E-EA155EABBD49} = {D71D34D1-91B0-463F-84A4-3117CE4BBED6} + {5220DB25-20E9-4D07-801C-A970E71FB21C} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {803E4C85-C898-7F96-0C9B-3B1738F450C9} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {5EFF79C1-CAC8-72E6-B97E-0A0327293389} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {2F068118-E972-CBCB-1D84-8B1B8AB779CD} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {54D75227-4330-4F73-8BB8-54697C0CEA88} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {12AB96A5-5BCB-1F24-F368-40925F6C20E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {38E6D902-BF27-5356-BE90-B6EA79E2A780} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {147E36AC-D212-1D28-3ABD-28AC1BC54FB5} = {5220DB25-20E9-4D07-801C-A970E71FB21C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj deleted file mode 100644 index 79591086..00000000 --- a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Provides an EF Core migrations for SQL Server for the Agents Persistence module. - elsa module agents semantic kernel llm ai persistence efcore entity framework core sqlserver - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Elsa.Integrations.Agents.Activities/Activities/AgentActivity.cs b/src/agents/Elsa.Integrations.Agents.Activities/Activities/AgentActivity.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Activities/AgentActivity.cs rename to src/agents/Elsa.Integrations.Agents.Activities/Activities/AgentActivity.cs diff --git a/src/Elsa.Integrations.Agents.Activities/ActivityProviders/AgentActivityProvider.cs b/src/agents/Elsa.Integrations.Agents.Activities/ActivityProviders/AgentActivityProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/ActivityProviders/AgentActivityProvider.cs rename to src/agents/Elsa.Integrations.Agents.Activities/ActivityProviders/AgentActivityProvider.cs diff --git a/src/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj b/src/agents/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj rename to src/agents/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj diff --git a/src/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj.DotSettings b/src/agents/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj.DotSettings similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj.DotSettings rename to src/agents/Elsa.Integrations.Agents.Activities/Elsa.Integrations.Agents.Activities.csproj.DotSettings diff --git a/src/Elsa.Integrations.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs b/src/agents/Elsa.Integrations.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Activities/Features/AgentActivitiesFeature.cs b/src/agents/Elsa.Integrations.Agents.Activities/Features/AgentActivitiesFeature.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Features/AgentActivitiesFeature.cs rename to src/agents/Elsa.Integrations.Agents.Activities/Features/AgentActivitiesFeature.cs diff --git a/src/Elsa.Integrations.Agents.Activities/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Activities/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Activities/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Activities/Handlers/RefreshActivityRegistry.cs b/src/agents/Elsa.Integrations.Agents.Activities/Handlers/RefreshActivityRegistry.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Activities/Handlers/RefreshActivityRegistry.cs rename to src/agents/Elsa.Integrations.Agents.Activities/Handlers/RefreshActivityRegistry.cs diff --git a/src/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj b/src/agents/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj rename to src/agents/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj diff --git a/src/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj.DotSettings b/src/agents/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj.DotSettings similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj.DotSettings rename to src/agents/Elsa.Integrations.Agents.Api/Elsa.Integrations.Agents.Api.csproj.DotSettings diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Create/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Create/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Create/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Create/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Delete/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Get/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Invoke/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/List/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/List/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/List/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/List/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Update/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Update/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Agents/Update/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Agents/Update/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Get/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Plugins/List/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Plugins/List/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Plugins/List/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Plugins/List/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Create/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Create/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Create/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Create/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Delete/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Request.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Request.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Request.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Get/Request.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/List/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/List/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/List/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/List/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Endpoints/Services/Update/Endpoint.cs b/src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Update/Endpoint.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Endpoints/Services/Update/Endpoint.cs rename to src/agents/Elsa.Integrations.Agents.Api/Endpoints/Services/Update/Endpoint.cs diff --git a/src/Elsa.Integrations.Agents.Api/Extensions/AgentDefinitionExtensions.cs b/src/agents/Elsa.Integrations.Agents.Api/Extensions/AgentDefinitionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Extensions/AgentDefinitionExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Api/Extensions/AgentDefinitionExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Api/Extensions/ModuleExtensions.cs b/src/agents/Elsa.Integrations.Agents.Api/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Extensions/ModuleExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Api/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Api/Features/AgentsApiFeature.cs b/src/agents/Elsa.Integrations.Agents.Api/Features/AgentsApiFeature.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Api/Features/AgentsApiFeature.cs rename to src/agents/Elsa.Integrations.Agents.Api/Features/AgentsApiFeature.cs diff --git a/src/Elsa.Integrations.Agents.Api/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Api/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Api/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Api/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Core/Abstractions/PluginProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/Abstractions/PluginProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Abstractions/PluginProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/Abstractions/PluginProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Contracts/IAgentServiceProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/Contracts/IAgentServiceProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Contracts/IAgentServiceProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/Contracts/IAgentServiceProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Contracts/IKernelConfigProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/Contracts/IKernelConfigProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Contracts/IKernelConfigProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/Contracts/IKernelConfigProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Contracts/IPluginDiscoverer.cs b/src/agents/Elsa.Integrations.Agents.Core/Contracts/IPluginDiscoverer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Contracts/IPluginDiscoverer.cs rename to src/agents/Elsa.Integrations.Agents.Core/Contracts/IPluginDiscoverer.cs diff --git a/src/Elsa.Integrations.Agents.Core/Contracts/IPluginProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/Contracts/IPluginProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Contracts/IPluginProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/Contracts/IPluginProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Contracts/IServiceDiscoverer.cs b/src/agents/Elsa.Integrations.Agents.Core/Contracts/IServiceDiscoverer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Contracts/IServiceDiscoverer.cs rename to src/agents/Elsa.Integrations.Agents.Core/Contracts/IServiceDiscoverer.cs diff --git a/src/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj b/src/agents/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj similarity index 90% rename from src/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj rename to src/agents/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj index bd669771..2bb6eb33 100644 --- a/src/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj +++ b/src/agents/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj @@ -9,9 +9,9 @@ - - - + + + diff --git a/src/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj.DotSettings b/src/agents/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj.DotSettings similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj.DotSettings rename to src/agents/Elsa.Integrations.Agents.Core/Elsa.Integrations.Agents.Core.csproj.DotSettings diff --git a/src/Elsa.Integrations.Agents.Core/Extensions/AgentConfigExtensions.cs b/src/agents/Elsa.Integrations.Agents.Core/Extensions/AgentConfigExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Extensions/AgentConfigExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Core/Extensions/AgentConfigExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Core/Extensions/FunctionResultExtensions.cs b/src/agents/Elsa.Integrations.Agents.Core/Extensions/FunctionResultExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Extensions/FunctionResultExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Core/Extensions/FunctionResultExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Core/Extensions/ModuleExtensions.cs b/src/agents/Elsa.Integrations.Agents.Core/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Extensions/ModuleExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Core/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Core/Extensions/ServiceCollectionExtensions.cs b/src/agents/Elsa.Integrations.Agents.Core/Extensions/ServiceCollectionExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Extensions/ServiceCollectionExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Core/Extensions/ServiceCollectionExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Core/Features/AgentsFeature.cs b/src/agents/Elsa.Integrations.Agents.Core/Features/AgentsFeature.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Features/AgentsFeature.cs rename to src/agents/Elsa.Integrations.Agents.Core/Features/AgentsFeature.cs diff --git a/src/Elsa.Integrations.Agents.Core/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Core/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Core/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Core/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Core/Models/InvokeAgentResult.cs b/src/agents/Elsa.Integrations.Agents.Core/Models/InvokeAgentResult.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Models/InvokeAgentResult.cs rename to src/agents/Elsa.Integrations.Agents.Core/Models/InvokeAgentResult.cs diff --git a/src/Elsa.Integrations.Agents.Core/Models/KernelBuilderContext.cs b/src/agents/Elsa.Integrations.Agents.Core/Models/KernelBuilderContext.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Models/KernelBuilderContext.cs rename to src/agents/Elsa.Integrations.Agents.Core/Models/KernelBuilderContext.cs diff --git a/src/Elsa.Integrations.Agents.Core/Models/PluginDescriptor.cs b/src/agents/Elsa.Integrations.Agents.Core/Models/PluginDescriptor.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Models/PluginDescriptor.cs rename to src/agents/Elsa.Integrations.Agents.Core/Models/PluginDescriptor.cs diff --git a/src/Elsa.Integrations.Agents.Core/Options/AgentsOptions.cs b/src/agents/Elsa.Integrations.Agents.Core/Options/AgentsOptions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Options/AgentsOptions.cs rename to src/agents/Elsa.Integrations.Agents.Core/Options/AgentsOptions.cs diff --git a/src/Elsa.Integrations.Agents.Core/Plugins/ImageGeneratorPlugin.cs b/src/agents/Elsa.Integrations.Agents.Core/Plugins/ImageGeneratorPlugin.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Plugins/ImageGeneratorPlugin.cs rename to src/agents/Elsa.Integrations.Agents.Core/Plugins/ImageGeneratorPlugin.cs diff --git a/src/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Services/AgentInvoker.cs b/src/agents/Elsa.Integrations.Agents.Core/Services/AgentInvoker.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Services/AgentInvoker.cs rename to src/agents/Elsa.Integrations.Agents.Core/Services/AgentInvoker.cs diff --git a/src/Elsa.Integrations.Agents.Core/Services/ConfigurationKernelConfigProvider.cs b/src/agents/Elsa.Integrations.Agents.Core/Services/ConfigurationKernelConfigProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Services/ConfigurationKernelConfigProvider.cs rename to src/agents/Elsa.Integrations.Agents.Core/Services/ConfigurationKernelConfigProvider.cs diff --git a/src/Elsa.Integrations.Agents.Core/Services/KernelFactory.cs b/src/agents/Elsa.Integrations.Agents.Core/Services/KernelFactory.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Services/KernelFactory.cs rename to src/agents/Elsa.Integrations.Agents.Core/Services/KernelFactory.cs diff --git a/src/Elsa.Integrations.Agents.Core/Services/PluginDiscoverer.cs b/src/agents/Elsa.Integrations.Agents.Core/Services/PluginDiscoverer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Services/PluginDiscoverer.cs rename to src/agents/Elsa.Integrations.Agents.Core/Services/PluginDiscoverer.cs diff --git a/src/Elsa.Integrations.Agents.Core/Services/ServiceDiscoverer.cs b/src/agents/Elsa.Integrations.Agents.Core/Services/ServiceDiscoverer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Core/Services/ServiceDiscoverer.cs rename to src/agents/Elsa.Integrations.Agents.Core/Services/ServiceDiscoverer.cs diff --git a/src/Elsa.Integrations.Agents.Models/Agents/AgentInputModel.cs b/src/agents/Elsa.Integrations.Agents.Models/Agents/AgentInputModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Agents/AgentInputModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/Agents/AgentInputModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/Agents/AgentModel.cs b/src/agents/Elsa.Integrations.Agents.Models/Agents/AgentModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Agents/AgentModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/Agents/AgentModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyInputModel.cs b/src/agents/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyInputModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyInputModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyInputModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyModel.cs b/src/agents/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/ApiKeys/ApiKeyModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteRequest.cs b/src/agents/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteRequest.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteRequest.cs rename to src/agents/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteRequest.cs diff --git a/src/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteResponse.cs b/src/agents/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteResponse.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteResponse.cs rename to src/agents/Elsa.Integrations.Agents.Models/BulkActions/BulkDeleteResponse.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/AgentConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/AgentConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/AgentConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/AgentConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/ApiKeyConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/ApiKeyConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/ApiKeyConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/ApiKeyConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/ExecutionSettingsConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/ExecutionSettingsConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/ExecutionSettingsConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/ExecutionSettingsConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/FunctionConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/FunctionConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/FunctionConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/FunctionConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/InputVariableConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/InputVariableConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/InputVariableConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/InputVariableConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/KernelConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/KernelConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/KernelConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/KernelConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/OutputVariableConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/OutputVariableConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/OutputVariableConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/OutputVariableConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Configs/ServiceConfig.cs b/src/agents/Elsa.Integrations.Agents.Models/Configs/ServiceConfig.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Configs/ServiceConfig.cs rename to src/agents/Elsa.Integrations.Agents.Models/Configs/ServiceConfig.cs diff --git a/src/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj b/src/agents/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj rename to src/agents/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj diff --git a/src/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj.DotSettings b/src/agents/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj.DotSettings similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj.DotSettings rename to src/agents/Elsa.Integrations.Agents.Models/Elsa.Integrations.Agents.Models.csproj.DotSettings diff --git a/src/Elsa.Integrations.Agents.Models/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Models/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Models/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Models/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Models/Plugins/PluginDescriptor.cs b/src/agents/Elsa.Integrations.Agents.Models/Plugins/PluginDescriptor.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Plugins/PluginDescriptor.cs rename to src/agents/Elsa.Integrations.Agents.Models/Plugins/PluginDescriptor.cs diff --git a/src/Elsa.Integrations.Agents.Models/Services/ServiceInputModel.cs b/src/agents/Elsa.Integrations.Agents.Models/Services/ServiceInputModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Services/ServiceInputModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/Services/ServiceInputModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/Services/ServiceModel.cs b/src/agents/Elsa.Integrations.Agents.Models/Services/ServiceModel.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/Services/ServiceModel.cs rename to src/agents/Elsa.Integrations.Agents.Models/Services/ServiceModel.cs diff --git a/src/Elsa.Integrations.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs b/src/agents/Elsa.Integrations.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs rename to src/agents/Elsa.Integrations.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs diff --git a/src/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameRequest.cs b/src/agents/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameRequest.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameRequest.cs rename to src/agents/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameRequest.cs diff --git a/src/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameResponse.cs b/src/agents/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameResponse.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameResponse.cs rename to src/agents/Elsa.Integrations.Agents.Models/UniqueName/IsUniqueNameResponse.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj new file mode 100644 index 00000000..38fb3c96 --- /dev/null +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj @@ -0,0 +1,18 @@ + + + + Provides an EF Core migrations for SQL Server for the Agents Persistence module. + elsa module agents semantic kernel llm ai persistence efcore entity framework core sqlserver + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs diff --git a/src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence/Contracts/IAgentManager.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IAgentManager.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Contracts/IAgentManager.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IAgentManager.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Contracts/IAgentStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IAgentStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Contracts/IAgentStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IAgentStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Contracts/IApiKeyStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IApiKeyStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Contracts/IApiKeyStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IApiKeyStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Contracts/IServiceStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IServiceStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Contracts/IServiceStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Contracts/IServiceStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj b/src/agents/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj similarity index 81% rename from src/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj index 9c3a6f56..15c23494 100644 --- a/src/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj +++ b/src/agents/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj @@ -13,8 +13,4 @@ - - - - diff --git a/src/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj.DotSettings b/src/agents/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj.DotSettings similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj.DotSettings rename to src/agents/Elsa.Integrations.Agents.Persistence/Elsa.Integrations.Agents.Persistence.csproj.DotSettings diff --git a/src/Elsa.Integrations.Agents.Persistence/Entities/AgentDefinition.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Entities/AgentDefinition.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Entities/AgentDefinition.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Entities/AgentDefinition.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Entities/ApiKeyDefinition.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Entities/ApiKeyDefinition.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Entities/ApiKeyDefinition.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Entities/ApiKeyDefinition.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Entities/ServiceDefinition.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Entities/ServiceDefinition.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Entities/ServiceDefinition.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Entities/ServiceDefinition.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Extensions/ModuleExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Extensions/ModuleExtensions.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Extensions/ModuleExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Extensions/ModuleExtensions.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Features/AgentPersistenceFeature.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Features/AgentPersistenceFeature.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Features/AgentPersistenceFeature.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Features/AgentPersistenceFeature.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Filters/AgentDefinitionFilter.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Filters/AgentDefinitionFilter.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Filters/AgentDefinitionFilter.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Filters/AgentDefinitionFilter.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Filters/ApiKeyDefinitionFilter.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Filters/ApiKeyDefinitionFilter.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Filters/ApiKeyDefinitionFilter.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Filters/ApiKeyDefinitionFilter.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Filters/ServiceDefinitionFilter.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Filters/ServiceDefinitionFilter.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Filters/ServiceDefinitionFilter.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Filters/ServiceDefinitionFilter.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence/FodyWeavers.xml similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence/FodyWeavers.xml diff --git a/src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionCreated.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionCreated.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionCreated.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionCreated.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionDeleted.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionDeleted.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionDeleted.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionDeleted.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionUpdated.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionUpdated.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionUpdated.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionUpdated.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionsDeletedInBulk.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionsDeletedInBulk.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionsDeletedInBulk.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Notifications/AgentDefinitionsDeletedInBulk.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Services/AgentManager.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Services/AgentManager.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Services/AgentManager.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Services/AgentManager.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Services/MemoryAgentStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryAgentStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Services/MemoryAgentStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryAgentStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Services/MemoryApiKeyStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryApiKeyStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Services/MemoryApiKeyStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryApiKeyStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Services/MemoryServiceStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryServiceStore.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Services/MemoryServiceStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Services/MemoryServiceStore.cs diff --git a/src/Elsa.Integrations.Agents.Persistence/Services/StoreKernelConfigProvider.cs b/src/agents/Elsa.Integrations.Agents.Persistence/Services/StoreKernelConfigProvider.cs similarity index 100% rename from src/Elsa.Integrations.Agents.Persistence/Services/StoreKernelConfigProvider.cs rename to src/agents/Elsa.Integrations.Agents.Persistence/Services/StoreKernelConfigProvider.cs From d419999bf50585ac7d81ab92d09cc0b9239a2b61 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 4 May 2025 14:14:24 +0100 Subject: [PATCH 14/23] Revert "Update docs to allow support for README's in either category folders or project files." This reverts commit f6f5fbfa2a2700c49702acea1ac184b4ac7d0aa6. --- CONTRIBUTING.md | 5 +++-- README-TEMPLATE.md | 24 +++--------------------- README.md | 39 +++++++++------------------------------ 3 files changed, 15 insertions(+), 53 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d994c4f..60777412 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,7 +36,8 @@ git checkout -b feature/integration-name ``` Follow the repository's structure when adding a new integration: ``` -[category-name]/ +[integration-name]/ + ├── README.md └── Elsa.Integrations.[integration-name]/ ├── Services/ ├── Activities/ @@ -67,7 +68,7 @@ Our team will review your PR, provide feedback if necessary, and merge it once a ## 🛠 Contribution Guidelines - **Code Style**: Follow `.editorconfig` settings and existing project conventions. -- **Documentation**: Every integration must have a `README.md` at the root of its category folder or project. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). +- **Documentation**: Every integration must have a `README.md` at the root of its folder. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). - **Tests**: If possible, add unit/integration tests for your changes. --- diff --git a/README-TEMPLATE.md b/README-TEMPLATE.md index f224a9f2..05f47596 100644 --- a/README-TEMPLATE.md +++ b/README-TEMPLATE.md @@ -15,36 +15,18 @@ For convenience, you can search and replace the following keywords for quicker b | [CompatibleVersion] | Version the integration works with | V3 | ## 📦 Integration Structure -Each integration should be organized into its own category folder. -Copy this README template file into the root of your integration's directory or project and rename it to `README.md`. -For example: +Each integration should be organized into its own folder. Copy this README template file into the root of your integration's directory and rename it to `README.md`. For example: ``` -[category-name]/ +[integration-name]/ ├── README.md ├── Elsa.Integrations.[integration-name]/ │ ├── Services/ │ ├── Activities/ │ ├── AI/ - └── Elsa.Integrations.[integration-name].Implementation1/ + └── Elsa.Integrations.[integration-name].Implementation/ ├── Services/ ├── Activities/ ├── AI/ - ... - -OR - -[category-name]/ - ├── Elsa.Integrations.[integration-name].Implementation1/ - │ ├── README.md - │ ├── Services/ - │ ├── Activities/ - │ ├── AI/ - └── Elsa.Integrations.[integration-name].Implementation2/ - ├── README.md - ├── Services/ - ├── Activities/ - ├── AI/ - ... ``` diff --git a/README.md b/README.md index aab0f379..7eeb0668 100644 --- a/README.md +++ b/README.md @@ -87,41 +87,20 @@ Below is the current status of each integration. Checkboxes indicate implementat | [ ] | **OPC UA** | Browse nodes, Read/Write values, Subscribe/Unsubscribe nodes | `Elsa.Integrations.OPC.UA` | | | [ ] | **Modbus** | Read/Write coils, Read discrete Inputs, Read/Write registers | `Elsa.Integrations.Modbus` | | | [ ] | **MQTT Sparkplug** | Discover and Subscribe to topics, Publish messages | `Elsa.Integrations.MQTT.Sparkplug` | | - --- ## 📦 Structure Each integration is structured as a standalone package under the `Elsa.Integrations` namespace. Example: - -```plaintext -... -├─azure/ -│ ├── Elsa.Integrations.AzureServiceBus/ -│ │ ├── README.md -│ │ ├── Services/ -│ │ ├── Activities/ -│ │ ├── AI/ -│ │ └── ... -│ └── Elsa.Integrations.AzureStorage/ -│ ├── README.md -│ ├── Services/ -│ ├── Activities/ -│ ├── AI/ -│ └── ... -├─sql/ -│ ├── README.md -│ ├── Elsa.Integrations.Sql/ -│ │ ├── Services/ -│ │ ├── Activities/ -│ │ ├── AI/ -│ │ └── ... -│ └── Elsa.Integrations.Sql.Sqlite/ -│ ├── Services/ -│ ├── Activities/ -│ ├── AI/ -│ └── ... -... +``` +Elsa.Integrations.Gmail/ + ├── Services/ + ├── Activities/ + ├── AI/ +Elsa.Integrations.Telegram/ + ├── Services/ + ├── Activities/ + ├── AI/ ``` ## ⚡ Getting Started From e35c4540f8d45e81e8d5fa9a0a268d3bec33fbd2 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 4 May 2025 15:45:45 +0100 Subject: [PATCH 15/23] Aligns Directory.Build.props with Elsa-Core's setup and re-points the Project/Repo URLs to Elsa-Integrations. --- Directory.Build.props | 16 +++++++++++++--- Elsa.Integrations.sln | 14 +++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index fd0848eb..b1d2b18d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,8 +3,8 @@ Elsa Workflows Community 2025 - https://github.com/elsa-workflows/elsa-core - https://github.com/elsa-workflows/elsa-core + https://github.com/elsa-workflows/elsa-integrations + https://github.com/elsa-workflows/elsa-integrations git latest @@ -21,11 +21,21 @@ Default latest + enable + all + true snupkg true - + + false + + + $(NoWarn);CS0162;CS1591 + + $(NoWarn);IL2026;IL2046;IL2057;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091 + 3.5.0-preview.2783 diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index d3456008..a40311bd 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -83,12 +83,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agents", "agents", "{5220DB25-20E9-4D07-801C-A970E71FB21C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Core", "src\agents\Elsa.Integrations.Agents.Core\Elsa.Integrations.Agents.Core.csproj", "{5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Activities", "src\agents\Elsa.Integrations.Agents.Activities\Elsa.Integrations.Agents.Activities.csproj", "{1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Api", "src\agents\Elsa.Integrations.Agents.Api\Elsa.Integrations.Agents.Api.csproj", "{803E4C85-C898-7F96-0C9B-3B1738F450C9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Core", "src\agents\Elsa.Integrations.Agents.Core\Elsa.Integrations.Agents.Core.csproj", "{5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Models", "src\agents\Elsa.Integrations.Agents.Models\Elsa.Integrations.Agents.Models.csproj", "{5EFF79C1-CAC8-72E6-B97E-0A0327293389}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence", "src\agents\Elsa.Integrations.Agents.Persistence\Elsa.Integrations.Agents.Persistence.csproj", "{2F068118-E972-CBCB-1D84-8B1B8AB779CD}" @@ -165,10 +165,6 @@ Global {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Debug|Any CPU.Build.0 = Debug|Any CPU {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.ActiveCfg = Release|Any CPU {C61EF9E3-807F-42D8-2C6E-EA155EABBD49}.Release|Any CPU.Build.0 = Release|Any CPU - {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.Build.0 = Release|Any CPU {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Debug|Any CPU.Build.0 = Debug|Any CPU {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -177,6 +173,10 @@ Global {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Debug|Any CPU.Build.0 = Debug|Any CPU {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {803E4C85-C898-7F96-0C9B-3B1738F450C9}.Release|Any CPU.Build.0 = Release|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8}.Release|Any CPU.Build.0 = Release|Any CPU {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Debug|Any CPU.Build.0 = Debug|Any CPU {5EFF79C1-CAC8-72E6-B97E-0A0327293389}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -232,9 +232,9 @@ Global {D71D34D1-91B0-463F-84A4-3117CE4BBED6} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {C61EF9E3-807F-42D8-2C6E-EA155EABBD49} = {D71D34D1-91B0-463F-84A4-3117CE4BBED6} {5220DB25-20E9-4D07-801C-A970E71FB21C} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {803E4C85-C898-7F96-0C9B-3B1738F450C9} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {5EFF79C1-CAC8-72E6-B97E-0A0327293389} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {2F068118-E972-CBCB-1D84-8B1B8AB779CD} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {54D75227-4330-4F73-8BB8-54697C0CEA88} = {5220DB25-20E9-4D07-801C-A970E71FB21C} From 60147d69768f193750850123d27f602920e6cc37 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 4 May 2025 16:44:55 +0100 Subject: [PATCH 16/23] Update icon path. --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index db78798a..84212213 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -7,7 +7,7 @@ - + From 85affb32346fcdb65e090218cbca8767fbcc1895 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 5 May 2025 02:00:09 +0100 Subject: [PATCH 17/23] Add status icons and databases to README. Refines README-TEMPLATE and CONTRIBUTING. --- CONTRIBUTING.md | 7 +-- Elsa.Integrations.sln | 16 ++--- README-TEMPLATE.md | 8 +-- README.md | 134 ++++++++++++++++++++++++++---------------- 4 files changed, 98 insertions(+), 67 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60777412..e8eed5b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,8 +36,7 @@ git checkout -b feature/integration-name ``` Follow the repository's structure when adding a new integration: ``` -[integration-name]/ - ├── README.md +[group-name]/ └── Elsa.Integrations.[integration-name]/ ├── Services/ ├── Activities/ @@ -49,7 +48,7 @@ Follow the repository's structure when adding a new integration: Ensure your code follows the project’s conventions and add meaningful commit messages: ```sh git add . -git commit -m "Add support for [integration name]" +git commit -m "Add support for [integration-name]" git push origin feature/integration-name ``` @@ -68,7 +67,7 @@ Our team will review your PR, provide feedback if necessary, and merge it once a ## 🛠 Contribution Guidelines - **Code Style**: Follow `.editorconfig` settings and existing project conventions. -- **Documentation**: Every integration must have a `README.md` at the root of its folder. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). +- **Documentation**: Every integration must have a `README.md` at the root of its group folder or project. See [README-TEMPLATE](https://github.com/elsa-workflows/elsa-integrations/blob/main/README-TEMPLATE.md). - **Tests**: If possible, add unit/integration tests for your changes. --- diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index a40311bd..8bc17570 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -63,8 +63,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.Sqlit EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Sql.SqlServer", "src\sql\Elsa.Integrations.Sql.SqlServer\Elsa.Integrations.Sql.SqlServer.csproj", "{80692FAE-701B-F877-198B-2B93A428B0C0}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{AD4F2AD8-ADFB-40A4-B39E-15EE3544587F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Slack", "src\slack\Elsa.Integrations.Slack\Elsa.Integrations.Slack.csproj", "{1B26082A-070B-4E1F-773F-9A7DD6170A98}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure", "azure", "{45B793EC-7BFF-45C0-BD0E-2D1601C8D01E}" @@ -77,8 +75,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "orchardcore", "orchardcore" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.OrchardCore", "src\orchardcore\Elsa.Integrations.OrchardCore\Elsa.Integrations.OrchardCore.csproj", "{C1929745-1160-E32A-FE78-AD09FDBA05B7}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{D71D34D1-91B0-463F-84A4-3117CE4BBED6}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Telnyx", "src\telnyx\Elsa.Integrations.Telnyx\Elsa.Integrations.Telnyx.csproj", "{C61EF9E3-807F-42D8-2C6E-EA155EABBD49}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agents", "agents", "{5220DB25-20E9-4D07-801C-A970E71FB21C}" @@ -103,6 +99,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Pe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj", "{147E36AC-D212-1D28-3ABD-28AC1BC54FB5}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{897A92CE-3B9D-43DA-BBDE-085A6AA0BF33}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{44E2676B-6F07-44F1-9FAB-4A961A1ECEDE}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -222,15 +222,13 @@ Global {BD398E79-90DF-510C-2419-C135CCF55C47} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {3ECB4951-DB9A-C129-F6BD-432AEAEA5997} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {80692FAE-701B-F877-198B-2B93A428B0C0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {1B26082A-070B-4E1F-773F-9A7DD6170A98} = {AD4F2AD8-ADFB-40A4-B39E-15EE3544587F} + {1B26082A-070B-4E1F-773F-9A7DD6170A98} = {897A92CE-3B9D-43DA-BBDE-085A6AA0BF33} {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {098825FF-A9AB-4888-E8B7-A796774C210B} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} {CA62F376-8144-19CD-65F4-E346C2E53F4C} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} {AAD61D93-7C78-42C4-9F37-2564D127A668} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {C1929745-1160-E32A-FE78-AD09FDBA05B7} = {AAD61D93-7C78-42C4-9F37-2564D127A668} - {D71D34D1-91B0-463F-84A4-3117CE4BBED6} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {C61EF9E3-807F-42D8-2C6E-EA155EABBD49} = {D71D34D1-91B0-463F-84A4-3117CE4BBED6} + {C61EF9E3-807F-42D8-2C6E-EA155EABBD49} = {44E2676B-6F07-44F1-9FAB-4A961A1ECEDE} {5220DB25-20E9-4D07-801C-A970E71FB21C} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {1C8B3D55-FF90-FCA1-6528-93E3E5BC88FF} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {803E4C85-C898-7F96-0C9B-3B1738F450C9} = {5220DB25-20E9-4D07-801C-A970E71FB21C} @@ -242,6 +240,8 @@ Global {12AB96A5-5BCB-1F24-F368-40925F6C20E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {38E6D902-BF27-5356-BE90-B6EA79E2A780} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {147E36AC-D212-1D28-3ABD-28AC1BC54FB5} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {897A92CE-3B9D-43DA-BBDE-085A6AA0BF33} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {44E2676B-6F07-44F1-9FAB-4A961A1ECEDE} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/README-TEMPLATE.md b/README-TEMPLATE.md index 05f47596..a456a807 100644 --- a/README-TEMPLATE.md +++ b/README-TEMPLATE.md @@ -15,9 +15,9 @@ For convenience, you can search and replace the following keywords for quicker b | [CompatibleVersion] | Version the integration works with | V3 | ## 📦 Integration Structure -Each integration should be organized into its own folder. Copy this README template file into the root of your integration's directory and rename it to `README.md`. For example: +Each integration should be organized into its own group folder. Copy this README template file into the root of your integration's directory and rename it to `README.md`. For example: ``` -[integration-name]/ +[group-name]/ ├── README.md ├── Elsa.Integrations.[integration-name]/ │ ├── Services/ @@ -126,13 +126,11 @@ services.AddElsa(elsa => Or via `appsettings.json`: ```json -"Elsa": { - "[integration-name]": { +"[integration-name]": { "Property1": "value1", "Config": { "Property2": "value2" } - } } ``` diff --git a/README.md b/README.md index 7eeb0668..4cb60b9c 100644 --- a/README.md +++ b/README.md @@ -6,101 +6,135 @@ Welcome to the **Elsa Integrations** repository! This project provides a collect ## 🚀 Integration Status -Below is the current status of each integration. Checkboxes indicate implementation progress. +Below is the current status of each integration. Icons indicate implementation progress: + + - ✅ = Released + - ⏳ = Soon to be released + - 🚧 = In development + - 🔲 = Not started ### 📨 Messaging & Communication | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Telegram** | Send & receive messages, file downloads | `Elsa.Integrations.Telegram` | | -| [x] | **Slack** | Channel messages, user notifications | `Elsa.Integrations.Slack` | | -| [ ] | **Discord** | Bot commands, message triggers | `Elsa.Integrations.Discord` | | -| [ ] | **Microsoft Teams** | Chat automation, meeting reminders | `Elsa.Integrations.Teams` | | -| [x] | **Telnyx** | Telephony automation | `Elsa.Integrations.Telnyx` | | +| 🔲 | **Telegram** | Send & receive messages, file downloads | `Elsa.Integrations.Telegram` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/slack/Elsa.Integrations.Slack) | **Slack** | Channel messages, user notifications | `Elsa.Integrations.Slack` | [View Issue](https://github.com/elsa-workflows/elsa-integrations/issues/#26) | +| 🔲 | **Discord** | Bot commands, message triggers | `Elsa.Integrations.Discord` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Microsoft Teams** | Chat automation, meeting reminders | `Elsa.Integrations.Teams` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| [✅](https://github.com/elsa-workflows/elsa-integrations/tree/main/src/telnyx/Elsa.Integrations.Telnyx) | **Telnyx** | Telephony automation | `Elsa.Integrations.Telnyx` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 📧 Email & Productivity | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Gmail** | Send, receive, label, draft emails | `Elsa.Integrations.Gmail` | | -| [ ] | **Outlook (Office 365)** | Email management via Microsoft Graph API | `Elsa.Integrations.Outlook` | | -| [ ] | **Google Calendar** | Event scheduling and updates | `Elsa.Integrations.GoogleCalendar` | | -| [ ] | **Microsoft Calendar** | Office 365 calendar integration | `Elsa.Integrations.Office365Calendar` | | +| 🔲 | **Gmail** | Send, receive, label, draft emails | `Elsa.Integrations.Gmail` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Outlook (Office 365)** | Email management via Microsoft Graph API | `Elsa.Integrations.Outlook` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Google Calendar** | Event scheduling and updates | `Elsa.Integrations.GoogleCalendar` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Microsoft Calendar** | Office 365 calendar integration | `Elsa.Integrations.Office365Calendar` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 🗄️ Storage Services | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Google Drive** | Upload, download, manage files | `Elsa.Integrations.GoogleDrive` | | -| [ ] | **OneDrive** | File storage and access for Office 365 | `Elsa.Integrations.OneDrive` | | -| [ ] | **Azure Storage** | Blob storage management | `Elsa.Integrations.AzureStorage` | https://github.com/elsa-workflows/elsa-integrations/issues/1 | -| [ ] | **Dropbox** | Cloud storage and file sync | `Elsa.Integrations.Dropbox` | | +| 🔲 | **Google Drive** | Upload, download, manage files | `Elsa.Integrations.GoogleDrive` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **OneDrive** | File storage and access for Office 365 | `Elsa.Integrations.OneDrive` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🚧 | **Azure Storage** | Blob storage management | `Elsa.Integrations.AzureStorage` | [View Issue](https://github.com/elsa-workflows/elsa-integrations/issues/1) | +| 🔲 | **Dropbox** | Cloud storage and file sync | `Elsa.Integrations.Dropbox` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | + +### 🗃️ Databases (SQL) +| Status | Integration | Description | Module Name | Issue | +|--------|------------|-------------|-------------|-------| +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/sql/README.md) | **MySql** | Connect and query MySQL databases | `Elsa.Integrations.Sql.MySql` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/sql/README.md) | **PostgreSql** | Connect and query PostgreSql databases | `Elsa.Integrations.Sql.PostgreSql` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/sql/README.md) | **Sqlite** | Connect and query Sqlite databases | `Elsa.Integrations.Sql.Sqlite` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/sql/README.md) | **Sql Server** | Connect and query Microsoft SQL Server databases | `Elsa.Integrations.Sql.SqlServer` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 🛠 DevOps & Monitoring | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Azure DevOps** | Pipelines, repositories, work items | `Elsa.Integrations.AzureDevOps` | | -| [ ] | **GitHub** | PR automation, repo events | `Elsa.Integrations.GitHub` | | -| [ ] | **GitLab** | CI/CD triggers and repo management | `Elsa.Integrations.GitLab` | | -| [ ] | **Jenkins** | Pipeline automation and job execution | `Elsa.Integrations.Jenkins` | | -| [ ] | **Datadog** | Monitoring, logging, and alerts | `Elsa.Integrations.Datadog` | | +| 🔲 | **Azure DevOps** | Pipelines, repositories, work items | `Elsa.Integrations.AzureDevOps` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **GitHub** | PR automation, repo events | `Elsa.Integrations.GitHub` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **GitLab** | CI/CD triggers and repo management | `Elsa.Integrations.GitLab` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Jenkins** | Pipeline automation and job execution | `Elsa.Integrations.Jenkins` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Datadog** | Monitoring, logging, and alerts | `Elsa.Integrations.Datadog` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### ☁️ Cloud Compute & Serverless | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Azure Functions** | Serverless function triggers | `Elsa.Integrations.AzureFunctions` | | -| [ ] | **AWS Lambda** | Invoke and trigger Lambda functions | `Elsa.Integrations.AWSLambda` | | -| [ ] | **Google Cloud Functions** | Event-driven function automation | `Elsa.Integrations.GoogleCloudFunctions` | | +| 🔲 | **Azure Functions** | Serverless function triggers | `Elsa.Integrations.AzureFunctions` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **AWS Lambda** | Invoke and trigger Lambda functions | `Elsa.Integrations.AWSLambda` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Google Cloud Functions** | Event-driven function automation | `Elsa.Integrations.GoogleCloudFunctions` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 📊 CRM & Sales Automation | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Salesforce** | Lead management, opportunity tracking | `Elsa.Integrations.Salesforce` | [Open Issue](#) | -| [ ] | **HubSpot** | Contacts, deals, email automation | `Elsa.Integrations.HubSpot` | [Open Issue](#) | -| [ ] | **Zoho CRM** | Lead scoring, campaign tracking | `Elsa.Integrations.ZohoCRM` | [Open Issue](#) | -| [ ] | **Pipedrive** | Sales pipeline automation | `Elsa.Integrations.Pipedrive` | [Open Issue](#) | +| 🔲 | **Salesforce** | Lead management, opportunity tracking | `Elsa.Integrations.Salesforce` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **HubSpot** | Contacts, deals, email automation | `Elsa.Integrations.HubSpot` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Zoho CRM** | Lead scoring, campaign tracking | `Elsa.Integrations.ZohoCRM` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Pipedrive** | Sales pipeline automation | `Elsa.Integrations.Pipedrive` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 💰 Payments & Finance | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **Stripe** | Payment processing, subscriptions | `Elsa.Integrations.Stripe` | | -| [ ] | **PayPal** | Transactions, refunds, invoicing | `Elsa.Integrations.PayPal` | | -| [ ] | **Square** | POS and e-commerce transactions | `Elsa.Integrations.Square` | | -| [ ] | **QuickBooks** | Invoice and expense automation | `Elsa.Integrations.QuickBooks` | | +| 🔲 | **Stripe** | Payment processing, subscriptions | `Elsa.Integrations.Stripe` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **PayPal** | Transactions, refunds, invoicing | `Elsa.Integrations.PayPal` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Square** | POS and e-commerce transactions | `Elsa.Integrations.Square` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **QuickBooks** | Invoice and expense automation | `Elsa.Integrations.QuickBooks` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 🤖 AI & Automation | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **OpenAI** | GPT-based text generation, chatbots | `Elsa.Integrations.OpenAI` | | -| [ ] | **Google AI** | AI-enhanced search, translation | `Elsa.Integrations.GoogleAI` | | -| [ ] | **AWS Comprehend** | NLP services for text analysis | `Elsa.Integrations.AWSComprehend` | | -| [ ] | **Azure AI** | Vision, speech, language processing | `Elsa.Integrations.AzureAI` | | +| 🔲 | **OpenAI** | GPT-based text generation, chatbots | `Elsa.Integrations.OpenAI` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Google AI** | AI-enhanced search, translation | `Elsa.Integrations.GoogleAI` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **AWS Comprehend** | NLP services for text analysis | `Elsa.Integrations.AWSComprehend` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Azure AI** | Vision, speech, language processing | `Elsa.Integrations.AzureAI` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 🎥 Video & Streaming Platforms | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **YouTube** | Upload videos, retrieve video details, manage playlists | `Elsa.Integrations.YouTube` | [Open Issue](#) | -| [ ] | **Rumble** | Upload videos, fetch channel videos, manage content | `Elsa.Integrations.Rumble` | [Open Issue](#) | -| [ ] | **Twitch** | Live stream events, chat automation, clip management | `Elsa.Integrations.Twitch` | [Open Issue](#) | -| [ ] | **Vimeo** | Upload videos, manage privacy settings, get video analytics | `Elsa.Integrations.Vimeo` | [Open Issue](#) | +| 🔲 | **YouTube** | Upload videos, retrieve video details, manage playlists | `Elsa.Integrations.YouTube` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new)| +| 🔲 | **Rumble** | Upload videos, fetch channel videos, manage content | `Elsa.Integrations.Rumble` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Twitch** | Live stream events, chat automation, clip management | `Elsa.Integrations.Twitch` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Vimeo** | Upload videos, manage privacy settings, get video analytics | `Elsa.Integrations.Vimeo` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | ### 🏭 Industrial Communication Protocols | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| -| [ ] | **OPC UA** | Browse nodes, Read/Write values, Subscribe/Unsubscribe nodes | `Elsa.Integrations.OPC.UA` | | -| [ ] | **Modbus** | Read/Write coils, Read discrete Inputs, Read/Write registers | `Elsa.Integrations.Modbus` | | -| [ ] | **MQTT Sparkplug** | Discover and Subscribe to topics, Publish messages | `Elsa.Integrations.MQTT.Sparkplug` | | +| 🔲 | **OPC UA** | Browse nodes, Read/Write values, Subscribe/Unsubscribe nodes | `Elsa.Integrations.OPC.UA` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **Modbus** | Read/Write coils, Read discrete Inputs, Read/Write registers | `Elsa.Integrations.Modbus` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | +| 🔲 | **MQTT Sparkplug** | Discover and Subscribe to topics, Publish messages | `Elsa.Integrations.MQTT.Sparkplug` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | + --- ## 📦 Structure Each integration is structured as a standalone package under the `Elsa.Integrations` namespace. Example: -``` -Elsa.Integrations.Gmail/ - ├── Services/ - ├── Activities/ - ├── AI/ -Elsa.Integrations.Telegram/ - ├── Services/ - ├── Activities/ - ├── AI/ + +```plaintext +... +├─azure/ +│ ├── Elsa.Integrations.AzureServiceBus/ +│ │ ├── README.md +│ │ ├── Services/ +│ │ ├── Activities/ +│ │ ├── AI/ +│ │ └── ... +│ └── Elsa.Integrations.AzureStorage/ +│ ├── README.md +│ ├── Services/ +│ ├── Activities/ +│ ├── AI/ +│ └── ... +├─sql/ +│ ├── README.md +│ ├── Elsa.Integrations.Sql/ +│ │ ├── Services/ +│ │ ├── Activities/ +│ │ ├── AI/ +│ │ └── ... +│ └── Elsa.Integrations.Sql.Sqlite/ +│ ├── Services/ +│ ├── Activities/ +│ ├── AI/ +│ └── ... +... ``` ## ⚡ Getting Started From 13832714649d4266d46e9d7f04a34b137c57c27e Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 5 May 2025 02:04:10 +0100 Subject: [PATCH 18/23] Fix broken link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4cb60b9c..28209820 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Below is the current status of each integration. Icons indicate implementation p | Status | Integration | Description | Module Name | Issue | |--------|------------|-------------|-------------|-------| | 🔲 | **Telegram** | Send & receive messages, file downloads | `Elsa.Integrations.Telegram` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | -| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/slack/Elsa.Integrations.Slack) | **Slack** | Channel messages, user notifications | `Elsa.Integrations.Slack` | [View Issue](https://github.com/elsa-workflows/elsa-integrations/issues/#26) | +| [✅]( https://github.com/elsa-workflows/elsa-integrations/tree/main/src/slack/Elsa.Integrations.Slack) | **Slack** | Channel messages, user notifications | `Elsa.Integrations.Slack` | [View Issue](https://github.com/elsa-workflows/elsa-integrations/issues/26) | | 🔲 | **Discord** | Bot commands, message triggers | `Elsa.Integrations.Discord` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | | 🔲 | **Microsoft Teams** | Chat automation, meeting reminders | `Elsa.Integrations.Teams` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | | [✅](https://github.com/elsa-workflows/elsa-integrations/tree/main/src/telnyx/Elsa.Integrations.Telnyx) | **Telnyx** | Telephony automation | `Elsa.Integrations.Telnyx` | [Open Issue](https://github.com/elsa-workflows/elsa-integrations/issues/new) | From dee1de6f748cef41433fd5f0d3cbfdd22d18f79d Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 5 May 2025 22:45:56 +0100 Subject: [PATCH 19/23] Rename 'EntiryFrameworkCore' to 'EFCore' to reduce file path length. --- Directory.Packages.props | 2 + Elsa.Integrations.sln | 64 +++++++++---------- .../AgentsMySqlProvidersExtensions.cs | 2 +- .../DbContextFactories.cs | 2 +- ...ns.Agents.Persistence.EFCore.MySql.csproj} | 2 +- .../FodyWeavers.xml | 0 .../20250302144856_V3_4.Designer.cs | 4 +- .../Migrations/20250302144856_V3_4.cs | 2 +- .../AgentsDbContextModelSnapshot.cs | 4 +- .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 2 +- ...ents.Persistence.EFCore.PostgreSql.csproj} | 2 +- .../FodyWeavers.xml | 0 .../20250302144916_V3_4.Designer.cs | 4 +- .../Migrations/20250302144916_V3_4.cs | 2 +- .../AgentsDbContextModelSnapshot.cs | 4 +- .../PostgreSqlProvidersExtensions.cs | 2 +- .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 2 +- ...gents.Persistence.EFCore.SqlServer.csproj} | 2 +- .../FodyWeavers.xml | 0 .../20250302144957_V3_4.Designer.cs | 4 +- .../Migrations/20250302144957_V3_4.cs | 2 +- .../AgentsDbContextModelSnapshot.cs | 4 +- .../SqlServerProvidersExtensions.cs | 2 +- .../efcore-3.4.sh | 0 .../DbContextFactories.cs | 2 +- ...s.Agents.Persistence.EFCore.Sqlite.csproj} | 2 +- .../FodyWeavers.xml | 0 .../20250302144940_V3_4.Designer.cs | 4 +- .../Migrations/20250302144940_V3_4.cs | 2 +- .../AgentsDbContextModelSnapshot.cs | 4 +- .../SqliteProvidersExtensions.cs | 2 +- .../efcore-3.4.sh | 0 .../Configurations.cs | 2 +- .../DbContext.cs | 2 +- .../EFCoreAgentStore.cs | 2 +- .../EFCoreApiKeyStore.cs | 2 +- .../EFCoreServiceStore.cs | 2 +- ...grations.Agents.Persistence.EFCore.csproj} | 0 .../Extensions.cs | 2 +- .../Feature.cs | 2 +- .../FodyWeavers.xml | 0 43 files changed, 73 insertions(+), 71 deletions(-) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/AgentsMySqlProvidersExtensions.cs (91%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/DbContextFactories.cs (87%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj => Elsa.Integrations.Agents.Persistence.EFCore.MySql/Elsa.Integrations.Agents.Persistence.EFCore.MySql.csproj} (88%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/FodyWeavers.xml (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/Migrations/20250302144856_V3_4.Designer.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/Migrations/20250302144856_V3_4.cs (98%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/Migrations/AgentsDbContextModelSnapshot.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql => Elsa.Integrations.Agents.Persistence.EFCore.MySql}/efcore-3.4.sh (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/DbContextFactories.cs (85%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.csproj} (87%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/FodyWeavers.xml (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/Migrations/20250302144916_V3_4.Designer.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/Migrations/20250302144916_V3_4.cs (98%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/Migrations/AgentsDbContextModelSnapshot.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/PostgreSqlProvidersExtensions.cs (91%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql => Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql}/efcore-3.4.sh (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/DbContextFactories.cs (85%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj} (88%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/FodyWeavers.xml (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/Migrations/20250302144957_V3_4.Designer.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/Migrations/20250302144957_V3_4.cs (98%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/Migrations/AgentsDbContextModelSnapshot.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/SqlServerProvidersExtensions.cs (91%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer => Elsa.Integrations.Agents.Persistence.EFCore.SqlServer}/efcore-3.4.sh (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/DbContextFactories.cs (86%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.csproj} (88%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/FodyWeavers.xml (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/Migrations/20250302144940_V3_4.Designer.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/Migrations/20250302144940_V3_4.cs (98%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/Migrations/AgentsDbContextModelSnapshot.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/SqliteProvidersExtensions.cs (94%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite => Elsa.Integrations.Agents.Persistence.EFCore.Sqlite}/efcore-3.4.sh (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/Configurations.cs (95%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/DbContext.cs (95%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/EFCoreAgentStore.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/EFCoreApiKeyStore.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/EFCoreServiceStore.cs (96%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj => Elsa.Integrations.Agents.Persistence.EFCore/Elsa.Integrations.Agents.Persistence.EFCore.csproj} (100%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/Extensions.cs (91%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/Feature.cs (94%) rename src/agents/{Elsa.Integrations.Agents.Persistence.EntityFrameworkCore => Elsa.Integrations.Agents.Persistence.EFCore}/FodyWeavers.xml (100%) diff --git a/Directory.Packages.props b/Directory.Packages.props index 1d358690..341a4fe6 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -16,6 +16,7 @@ + @@ -27,6 +28,7 @@ + diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index 8bc17570..c7c6e941 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -89,19 +89,19 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Mo EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence", "src\agents\Elsa.Integrations.Agents.Persistence\Elsa.Integrations.Agents.Persistence.csproj", "{2F068118-E972-CBCB-1D84-8B1B8AB779CD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj", "{54D75227-4330-4F73-8BB8-54697C0CEA88}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{897A92CE-3B9D-43DA-BBDE-085A6AA0BF33}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj", "{EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{44E2676B-6F07-44F1-9FAB-4A961A1ECEDE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj", "{12AB96A5-5BCB-1F24-F368-40925F6C20E8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore\Elsa.Integrations.Agents.Persistence.EFCore.csproj", "{CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{38E6D902-BF27-5356-BE90-B6EA79E2A780}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore.MySql", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore.MySql\Elsa.Integrations.Agents.Persistence.EFCore.MySql.csproj", "{2B82D0C6-FCC1-D99D-F00F-EC624A693E2C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql", "src\agents\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql\Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj", "{147E36AC-D212-1D28-3ABD-28AC1BC54FB5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql\Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.csproj", "{AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "slack", "slack", "{897A92CE-3B9D-43DA-BBDE-085A6AA0BF33}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore.Sqlite", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore.Sqlite\Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.csproj", "{22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "telnyx", "telnyx", "{44E2676B-6F07-44F1-9FAB-4A961A1ECEDE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore.SqlServer", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore.SqlServer\Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj", "{FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -185,26 +185,26 @@ Global {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Debug|Any CPU.Build.0 = Debug|Any CPU {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Release|Any CPU.ActiveCfg = Release|Any CPU {2F068118-E972-CBCB-1D84-8B1B8AB779CD}.Release|Any CPU.Build.0 = Release|Any CPU - {54D75227-4330-4F73-8BB8-54697C0CEA88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {54D75227-4330-4F73-8BB8-54697C0CEA88}.Debug|Any CPU.Build.0 = Debug|Any CPU - {54D75227-4330-4F73-8BB8-54697C0CEA88}.Release|Any CPU.ActiveCfg = Release|Any CPU - {54D75227-4330-4F73-8BB8-54697C0CEA88}.Release|Any CPU.Build.0 = Release|Any CPU - {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8}.Release|Any CPU.Build.0 = Release|Any CPU - {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12AB96A5-5BCB-1F24-F368-40925F6C20E8}.Release|Any CPU.Build.0 = Release|Any CPU - {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Debug|Any CPU.Build.0 = Debug|Any CPU - {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Release|Any CPU.ActiveCfg = Release|Any CPU - {38E6D902-BF27-5356-BE90-B6EA79E2A780}.Release|Any CPU.Build.0 = Release|Any CPU - {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {147E36AC-D212-1D28-3ABD-28AC1BC54FB5}.Release|Any CPU.Build.0 = Release|Any CPU + {CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A}.Release|Any CPU.Build.0 = Release|Any CPU + {2B82D0C6-FCC1-D99D-F00F-EC624A693E2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B82D0C6-FCC1-D99D-F00F-EC624A693E2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B82D0C6-FCC1-D99D-F00F-EC624A693E2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B82D0C6-FCC1-D99D-F00F-EC624A693E2C}.Release|Any CPU.Build.0 = Release|Any CPU + {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D}.Release|Any CPU.Build.0 = Release|Any CPU + {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8}.Release|Any CPU.Build.0 = Release|Any CPU + {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -235,13 +235,13 @@ Global {5B09EF59-5F6B-885A-126A-3D1BCFDC65E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {5EFF79C1-CAC8-72E6-B97E-0A0327293389} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {2F068118-E972-CBCB-1D84-8B1B8AB779CD} = {5220DB25-20E9-4D07-801C-A970E71FB21C} - {54D75227-4330-4F73-8BB8-54697C0CEA88} = {5220DB25-20E9-4D07-801C-A970E71FB21C} - {EB2FC12A-205B-66D5-3F05-1E9DB382E2F8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} - {12AB96A5-5BCB-1F24-F368-40925F6C20E8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} - {38E6D902-BF27-5356-BE90-B6EA79E2A780} = {5220DB25-20E9-4D07-801C-A970E71FB21C} - {147E36AC-D212-1D28-3ABD-28AC1BC54FB5} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {897A92CE-3B9D-43DA-BBDE-085A6AA0BF33} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} {44E2676B-6F07-44F1-9FAB-4A961A1ECEDE} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} + {CEA60FE9-5CFD-24E1-9BCC-E1289E8C4B1A} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {2B82D0C6-FCC1-D99D-F00F-EC624A693E2C} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50} = {5220DB25-20E9-4D07-801C-A970E71FB21C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/AgentsMySqlProvidersExtensions.cs similarity index 91% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/AgentsMySqlProvidersExtensions.cs index a247a3b6..08845a76 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/AgentsMySqlProvidersExtensions.cs @@ -1,5 +1,5 @@ using System.Reflection; -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; // ReSharper disable once CheckNamespace namespace Elsa.EntityFrameworkCore.Extensions; diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/DbContextFactories.cs similarity index 87% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/DbContextFactories.cs index 76ba7473..e3ab42bc 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/DbContextFactories.cs @@ -3,7 +3,7 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql; +namespace Elsa.Integrations.Agents.Persistence.EFCore.MySql; [UsedImplicitly] public class MySqlAgentsDbContextFactory : DesignTimeDbContextFactoryBase diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Elsa.Integrations.Agents.Persistence.EFCore.MySql.csproj similarity index 88% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Elsa.Integrations.Agents.Persistence.EFCore.MySql.csproj index 1b98e8e2..2fa973f0 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.csproj +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Elsa.Integrations.Agents.Persistence.EFCore.MySql.csproj @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/FodyWeavers.xml similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/FodyWeavers.xml diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.Designer.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.Designer.cs index 1e75e194..40e6a7ff 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.Designer.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.MySql.Migrations { [DbContext(typeof(AgentsDbContext))] [Migration("20250302144856_V3_4")] diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.cs similarity index 98% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.cs index 828958d4..dc075410 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20250302144856_V3_4.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/20250302144856_V3_4.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.MySql.Migrations { /// public partial class V3_4 : Migration diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs index ec2ad3d8..6828f1d8 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -7,7 +7,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.MySql.Migrations { [DbContext(typeof(AgentsDbContext))] partial class AgentsDbContextModelSnapshot : ModelSnapshot diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/efcore-3.4.sh similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.MySql/efcore-3.4.sh diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/DbContextFactories.cs similarity index 85% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/DbContextFactories.cs index 9070a895..b39117d7 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/DbContextFactories.cs @@ -3,7 +3,7 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql; +namespace Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql; [UsedImplicitly] public class PostgreSqlAgentsDbContextFactory : DesignTimeDbContextFactoryBase diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.csproj similarity index 87% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.csproj index 1e24f848..4a43b06a 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.csproj @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/FodyWeavers.xml similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/FodyWeavers.xml diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs index bedf2012..6f96501a 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -8,7 +8,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.Migrations { [DbContext(typeof(AgentsDbContext))] [Migration("20250302144916_V3_4")] diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.cs similarity index 98% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.cs index b50a08e3..948a7321 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20250302144916_V3_4.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/20250302144916_V3_4.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.Migrations { /// public partial class V3_4 : Migration diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs index 957b4e2f..a9b23018 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; @@ -7,7 +7,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql.Migrations { [DbContext(typeof(AgentsDbContext))] partial class AgentsDbContextModelSnapshot : ModelSnapshot diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/PostgreSqlProvidersExtensions.cs similarity index 91% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/PostgreSqlProvidersExtensions.cs index 430f3dcb..c8295746 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/PostgreSqlProvidersExtensions.cs @@ -1,5 +1,5 @@ using System.Reflection; -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; // ReSharper disable once CheckNamespace namespace Elsa.EntityFrameworkCore.Extensions; diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/efcore-3.4.sh similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.PostgreSql/efcore-3.4.sh diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/DbContextFactories.cs similarity index 85% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/DbContextFactories.cs index 34ae323e..55966388 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/DbContextFactories.cs @@ -3,7 +3,7 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer; +namespace Elsa.Integrations.Agents.Persistence.EFCore.SqlServer; [UsedImplicitly] public class SqlServerAgentsDbContextFactory : DesignTimeDbContextFactoryBase diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj similarity index 88% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj index 38fb3c96..c6f8a558 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj @@ -12,7 +12,7 @@ - + \ No newline at end of file diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/FodyWeavers.xml similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/FodyWeavers.xml diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs index 9e6b1e39..269cba86 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -8,7 +8,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.Migrations { [DbContext(typeof(AgentsDbContext))] [Migration("20250302144957_V3_4")] diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.cs similarity index 98% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.cs index 6e2e77f2..a1bafdb4 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20250302144957_V3_4.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/20250302144957_V3_4.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.Migrations { /// public partial class V3_4 : Migration diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs index 0a8783c3..4cec3b12 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/Migrations/AgentsDbContextModelSnapshot.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -7,7 +7,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.Migrations { [DbContext(typeof(AgentsDbContext))] partial class AgentsDbContextModelSnapshot : ModelSnapshot diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/SqlServerProvidersExtensions.cs similarity index 91% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/SqlServerProvidersExtensions.cs index 4ded8b54..ef7e6f42 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/SqlServerProvidersExtensions.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/SqlServerProvidersExtensions.cs @@ -1,5 +1,5 @@ using System.Reflection; -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; // ReSharper disable once CheckNamespace namespace Elsa.EntityFrameworkCore.Extensions; diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/efcore-3.4.sh similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.SqlServer/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.SqlServer/efcore-3.4.sh diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/DbContextFactories.cs similarity index 86% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/DbContextFactories.cs index 797f83e8..8883989b 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/DbContextFactories.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/DbContextFactories.cs @@ -3,7 +3,7 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite; +namespace Elsa.Integrations.Agents.Persistence.EFCore.Sqlite; [UsedImplicitly] public class SqliteAgentsDbContextFactory : DesignTimeDbContextFactoryBase diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.csproj similarity index 88% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.csproj index a3f647ce..0a5e048d 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.csproj @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/FodyWeavers.xml similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/FodyWeavers.xml diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs index 942084bf..f30d14c1 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.Designer.cs @@ -1,5 +1,5 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -7,7 +7,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.Migrations { [DbContext(typeof(AgentsDbContext))] [Migration("20250302144940_V3_4")] diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.cs similarity index 98% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.cs index 911cfe86..1231add7 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/20250302144940_V3_4.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/20250302144940_V3_4.cs @@ -2,7 +2,7 @@ #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.Migrations { /// public partial class V3_4 : Migration diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs index 0a42dc84..0ba47552 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/Migrations/AgentsDbContextModelSnapshot.cs @@ -1,12 +1,12 @@ // -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite.Migrations +namespace Elsa.Integrations.Agents.Persistence.EFCore.Sqlite.Migrations { [DbContext(typeof(AgentsDbContext))] partial class AgentsDbContextModelSnapshot : ModelSnapshot diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs similarity index 94% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs index b3cd72c0..802c0955 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/SqliteProvidersExtensions.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/SqliteProvidersExtensions.cs @@ -1,5 +1,5 @@ using System.Reflection; -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; // ReSharper disable once CheckNamespace namespace Elsa.EntityFrameworkCore.Extensions; diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/efcore-3.4.sh similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.Sqlite/efcore-3.4.sh rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore.Sqlite/efcore-3.4.sh diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Configurations.cs similarity index 95% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Configurations.cs index d9d79dc6..882dab5f 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Configurations.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Configurations.cs @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// EF Core configuration for various entity types. diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/DbContext.cs similarity index 95% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/DbContext.cs index d750df78..64cad47f 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/DbContext.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/DbContext.cs @@ -3,7 +3,7 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// DB context for the Agents module. diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreAgentStore.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreAgentStore.cs index a459a361..7f711ce9 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreAgentStore.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreAgentStore.cs @@ -4,7 +4,7 @@ using Elsa.Integrations.Agents.Persistence.Filters; using JetBrains.Annotations; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// An EF Core implementation of . diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreApiKeyStore.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreApiKeyStore.cs index ec4740bd..67437a5d 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreApiKeyStore.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreApiKeyStore.cs @@ -4,7 +4,7 @@ using Elsa.Integrations.Agents.Persistence.Filters; using JetBrains.Annotations; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// An EF Core implementation of . diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreServiceStore.cs similarity index 96% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreServiceStore.cs index 4a8f0895..ca5229b5 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/EFCoreServiceStore.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/EFCoreServiceStore.cs @@ -4,7 +4,7 @@ using Elsa.Integrations.Agents.Persistence.Filters; using JetBrains.Annotations; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// An EF Core implementation of . diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Elsa.Integrations.Agents.Persistence.EFCore.csproj similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore.csproj rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Elsa.Integrations.Agents.Persistence.EFCore.csproj diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Extensions.cs similarity index 91% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Extensions.cs index c76d1dbb..d3f6bb81 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Extensions.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Extensions.cs @@ -1,4 +1,4 @@ -using Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +using Elsa.Integrations.Agents.Persistence.EFCore; using Elsa.Integrations.Agents.Persistence.Features; using JetBrains.Annotations; diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Feature.cs similarity index 94% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Feature.cs index c8c760fa..b17201b2 100644 --- a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/Feature.cs +++ b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/Feature.cs @@ -5,7 +5,7 @@ using Elsa.Integrations.Agents.Persistence.Features; using Microsoft.Extensions.DependencyInjection; -namespace Elsa.Integrations.Agents.Persistence.EntityFrameworkCore; +namespace Elsa.Integrations.Agents.Persistence.EFCore; /// /// Configures the default workflow runtime to use EF Core persistence providers. diff --git a/src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml b/src/agents/Elsa.Integrations.Agents.Persistence.EFCore/FodyWeavers.xml similarity index 100% rename from src/agents/Elsa.Integrations.Agents.Persistence.EntityFrameworkCore/FodyWeavers.xml rename to src/agents/Elsa.Integrations.Agents.Persistence.EFCore/FodyWeavers.xml From 53516aafcdbe634b617d9d0ecc5f6dfba12197f3 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 10 May 2025 00:45:36 +0100 Subject: [PATCH 20/23] Update All Packages to Latest Version and use Elsa 3.6.0-preview.2935. Renamed ActivityTypeName to Name to match updated BookmarkFilter. --- Directory.Packages.props | 110 ++++++++---------- build/_build.csproj | 4 +- .../Tasks/StartWorkers.cs | 2 +- 3 files changed, 52 insertions(+), 64 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 341a4fe6..5b9b998f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,102 +5,90 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + - + + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/build/_build.csproj b/build/_build.csproj index 465dc8f6..7d5355af 100644 --- a/build/_build.csproj +++ b/build/_build.csproj @@ -3,7 +3,7 @@ Exe net9.0 - + CS0649;CS0169;CA1050;CA1822;CA2211;IDE1006 .. .. @@ -24,7 +24,7 @@ - + diff --git a/src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs b/src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs index 0e22de4f..4a4d8858 100644 --- a/src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs +++ b/src/azure/Elsa.Integrations.AzureServiceBus/Tasks/StartWorkers.cs @@ -27,7 +27,7 @@ public override async Task StartAsync(CancellationToken cancellationToken) var triggerStimuli = (await triggerStore.FindManyAsync(triggerFilter, cancellationToken)).Select(x => x.GetPayload()).ToList(); var bookmarkFilter = new BookmarkFilter { - ActivityTypeName = activityType + Name = activityType }; var bookmarkStimuli = (await bookmarkStore.FindManyAsync(bookmarkFilter, cancellationToken)).Select(x => x.GetPayload()).ToList(); var stimuli = triggerStimuli.Concat(bookmarkStimuli).ToList(); From f45e8615bc4fb9cbf68c3fb0fc432c030ce95ed8 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 10 May 2025 01:20:57 +0100 Subject: [PATCH 21/23] Update Directory.Packages to work with ElsaVersion variable in Directory.Build. --- Directory.Build.props | 5 ++-- Directory.Packages.props | 54 +++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index b1d2b18d..75cd19f1 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -36,7 +36,8 @@ $(NoWarn);IL2026;IL2046;IL2057;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091 - - 3.5.0-preview.2783 + + + 3.6.0-preview.2935 \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 5b9b998f..00292883 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,6 +3,34 @@ true false + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15,32 +43,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - From e166130a5428e9bf686b999b66333d737dd6588a Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 10 May 2025 01:29:42 +0100 Subject: [PATCH 22/23] Simplify further the package dependencies between .net8 & .net9. --- Directory.Packages.props | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 00292883..316e59d4 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -58,8 +58,8 @@ - - + + @@ -84,13 +84,12 @@ + - - + - \ No newline at end of file From e8ec8bce4b96556dead6fcf2eb52829bbd5ad83c Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 12 May 2025 22:15:30 +0100 Subject: [PATCH 23/23] Move Elsa Studio Agents Into Integrations from Elsa Studio. --- Directory.Build.props | 1 + Directory.Packages.props | 82 +++--- Elsa.Integrations.sln | 7 + .../AgentsIcons.cs | 16 ++ .../AgentsMenu.cs | 59 +++++ .../Client/IAgentsApi.cs | 41 +++ .../Client/IApiKeysApi.cs | 37 +++ .../Client/IPluginsApi.cs | 13 + .../Client/IServicesApi.cs | 37 +++ .../Elsa.Studio.Integrations.Agents.csproj | 20 ++ .../Extensions/ServiceCollectionExtensions.cs | 29 +++ .../Feature.cs | 11 + .../FodyWeavers.xml | 3 + .../UI/Components/CreateAgentDialog.razor | 37 +++ .../UI/Components/CreateAgentDialog.razor.cs | 79 ++++++ .../UI/Pages/Agent.razor | 235 ++++++++++++++++++ .../UI/Pages/Agent.razor.cs | 127 ++++++++++ .../UI/Pages/Agents.razor | 74 ++++++ .../UI/Pages/Agents.razor.cs | 134 ++++++++++ .../UI/Pages/ApiKey.razor | 43 ++++ .../UI/Pages/ApiKey.razor.cs | 61 +++++ .../UI/Pages/ApiKeys.razor | 68 +++++ .../UI/Pages/ApiKeys.razor.cs | 92 +++++++ .../UI/Pages/Service.razor | 55 ++++ .../UI/Pages/Service.razor.cs | 71 ++++++ .../UI/Pages/Services.razor | 73 ++++++ .../UI/Pages/Services.razor.cs | 89 +++++++ .../DefaultActivityDisplaySettingsProvider.cs | 23 ++ .../UI/Validators/AgentInputModelValidator.cs | 29 +++ .../Validators/ApiKeyInputModelValidator.cs | 29 +++ .../Validators/ServiceInputModelValidator.cs | 29 +++ .../_Imports.razor | 15 ++ 32 files changed, 1678 insertions(+), 41 deletions(-) create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/AgentsIcons.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/AgentsMenu.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Client/IAgentsApi.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Client/IApiKeysApi.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Client/IPluginsApi.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Client/IServicesApi.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Elsa.Studio.Integrations.Agents.csproj create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Extensions/ServiceCollectionExtensions.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/Feature.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/FodyWeavers.xml create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Providers/DefaultActivityDisplaySettingsProvider.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/AgentInputModelValidator.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ApiKeyInputModelValidator.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ServiceInputModelValidator.cs create mode 100644 src/agents/Elsa.Studio.Integrations.Agents/_Imports.razor diff --git a/Directory.Build.props b/Directory.Build.props index 75cd19f1..bfc6e8f2 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -39,5 +39,6 @@ 3.6.0-preview.2935 + 3.6.0-preview.1018 \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 316e59d4..5b0bc019 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,34 +3,34 @@ true false - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -52,25 +52,25 @@ - - - + + + - - - - - - - + + + + + + + - + - + @@ -84,7 +84,7 @@ - + diff --git a/Elsa.Integrations.sln b/Elsa.Integrations.sln index c7c6e941..bcfb4042 100644 --- a/Elsa.Integrations.sln +++ b/Elsa.Integrations.sln @@ -103,6 +103,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Pe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Integrations.Agents.Persistence.EFCore.SqlServer", "src\agents\Elsa.Integrations.Agents.Persistence.EFCore.SqlServer\Elsa.Integrations.Agents.Persistence.EFCore.SqlServer.csproj", "{FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Studio.Integrations.Agents", "src\agents\Elsa.Studio.Integrations.Agents\Elsa.Studio.Integrations.Agents.csproj", "{F7D8AF26-99DE-FF9F-9536-05249DDCE320}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -205,6 +207,10 @@ Global {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Debug|Any CPU.Build.0 = Debug|Any CPU {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Release|Any CPU.ActiveCfg = Release|Any CPU {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50}.Release|Any CPU.Build.0 = Release|Any CPU + {F7D8AF26-99DE-FF9F-9536-05249DDCE320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7D8AF26-99DE-FF9F-9536-05249DDCE320}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7D8AF26-99DE-FF9F-9536-05249DDCE320}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7D8AF26-99DE-FF9F-9536-05249DDCE320}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -242,6 +248,7 @@ Global {AC88CF06-ECEB-D5A7-2512-4DFDF1475D4D} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {22DFEDFA-5D9E-EF0F-D8C6-0288F6F645A8} = {5220DB25-20E9-4D07-801C-A970E71FB21C} {FF2A0A1F-DD7E-7CB1-A8F4-2F1044FE2D50} = {5220DB25-20E9-4D07-801C-A970E71FB21C} + {F7D8AF26-99DE-FF9F-9536-05249DDCE320} = {5220DB25-20E9-4D07-801C-A970E71FB21C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6} diff --git a/src/agents/Elsa.Studio.Integrations.Agents/AgentsIcons.cs b/src/agents/Elsa.Studio.Integrations.Agents/AgentsIcons.cs new file mode 100644 index 00000000..4b412e46 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/AgentsIcons.cs @@ -0,0 +1,16 @@ +namespace Elsa.Studio.Integrations.Agents; + +public static class AgentIcons +{ + public const string Robot = """ + + + + """; + + public const string AI = """ + + + + """; +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/AgentsMenu.cs b/src/agents/Elsa.Studio.Integrations.Agents/AgentsMenu.cs new file mode 100644 index 00000000..7f0cbbcb --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/AgentsMenu.cs @@ -0,0 +1,59 @@ +using Elsa.Studio.Contracts; +using Elsa.Studio.Localization; +using Elsa.Studio.Models; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents; + +/// A menu provider for the Agents module. +public class AgentsMenu(ILocalizer localizer) : IMenuProvider, IMenuGroupProvider +{ + /// + public ValueTask> GetMenuItemsAsync(CancellationToken cancellationToken = default) + { + var menuItems = new List + { + new() + { + Icon = AgentIcons.Robot, + Href = "ai/agents", + Text = localizer["Agents"], + GroupName = MenuItemGroups.General.Name + }, + new() + { + Icon = AgentIcons.AI, + Text = localizer["Agents"], + GroupName = MenuItemGroups.Settings.Name, + SubMenuItems = + [ + new MenuItem + { + Icon = Icons.Material.Outlined.Key, + Href = "ai/api-keys", + Text = localizer["API Keys"] + }, + new MenuItem + { + Icon = Icons.Material.Outlined.MiscellaneousServices, + Href = "ai/services", + Text = localizer["Services"] + } + ] + } + }; + + return new ValueTask>(menuItems); + } + + /// + public ValueTask> GetMenuGroupsAsync(CancellationToken cancellationToken = default) + { + var groups = new List + { + //new("agents", "Intelligent Agents", 10f) + }; + + return new ValueTask>(groups); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Client/IAgentsApi.cs b/src/agents/Elsa.Studio.Integrations.Agents/Client/IAgentsApi.cs new file mode 100644 index 00000000..d2da342e --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Client/IAgentsApi.cs @@ -0,0 +1,41 @@ +using Elsa.Agents; +using Elsa.Api.Client.Shared.Models; +using Refit; + +namespace Elsa.Studio.Integrations.Agents.Client; + +/// Represents a client API for interacting with agents. +public interface IAgentsApi +{ + /// Lists all agents. + [Get("/ai/agents")] + Task> ListAsync(CancellationToken cancellationToken = default); + + /// Gets an agent by ID. + [Get("/ai/agents/{id}")] + Task GetAsync(string id, CancellationToken cancellationToken = default); + + /// Generates a unique name for an agent. + [Post("/ai/actions/agents/generate-unique-name")] + Task GenerateUniqueNameAsync(CancellationToken cancellationToken = default); + + /// Checks if a name is unique for an agent. + [Post("/ai/queries/agents/is-unique-name")] + Task GetIsNameUniqueAsync(IsUniqueNameRequest request, CancellationToken cancellationToken); + + /// Creates a new agent. + [Post("/ai/agents")] + Task CreateAsync(AgentInputModel request, CancellationToken cancellationToken = default); + + /// Updates an agent. + [Post("/ai/agents/{id}")] + Task UpdateAsync(string id, AgentInputModel request, CancellationToken cancellationToken = default); + + /// Deletes an agent. + [Delete("/ai/agents/{id}")] + Task DeleteAsync(string id, CancellationToken cancellationToken = default); + + /// Deletes multiple agents. + [Post("/ai/bulk-actions/agents/delete")] + Task BulkDeleteAsync(BulkDeleteRequest request, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Client/IApiKeysApi.cs b/src/agents/Elsa.Studio.Integrations.Agents/Client/IApiKeysApi.cs new file mode 100644 index 00000000..5027040d --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Client/IApiKeysApi.cs @@ -0,0 +1,37 @@ +using Elsa.Agents; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Responses; +using Elsa.Api.Client.Shared.Models; +using Refit; + +namespace Elsa.Studio.Integrations.Agents.Client; + +/// Represents a client API for interacting with agents. +public interface IApiKeysApi +{ + /// Lists all API keys. + [Get("/ai/api-keys")] + Task> ListAsync(CancellationToken cancellationToken = default); + + /// Gets an API key by ID. + [Get("/ai/api-keys/{id}")] + Task GetAsync(string id, CancellationToken cancellationToken = default); + + /// Creates a new API key. + [Post("/ai/api-keys")] + Task CreateAsync(ApiKeyInputModel request, CancellationToken cancellationToken = default); + + /// Updates an API key. + [Post("/ai/api-keys/{id}")] + Task UpdateAsync(string id, ApiKeyInputModel request, CancellationToken cancellationToken = default); + + /// Deletes an API key. + [Delete("/ai/api-keys/{id}")] + Task DeleteAsync(string id, CancellationToken cancellationToken = default); + + /// Deletes multiple API keys. + [Post("/ai/bulk-actions/api-keys/delete")] + Task BulkDeleteAsync(BulkDeleteRequest request, CancellationToken cancellationToken = default); + + /// Checks if a name is unique. + Task GetIsNameUniqueAsync(IsUniqueNameRequest request, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Client/IPluginsApi.cs b/src/agents/Elsa.Studio.Integrations.Agents/Client/IPluginsApi.cs new file mode 100644 index 00000000..c605d503 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Client/IPluginsApi.cs @@ -0,0 +1,13 @@ +using Elsa.Agents; +using Elsa.Api.Client.Shared.Models; +using Refit; + +namespace Elsa.Studio.Integrations.Agents.Client; + +/// Represents a client API for interacting with AI plugins. +public interface IPluginsApi +{ + /// Lists all services. + [Get("/ai/plugins")] + Task> ListAsync(CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Client/IServicesApi.cs b/src/agents/Elsa.Studio.Integrations.Agents/Client/IServicesApi.cs new file mode 100644 index 00000000..6ce8e00a --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Client/IServicesApi.cs @@ -0,0 +1,37 @@ +using Elsa.Agents; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Responses; +using Elsa.Api.Client.Shared.Models; +using Refit; + +namespace Elsa.Studio.Integrations.Agents.Client; + +/// Represents a client API for interacting with AI services. +public interface IServicesApi +{ + /// Lists all services. + [Get("/ai/services")] + Task> ListAsync(CancellationToken cancellationToken = default); + + /// Gets a service by ID. + [Get("/ai/services/{id}")] + Task GetAsync(string id, CancellationToken cancellationToken = default); + + /// Creates a new service. + [Post("/ai/services")] + Task CreateAsync(ServiceInputModel request, CancellationToken cancellationToken = default); + + /// Updates a service. + [Post("/ai/services/{id}")] + Task UpdateAsync(string id, ServiceInputModel request, CancellationToken cancellationToken = default); + + /// Deletes a service. + [Delete("/ai/services/{id}")] + Task DeleteAsync(string id, CancellationToken cancellationToken = default); + + /// Deletes multiple services. + [Post("/ai/bulk-actions/services/delete")] + Task BulkDeleteAsync(BulkDeleteRequest request, CancellationToken cancellationToken = default); + + /// Checks if a name is unique. + Task GetIsNameUniqueAsync(IsUniqueNameRequest request, CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Elsa.Studio.Integrations.Agents.csproj b/src/agents/Elsa.Studio.Integrations.Agents/Elsa.Studio.Integrations.Agents.csproj new file mode 100644 index 00000000..8ec837e1 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Elsa.Studio.Integrations.Agents.csproj @@ -0,0 +1,20 @@ + + + + Provides a UI for managing agents. + elsa studio module agent ai llm semantic kernel + + + + + + + + + + + + + + + diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Extensions/ServiceCollectionExtensions.cs b/src/agents/Elsa.Studio.Integrations.Agents/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 00000000..99c59cfa --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,29 @@ +using Elsa.Studio.Integrations.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Providers; +using Elsa.Studio.Contracts; +using Elsa.Studio.Models; +using Elsa.Studio.Workflows.Extensions; +using Microsoft.Extensions.DependencyInjection; + +// ReSharper disable once CheckNamespace +namespace Elsa.Studio.Extensions; + +/// Contains extension methods for the interface. +public static class ServiceCollectionExtensions +{ + /// Adds the Agents module. + public static IServiceCollection AddAgentsModule(this IServiceCollection services, BackendApiConfig backendApiConfig) + { + return services + .AddScoped() + .AddScoped() + .AddScoped() + .AddRemoteApi(backendApiConfig) + .AddRemoteApi(backendApiConfig) + .AddRemoteApi(backendApiConfig) + .AddRemoteApi(backendApiConfig) + .AddActivityDisplaySettingsProvider() + ; + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/Feature.cs b/src/agents/Elsa.Studio.Integrations.Agents/Feature.cs new file mode 100644 index 00000000..9b2adc9a --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/Feature.cs @@ -0,0 +1,11 @@ +using Elsa.Studio.Abstractions; +using Elsa.Studio.Attributes; +using JetBrains.Annotations; + +namespace Elsa.Studio.Integrations.Agents; + +[UsedImplicitly] +[RemoteFeature("Elsa.AgentsApi")] +public class Feature : FeatureBase +{ +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/FodyWeavers.xml b/src/agents/Elsa.Studio.Integrations.Agents/FodyWeavers.xml new file mode 100644 index 00000000..00e1d9a1 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor new file mode 100644 index 00000000..93718092 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor @@ -0,0 +1,37 @@ +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + + + + + + + + + + + + + @foreach (var service in AvailableServices) + { + + } + + + + + @foreach (var plugin in AvailablePlugins) + { + + } + + + + + + + @Localizer["Cancel"] + @Localizer["Ok"] + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor.cs new file mode 100644 index 00000000..e484f62f --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Components/CreateAgentDialog.razor.cs @@ -0,0 +1,79 @@ +using Blazored.FluentValidation; +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Validators; +using Elsa.Studio.Contracts; +using Elsa.Studio.Workflows.Domain.Contracts; +using Elsa.Studio.Workflows.UI.Contracts; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Forms; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Components; + +/// A dialog that allows the user to create a new agent. +public partial class CreateAgentDialog +{ + private readonly AgentInputModel _agentInputModel = new(); + private EditContext _editContext = null!; + private FluentValidationValidator _fluentValidationValidator = null!; + private AgentInputModelValidator _validator = null!; + + /// The default name of the agent to create. + [Parameter] public string AgentName { get; set; } = ""; + [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = null!; + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = null!; + [Inject] private IActivityRegistry ActivityRegistry { get; set; } = null!; + [Inject] private IActivityDisplaySettingsRegistry ActivityDisplaySettingsRegistry { get; set; } = null!; + private ICollection AvailableServices { get; set; } = []; + private IReadOnlyCollection SelectedServices { get; set; } = []; + private ICollection AvailablePlugins { get; set; } = []; + private IReadOnlyCollection SelectedPlugins { get; set; } = []; + + /// + protected override async Task OnInitializedAsync() + { + _agentInputModel.Name = AgentName; + _agentInputModel.PromptTemplate = "You are a helpful assistant."; + _agentInputModel.Description = "A helpful assistant."; + _agentInputModel.FunctionName = "Reply"; + _agentInputModel.OutputVariable.Type = "object"; + _agentInputModel.OutputVariable.Description = "The output of the agent."; + _agentInputModel.ExecutionSettings.ResponseFormat = "json_object"; + _editContext = new(_agentInputModel); + var agentsApi = await ApiClientProvider.GetApiAsync(); + var servicesApi = await ApiClientProvider.GetApiAsync(); + var pluginsApi = await ApiClientProvider.GetApiAsync(); + _validator = new(agentsApi); + var servicesResponseList = await servicesApi.ListAsync(); + var pluginsResponseList = await pluginsApi.ListAsync(); + AvailableServices = servicesResponseList.Items; + AvailablePlugins = pluginsResponseList.Items; + SelectedServices = _agentInputModel.Services.ToList().AsReadOnly(); + SelectedPlugins = _agentInputModel.Plugins.ToList().AsReadOnly(); + } + + private Task OnCancelClicked() + { + MudDialog.Cancel(); + return Task.CompletedTask; + } + + private async Task OnSubmitClicked() + { + if(!await _fluentValidationValidator.ValidateAsync()) + return; + + await OnValidSubmit(); + } + + private Task OnValidSubmit() + { + _agentInputModel.Services = SelectedServices.ToList(); + _agentInputModel.Plugins = SelectedPlugins.ToList(); + MudDialog.Close(_agentInputModel); + ActivityRegistry.MarkStale(); + ActivityDisplaySettingsRegistry.MarkStale(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor new file mode 100644 index 00000000..945e0db6 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor @@ -0,0 +1,235 @@ +@page "/ai/agents/{AgentId}" +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["Agent"] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @Localizer["Name"] + @Localizer["Type"] + @Localizer["Description"] + + + + @context.Name + @context.Type + @context.Description + + + + + + + + + + + @Localizer["string"] + @Localizer["int"] + @Localizer["object"] + + + + + + + + + @Localizer["Add"] + + + + + + @Localizer["string"] + @Localizer["int"] + @Localizer["object"] + + + + + + + + @foreach (var service in AvailableServices) + { + + } + + + + + + + + + @foreach (var plugin in AvailablePlugins) + { + + } + + + + + + + + + @_agent.ExecutionSettings.Temperature + + + + + @_agent.ExecutionSettings.TopP + + + + + @_agent.ExecutionSettings.FrequencyPenalty + + + + + @_agent.ExecutionSettings.PresencePenalty + + + + + + + + + + + @Localizer["Save"] + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor.cs new file mode 100644 index 00000000..5fc40861 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agent.razor.cs @@ -0,0 +1,127 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Validators; +using Elsa.Studio.Components; +using Elsa.Studio.Contracts; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +public partial class Agent : StudioComponentBase +{ + /// The ID of the agent to edit. + [Parameter] public string AgentId { get; set; } = default!; + + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + + private bool UseJsonResponse + { + get => _agent.ExecutionSettings.ResponseFormat == "json_object"; + set => _agent.ExecutionSettings.ResponseFormat = value ? "json_object" : "string"; + } + + private ICollection AvailableServices { get; set; } = []; + private IReadOnlyCollection SelectedServices { get; set; } = []; + + private ICollection AvailablePlugins { get; set; } = []; + private IReadOnlyCollection SelectedPlugins { get; set; } = []; + + + private MudForm _form = default!; + private AgentInputModelValidator _validator = default!; + private AgentModel _agent = new(); + private InputVariableConfig? _inputVariableBackup; + private MudTable _inputVariableTable; + + /// + protected override async Task OnInitializedAsync() + { + var apiClient = await ApiClientProvider.GetApiAsync(); + _validator = new AgentInputModelValidator(apiClient); + var servicesApi = await ApiClientProvider.GetApiAsync(); + var pluginsApi = await ApiClientProvider.GetApiAsync(); + var servicesResponseList = await servicesApi.ListAsync(); + var pluginsResponseList = await pluginsApi.ListAsync(); + AvailableServices = servicesResponseList.Items; + AvailablePlugins = pluginsResponseList.Items; + } + + /// + protected override async Task OnParametersSetAsync() + { + var apiClient = await ApiClientProvider.GetApiAsync(); + _agent = await apiClient.GetAsync(AgentId); + SelectedServices = _agent.Services.ToList().AsReadOnly(); + SelectedPlugins = _agent.Plugins.ToList().AsReadOnly(); + } + + private async Task OnSaveClicked() + { + await _form.Validate(); + + if (!_form.IsValid) + return; + + _agent.Services = SelectedServices.ToList(); + _agent.Plugins = SelectedPlugins.ToList(); + var apiClient = await ApiClientProvider.GetApiAsync(); + _agent = await apiClient.UpdateAsync(AgentId, _agent); + Snackbar.Add("Agent successfully updated.", Severity.Success); + StateHasChanged(); + } + + private void OnAddInputVariableClicked() + { + var newInputVariable = new InputVariableConfig + { + Name = "Variable1", + Type = "string" + }; + + _agent.InputVariables.Add(newInputVariable); + + // Need to do it this way, otherwise MudTable doesn't show the item in edit mode. + _ = Task.Delay(1).ContinueWith(_ => + { + InvokeAsync(() => + { + _inputVariableTable.SetEditingItem(newInputVariable); + StateHasChanged(); + }); + }); + } + + private void BackupInputVariable(object obj) + { + var inputVariable = (InputVariableConfig)obj; + _inputVariableBackup = new InputVariableConfig + { + Name = inputVariable.Name, + Type = inputVariable.Type, + Description = inputVariable.Description + }; + } + + private void RestoreInputVariable(object obj) + { + var inputVariable = (InputVariableConfig)obj; + inputVariable.Name = _inputVariableBackup!.Name; + inputVariable.Type = _inputVariableBackup.Type; + inputVariable.Description = _inputVariableBackup.Description; + _inputVariableBackup = null; + } + + private void CommitInputVariable(object obj) + { + _inputVariableBackup = null; + } + + private Task DeleteInputVariable(InputVariableConfig item) + { + _agent.InputVariables.Remove(item); + StateHasChanged(); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor new file mode 100644 index 00000000..6f170feb --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor @@ -0,0 +1,74 @@ +@page "/ai/agents" +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["Agents"] + + + + + + + + @Localizer["Delete"] + + + + + @Localizer["Create Agent"] + + + + + ID + + + @Localizer["Name"] + + + @Localizer["Description"] + + + + + @context.Id + @context.Name + + +
+ @context.Description +
+
+
+ + + @Localizer["Edit"] + @Localizer["Delete"] + + +
+ + @Localizer["No agents found"] + + + @Localizer["Loading"]... + + + + +
+
\ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor.cs new file mode 100644 index 00000000..7db463e0 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Agents.razor.cs @@ -0,0 +1,134 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Components; +using Elsa.Studio.Contracts; +using Elsa.Studio.DomInterop.Contracts; +using Elsa.Studio.Workflows.Domain.Contracts; +using Elsa.Studio.Workflows.UI.Contracts; +using JetBrains.Annotations; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +[UsedImplicitly] +public partial class Agents +{ + private MudTable _table = null!; + private HashSet _selectedRows = new(); + + [Inject] private IDialogService DialogService { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + [Inject] NavigationManager NavigationManager { get; set; } = default!; + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + [Inject] private IActivityRegistry ActivityRegistry { get; set; } = default!; + [Inject] private IActivityDisplaySettingsRegistry ActivityDisplaySettingsRegistry { get; set; } = default!; + [Inject] private IFiles Files { get; set; } = default!; + [Inject] private IDomAccessor DomAccessor { get; set; } = default!; + + private async Task GetAgentsApiAsync() + { + return await ApiClientProvider.GetApiAsync(); + } + + private async Task> ServerReload(TableState state, CancellationToken cancellationToken) + { + var apiClient = await GetAgentsApiAsync(); + var agents = await apiClient.ListAsync(cancellationToken); + + return new TableData + { + TotalItems = (int)agents.Count, + Items = agents.Items + }; + } + + private async Task OnCreateAgentClicked() + { + var apiClient = await GetAgentsApiAsync(); + var agentNameResponse = await apiClient.GenerateUniqueNameAsync(); + var agentName = agentNameResponse.Name; + + var parameters = new DialogParameters + { + { x => x.AgentName, agentName } + }; + + var options = new DialogOptions + { + CloseOnEscapeKey = true, + Position = DialogPosition.Center, + CloseButton = true, + FullWidth = true, + MaxWidth = MaxWidth.Small + }; + + var dialogInstance = await DialogService.ShowAsync("New Agent", parameters, options); + var dialogResult = await dialogInstance.Result; + + if (!dialogResult!.Canceled) + { + var agentInputModel = (AgentInputModel)dialogResult.Data; + try + { + var agent = await apiClient.CreateAsync(agentInputModel); + await EditAsync(agent.Id); + } + catch (Exception e) + { + Snackbar.Add(e.Message, Severity.Error); + } + } + } + + private async Task EditAsync(string id) + { + await InvokeAsync(() => NavigationManager.NavigateTo($"ai/agents/{id}")); + } + + private void Reload() + { + _table.ReloadServerData(); + } + + private async Task OnEditClicked(string definitionId) + { + await EditAsync(definitionId); + } + + private async Task OnRowClick(TableRowClickEventArgs e) + { + await EditAsync(e.Item!.Id); + } + + private async Task OnDeleteClicked(AgentModel agent) + { + var result = await DialogService.ShowMessageBox("Delete Agent?", "Are you sure you want to delete this agent?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var agentId = agent.Id; + var apiClient = await GetAgentsApiAsync(); + await apiClient.DeleteAsync(agentId); + ActivityRegistry.MarkStale(); + ActivityDisplaySettingsRegistry.MarkStale(); + Reload(); + } + + private async Task OnBulkDeleteClicked() + { + var result = await DialogService.ShowMessageBox("Delete Selected Agents?", $"Are you sure you want to delete the selected agents?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var ids = _selectedRows.Select(x => x.Id).ToList(); + var request = new BulkDeleteRequest { Ids = ids }; + var apiClient = await GetAgentsApiAsync(); + await apiClient.BulkDeleteAsync(request); + ActivityRegistry.MarkStale(); + ActivityDisplaySettingsRegistry.MarkStale(); + Reload(); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor new file mode 100644 index 00000000..a7c5d1a9 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor @@ -0,0 +1,43 @@ +@page "/ai/api-keys/{ApiKeyId}" +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["API Key"] + + + + + + + + + + + + + + + + + + + + @Localizer["Save"] + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor.cs new file mode 100644 index 00000000..9e97265a --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKey.razor.cs @@ -0,0 +1,61 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Validators; +using Elsa.Studio.Components; +using Elsa.Studio.Contracts; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +public partial class ApiKey : StudioComponentBase +{ + /// The ID of the API key to edit. + [Parameter] public string ApiKeyId { get; set; } = default!; + + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + [Inject] private NavigationManager NavigationManager { get; set; } = default!; + private bool IsNew => string.Equals("new", ApiKeyId, StringComparison.OrdinalIgnoreCase); + + private MudForm _form = default!; + private ApiKeyInputModelValidator _validator = default!; + private ApiKeyModel _apiKey = new(); + + /// + protected override async Task OnParametersSetAsync() + { + var apiClient = await ApiClientProvider.GetApiAsync(); + + if (IsNew) + _apiKey = new(); + else + _apiKey = await apiClient.GetAsync(ApiKeyId); + + _validator = new ApiKeyInputModelValidator(apiClient); + } + + private async Task OnSaveClicked() + { + await _form.Validate(); + + if (!_form.IsValid) + return; + + var apiClient = await ApiClientProvider.GetApiAsync(); + + if (IsNew) + { + _apiKey = await apiClient.CreateAsync(_apiKey); + Snackbar.Add("API key successfully created.", Severity.Success); + } + else + { + _apiKey = await apiClient.UpdateAsync(ApiKeyId, _apiKey); + Snackbar.Add("API key successfully updated.", Severity.Success); + } + + StateHasChanged(); + NavigationManager.NavigateTo("ai/api-keys"); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor new file mode 100644 index 00000000..54d33b52 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor @@ -0,0 +1,68 @@ +@page "/ai/api-keys" +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["API Keys"] + + + + + + + + Delete + + + + + @Localizer["Create API Key"] + + + + + ID + + + @Localizer["Name"] + + + @Localizer["Value"] + + + + + @context.Id + @context.Name + @context.Value + + + @Localizer["Edit"] + @Localizer["Delete"] + + + + + @Localizer["No API keys found"] + + + @Localizer["Loading"]... + + + + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor.cs new file mode 100644 index 00000000..7b847d7d --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/ApiKeys.razor.cs @@ -0,0 +1,92 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Contracts; +using Elsa.Studio.DomInterop.Contracts; +using JetBrains.Annotations; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +[UsedImplicitly] +public partial class ApiKeys +{ + private MudTable _table = null!; + private HashSet _selectedRows = new(); + + [Inject] private IDialogService DialogService { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + [Inject] NavigationManager NavigationManager { get; set; } = default!; + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + [Inject] private IFiles Files { get; set; } = default!; + [Inject] private IDomAccessor DomAccessor { get; set; } = default!; + + private async Task GetApiClientAsync() + { + return await ApiClientProvider.GetApiAsync(); + } + + private async Task> ServerReload(TableState state, CancellationToken cancellationToken) + { + var apiClient = await GetApiClientAsync(); + var response = await apiClient.ListAsync(cancellationToken); + + return new TableData + { + TotalItems = (int)response.Count, + Items = response.Items + }; + } + + private async Task OnCreateClicked() + { + await InvokeAsync(() => NavigationManager.NavigateTo($"ai/api-keys/new")); + } + + private async Task EditAsync(string id) + { + await InvokeAsync(() => NavigationManager.NavigateTo($"ai/api-keys/{id}")); + } + + private void Reload() + { + _table.ReloadServerData(); + } + + private async Task OnEditClicked(string id) + { + await EditAsync(id); + } + + private async Task OnRowClick(TableRowClickEventArgs e) + { + await EditAsync(e.Item.Id); + } + + private async Task OnDeleteClicked(ApiKeyModel model) + { + var result = await DialogService.ShowMessageBox("Delete API Key?", "Are you sure you want to delete this API key?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var id = model.Id; + var apiClient = await GetApiClientAsync(); + await apiClient.DeleteAsync(id); + Reload(); + } + + private async Task OnBulkDeleteClicked() + { + var result = await DialogService.ShowMessageBox("Delete Selected API keys?", "Are you sure you want to delete the selected API keys?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var ids = _selectedRows.Select(x => x.Id).ToList(); + var request = new BulkDeleteRequest { Ids = ids }; + var apiClient = await GetApiClientAsync(); + await apiClient.BulkDeleteAsync(request); + Reload(); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor new file mode 100644 index 00000000..afbe19f7 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor @@ -0,0 +1,55 @@ +@page "/ai/services/{ServiceId}" +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["Service"] + + + + + + + + + + + + + + @Localizer["OpenAIChatCompletion"] + @Localizer["OpenAITextToImage"] + + + + + + + + + + @Localizer["Save"] + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor.cs new file mode 100644 index 00000000..ccb8344f --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Service.razor.cs @@ -0,0 +1,71 @@ +using System.Text.Json; +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Integrations.Agents.UI.Validators; +using Elsa.Studio.Components; +using Elsa.Studio.Contracts; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +public partial class Service : StudioComponentBase +{ + /// The ID of the service to edit. + [Parameter] public string ServiceId { get; set; } = default!; + + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + [Inject] private NavigationManager NavigationManager { get; set; } = default!; + private bool IsNew => string.Equals("new", ServiceId, StringComparison.OrdinalIgnoreCase); + + private MudForm _form = default!; + private ServiceInputModelValidator _validator = default!; + private ServiceModel _entity = new(); + + /// + protected override async Task OnParametersSetAsync() + { + var apiClient = await ApiClientProvider.GetApiAsync(); + + if (IsNew) + _entity = new(); + else + _entity = await apiClient.GetAsync(ServiceId); + + _validator = new ServiceInputModelValidator(apiClient); + } + + private async Task OnSaveClicked() + { + await _form.Validate(); + + if (!_form.IsValid) + return; + + var apiClient = await ApiClientProvider.GetApiAsync(); + + if (IsNew) + { + _entity = await apiClient.CreateAsync(_entity); + Snackbar.Add("Service successfully created.", Severity.Success); + } + else + { + _entity = await apiClient.UpdateAsync(ServiceId, _entity); + Snackbar.Add("Service successfully updated.", Severity.Success); + } + + StateHasChanged(); + NavigationManager.NavigateTo("ai/services"); + } + + private MudBlazor.Converter, string> GetSettingsConverter() + { + return new MudBlazor.Converter, string> + { + SetFunc = x => x == null ? "{}" : JsonSerializer.Serialize(x, new JsonSerializerOptions { WriteIndented = true }), + GetFunc = x => JsonSerializer.Deserialize>(x) ?? new Dictionary() + }; + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor new file mode 100644 index 00000000..da423c91 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor @@ -0,0 +1,73 @@ +@page "/ai/services" +@using System.Text.Json +@using Elsa.Agents +@using Variant = MudBlazor.Variant +@inherits StudioComponentBase +@inject ILocalizer Localizer + +@Localizer["Services"] + + + + + + + + @Localizer["Delete"] + + + + + @Localizer["Create Service"] + + + + + ID + + + @Localizer["Name"] + + + @Localizer["Settings"] + + + + + @context.Id + @context.Name + + + @JsonSerializer.Serialize(context.Settings, JsonSerializerOptions.Default) + + + + + @Localizer["Edit"] + @Localizer["Delete"] + + + + + @Localizer["No services found"] + + + @Localizer["Loading"]... + + + + + + \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor.cs new file mode 100644 index 00000000..0e5caee0 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Pages/Services.razor.cs @@ -0,0 +1,89 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using Elsa.Studio.Contracts; +using JetBrains.Annotations; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace Elsa.Studio.Integrations.Agents.UI.Pages; + +[UsedImplicitly] +public partial class Services +{ + private MudTable _table = null!; + private HashSet _selectedRows = new(); + + [Inject] private IDialogService DialogService { get; set; } = default!; + [Inject] private ISnackbar Snackbar { get; set; } = default!; + [Inject] NavigationManager NavigationManager { get; set; } = default!; + [Inject] private IBackendApiClientProvider ApiClientProvider { get; set; } = default!; + + private async Task GetApiClientAsync() + { + return await ApiClientProvider.GetApiAsync(); + } + + private async Task> ServerReload(TableState state, CancellationToken cancellationToken) + { + var apiClient = await GetApiClientAsync(); + var response = await apiClient.ListAsync(cancellationToken); + + return new TableData + { + TotalItems = (int)response.Count, + Items = response.Items + }; + } + + private async Task OnCreateClicked() + { + await InvokeAsync(() => NavigationManager.NavigateTo($"ai/services/new")); + } + + private async Task EditAsync(string id) + { + await InvokeAsync(() => NavigationManager.NavigateTo($"ai/services/{id}")); + } + + private void Reload() + { + _table.ReloadServerData(); + } + + private async Task OnEditClicked(string id) + { + await EditAsync(id); + } + + private async Task OnRowClick(TableRowClickEventArgs e) + { + await EditAsync(e.Item.Id); + } + + private async Task OnDeleteClicked(ServiceModel model) + { + var result = await DialogService.ShowMessageBox("Delete Service?", "Are you sure you want to delete this service?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var id = model.Id; + var apiClient = await GetApiClientAsync(); + await apiClient.DeleteAsync(id); + Reload(); + } + + private async Task OnBulkDeleteClicked() + { + var result = await DialogService.ShowMessageBox("Delete Selected services?", "Are you sure you want to delete the selected services?", yesText: "Delete", cancelText: "Cancel"); + + if (result != true) + return; + + var ids = _selectedRows.Select(x => x.Id).ToList(); + var request = new BulkDeleteRequest { Ids = ids }; + var apiClient = await GetApiClientAsync(); + await apiClient.BulkDeleteAsync(request); + Reload(); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Providers/DefaultActivityDisplaySettingsProvider.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Providers/DefaultActivityDisplaySettingsProvider.cs new file mode 100644 index 00000000..f16046f7 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Providers/DefaultActivityDisplaySettingsProvider.cs @@ -0,0 +1,23 @@ +using Elsa.Studio.Workflows.Domain.Contracts; +using Elsa.Studio.Workflows.UI.Contracts; +using Elsa.Studio.Workflows.UI.Models; +using JetBrains.Annotations; + +namespace Elsa.Studio.Integrations.Agents.UI.Providers; + +/// +/// Provides default activity display settings. +/// +[UsedImplicitly] +public class AgentsActivityDisplaySettingsProvider(IActivityRegistry activityRegistry) : IActivityDisplaySettingsProvider +{ + /// + public IDictionary GetSettings() + { + var agentActivityDescriptors = activityRegistry.List() + .Where(x => x.CustomProperties.TryGetValue("RootType", out var rootType) && rootType.ToString() == "AgentActivity") + .ToList(); + + return agentActivityDescriptors.ToDictionary(x => x.TypeName, x => new ActivityDisplaySettings("#1ec7b9", AgentIcons.Robot)); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/AgentInputModelValidator.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/AgentInputModelValidator.cs new file mode 100644 index 00000000..b950c6d2 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/AgentInputModelValidator.cs @@ -0,0 +1,29 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using FluentValidation; + +namespace Elsa.Studio.Integrations.Agents.UI.Validators; + +/// +/// A validator for instances. +/// +public class AgentInputModelValidator : AbstractValidator +{ + /// + public AgentInputModelValidator(IAgentsApi agentsApi) + { + RuleFor(x => x.Name).NotEmpty().WithMessage("Please enter a name for the agent."); + + RuleFor(x => x.Name) + .MustAsync(async (context, name, cancellationToken) => + { + var request = new IsUniqueNameRequest + { + Name = name!, + }; + var response = await agentsApi.GetIsNameUniqueAsync(request, cancellationToken); + return response.IsUnique; + }) + .WithMessage("An agent with this name already exists."); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ApiKeyInputModelValidator.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ApiKeyInputModelValidator.cs new file mode 100644 index 00000000..fde29b18 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ApiKeyInputModelValidator.cs @@ -0,0 +1,29 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using FluentValidation; + +namespace Elsa.Studio.Integrations.Agents.UI.Validators; + +/// +/// A validator for instances. +/// +public class ApiKeyInputModelValidator : AbstractValidator +{ + /// + public ApiKeyInputModelValidator(IApiKeysApi apiKeysApi) + { + RuleFor(x => x.Name).NotEmpty().WithMessage("Please enter a name for the API key."); + + RuleFor(x => x.Name) + .MustAsync(async (context, name, cancellationToken) => + { + var request = new IsUniqueNameRequest + { + Name = name!, + }; + var response = await apiKeysApi.GetIsNameUniqueAsync(request, cancellationToken); + return response.IsUnique; + }) + .WithMessage("An API key with this name already exists."); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ServiceInputModelValidator.cs b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ServiceInputModelValidator.cs new file mode 100644 index 00000000..75ed8fba --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/UI/Validators/ServiceInputModelValidator.cs @@ -0,0 +1,29 @@ +using Elsa.Agents; +using Elsa.Studio.Integrations.Agents.Client; +using FluentValidation; + +namespace Elsa.Studio.Integrations.Agents.UI.Validators; + +/// +/// A validator for instances. +/// +public class ServiceInputModelValidator : AbstractValidator +{ + /// + public ServiceInputModelValidator(IServicesApi api) + { + RuleFor(x => x.Name).NotEmpty().WithMessage("Please enter a name for the service."); + + RuleFor(x => x.Name) + .MustAsync(async (context, name, cancellationToken) => + { + var request = new IsUniqueNameRequest + { + Name = name!, + }; + var response = await api.GetIsNameUniqueAsync(request, cancellationToken); + return response.IsUnique; + }) + .WithMessage("A service with this name already exists."); + } +} \ No newline at end of file diff --git a/src/agents/Elsa.Studio.Integrations.Agents/_Imports.razor b/src/agents/Elsa.Studio.Integrations.Agents/_Imports.razor new file mode 100644 index 00000000..82d7a0f0 --- /dev/null +++ b/src/agents/Elsa.Studio.Integrations.Agents/_Imports.razor @@ -0,0 +1,15 @@ +@using System.ComponentModel.DataAnnotations +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.Forms +@using Blazored.FluentValidation +@using Elsa.Studio.Components +@using Elsa.Studio.Integrations.Agents +@using Elsa.Studio.Localization +@using Humanizer +@using MudBlazor +@using MudExtensions +@using Radzen +@using Radzen.Blazor +@attribute [Authorize] \ No newline at end of file