diff --git a/Directory.Packages.props b/Directory.Packages.props
index c1faed54a..7fe38d5fd 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -64,7 +64,6 @@
-
diff --git a/Elsa.sln b/Elsa.sln
index da6a4349e..23d1ee4cc 100644
--- a/Elsa.sln
+++ b/Elsa.sln
@@ -298,16 +298,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "trace-lens", "trace-lens",
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integrations", "integrations", "{EBD0CF78-C5D7-4B4B-94C9-C5D8C20B6F59}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "agents", "agents", "{50470834-4CD8-479A-8B58-0A1869BA5D37}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Core", "src\modules\Elsa.Agents.Core\Elsa.Agents.Core.csproj", "{5BD671F0-9603-4C2F-8364-54B02986EAA2}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Api", "src\modules\Elsa.Agents.Api\Elsa.Agents.Api.csproj", "{154525CD-3726-45B7-9A9C-553BBC60EB10}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Activities", "src\modules\Elsa.Agents.Activities\Elsa.Agents.Activities.csproj", "{F620D7DC-B58D-4BD0-81A2-E88A2C1E4833}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Persistence.EntityFrameworkCore", "src\modules\Elsa.Agents.Persistence.EntityFrameworkCore\Elsa.Agents.Persistence.EntityFrameworkCore.csproj", "{6FE60BB4-DE6A-485C-A38A-1317C56AF2DA}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Core", "src\modules\Elsa.Secrets.Core\Elsa.Secrets.Core.csproj", "{34FAB60D-7259-47B9-B50E-B533C7C3CFEC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "secrets", "secrets", "{8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}"
@@ -316,10 +306,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Management", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Api", "src\modules\Elsa.Secrets.Api\Elsa.Secrets.Api.csproj", "{37D16EAF-ACD8-4105-8BD3-B2745819CFF8}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Persistence", "src\modules\Elsa.Agents.Persistence\Elsa.Agents.Persistence.csproj", "{CFEC357F-0863-4458-A6C4-5D7AA0E44759}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Persistence.EntityFrameworkCore.Sqlite", "src\modules\Elsa.Agents.Persistence.EntityFrameworkCore.Sqlite\Elsa.Agents.Persistence.EntityFrameworkCore.Sqlite.csproj", "{E75762D2-FD12-4165-810B-628C28CB2562}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{3666CF13-1353-4620-9472-506670214A6A}"
ProjectSection(SolutionItems) = preProject
scripts\migrations\efcore-3.0.sh = scripts\migrations\efcore-3.0.sh
@@ -344,16 +330,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "elsa-studio", "elsa-studio"
scripts\k8s\elsa-studio\service.yaml = scripts\k8s\elsa-studio\service.yaml
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Models", "src\modules\Elsa.Agents.Models\Elsa.Agents.Models.csproj", "{052C4F97-5909-4D88-AA49-4B0D9058A0A9}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Persistence.EntityFrameworkCore", "src\modules\Elsa.Secrets.Persistence.EntityFrameworkCore\Elsa.Secrets.Persistence.EntityFrameworkCore.csproj", "{9A6D67DE-51B1-456D-B25D-19E0356C8F60}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Persistence.EntityFrameworkCore.Sqlite", "src\modules\Elsa.Secrets.Persistence.EntityFrameworkCore.Sqlite\Elsa.Secrets.Persistence.EntityFrameworkCore.Sqlite.csproj", "{44A03CF6-4EB6-434C-90D1-FF8142FE394E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer", "src\modules\Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer\Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj", "{A9140976-DFF9-432A-B1DC-E188A07C49E5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Agents.Persistence.EntityFrameworkCore.MySql", "src\modules\Elsa.Agents.Persistence.EntityFrameworkCore.MySql\Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj", "{B3046301-6F00-4885-8B01-080BD489055C}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Models", "src\modules\Elsa.Secrets.Models\Elsa.Secrets.Models.csproj", "{29D12ADC-55E9-40D0-9E4C-F0EBB6E098EC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Secrets.Scripting", "src\modules\Elsa.Secrets.Scripting\Elsa.Secrets.Scripting.csproj", "{6C606FEB-9A1F-4816-ABE4-22AFA8CEE771}"
@@ -368,8 +348,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "multitenancy", "multitenanc
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Tenants.AspNetCore", "src\modules\Elsa.Tenants.AspNetCore\Elsa.Tenants.AspNetCore.csproj", "{D5720DBC-8C2B-42D5-9D9F-2FF6EAD4001C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql", "src\modules\Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql\Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj", "{2B939AC9-03A4-479E-AA0D-CB58F4A7F480}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Kafka", "src\modules\Elsa.Kafka\Elsa.Kafka.csproj", "{BF934627-F531-44FB-BEC2-ECA801FF31E7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{A0DC5F8E-5D7F-4E8A-A5DF-B1FC31F7336E}"
@@ -735,22 +713,6 @@ Global
{47FBCB04-0C2D-453C-BE2F-7052CAC22524}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47FBCB04-0C2D-453C-BE2F-7052CAC22524}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47FBCB04-0C2D-453C-BE2F-7052CAC22524}.Release|Any CPU.Build.0 = Release|Any CPU
- {5BD671F0-9603-4C2F-8364-54B02986EAA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5BD671F0-9603-4C2F-8364-54B02986EAA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5BD671F0-9603-4C2F-8364-54B02986EAA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5BD671F0-9603-4C2F-8364-54B02986EAA2}.Release|Any CPU.Build.0 = Release|Any CPU
- {154525CD-3726-45B7-9A9C-553BBC60EB10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {154525CD-3726-45B7-9A9C-553BBC60EB10}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {154525CD-3726-45B7-9A9C-553BBC60EB10}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {154525CD-3726-45B7-9A9C-553BBC60EB10}.Release|Any CPU.Build.0 = Release|Any CPU
- {F620D7DC-B58D-4BD0-81A2-E88A2C1E4833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F620D7DC-B58D-4BD0-81A2-E88A2C1E4833}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F620D7DC-B58D-4BD0-81A2-E88A2C1E4833}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F620D7DC-B58D-4BD0-81A2-E88A2C1E4833}.Release|Any CPU.Build.0 = Release|Any CPU
- {6FE60BB4-DE6A-485C-A38A-1317C56AF2DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6FE60BB4-DE6A-485C-A38A-1317C56AF2DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6FE60BB4-DE6A-485C-A38A-1317C56AF2DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6FE60BB4-DE6A-485C-A38A-1317C56AF2DA}.Release|Any CPU.Build.0 = Release|Any CPU
{34FAB60D-7259-47B9-B50E-B533C7C3CFEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34FAB60D-7259-47B9-B50E-B533C7C3CFEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34FAB60D-7259-47B9-B50E-B533C7C3CFEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -763,18 +725,6 @@ Global
{37D16EAF-ACD8-4105-8BD3-B2745819CFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37D16EAF-ACD8-4105-8BD3-B2745819CFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37D16EAF-ACD8-4105-8BD3-B2745819CFF8}.Release|Any CPU.Build.0 = Release|Any CPU
- {CFEC357F-0863-4458-A6C4-5D7AA0E44759}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CFEC357F-0863-4458-A6C4-5D7AA0E44759}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CFEC357F-0863-4458-A6C4-5D7AA0E44759}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CFEC357F-0863-4458-A6C4-5D7AA0E44759}.Release|Any CPU.Build.0 = Release|Any CPU
- {E75762D2-FD12-4165-810B-628C28CB2562}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E75762D2-FD12-4165-810B-628C28CB2562}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E75762D2-FD12-4165-810B-628C28CB2562}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E75762D2-FD12-4165-810B-628C28CB2562}.Release|Any CPU.Build.0 = Release|Any CPU
- {052C4F97-5909-4D88-AA49-4B0D9058A0A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {052C4F97-5909-4D88-AA49-4B0D9058A0A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {052C4F97-5909-4D88-AA49-4B0D9058A0A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {052C4F97-5909-4D88-AA49-4B0D9058A0A9}.Release|Any CPU.Build.0 = Release|Any CPU
{9A6D67DE-51B1-456D-B25D-19E0356C8F60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A6D67DE-51B1-456D-B25D-19E0356C8F60}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A6D67DE-51B1-456D-B25D-19E0356C8F60}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -783,14 +733,6 @@ Global
{44A03CF6-4EB6-434C-90D1-FF8142FE394E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44A03CF6-4EB6-434C-90D1-FF8142FE394E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44A03CF6-4EB6-434C-90D1-FF8142FE394E}.Release|Any CPU.Build.0 = Release|Any CPU
- {A9140976-DFF9-432A-B1DC-E188A07C49E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A9140976-DFF9-432A-B1DC-E188A07C49E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A9140976-DFF9-432A-B1DC-E188A07C49E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A9140976-DFF9-432A-B1DC-E188A07C49E5}.Release|Any CPU.Build.0 = Release|Any CPU
- {B3046301-6F00-4885-8B01-080BD489055C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B3046301-6F00-4885-8B01-080BD489055C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B3046301-6F00-4885-8B01-080BD489055C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B3046301-6F00-4885-8B01-080BD489055C}.Release|Any CPU.Build.0 = Release|Any CPU
{29D12ADC-55E9-40D0-9E4C-F0EBB6E098EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29D12ADC-55E9-40D0-9E4C-F0EBB6E098EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29D12ADC-55E9-40D0-9E4C-F0EBB6E098EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -815,10 +757,6 @@ Global
{D5720DBC-8C2B-42D5-9D9F-2FF6EAD4001C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5720DBC-8C2B-42D5-9D9F-2FF6EAD4001C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5720DBC-8C2B-42D5-9D9F-2FF6EAD4001C}.Release|Any CPU.Build.0 = Release|Any CPU
- {2B939AC9-03A4-479E-AA0D-CB58F4A7F480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2B939AC9-03A4-479E-AA0D-CB58F4A7F480}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2B939AC9-03A4-479E-AA0D-CB58F4A7F480}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2B939AC9-03A4-479E-AA0D-CB58F4A7F480}.Release|Any CPU.Build.0 = Release|Any CPU
{BF934627-F531-44FB-BEC2-ECA801FF31E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF934627-F531-44FB-BEC2-ECA801FF31E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF934627-F531-44FB-BEC2-ECA801FF31E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -978,25 +916,15 @@ Global
{6DDB9ECF-D454-4894-A262-A6BB3026E61E} = {B32DB9B2-AD6C-48A5-8682-4373CB045185}
{16B570BC-E293-4A19-B20E-5C97BAF8476B} = {B32DB9B2-AD6C-48A5-8682-4373CB045185}
{EBD0CF78-C5D7-4B4B-94C9-C5D8C20B6F59} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
- {50470834-4CD8-479A-8B58-0A1869BA5D37} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
- {5BD671F0-9603-4C2F-8364-54B02986EAA2} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
- {154525CD-3726-45B7-9A9C-553BBC60EB10} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
- {F620D7DC-B58D-4BD0-81A2-E88A2C1E4833} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
- {6FE60BB4-DE6A-485C-A38A-1317C56AF2DA} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
{34FAB60D-7259-47B9-B50E-B533C7C3CFEC} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
{19329441-2A59-4BAC-A1BE-BBAB70C93CA0} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{37D16EAF-ACD8-4105-8BD3-B2745819CFF8} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
- {CFEC357F-0863-4458-A6C4-5D7AA0E44759} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
- {E75762D2-FD12-4165-810B-628C28CB2562} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
{3666CF13-1353-4620-9472-506670214A6A} = {C80C8231-D35C-4ACC-9ED6-9F3DB221535E}
{AA5ACF15-8647-4AC9-B9F5-73FCB92BE7E3} = {C80C8231-D35C-4ACC-9ED6-9F3DB221535E}
{DFFE6199-B5A7-4BA8-A5E1-77D0426C6468} = {B32DB9B2-AD6C-48A5-8682-4373CB045185}
- {052C4F97-5909-4D88-AA49-4B0D9058A0A9} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
{9A6D67DE-51B1-456D-B25D-19E0356C8F60} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{44A03CF6-4EB6-434C-90D1-FF8142FE394E} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
- {A9140976-DFF9-432A-B1DC-E188A07C49E5} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
- {B3046301-6F00-4885-8B01-080BD489055C} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
{29D12ADC-55E9-40D0-9E4C-F0EBB6E098EC} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{6C606FEB-9A1F-4816-ABE4-22AFA8CEE771} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{5F80663C-B072-49DE-9A67-FD804BAD787E} = {6EF07978-A6D2-40EB-891D-7D70C5F37E76}
@@ -1004,7 +932,6 @@ Global
{59E7614A-3630-4C39-9C7F-9E12BC95D37E} = {8CEEC194-820A-4C8D-AB9E-E51E6D3E9CC1}
{2F3E1026-5054-4E1F-899B-F1A7F70F9912} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
{D5720DBC-8C2B-42D5-9D9F-2FF6EAD4001C} = {2F3E1026-5054-4E1F-899B-F1A7F70F9912}
- {2B939AC9-03A4-479E-AA0D-CB58F4A7F480} = {50470834-4CD8-479A-8B58-0A1869BA5D37}
{BF934627-F531-44FB-BEC2-ECA801FF31E7} = {DD089B8B-DA73-492A-9010-F772D1C178DA}
{A0DC5F8E-5D7F-4E8A-A5DF-B1FC31F7336E} = {5BA4A8FA-F7F4-45B3-AEC8-8886D35AAC79}
{FD3CD5A8-E9B3-467F-90EB-2B7D5B83F348} = {A0DC5F8E-5D7F-4E8A-A5DF-B1FC31F7336E}
diff --git a/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj b/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
index 129bd9914..e48fa21f3 100644
--- a/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
+++ b/src/apps/Elsa.Server.Web/Elsa.Server.Web.csproj
@@ -1,10 +1,7 @@
-
-
-
diff --git a/src/apps/Elsa.Server.Web/Program.cs b/src/apps/Elsa.Server.Web/Program.cs
index 0ede4e723..2e802dcc0 100644
--- a/src/apps/Elsa.Server.Web/Program.cs
+++ b/src/apps/Elsa.Server.Web/Program.cs
@@ -1,5 +1,4 @@
using System.Text.Encodings.Web;
-using Elsa.Agents;
using Elsa.Alterations.Extensions;
using Elsa.Alterations.MassTransit.Extensions;
using Elsa.Caching.Options;
@@ -94,7 +93,6 @@ const DistributedCachingTransport distributedCachingTransport = DistributedCachi
const MassTransitBroker massTransitBroker = MassTransitBroker.Memory;
const bool useMultitenancy = false;
const bool useTenantsFromConfiguration = true;
-const bool useAgents = false;
const bool useSecrets = false;
const bool disableVariableWrappers = false;
const bool disableVariableCopying = false;
@@ -213,7 +211,8 @@ services
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle)
- ef.UseOracle(oracleConnectionString, new ElsaDbContextOptions{ SchemaName = "ELSA"});
+ ef.UseOracle(oracleConnectionString, new()
+ { SchemaName = "ELSA"});
else
ef.UseSqlite(sp => sp.GetSqliteConnectionString());
@@ -256,7 +255,8 @@ services
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString!);
else if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle)
- ef.UseOracle(oracleConnectionString, new ElsaDbContextOptions{ SchemaName = "ELSA"});
+ ef.UseOracle(oracleConnectionString, new()
+ { SchemaName = "ELSA"});
else
ef.UseSqlite(sp => sp.GetSqliteConnectionString());
@@ -304,7 +304,8 @@ services
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString);
else if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle)
- ef.UseOracle(oracleConnectionString, new ElsaDbContextOptions{ SchemaName = "ELSA"});
+ ef.UseOracle(oracleConnectionString, new()
+ { SchemaName = "ELSA"});
else
ef.UseSqlite(sp => sp.GetSqliteConnectionString());
@@ -354,7 +355,7 @@ services
return new RedisDistributedSynchronizationProvider(database);
}
case "File":
- return new FileDistributedSynchronizationProvider(new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), "App_Data", "locks")));
+ return new FileDistributedSynchronizationProvider(new(Path.Combine(Directory.GetCurrentDirectory(), "App_Data", "locks")));
case "Noop":
default:
return new NoopDistributedSynchronizationProvider();
@@ -451,7 +452,8 @@ services
else if (sqlDatabaseProvider == SqlDatabaseProvider.CockroachDb)
ef.UsePostgreSql(cockroachDbConnectionString);
else if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle)
- ef.UseOracle(oracleConnectionString, new ElsaDbContextOptions{ SchemaName = "ELSA"});
+ ef.UseOracle(oracleConnectionString, new()
+ { SchemaName = "ELSA"});
else
ef.UseSqlite(sp => sp.GetSqliteConnectionString());
@@ -536,7 +538,7 @@ services
{
if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
return new SqlServerProvider(sqlServerConnectionString!, true, "", "proto_actor");
- return new SqliteProvider(new SqliteConnectionStringBuilder(sqliteConnectionString));
+ return new SqliteProvider(new(sqliteConnectionString));
};
if (configuration["KUBERNETES_SERVICE_HOST"] != null)
@@ -562,18 +564,7 @@ services
kafka.ConfigureOptions(options => configuration.GetSection("Kafka").Bind(options));
});
}
-
- if (useAgents)
- {
- elsa
- .UseAgentActivities()
- .UseAgentPersistence(persistence => persistence.UseEntityFrameworkCore(ef => ef.UseSqlite(sp => sp.GetSqliteConnectionString())))
- .UseAgentsApi()
- ;
-
- services.Configure(options => builder.Configuration.GetSection("Agents").Bind(options));
- }
-
+
if (useSecrets)
{
elsa
@@ -647,7 +638,8 @@ services
if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite) ef.UseSqlite(sqliteConnectionString);
if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer) ef.UseSqlServer(sqlServerConnectionString);
if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql) ef.UsePostgreSql(postgresConnectionString);
- if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle) ef.UseOracle(oracleConnectionString, new ElsaDbContextOptions{ SchemaName = "ELSA"});
+ if (sqlDatabaseProvider == SqlDatabaseProvider.Oracle) ef.UseOracle(oracleConnectionString, new()
+ { SchemaName = "ELSA"});
#if !NET9_0
if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
ef.UseMySql(mySqlConnectionString);
diff --git a/src/apps/Elsa.Server.Web/appsettings.json b/src/apps/Elsa.Server.Web/appsettings.json
index 786f2d033..e361f3077 100644
--- a/src/apps/Elsa.Server.Web/appsettings.json
+++ b/src/apps/Elsa.Server.Web/appsettings.json
@@ -254,82 +254,6 @@
"SweepInterval": "04:00:00"
}
},
- "Agents": {
- "ApiKeys": [
- {
- "Name": "MyApiKey",
- "Value": "my-api-key"
- }
- ],
- "Services": [
- {
- "Name": "ChatCompletion",
- "Type": "OpenAIChatCompletion",
- "Settings": {
- "ModelId": "gpt-4o",
- "ApiKeyRef": "MyApiKey"
- }
- },
- {
- "Name": "TextToImage",
- "Type": "OpenAITextToImage",
- "Settings": {
- "ModelId": "dall-e-3",
- "ApiKeyRef": "MyApiKey"
- }
- }
- ],
- "Agents": [
- {
- "Name": "Copywriter",
- "Description": "A persona that writes articles on any topic.",
- "Services": [
- "ChatCompletion"
- ],
- "FunctionName": "WriteArticle",
- "PromptTemplate": "You are a writer of articles about any topic and any additional instructions given to you. The syntax of the article content will be markdown, and your response will be in JSON format containing a \"title\" field and a \"markdown\" field using the following JSON structure: { \"title\": \"The title of the Article\", \"markdown\": \"The article content in markdown syntax.\" }. This is the topic: {{$Topic}}. The article consists of around {{$ParagraphCount}} paragraphs. The article must be written in the language {{$Language}} using the following style: {{$WritingStyle}}. Additional instructions (if any): {{$AdditionalInstructions}}.",
- "InputVariables": [
- {
- "Name": "Topic",
- "Description": "The topic to write an article about.",
- "Type": "string"
- },
- {
- "Name": "ParagraphCount",
- "Description": "The number of paragraphs to write.",
- "Type": "int"
- },
- {
- "Name": "Language",
- "Description": "The language to write the text in.",
- "Type": "string"
- },
- {
- "Name": "WritingStyle",
- "Description": "The style to write the text in.",
- "Type": "string"
- },
- {
- "Name": "AdditionalInstructions",
- "Description": "Any additional instructions.",
- "Type": "string"
- }
- ],
- "OutputVariable": {
- "Name": "Article",
- "Description": "The article consisting of a title and markdown text."
- },
- "ExecutionSettings": {
- "MaxTokens": null,
- "Temperature": 0.5,
- "TopP": 0.9,
- "PresencePenalty": 0.5,
- "FrequencyPenalty": 0.5,
- "ResponseFormat": "json_object"
- }
- }
- ]
- },
"Webhooks": {
"Sinks": [
{
diff --git a/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj b/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
index 7df79071e..3ea5601f3 100644
--- a/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
+++ b/src/apps/Elsa.ServerAndStudio.Web/Elsa.ServerAndStudio.Web.csproj
@@ -7,12 +7,7 @@
-
-
-
-
-
diff --git a/src/apps/Elsa.ServerAndStudio.Web/Program.cs b/src/apps/Elsa.ServerAndStudio.Web/Program.cs
index 807f711a0..01b787cad 100644
--- a/src/apps/Elsa.ServerAndStudio.Web/Program.cs
+++ b/src/apps/Elsa.ServerAndStudio.Web/Program.cs
@@ -11,9 +11,9 @@ using Elsa.ServerAndStudio.Web.Enums;
using Medallion.Threading.FileSystem;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.Sqlite;
-using Proto.Persistence.Sqlite;
using WebhooksCore.Options;
using Elsa.Connections.Middleware;
+using Proto.Persistence.Sqlite;
const bool useMassTransit = true;
const bool useProtoActor = true;
@@ -140,21 +140,6 @@ services
.UseEmail(email => email.ConfigureOptions = options => configuration.GetSection("Smtp").Bind(options))
.UseWebhooks(webhooks => webhooks.ConfigureSinks = options => builder.Configuration.GetSection("Webhooks:Sinks").Bind(options))
.UseWorkflowsApi()
- .UseAgentsApi()
- .UseAgentPersistence(persistence => persistence.UseEntityFrameworkCore(ef =>
- {
- if (sqlDatabaseProvider == SqlDatabaseProvider.SqlServer)
- ef.UseSqlServer(sqlServerConnectionString);
- else if (sqlDatabaseProvider == SqlDatabaseProvider.PostgreSql)
- ef.UsePostgreSql(postgreSqlConnectionString);
- else if (sqlDatabaseProvider == SqlDatabaseProvider.Sqlite)
- ef.UseSqlite(sqliteConnectionString);
-#if !NET9_0
- else if (sqlDatabaseProvider == SqlDatabaseProvider.MySql)
- ef.UseMySql(mySqlConnectionString);
-#endif
- }))
- .UseAgentActivities()
.AddActivitiesFrom()
.AddWorkflowsFrom();
@@ -195,9 +180,9 @@ services
});
}
- elsa.UseConnections(
- configure=> configure.AddConnectionsFrom());
- elsa.UseConnectionPersistence(ef=> ef.UseEntityFrameworkCore(f=>f.UseSqlite()));
+ elsa.UseConnections(
+ configure=> configure.AddConnectionsFrom());
+ elsa.UseConnectionPersistence(ef=> ef.UseEntityFrameworkCore(f=>f.UseSqlite()));
elsa.UseConnectionsApi();
});
diff --git a/src/modules/Elsa.Agents.Activities/Activities/AgentActivity.cs b/src/modules/Elsa.Agents.Activities/Activities/AgentActivity.cs
deleted file mode 100644
index 6e20bf054..000000000
--- a/src/modules/Elsa.Agents.Activities/Activities/AgentActivity.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System.ComponentModel;
-using System.Dynamic;
-using System.Text.Encodings.Web;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-using System.Text.Unicode;
-using Elsa.Agents.Activities.ActivityProviders;
-using Elsa.Expressions.Helpers;
-using Elsa.Extensions;
-using Elsa.Workflows;
-using Elsa.Workflows.Models;
-using Elsa.Workflows.Serialization.Converters;
-
-namespace Elsa.Agents.Activities;
-
-///
-/// An activity that executes a function of a skilled agent. This is an internal activity that is used by .
-///
-[Browsable(false)]
-public class AgentActivity : CodeActivity
-{
- private static JsonSerializerOptions? _serializerOptions;
-
- private static JsonSerializerOptions SerializerOptions =>
- _serializerOptions ??= new JsonSerializerOptions
- {
- Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
- PropertyNameCaseInsensitive = true
- }.WithConverters(new ExpandoObjectConverterFactory());
-
- [JsonIgnore] internal string AgentName { get; set; } = default!;
-
- ///
- protected override async ValueTask ExecuteAsync(ActivityExecutionContext context)
- {
- var activityDescriptor = context.ActivityDescriptor;
- var inputDescriptors = activityDescriptor.Inputs;
- var functionInput = new Dictionary();
-
- foreach (var inputDescriptor in inputDescriptors)
- {
- var input = (Input?)inputDescriptor.ValueGetter(this);
- var inputValue = input != null ? context.Get(input.MemoryBlockReference()) : default;
- functionInput[inputDescriptor.Name] = inputValue;
- }
-
- var agentInvoker = context.GetRequiredService();
- var result = await agentInvoker.InvokeAgentAsync(AgentName, functionInput, context.CancellationToken);
- var json = result.FunctionResult.GetValue();
- var outputType = context.ActivityDescriptor.Outputs.Single().Type;
-
- // If the target type is object, we want the JSON to be deserialized into an ExpandoObject for dynamic field access.
- if (outputType == typeof(object))
- outputType = typeof(ExpandoObject);
-
- var converterOptions = new ObjectConverterOptions(SerializerOptions);
- var outputValue = json.ConvertTo(outputType, converterOptions);
- var outputDescriptor = activityDescriptor.Outputs.Single();
- var output = (Output)outputDescriptor.ValueGetter(this);
- context.Set(output, outputValue);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/ActivityProviders/AgentActivityProvider.cs b/src/modules/Elsa.Agents.Activities/ActivityProviders/AgentActivityProvider.cs
deleted file mode 100644
index 82b97df7a..000000000
--- a/src/modules/Elsa.Agents.Activities/ActivityProviders/AgentActivityProvider.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-using Elsa.Expressions.Contracts;
-using Elsa.Expressions.Extensions;
-using Elsa.Extensions;
-using Elsa.Workflows;
-using Elsa.Workflows.Models;
-using Humanizer;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Activities.ActivityProviders;
-
-///
-/// Provides activities for each function of registered agents.
-///
-[UsedImplicitly]
-public class AgentActivityProvider(
- IKernelConfigProvider kernelConfigProvider,
- IActivityDescriber activityDescriber,
- IActivityFactory activityFactory,
- IWellKnownTypeRegistry wellKnownTypeRegistry
-) : IActivityProvider
-{
- ///
- public async ValueTask> GetDescriptorsAsync(CancellationToken cancellationToken = default)
- {
- var kernelConfig = await kernelConfigProvider.GetKernelConfigAsync(cancellationToken);
- var agents = kernelConfig.Agents;
- var activityDescriptors = new List();
-
- foreach (var kvp in agents)
- {
- var agentConfig = kvp.Value;
- var activityDescriptor = await activityDescriber.DescribeActivityAsync(typeof(AgentActivity), cancellationToken);
- var activityTypeName = $"Elsa.Agents.{agentConfig.Name.Pascalize()}";
- activityDescriptor.Name = agentConfig.Name.Pascalize();
- activityDescriptor.TypeName = activityTypeName;
- activityDescriptor.Description = agentConfig.Description;
- activityDescriptor.DisplayName = agentConfig.Name.Humanize().Transform(To.TitleCase);
- activityDescriptor.IsBrowsable = true;
- activityDescriptor.Category = "Agents";
- activityDescriptor.Kind = ActivityKind.Job;
- activityDescriptor.CustomProperties["RootType"] = nameof(AgentActivity);
-
- activityDescriptor.Constructor = context =>
- {
- var activity = (AgentActivity)activityFactory.Create(typeof(AgentActivity), context);
- activity.Type = activityTypeName;
- activity.AgentName = agentConfig.Name;
- return activity;
- };
-
- activityDescriptors.Add(activityDescriptor);
- activityDescriptor.Inputs.Clear();
-
- foreach (var inputVariable in agentConfig.InputVariables)
- {
- var inputName = inputVariable.Name;
- var inputType = inputVariable.Type == null! ? "object" : inputVariable.Type;
- var nakedInputType = wellKnownTypeRegistry.GetTypeOrDefault(inputType);
- var inputDescriptor = new InputDescriptor
- {
- Name = inputVariable.Name,
- DisplayName = inputVariable.Name.Humanize(),
- Description = inputVariable.Description,
- Type = nakedInputType,
- ValueGetter = activity => activity.SyntheticProperties.GetValueOrDefault(inputName),
- ValueSetter = (activity, value) => activity.SyntheticProperties[inputName] = value!,
- IsSynthetic = true,
- IsWrapped = true,
- UIHint = ActivityDescriber.GetUIHint(nakedInputType)
- };
- activityDescriptor.Inputs.Add(inputDescriptor);
- }
-
- activityDescriptor.Outputs.Clear();
- var outputVariable = agentConfig.OutputVariable;
- var outputType = outputVariable.Type == null! ? "object" : outputVariable.Type;
- var nakedOutputType = wellKnownTypeRegistry.GetTypeOrDefault(outputType);
- var outputName = "Output";
- var outputDescriptor = new OutputDescriptor
- {
- Name = outputName,
- Description = agentConfig.OutputVariable.Description,
- Type = nakedOutputType,
- IsSynthetic = true,
- ValueGetter = activity => activity.SyntheticProperties.GetValueOrDefault(outputName),
- ValueSetter = (activity, value) => activity.SyntheticProperties[outputName] = value!,
- };
- activityDescriptor.Outputs.Add(outputDescriptor);
- }
-
- return activityDescriptors;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj b/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj
deleted file mode 100644
index f50cae716..000000000
--- a/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- Provides Agent activities
- elsa module agents semantic kernel llm ai
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj.DotSettings b/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj.DotSettings
deleted file mode 100644
index 7230eb354..000000000
--- a/src/modules/Elsa.Agents.Activities/Elsa.Agents.Activities.csproj.DotSettings
+++ /dev/null
@@ -1,2 +0,0 @@
-
- True
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs b/src/modules/Elsa.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs
deleted file mode 100644
index 532916645..000000000
--- a/src/modules/Elsa.Agents.Activities/Extensions/AgentActivitiesFeatureModuleExtensions.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Elsa.Agents.Activities.Features;
-using Elsa.Extensions;
-using Elsa.Features.Services;
-using JetBrains.Annotations;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.Agents;
-
-///
-/// An extension class that installs the Agents feature.
-///
-[PublicAPI]
-public static class AgentActivitiesFeatureModuleExtensions
-{
- ///
- /// Installs the Agents feature.
- ///
- public static IModule UseAgentActivities(this IModule module, Action? configure = null)
- {
- return module.Use(configure);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/Features/AgentActivitiesFeature.cs b/src/modules/Elsa.Agents.Activities/Features/AgentActivitiesFeature.cs
deleted file mode 100644
index a6704bebc..000000000
--- a/src/modules/Elsa.Agents.Activities/Features/AgentActivitiesFeature.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Elsa.Agents.Activities.ActivityProviders;
-using Elsa.Agents.Activities.Handlers;
-using Elsa.Agents.Features;
-using Elsa.Features.Abstractions;
-using Elsa.Features.Attributes;
-using Elsa.Features.Services;
-using Elsa.Workflows.Management.Features;
-using JetBrains.Annotations;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Elsa.Agents.Activities.Features;
-
-///
-/// A feature that installs Semantic Kernel functionality.
-///
-[DependsOn(typeof(WorkflowManagementFeature))]
-[DependsOn(typeof(AgentsFeature))]
-[UsedImplicitly]
-public class AgentActivitiesFeature(IModule module) : FeatureBase(module)
-{
- ///
- public override void Apply()
- {
- Services
- .AddActivityProvider()
- .AddNotificationHandler()
- ;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/FodyWeavers.xml b/src/modules/Elsa.Agents.Activities/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Activities/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Activities/Handlers/RefreshActivityRegistry.cs b/src/modules/Elsa.Agents.Activities/Handlers/RefreshActivityRegistry.cs
deleted file mode 100644
index 6cc0bcf21..000000000
--- a/src/modules/Elsa.Agents.Activities/Handlers/RefreshActivityRegistry.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Elsa.Agents.Activities.ActivityProviders;
-using Elsa.Agents.Persistence.Notifications;
-using Elsa.Mediator.Contracts;
-using Elsa.Workflows;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Activities.Handlers;
-
-[UsedImplicitly]
-public class RefreshActivityRegistry(IActivityRegistry activityRegistry, AgentActivityProvider agentActivityProvider) :
- INotificationHandler,
- INotificationHandler,
- INotificationHandler,
- INotificationHandler
-{
- public Task HandleAsync(AgentDefinitionCreated notification, CancellationToken cancellationToken) => RefreshRegistryAsync(cancellationToken);
- public Task HandleAsync(AgentDefinitionUpdated notification, CancellationToken cancellationToken) => RefreshRegistryAsync(cancellationToken);
- public Task HandleAsync(AgentDefinitionDeleted notification, CancellationToken cancellationToken) => RefreshRegistryAsync(cancellationToken);
- public Task HandleAsync(AgentDefinitionsDeletedInBulk notification, CancellationToken cancellationToken) => RefreshRegistryAsync(cancellationToken);
- private Task RefreshRegistryAsync(CancellationToken cancellationToken) => activityRegistry.RefreshDescriptorsAsync(agentActivityProvider, cancellationToken);
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj b/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj
deleted file mode 100644
index e1c204191..000000000
--- a/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- Provides Agents API endpoints
- elsa module agents semantic kernel api llm ai
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj.DotSettings b/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj.DotSettings
deleted file mode 100644
index 6fc317744..000000000
--- a/src/modules/Elsa.Agents.Api/Elsa.Agents.Api.csproj.DotSettings
+++ /dev/null
@@ -1,2 +0,0 @@
-
- True
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs
deleted file mode 100644
index d72252b2d..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/BulkDelete/Endpoint.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Filters;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.BulkDelete;
-
-///
-/// Deletes an agent.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/bulk-actions/agents/delete");
- ConfigurePermissions("ai/agents:delete");
- }
-
- ///
- public override async Task ExecuteAsync(BulkDeleteRequest req, CancellationToken ct)
- {
- var ids = req.Ids;
- var filter = new AgentDefinitionFilter
- {
- Ids = ids
- };
- var count = await agentManager.DeleteManyAsync(filter, ct);
- return new BulkDeleteResponse(count);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Create/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Create/Endpoint.cs
deleted file mode 100644
index f5cbd6d5d..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Create/Endpoint.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Entities;
-using Elsa.Agents.Persistence.Filters;
-using Elsa.Extensions;
-using Elsa.Workflows;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Create;
-
-///
-/// Lists all registered agents.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager, IIdentityGenerator identityGenerator) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/agents");
- ConfigurePermissions("ai/agents:write");
- }
-
- ///
- public override async Task ExecuteAsync(AgentInputModel req, CancellationToken ct)
- {
- var isNameUnique = await IsNameUniqueAsync(req.Name, ct);
-
- if (!isNameUnique)
- {
- AddError("An Agent already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return null!;
- }
-
- var newEntity = new AgentDefinition
- {
- Id = identityGenerator.GenerateId(),
- Name = req.Name.Trim(),
- Description = req.Description.Trim(),
- AgentConfig = new AgentConfig
- {
- Description = req.Description.Trim(),
- Name = req.Name.Trim(),
- Agents = req.Agents,
- ExecutionSettings = req.ExecutionSettings,
- InputVariables = req.InputVariables,
- OutputVariable = req.OutputVariable,
- Services = req.Services,
- Plugins = req.Plugins,
- FunctionName = req.FunctionName,
- PromptTemplate = req.PromptTemplate
- }
- };
-
- await agentManager.AddAsync(newEntity, ct);
- return newEntity.ToModel();
- }
-
- private async Task IsNameUniqueAsync(string name, CancellationToken ct)
- {
- var filter = new AgentDefinitionFilter
- {
- Name = name
- };
- return await agentManager.FindAsync(filter, ct) == null;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs
deleted file mode 100644
index d542611c4..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Endpoint.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Delete;
-
-///
-/// Deletes an Agent.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Delete("/ai/agents/{id}");
- ConfigurePermissions("ai/agents:delete");
- }
-
- ///
- public override async Task HandleAsync(Request req, CancellationToken ct)
- {
- var entity = await agentManager.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return;
- }
-
- await agentManager.DeleteAsync(entity, ct);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Request.cs
deleted file mode 100644
index fc773be2e..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Delete/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Delete;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs
deleted file mode 100644
index 74c02b5b1..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/GenerateUniqueName/Endpoint.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.GenerateUniqueName;
-
-///
-/// Generates a unique name for an agent.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpointWithoutRequest
-{
- ///
- public override void Configure()
- {
- Post("/ai/actions/agents/generate-unique-name");
- ConfigurePermissions("ai/agents:write");
- }
-
- ///
- public override async Task ExecuteAsync(CancellationToken ct)
- {
- var newName = await agentManager.GenerateUniqueNameAsync(ct);
- return new(newName);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Endpoint.cs
deleted file mode 100644
index 2e0c2410e..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Endpoint.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Extensions;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Get;
-
-///
-/// Gets an agent.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Get("/ai/agents/{id}");
- ConfigurePermissions("ai/agents:read");
- }
-
- ///
- public override async Task ExecuteAsync(Request req, CancellationToken ct)
- {
- var entity = await agentManager.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- return entity.ToModel();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Request.cs
deleted file mode 100644
index 8a92ef85b..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Get/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Get;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs
deleted file mode 100644
index 6e9c59e79..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Endpoint.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System.Text.Json;
-using Elsa.Abstractions;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Invoke;
-
-///
-/// Invokes an agent.
-///
-[UsedImplicitly]
-public class Execute(AgentInvoker agentInvoker) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/agents/{agent}/invoke");
- ConfigurePermissions("ai/agents:invoke");
- }
-
- ///
- public override async Task ExecuteAsync(Request req, CancellationToken ct)
- {
- var result = await agentInvoker.InvokeAgentAsync(req.Agent, req.Inputs, ct).AsJsonElementAsync();
- return result;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Request.cs
deleted file mode 100644
index c18c275f3..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Invoke/Request.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Elsa.Agents.Api.Endpoints.Agents.Invoke;
-
-public class Request
-{
- public string Agent { get; set; }
- public IDictionary Inputs { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs
deleted file mode 100644
index db5c2e1f6..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/IsUniqueName/Endpoint.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.IsUniqueName;
-
-///
-/// Checks if a name is unique.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/queries/agents/is-unique-name");
- ConfigurePermissions("ai/agents:read");
- }
-
- ///
- public override async Task ExecuteAsync(IsUniqueNameRequest req, CancellationToken ct)
- {
- var isUnique = await agentManager.IsNameUniqueAsync(req.Name, req.Id, ct);
- return new(isUnique);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/List/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/List/Endpoint.cs
deleted file mode 100644
index 6c8c19944..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/List/Endpoint.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Extensions;
-using Elsa.Models;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.List;
-
-///
-/// Lists all agents.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpointWithoutRequest>
-{
- ///
- public override void Configure()
- {
- Get("/ai/agents");
- ConfigurePermissions("ai/agents:read");
- }
-
- ///
- public override async Task> ExecuteAsync(CancellationToken ct)
- {
- var entities = await agentManager.ListAsync(ct);
- var models = entities.Select(x => x.ToModel()).ToList();
- return new ListResponse(models);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Update/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Agents/Update/Endpoint.cs
deleted file mode 100644
index 0e78ec306..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Agents/Update/Endpoint.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Extensions;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Agents.Update;
-
-///
-/// Updates an agent.
-///
-[UsedImplicitly]
-public class Endpoint(IAgentManager agentManager) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/agents/{id}");
- ConfigurePermissions("ai/agents:write");
- }
-
- ///
- public override async Task ExecuteAsync(AgentInputModel req, CancellationToken ct)
- {
- var id = Route("id")!;
- var entity = await agentManager.GetAsync(id, ct);
-
- if (entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- var isNameDuplicate = await IsNameDuplicateAsync(req.Name, id, ct);
-
- if (isNameDuplicate)
- {
- AddError("Another agent already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return entity.ToModel();
- }
-
- entity.Name = req.Name.Trim();
- entity.Description = req.Description.Trim();
- entity.AgentConfig = new AgentConfig
- {
- Name = req.Name.Trim(),
- Description = req.Description.Trim(),
- FunctionName = req.FunctionName.Trim(),
- Services = req.Services,
- PromptTemplate = req.PromptTemplate.Trim(),
- InputVariables = req.InputVariables,
- OutputVariable = req.OutputVariable,
- ExecutionSettings = req.ExecutionSettings,
- Plugins = req.Plugins,
- Agents = req.Agents
- };
-
- await agentManager.UpdateAsync(entity, ct);
- return entity.ToModel();
- }
-
- private async Task IsNameDuplicateAsync(string name, string id, CancellationToken cancellationToken)
- {
- return !await agentManager.IsNameUniqueAsync(name, id, cancellationToken);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs
deleted file mode 100644
index 6f13ddfde..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/BulkDelete/Endpoint.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Filters;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.BulkDelete;
-
-///
-/// Deletes an API key.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/bulk-actions/api-keys/delete");
- ConfigurePermissions("ai/api-keys:delete");
- }
-
- ///
- public override async Task ExecuteAsync(BulkDeleteRequest req, CancellationToken ct)
- {
- var ids = req.Ids;
- var filter = new ApiKeyDefinitionFilter
- {
- Ids = ids
- };
- var count = await store.DeleteManyAsync(filter, ct);
- return new BulkDeleteResponse(count);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs
deleted file mode 100644
index da95d7e6a..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Create/Endpoint.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Entities;
-using Elsa.Agents.Persistence.Filters;
-using Elsa.Workflows;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Create;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store, IIdentityGenerator identityGenerator) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/api-keys");
- ConfigurePermissions("ai/api-keys:write");
- }
-
- ///
- public override async Task ExecuteAsync(ApiKeyInputModel req, CancellationToken ct)
- {
- var existingEntityFilter = new ApiKeyDefinitionFilter
- {
- Name = req.Name
- };
- var existingEntity = await store.FindAsync(existingEntityFilter, ct);
-
- if (existingEntity != null)
- {
- AddError("An API key already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return existingEntity.ToModel();
- }
-
- var newEntity = new ApiKeyDefinition
- {
- Id = identityGenerator.GenerateId(),
- Name = req.Name.Trim(),
- Value = req.Value.Trim()
- };
-
- await store.AddAsync(newEntity, ct);
- return newEntity.ToModel();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs
deleted file mode 100644
index 5173b658a..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Endpoint.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Delete;
-
-///
-/// Delete an API key.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Delete("/ai/api-keys/{id}");
- ConfigurePermissions("ai/api-keys:delete");
- }
-
- ///
- public override async Task HandleAsync(Request req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return;
- }
-
- await store.DeleteAsync(entity, ct);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs
deleted file mode 100644
index 49e42795b..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Delete/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Delete;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs
deleted file mode 100644
index 60cb4285b..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Endpoint.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Get;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Get("/ai/api-keys/{id}");
- ConfigurePermissions("ai/api-keys:read");
- }
-
- ///
- public override async Task ExecuteAsync(Request req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- return entity.ToModel();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Request.cs
deleted file mode 100644
index 1a986ae82..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Get/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Get;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs
deleted file mode 100644
index fd1df7dc0..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/List/Endpoint.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Models;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.List;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store) : ElsaEndpointWithoutRequest>
-{
- ///
- public override void Configure()
- {
- Get("/ai/api-keys");
- ConfigurePermissions("ai/api-keys:read");
- }
-
- ///
- public override async Task> ExecuteAsync(CancellationToken ct)
- {
- var entities = await store.ListAsync(ct);
- var models = entities.Select(x => x.ToModel()).ToList();
- return new ListResponse(models);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs
deleted file mode 100644
index cca77f709..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/ApiKeys/Update/Endpoint.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Entities;
-using Elsa.Agents.Persistence.Filters;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.ApiKeys.Update;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IApiKeyStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/api-keys/{id}");
- ConfigurePermissions("ai/api-keys:write");
- }
-
- ///
- public override async Task ExecuteAsync(ApiKeyModel req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- var isNameDuplicate = await IsNameDuplicateAsync(req.Name, req.Id, ct);
-
- if (isNameDuplicate)
- {
- AddError("Another API key already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return entity;
- }
-
- entity.Name = req.Name.Trim();
- entity.Value = req.Value.Trim();
-
- await store.UpdateAsync(entity, ct);
- return entity;
- }
-
- private async Task IsNameDuplicateAsync(string name, string id, CancellationToken cancellationToken)
- {
- var filter = new ApiKeyDefinitionFilter
- {
- Name = name,
- NotId = id
- };
-
- var entity = await store.FindAsync(filter, cancellationToken);
- return entity != null;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Plugins/List/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Plugins/List/Endpoint.cs
deleted file mode 100644
index edab2d2c6..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Plugins/List/Endpoint.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Models;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Plugins.List;
-
-///
-/// Lists all registered plugins.
-///
-[UsedImplicitly]
-public class Endpoint(IPluginDiscoverer pluginDiscoverer) : ElsaEndpointWithoutRequest>
-{
- ///
- public override void Configure()
- {
- Get("/ai/plugins");
- ConfigurePermissions("ai/plugins:read");
- }
-
- ///
- public override Task> ExecuteAsync(CancellationToken ct)
- {
- var descriptors = pluginDiscoverer.GetPluginDescriptors();
- var models = descriptors.Select(x => x.ToModel()).ToList();
- return Task.FromResult(new ListResponse(models));
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs
deleted file mode 100644
index 8232ac098..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/BulkDelete/Endpoint.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Filters;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.BulkDelete;
-
-///
-/// Deletes an API key.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/bulk-actions/services/delete");
- ConfigurePermissions("ai/api-keys:delete");
- }
-
- ///
- public override async Task ExecuteAsync(BulkDeleteRequest req, CancellationToken ct)
- {
- var ids = req.Ids;
- var filter = new ServiceDefinitionFilter
- {
- Ids = ids
- };
- var count = await store.DeleteManyAsync(filter, ct);
- return new BulkDeleteResponse(count);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Create/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Create/Endpoint.cs
deleted file mode 100644
index cf8c3f0d3..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Create/Endpoint.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Entities;
-using Elsa.Agents.Persistence.Filters;
-using Elsa.Workflows;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Create;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store, IIdentityGenerator identityGenerator) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/services");
- ConfigurePermissions("ai/services:write");
- }
-
- ///
- public override async Task ExecuteAsync(ServiceInputModel req, CancellationToken ct)
- {
- var existingEntityFilter = new ServiceDefinitionFilter
- {
- Name = req.Name
- };
- var existingEntity = await store.FindAsync(existingEntityFilter, ct);
-
- if (existingEntity != null)
- {
- AddError("A Service already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return existingEntity.ToModel();
- }
-
- var newEntity = new ServiceDefinition
- {
- Id = identityGenerator.GenerateId(),
- Name = req.Name.Trim(),
- Type = req.Type,
- Settings = req.Settings
- };
-
- await store.AddAsync(newEntity, ct);
- return newEntity.ToModel();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Endpoint.cs
deleted file mode 100644
index 8a737a6e5..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Endpoint.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Delete;
-
-///
-/// Delete an API key.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Delete("/ai/services/{id}");
- ConfigurePermissions("ai/services:delete");
- }
-
- ///
- public override async Task HandleAsync(Request req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return;
- }
-
- await store.DeleteAsync(entity, ct);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Request.cs
deleted file mode 100644
index d78615389..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Delete/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Delete;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Endpoint.cs
deleted file mode 100644
index e025c18ff..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Endpoint.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Get;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Get("/ai/services/{id}");
- ConfigurePermissions("ai/services:read");
- }
-
- ///
- public override async Task ExecuteAsync(Request req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- return entity.ToModel();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Request.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Request.cs
deleted file mode 100644
index fffc03531..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Get/Request.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Get;
-
-public class Request
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/List/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/List/Endpoint.cs
deleted file mode 100644
index 8dfbb0234..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/List/Endpoint.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Models;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.List;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store) : ElsaEndpointWithoutRequest>
-{
- ///
- public override void Configure()
- {
- Get("/ai/services");
- ConfigurePermissions("ai/services:read");
- }
-
- ///
- public override async Task> ExecuteAsync(CancellationToken ct)
- {
- var entities = await store.ListAsync(ct);
- var models = entities.Select(x => x.ToModel()).ToList();
- return new ListResponse(models);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Endpoints/Services/Update/Endpoint.cs b/src/modules/Elsa.Agents.Api/Endpoints/Services/Update/Endpoint.cs
deleted file mode 100644
index e56746a5e..000000000
--- a/src/modules/Elsa.Agents.Api/Endpoints/Services/Update/Endpoint.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using Elsa.Abstractions;
-using Elsa.Agents.Persistence.Contracts;
-using Elsa.Agents.Persistence.Filters;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Endpoints.Services.Update;
-
-///
-/// Lists all registered API keys.
-///
-[UsedImplicitly]
-public class Endpoint(IServiceStore store) : ElsaEndpoint
-{
- ///
- public override void Configure()
- {
- Post("/ai/services/{id}");
- ConfigurePermissions("ai/services:write");
- }
-
- ///
- public override async Task ExecuteAsync(ServiceModel req, CancellationToken ct)
- {
- var entity = await store.GetAsync(req.Id, ct);
-
- if(entity == null)
- {
- await SendNotFoundAsync(ct);
- return null!;
- }
-
- var isNameDuplicate = await IsNameDuplicateAsync(req.Name, req.Id, ct);
-
- if (isNameDuplicate)
- {
- AddError("Another service already exists with the specified name");
- await SendErrorsAsync(cancellation: ct);
- return entity.ToModel();
- }
-
- entity.Name = req.Name.Trim();
- entity.Type = req.Type.Trim();
- entity.Settings = req.Settings;
-
- await store.UpdateAsync(entity, ct);
- return entity.ToModel();
- }
-
- private async Task IsNameDuplicateAsync(string name, string id, CancellationToken cancellationToken)
- {
- var filter = new ServiceDefinitionFilter
- {
- Name = name,
- NotId = id
- };
-
- var entity = await store.FindAsync(filter, cancellationToken);
- return entity != null;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Extensions/AgentDefinitionExtensions.cs b/src/modules/Elsa.Agents.Api/Extensions/AgentDefinitionExtensions.cs
deleted file mode 100644
index f631ce233..000000000
--- a/src/modules/Elsa.Agents.Api/Extensions/AgentDefinitionExtensions.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Elsa.Agents;
-using Elsa.Agents.Persistence.Entities;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.Extensions;
-
-public static class AgentDefinitionExtensions
-{
- public static AgentModel ToModel(this AgentDefinition agentDefinition)
- {
- return new AgentModel
- {
- Id = agentDefinition.Id,
- Name = agentDefinition.Name,
- Description = agentDefinition.Description,
- Agents = agentDefinition.AgentConfig.Agents,
- ExecutionSettings = agentDefinition.AgentConfig.ExecutionSettings,
- InputVariables = agentDefinition.AgentConfig.InputVariables,
- OutputVariable = agentDefinition.AgentConfig.OutputVariable,
- Services = agentDefinition.AgentConfig.Services,
- Plugins = agentDefinition.AgentConfig.Plugins,
- FunctionName = agentDefinition.AgentConfig.FunctionName,
- PromptTemplate = agentDefinition.AgentConfig.PromptTemplate
- };
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Extensions/ModuleExtensions.cs b/src/modules/Elsa.Agents.Api/Extensions/ModuleExtensions.cs
deleted file mode 100644
index bc777f9da..000000000
--- a/src/modules/Elsa.Agents.Api/Extensions/ModuleExtensions.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Elsa.Agents.Api.Features;
-using Elsa.Features.Services;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.Extensions;
-
-///
-/// Extends with methods to install Semantic Kernel API endpoints.
-///
-public static class ModuleExtensions
-{
- ///
- /// Installs the Semantic Kernel API feature.
- ///
- public static IModule UseAgentsApi(this IModule module, Action? configure = null)
- {
- return module.Use(configure);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/Features/AgentsApiFeature.cs b/src/modules/Elsa.Agents.Api/Features/AgentsApiFeature.cs
deleted file mode 100644
index 158185d9b..000000000
--- a/src/modules/Elsa.Agents.Api/Features/AgentsApiFeature.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Elsa.Agents.Persistence.Features;
-using Elsa.Extensions;
-using Elsa.Features.Abstractions;
-using Elsa.Features.Attributes;
-using Elsa.Features.Services;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents.Api.Features;
-
-///
-/// A feature that installs API endpoints to interact with skilled agents.
-///
-[DependsOn(typeof(AgentPersistenceFeature))]
-[UsedImplicitly]
-public class AgentsApiFeature(IModule module) : FeatureBase(module)
-{
- ///
- public override void Configure()
- {
- Module.AddFastEndpointsAssembly();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Api/FodyWeavers.xml b/src/modules/Elsa.Agents.Api/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Api/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Abstractions/PluginProvider.cs b/src/modules/Elsa.Agents.Core/Abstractions/PluginProvider.cs
deleted file mode 100644
index c64a1f343..000000000
--- a/src/modules/Elsa.Agents.Core/Abstractions/PluginProvider.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Elsa.Agents;
-
-public abstract class PluginProvider : IPluginProvider
-{
- public virtual IEnumerable GetPlugins() => [];
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Contracts/IAgentServiceProvider.cs b/src/modules/Elsa.Agents.Core/Contracts/IAgentServiceProvider.cs
deleted file mode 100644
index 1eb96057e..000000000
--- a/src/modules/Elsa.Agents.Core/Contracts/IAgentServiceProvider.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Elsa.Agents;
-
-public interface IAgentServiceProvider
-{
- string Name { get; }
- void ConfigureKernel(KernelBuilderContext context);
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Contracts/IKernelConfigProvider.cs b/src/modules/Elsa.Agents.Core/Contracts/IKernelConfigProvider.cs
deleted file mode 100644
index a64f74119..000000000
--- a/src/modules/Elsa.Agents.Core/Contracts/IKernelConfigProvider.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Elsa.Agents;
-
-public interface IKernelConfigProvider
-{
- Task GetKernelConfigAsync(CancellationToken cancellationToken = default);
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Contracts/IPluginDiscoverer.cs b/src/modules/Elsa.Agents.Core/Contracts/IPluginDiscoverer.cs
deleted file mode 100644
index 5a9fa460e..000000000
--- a/src/modules/Elsa.Agents.Core/Contracts/IPluginDiscoverer.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Elsa.Agents;
-
-public interface IPluginDiscoverer
-{
- IEnumerable GetPluginDescriptors();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Contracts/IPluginProvider.cs b/src/modules/Elsa.Agents.Core/Contracts/IPluginProvider.cs
deleted file mode 100644
index 0db6dfd76..000000000
--- a/src/modules/Elsa.Agents.Core/Contracts/IPluginProvider.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Elsa.Agents;
-
-///
-/// Implementations of this interface are responsible for providing plugins.
-///
-public interface IPluginProvider
-{
- IEnumerable GetPlugins();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Contracts/IServiceDiscoverer.cs b/src/modules/Elsa.Agents.Core/Contracts/IServiceDiscoverer.cs
deleted file mode 100644
index 681e6fd4a..000000000
--- a/src/modules/Elsa.Agents.Core/Contracts/IServiceDiscoverer.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace Elsa.Agents;
-
-public interface IServiceDiscoverer
-{
- IEnumerable Discover();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj b/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj
deleted file mode 100644
index da202e15f..000000000
--- a/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- Provides an agentic framework using Semantic Kernel
- elsa module agents semantic kernel llm ai
- Elsa.Agents
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj.DotSettings b/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj.DotSettings
deleted file mode 100644
index 0eb55f59b..000000000
--- a/src/modules/Elsa.Agents.Core/Elsa.Agents.Core.csproj.DotSettings
+++ /dev/null
@@ -1,9 +0,0 @@
-
- True
- True
- True
- True
- True
- True
- True
- True
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Extensions/AgentConfigExtensions.cs b/src/modules/Elsa.Agents.Core/Extensions/AgentConfigExtensions.cs
deleted file mode 100644
index 2a4cdc6f2..000000000
--- a/src/modules/Elsa.Agents.Core/Extensions/AgentConfigExtensions.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using Microsoft.SemanticKernel;
-using Microsoft.SemanticKernel.Connectors.OpenAI;
-
-#pragma warning disable SKEXP0001
-#pragma warning disable SKEXP0010
-
-namespace Elsa.Agents;
-
-public static class AgentConfigExtensions
-{
- public static OpenAIPromptExecutionSettings ToOpenAIPromptExecutionSettings(this AgentConfig agentConfig)
- {
- return new OpenAIPromptExecutionSettings
- {
- Temperature = agentConfig.ExecutionSettings.Temperature,
- TopP = agentConfig.ExecutionSettings.TopP,
- MaxTokens = agentConfig.ExecutionSettings.MaxTokens,
- PresencePenalty = agentConfig.ExecutionSettings.PresencePenalty,
- FrequencyPenalty = agentConfig.ExecutionSettings.FrequencyPenalty,
- ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions,
- ResponseFormat = agentConfig.ExecutionSettings.ResponseFormat,
- ChatSystemPrompt = agentConfig.PromptTemplate,
- };
- }
-
- public static PromptTemplateConfig ToPromptTemplateConfig(this AgentConfig agentConfig)
- {
- var promptExecutionSettingsDictionary = new Dictionary
- {
- [PromptExecutionSettings.DefaultServiceId] = agentConfig.ToOpenAIPromptExecutionSettings(),
- };
-
- return new PromptTemplateConfig
- {
- Name = agentConfig.FunctionName,
- Description = agentConfig.Description,
- Template = agentConfig.PromptTemplate,
- ExecutionSettings = promptExecutionSettingsDictionary,
- AllowDangerouslySetContent = true,
- InputVariables = agentConfig.InputVariables.Select(x => new InputVariable
- {
- Name = x.Name,
- Description = x.Description,
- IsRequired = true,
- AllowDangerouslySetContent = true
- }).ToList()
- };
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Extensions/FunctionResultExtensions.cs b/src/modules/Elsa.Agents.Core/Extensions/FunctionResultExtensions.cs
deleted file mode 100644
index ba02314ff..000000000
--- a/src/modules/Elsa.Agents.Core/Extensions/FunctionResultExtensions.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Text.Json;
-using Microsoft.SemanticKernel;
-
-namespace Elsa.Agents;
-
-public static class FunctionResultExtensions
-{
- public static async Task AsJsonElementAsync(this Task resultTask)
- {
- var result = await resultTask;
- return result.FunctionResult.AsJsonElement();
- }
-
- public static async Task AsJsonElementAsync(this Task resultTask)
- {
- var result = await resultTask;
- return result.AsJsonElement();
- }
-
- public static JsonElement AsJsonElement(this FunctionResult result)
- {
- var response = result.GetValue()!;
- return JsonSerializer.Deserialize(response);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Extensions/ModuleExtensions.cs b/src/modules/Elsa.Agents.Core/Extensions/ModuleExtensions.cs
deleted file mode 100644
index bf521d0f9..000000000
--- a/src/modules/Elsa.Agents.Core/Extensions/ModuleExtensions.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Elsa.Agents.Features;
-using Elsa.Features.Services;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.Extensions;
-
-///
-/// Extends with methods to install Semantic Kernel API endpoints.
-///
-public static class ModuleExtensions
-{
- ///
- /// Installs the Semantic Kernel API feature.
- ///
- public static IModule UseAgents(this IModule module, Action? configure = null)
- {
- return module.Use(configure);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Extensions/ServiceCollectionExtensions.cs b/src/modules/Elsa.Agents.Core/Extensions/ServiceCollectionExtensions.cs
deleted file mode 100644
index b33fed1c9..000000000
--- a/src/modules/Elsa.Agents.Core/Extensions/ServiceCollectionExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Elsa.Agents;
-
-public static class ServiceCollectionExtensions
-{
- public static IServiceCollection AddPluginProvider(this IServiceCollection services) where T: class, IPluginProvider
- {
- return services.AddScoped();
- }
-
- public static IServiceCollection AddAgentServiceProvider(this IServiceCollection services) where T: class, IAgentServiceProvider
- {
- return services.AddScoped();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Features/AgentsFeature.cs b/src/modules/Elsa.Agents.Core/Features/AgentsFeature.cs
deleted file mode 100644
index 518d1ebdd..000000000
--- a/src/modules/Elsa.Agents.Core/Features/AgentsFeature.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using Elsa.Agents.Plugins;
-using Elsa.Features.Abstractions;
-using Elsa.Features.Services;
-using JetBrains.Annotations;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Elsa.Agents.Features;
-
-///
-/// A feature that installs API endpoints to interact with skilled agents.
-///
-[UsedImplicitly]
-public class AgentsFeature(IModule module) : FeatureBase(module)
-{
- private Func _kernelConfigProviderFactory = sp => sp.GetRequiredService();
-
- public AgentsFeature UseKernelConfigProvider(Func factory)
- {
- _kernelConfigProviderFactory = factory;
- return this;
- }
-
- ///
- public override void Apply()
- {
- Services.AddOptions();
-
- Services
- .AddScoped()
- .AddScoped()
- .AddScoped()
- .AddScoped()
- .AddScoped(_kernelConfigProviderFactory)
- .AddScoped()
- .AddPluginProvider()
- .AddAgentServiceProvider()
- .AddAgentServiceProvider()
- ;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/FodyWeavers.xml b/src/modules/Elsa.Agents.Core/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Core/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Models/InvokeAgentResult.cs b/src/modules/Elsa.Agents.Core/Models/InvokeAgentResult.cs
deleted file mode 100644
index ee2732b91..000000000
--- a/src/modules/Elsa.Agents.Core/Models/InvokeAgentResult.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Text.Json;
-using Microsoft.SemanticKernel;
-
-namespace Elsa.Agents;
-
-public record InvokeAgentResult(AgentConfig Function, FunctionResult FunctionResult)
-{
- public object? ParseResult()
- {
- var targetType = Type.GetType(Function.OutputVariable.Type) ?? typeof(JsonElement);
- var json = FunctionResult.GetValue();
- return JsonSerializer.Deserialize(json, targetType);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Models/KernelBuilderContext.cs b/src/modules/Elsa.Agents.Core/Models/KernelBuilderContext.cs
deleted file mode 100644
index 8fe3dc151..000000000
--- a/src/modules/Elsa.Agents.Core/Models/KernelBuilderContext.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using JetBrains.Annotations;
-using Microsoft.SemanticKernel;
-
-namespace Elsa.Agents;
-
-[UsedImplicitly]
-public record KernelBuilderContext(IKernelBuilder KernelBuilder, KernelConfig KernelConfig, ServiceConfig ServiceConfig)
-{
- public string GetApiKey()
- {
- var settings = ServiceConfig.Settings;
- if (settings.TryGetValue("ApiKey", out var apiKey))
- return (string)apiKey;
-
- if (settings.TryGetValue("ApiKeyRef", out var apiKeyRef))
- return KernelConfig.ApiKeys[(string)apiKeyRef].Value;
-
- throw new KeyNotFoundException($"No api key found for service {ServiceConfig.Type}");
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Models/PluginDescriptor.cs b/src/modules/Elsa.Agents.Core/Models/PluginDescriptor.cs
deleted file mode 100644
index 31b0c8c7f..000000000
--- a/src/modules/Elsa.Agents.Core/Models/PluginDescriptor.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.ComponentModel;
-using System.Reflection;
-
-namespace Elsa.Agents;
-
-///
-/// A descriptor for a plugin.
-///
-public class PluginDescriptor
-{
- public string Name { get; set; }
- public string Description { get; set; }
- public Type PluginType { get; set; }
-
- public PluginDescriptorModel ToModel() => new()
- {
- Name = Name,
- Description = Description,
- PluginType = PluginType.AssemblyQualifiedName!
- };
-
- public static PluginDescriptor From(string? name = null)
- {
- var pluginType = typeof(TPlugin);
- var description = pluginType.GetCustomAttribute()?.Description ?? string.Empty;
- return new PluginDescriptor
- {
- Name = name ?? pluginType.Name.Replace("Plugin", ""),
- Description = description,
- PluginType = pluginType
- };
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Options/AgentsOptions.cs b/src/modules/Elsa.Agents.Core/Options/AgentsOptions.cs
deleted file mode 100644
index a92862a6e..000000000
--- a/src/modules/Elsa.Agents.Core/Options/AgentsOptions.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Elsa.Agents;
-
-public class AgentsOptions
-{
- public ICollection ApiKeys { get; set; }
- public ICollection Services { get; set; }
- public ICollection Agents { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Plugins/ImageGeneratorPlugin.cs b/src/modules/Elsa.Agents.Core/Plugins/ImageGeneratorPlugin.cs
deleted file mode 100644
index a4d629754..000000000
--- a/src/modules/Elsa.Agents.Core/Plugins/ImageGeneratorPlugin.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.ComponentModel;
-using JetBrains.Annotations;
-using Microsoft.SemanticKernel;
-using Microsoft.SemanticKernel.TextToImage;
-
-#pragma warning disable SKEXP0001
-
-namespace Elsa.Agents.Plugins;
-
-[Description("Generates an image from text")]
-[UsedImplicitly]
-public class ImageGeneratorPlugin
-{
- [KernelFunction("generate_image_from_text")]
- [Description("Generates an image from text")]
- [return: Description("The URL to the generated image")]
- public async Task GenerateImage(
- Kernel kernel,
- [Description("The text to generate an image from")]
- string description,
- [Description("The width of the image to generate. When not specified, a default size will be used.")]
- int width = 1024,
- [Description("The height of the image to generate. When not specified, a default size will be used.")]
- int height = 1024)
- {
- var dallE = kernel.GetRequiredService();
- var imageUrl = await dallE.GenerateImageAsync(description.Trim(), width, height);
- return imageUrl;
- }
-}
-
-[UsedImplicitly]
-public class ImageGeneratorPluginProvider : PluginProvider
-{
- public override IEnumerable GetPlugins()
- {
- yield return PluginDescriptor.From();
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs b/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs
deleted file mode 100644
index 6af538fe8..000000000
--- a/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAIChatCompletionProvider.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Microsoft.SemanticKernel;
-
-namespace Elsa.Agents;
-
-public class OpenAIChatCompletionProvider : IAgentServiceProvider
-{
- public string Name => "OpenAIChatCompletion";
- public void ConfigureKernel(KernelBuilderContext context)
- {
- var modelId = (string)context.ServiceConfig.Settings["ModelId"];
- var apiKey = context.GetApiKey();
- context.KernelBuilder.AddOpenAIChatCompletion(modelId, apiKey);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs b/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs
deleted file mode 100644
index b20aba85d..000000000
--- a/src/modules/Elsa.Agents.Core/ServiceProviders/OpenAITextToImageProvider.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Microsoft.SemanticKernel;
-#pragma warning disable SKEXP0010
-
-namespace Elsa.Agents;
-
-public class OpenAITextToImageProvider : IAgentServiceProvider
-{
- public string Name => "OpenAITextToImage";
-
- public void ConfigureKernel(KernelBuilderContext context)
- {
- var modelId = (string)context.ServiceConfig.Settings["ModelId"];
- var apiKey = context.GetApiKey();
- context.KernelBuilder.AddOpenAITextToImage(apiKey, modelId: modelId);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Services/AgentInvoker.cs b/src/modules/Elsa.Agents.Core/Services/AgentInvoker.cs
deleted file mode 100644
index a40458c53..000000000
--- a/src/modules/Elsa.Agents.Core/Services/AgentInvoker.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Microsoft.SemanticKernel;
-using Microsoft.SemanticKernel.Connectors.OpenAI;
-
-#pragma warning disable SKEXP0010
-#pragma warning disable SKEXP0001
-
-namespace Elsa.Agents;
-
-public class AgentInvoker(KernelFactory kernelFactory, IKernelConfigProvider kernelConfigProvider)
-{
- public async Task InvokeAgentAsync(string agentName, IDictionary input, CancellationToken cancellationToken = default)
- {
- var kernelConfig = await kernelConfigProvider.GetKernelConfigAsync(cancellationToken);
- var kernel = kernelFactory.CreateKernel(kernelConfig, agentName);
- var agentConfig = kernelConfig.Agents[agentName];
- var executionSettings = agentConfig.ExecutionSettings;
- var promptExecutionSettings = new OpenAIPromptExecutionSettings
- {
- Temperature = executionSettings.Temperature,
- TopP = executionSettings.TopP,
- MaxTokens = executionSettings.MaxTokens,
- PresencePenalty = executionSettings.PresencePenalty,
- FrequencyPenalty = executionSettings.FrequencyPenalty,
- ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions,
- ResponseFormat = executionSettings.ResponseFormat,
- ChatSystemPrompt = agentConfig.PromptTemplate,
- };
-
- var promptExecutionSettingsDictionary = new Dictionary
- {
- [PromptExecutionSettings.DefaultServiceId] = promptExecutionSettings,
- };
-
- var promptTemplateConfig = new PromptTemplateConfig
- {
- Name = agentConfig.FunctionName,
- Description = agentConfig.Description,
- Template = agentConfig.PromptTemplate,
- ExecutionSettings = promptExecutionSettingsDictionary,
- AllowDangerouslySetContent = true,
- InputVariables = agentConfig.InputVariables.Select(x => new InputVariable
- {
- Name = x.Name,
- Description = x.Description,
- IsRequired = true,
- AllowDangerouslySetContent = true
- }).ToList()
- };
-
- var kernelFunction = kernel.CreateFunctionFromPrompt(promptTemplateConfig);
- var kernelArguments = new KernelArguments(input);
- var result = await kernelFunction.InvokeAsync(kernel, kernelArguments, cancellationToken: cancellationToken);
- return new(agentConfig, result);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Services/ConfigurationKernelConfigProvider.cs b/src/modules/Elsa.Agents.Core/Services/ConfigurationKernelConfigProvider.cs
deleted file mode 100644
index e4320df2c..000000000
--- a/src/modules/Elsa.Agents.Core/Services/ConfigurationKernelConfigProvider.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using JetBrains.Annotations;
-using Microsoft.Extensions.Options;
-
-namespace Elsa.Agents;
-
-[UsedImplicitly]
-public class ConfigurationKernelConfigProvider(IOptions options) : IKernelConfigProvider
-{
- public Task GetKernelConfigAsync(CancellationToken cancellationToken = default)
- {
- var kernelConfig = new KernelConfig();
- foreach (var apiKey in options.Value.ApiKeys) kernelConfig.ApiKeys[apiKey.Name] = apiKey;
- foreach (var service in options.Value.Services) kernelConfig.Services[service.Name] = service;
- foreach (var agent in options.Value.Agents) kernelConfig.Agents[agent.Name] = agent;
- return Task.FromResult(kernelConfig);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Services/KernelFactory.cs b/src/modules/Elsa.Agents.Core/Services/KernelFactory.cs
deleted file mode 100644
index bdc738f4e..000000000
--- a/src/modules/Elsa.Agents.Core/Services/KernelFactory.cs
+++ /dev/null
@@ -1,113 +0,0 @@
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
-using Microsoft.SemanticKernel;
-
-#pragma warning disable SKEXP0001
-#pragma warning disable SKEXP0010
-
-namespace Elsa.Agents;
-
-public class KernelFactory(IPluginDiscoverer pluginDiscoverer, IServiceDiscoverer serviceDiscoverer, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, ILogger logger)
-{
- public Kernel CreateKernel(KernelConfig kernelConfig, string agentName)
- {
- var agent = kernelConfig.Agents[agentName];
- return CreateKernel(kernelConfig, agent);
- }
-
- public Kernel CreateKernel(KernelConfig kernelConfig, AgentConfig agentConfig)
- {
- var builder = Kernel.CreateBuilder();
- builder.Services.AddLogging(services => services.AddConsole().SetMinimumLevel(LogLevel.Trace));
- builder.Services.AddSingleton(agentConfig);
-
- ApplyAgentConfig(builder, kernelConfig, agentConfig);
-
- return builder.Build();
- }
-
- private void ApplyAgentConfig(IKernelBuilder builder, KernelConfig kernelConfig, AgentConfig agentConfig)
- {
- var services = serviceDiscoverer.Discover().ToDictionary(x => x.Name);
-
- foreach (string serviceName in agentConfig.Services)
- {
- if (!kernelConfig.Services.TryGetValue(serviceName, out var serviceConfig))
- {
- logger.LogWarning($"Service {serviceName} not found");
- continue;
- }
-
- AddService(builder, kernelConfig, serviceConfig, services);
- }
-
- AddPlugins(builder, agentConfig);
- AddAgents(builder, kernelConfig, agentConfig);
- }
-
- private void AddService(IKernelBuilder builder, KernelConfig kernelConfig, ServiceConfig serviceConfig, Dictionary services)
- {
- if (!services.TryGetValue(serviceConfig.Type, out var serviceProvider))
- {
- logger.LogWarning($"Service provider {serviceConfig.Type} not found");
- return;
- }
-
- var context = new KernelBuilderContext(builder, kernelConfig, serviceConfig);
- serviceProvider.ConfigureKernel(context);
- }
-
- private void AddPlugins(IKernelBuilder builder, AgentConfig agent)
- {
- var plugins = pluginDiscoverer.GetPluginDescriptors().ToDictionary(x => x.Name);
- foreach (var pluginName in agent.Plugins)
- {
- if (!plugins.TryGetValue(pluginName, out var pluginDescriptor))
- {
- logger.LogWarning($"Plugin {pluginName} not found");
- continue;
- }
-
- var pluginType = pluginDescriptor.PluginType;
- var pluginInstance = ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider, pluginType);
- builder.Plugins.AddFromObject(pluginInstance, pluginName);
- }
- }
-
- private void AddAgents(IKernelBuilder builder, KernelConfig kernelConfig, AgentConfig agent)
- {
- foreach (var agentName in agent.Agents)
- {
- if (!kernelConfig.Agents.TryGetValue(agentName, out var subAgent))
- {
- logger.LogWarning($"Agent {agentName} not found");
- continue;
- }
-
- var promptExecutionSettings = subAgent.ToOpenAIPromptExecutionSettings();
- var promptExecutionSettingsDictionary = new Dictionary
- {
- [PromptExecutionSettings.DefaultServiceId] = promptExecutionSettings,
- };
- var promptTemplateConfig = new PromptTemplateConfig
- {
- Name = subAgent.FunctionName,
- Description = subAgent.Description,
- Template = subAgent.PromptTemplate,
- ExecutionSettings = promptExecutionSettingsDictionary,
- AllowDangerouslySetContent = true,
- InputVariables = subAgent.InputVariables.Select(x => new InputVariable
- {
- Name = x.Name,
- Description = x.Description,
- IsRequired = true,
- AllowDangerouslySetContent = true
- }).ToList()
- };
-
- var subAgentFunction = KernelFunctionFactory.CreateFromPrompt(promptTemplateConfig, loggerFactory: loggerFactory);
- var agentPlugin = KernelPluginFactory.CreateFromFunctions(subAgent.Name, subAgent.Description, [subAgentFunction]);
- builder.Plugins.Add(agentPlugin);
- }
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Services/PluginDiscoverer.cs b/src/modules/Elsa.Agents.Core/Services/PluginDiscoverer.cs
deleted file mode 100644
index fa6451959..000000000
--- a/src/modules/Elsa.Agents.Core/Services/PluginDiscoverer.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Elsa.Agents;
-
-public class PluginDiscoverer(IEnumerable providers) : IPluginDiscoverer
-{
- public IEnumerable GetPluginDescriptors()
- {
- return providers.SelectMany(x => x.GetPlugins());
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Core/Services/ServiceDiscoverer.cs b/src/modules/Elsa.Agents.Core/Services/ServiceDiscoverer.cs
deleted file mode 100644
index 46f18c6ec..000000000
--- a/src/modules/Elsa.Agents.Core/Services/ServiceDiscoverer.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Elsa.Agents;
-
-public class ServiceDiscoverer(IEnumerable providers) : IServiceDiscoverer
-{
- public IEnumerable Discover()
- {
- return providers;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Agents/AgentInputModel.cs b/src/modules/Elsa.Agents.Models/Agents/AgentInputModel.cs
deleted file mode 100644
index b5c003eda..000000000
--- a/src/modules/Elsa.Agents.Models/Agents/AgentInputModel.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class AgentInputModel
-{
- [Required] public string Name { get; set; } = "";
- [Required] public string Description { get; set; } = "";
- public ICollection Services { get; set; } = [];
- [Required] public string FunctionName { get; set; } = "";
- [Required] public string PromptTemplate { get; set; } = "";
- public ICollection InputVariables { get; set; } = [];
- [Required] public OutputVariableConfig OutputVariable { get; set; } = new();
- public ExecutionSettingsConfig ExecutionSettings { get; set; } = new();
- public ICollection Plugins { get; set; } = [];
- public ICollection Agents { get; set; } = [];
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Agents/AgentModel.cs b/src/modules/Elsa.Agents.Models/Agents/AgentModel.cs
deleted file mode 100644
index f8c99b8d9..000000000
--- a/src/modules/Elsa.Agents.Models/Agents/AgentModel.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class AgentModel : AgentInputModel
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyInputModel.cs b/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyInputModel.cs
deleted file mode 100644
index ff8632923..000000000
--- a/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyInputModel.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class ApiKeyInputModel
-{
- [Required] public string Name { get; set; } = default!;
- [Required] public string Value { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyModel.cs b/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyModel.cs
deleted file mode 100644
index e34095362..000000000
--- a/src/modules/Elsa.Agents.Models/ApiKeys/ApiKeyModel.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class ApiKeyModel : ApiKeyInputModel
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteRequest.cs b/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteRequest.cs
deleted file mode 100644
index 7352e9b37..000000000
--- a/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteRequest.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class BulkDeleteRequest
-{
- [Required] public ICollection Ids { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteResponse.cs b/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteResponse.cs
deleted file mode 100644
index 5ad391abf..000000000
--- a/src/modules/Elsa.Agents.Models/BulkActions/BulkDeleteResponse.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace Elsa.Agents;
-
-public record BulkDeleteResponse(long DeletedCount);
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/AgentConfig.cs b/src/modules/Elsa.Agents.Models/Configs/AgentConfig.cs
deleted file mode 100644
index 7033305ab..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/AgentConfig.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Elsa.Agents;
-
-public class AgentConfig
-{
- public string Name { get; set; } = "";
- public string Description { get; set; } = "";
- public ICollection Services { get; set; } = [];
- public string FunctionName { get; set; } = default!;
- public string PromptTemplate { get; set; } = default!;
- public ICollection InputVariables { get; set; } = [];
- public OutputVariableConfig OutputVariable { get; set; } = new();
- public ExecutionSettingsConfig ExecutionSettings { get; set; } = new();
- public ICollection Plugins { get; set; } = [];
- public ICollection Agents { get; set; } = [];
-
-
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/ApiKeyConfig.cs b/src/modules/Elsa.Agents.Models/Configs/ApiKeyConfig.cs
deleted file mode 100644
index 88b4e7334..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/ApiKeyConfig.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using JetBrains.Annotations;
-
-namespace Elsa.Agents;
-
-[UsedImplicitly]
-public class ApiKeyConfig
-{
- public string Name { get; set; }
- public string Value { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/ExecutionSettingsConfig.cs b/src/modules/Elsa.Agents.Models/Configs/ExecutionSettingsConfig.cs
deleted file mode 100644
index bdb512b7d..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/ExecutionSettingsConfig.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma warning disable SKEXP0010
-
-namespace Elsa.Agents;
-
-public class ExecutionSettingsConfig
-{
- public int? MaxTokens { get; set; }
- public double Temperature { get; set; }
- public double TopP { get; set; }
- public double PresencePenalty { get; set; }
- public double FrequencyPenalty { get; set; }
- public string? ResponseFormat { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/FunctionConfig.cs b/src/modules/Elsa.Agents.Models/Configs/FunctionConfig.cs
deleted file mode 100644
index a4b3d05b3..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/FunctionConfig.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Elsa.Agents;
-
-public class FunctionConfig
-{
-
-
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/InputVariableConfig.cs b/src/modules/Elsa.Agents.Models/Configs/InputVariableConfig.cs
deleted file mode 100644
index 4e0faaaa9..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/InputVariableConfig.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Elsa.Agents;
-
-public class InputVariableConfig
-{
- public string Name { get; set; } = "";
- public string Description { get; set; } = "";
- public string Type { get; set; } = "";
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/KernelConfig.cs b/src/modules/Elsa.Agents.Models/Configs/KernelConfig.cs
deleted file mode 100644
index 75c285275..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/KernelConfig.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Elsa.Agents;
-
-public class KernelConfig
-{
- public IDictionary ApiKeys { get; set; } = new Dictionary();
- public IDictionary Services { get; } = new Dictionary();
- public IDictionary Agents { get; } = new Dictionary();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/OutputVariableConfig.cs b/src/modules/Elsa.Agents.Models/Configs/OutputVariableConfig.cs
deleted file mode 100644
index e9f4fe1cc..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/OutputVariableConfig.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Elsa.Agents;
-
-public class OutputVariableConfig
-{
- public string Description { get; set; } = "";
- public string Type { get; set; } = "";
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Configs/ServiceConfig.cs b/src/modules/Elsa.Agents.Models/Configs/ServiceConfig.cs
deleted file mode 100644
index 4ad83b92f..000000000
--- a/src/modules/Elsa.Agents.Models/Configs/ServiceConfig.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace Elsa.Agents;
-
-public class ServiceConfig
-{
- public string Name { get; set; }
- public string Type { get; set; }
- public IDictionary Settings { get; set; } = new Dictionary();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj b/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj
deleted file mode 100644
index 08a821dfe..000000000
--- a/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Provides models that can be shared between the API and API clients
- elsa module agents semantic kernel llm ai api
- Elsa.Agents
-
-
-
diff --git a/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj.DotSettings b/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj.DotSettings
deleted file mode 100644
index a9c50b1bb..000000000
--- a/src/modules/Elsa.Agents.Models/Elsa.Agents.Models.csproj.DotSettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
- True
- True
- True
- True
- True
- True
- True
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/FodyWeavers.xml b/src/modules/Elsa.Agents.Models/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Models/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Plugins/PluginDescriptor.cs b/src/modules/Elsa.Agents.Models/Plugins/PluginDescriptor.cs
deleted file mode 100644
index c8325fdfb..000000000
--- a/src/modules/Elsa.Agents.Models/Plugins/PluginDescriptor.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Elsa.Agents;
-
-///
-/// A descriptor for a plugin.
-///
-public class PluginDescriptorModel
-{
- public string Name { get; set; }
- public string Description { get; set; }
- public string PluginType { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Services/ServiceInputModel.cs b/src/modules/Elsa.Agents.Models/Services/ServiceInputModel.cs
deleted file mode 100644
index 3ffb77ba2..000000000
--- a/src/modules/Elsa.Agents.Models/Services/ServiceInputModel.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class ServiceInputModel
-{
- [Required] public string Name { get; set; } = default!;
- [Required] public string Type { get; set; } = default!;
- public IDictionary Settings { get; set; } = new Dictionary();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/Services/ServiceModel.cs b/src/modules/Elsa.Agents.Models/Services/ServiceModel.cs
deleted file mode 100644
index 7bc78dfc0..000000000
--- a/src/modules/Elsa.Agents.Models/Services/ServiceModel.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Elsa.Agents;
-
-public class ServiceModel : ServiceInputModel
-{
- [Required] public string Id { get; set; } = default!;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs b/src/modules/Elsa.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs
deleted file mode 100644
index 14140daf8..000000000
--- a/src/modules/Elsa.Agents.Models/UniqueName/GenerateUniqueNameResponse.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace Elsa.Agents;
-
-public record GenerateUniqueNameResponse(string Name);
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameRequest.cs b/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameRequest.cs
deleted file mode 100644
index a96fbcba9..000000000
--- a/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameRequest.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using JetBrains.Annotations;
-
-namespace Elsa.Agents;
-
-[UsedImplicitly]
-public class IsUniqueNameRequest
-{
- [Required] public string Name { get; set; } = default!;
- public string? Id { get; set; }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameResponse.cs b/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameResponse.cs
deleted file mode 100644
index 2a36a3644..000000000
--- a/src/modules/Elsa.Agents.Models/UniqueName/IsUniqueNameResponse.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-using JetBrains.Annotations;
-
-namespace Elsa.Agents;
-
-[UsedImplicitly] public record IsUniqueNameResponse(bool IsUnique);
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs
deleted file mode 100644
index f375f65dd..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/AgentsMySqlProvidersExtensions.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Reflection;
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.EntityFrameworkCore.Extensions;
-
-///
-/// Provides extensions to configure EF Core to use MySQL.
-///
-public static class AgentsMySqlProvidersExtensions
-{
- private static Assembly Assembly => typeof(AgentsMySqlProvidersExtensions).Assembly;
-
- ///
- /// Configures the feature to use MySQL.
- ///
- public static EFCoreAgentPersistenceFeature UseMySql(this EFCoreAgentPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = null)
- {
- feature.UseMySql(Assembly, connectionString, options);
- return feature;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs
deleted file mode 100644
index 748e42ade..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/DbContextFactories.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Elsa.EntityFrameworkCore.Abstractions;
-using Elsa.EntityFrameworkCore.Extensions;
-using JetBrains.Annotations;
-using Microsoft.EntityFrameworkCore;
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.MySql;
-
-[UsedImplicitly]
-public class MySqlAgentsDbContextFactory : DesignTimeDbContextFactoryBase
-{
- protected override void ConfigureBuilder(DbContextOptionsBuilder builder, string connectionString)
- {
- builder.UseElsaMySql(GetType().Assembly, connectionString, serverVersion: MySqlServerVersion.LatestSupportedServerVersion);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj
deleted file mode 100644
index 4ef508dba..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Elsa.Agents.Persistence.EntityFrameworkCore.MySql.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
- net8.0;net9.0
- Provides an EF Core migrations for MySQL for the Agents Persistence module.
- elsa module agents semantic kernel llm ai persistence efcore entity framework core mysql
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.Designer.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.Designer.cs
deleted file mode 100644
index 285452d06..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.Designer.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.MySql.Migrations
-{
- [DbContext(typeof(AgentsDbContext))]
- [Migration("20241023123010_V3_3")]
- partial class V3_3
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "7.0.20")
- .HasAnnotation("Relational:MaxIdentifierLength", 64);
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.AgentDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("AgentConfig")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_AgentDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_AgentDefinition_TenantId");
-
- b.ToTable("AgentDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ApiKeyDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ApiKeyDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ApiKeyDefinition_TenantId");
-
- b.ToTable("ApiKeysDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ServiceDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("Settings")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.Property("Type")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ServiceDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ServiceDefinition_TenantId");
-
- b.ToTable("ServicesDefinitions", "Elsa");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.cs
deleted file mode 100644
index 2c46ebc2c..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/20241023123010_V3_3.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.MySql.Migrations
-{
- ///
- public partial class V3_3 : Migration
- {
- private readonly Elsa.EntityFrameworkCore.IElsaDbContextSchema _schema;
-
- ///
- public V3_3(Elsa.EntityFrameworkCore.IElsaDbContextSchema schema)
- {
- _schema = schema;
- }
-
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.EnsureSchema(
- name: "Elsa");
-
- migrationBuilder.AlterDatabase()
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "AgentDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Description = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- AgentConfig = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantId = table.Column(type: "varchar(255)", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AgentDefinitions", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "ApiKeysDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Value = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantId = table.Column(type: "varchar(255)", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_ApiKeysDefinitions", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateTable(
- name: "ServicesDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Name = table.Column(type: "varchar(255)", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Type = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- Settings = table.Column(type: "longtext", nullable: false)
- .Annotation("MySql:CharSet", "utf8mb4"),
- TenantId = table.Column(type: "varchar(255)", nullable: true)
- .Annotation("MySql:CharSet", "utf8mb4")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_ServicesDefinitions", x => x.Id);
- })
- .Annotation("MySql:CharSet", "utf8mb4");
-
- migrationBuilder.CreateIndex(
- name: "IX_AgentDefinition_Name",
- schema: _schema.Schema,
- table: "AgentDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_AgentDefinition_TenantId",
- schema: _schema.Schema,
- table: "AgentDefinitions",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_ApiKeyDefinition_Name",
- schema: _schema.Schema,
- table: "ApiKeysDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_ApiKeyDefinition_TenantId",
- schema: _schema.Schema,
- table: "ApiKeysDefinitions",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_ServiceDefinition_Name",
- schema: _schema.Schema,
- table: "ServicesDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_ServiceDefinition_TenantId",
- schema: _schema.Schema,
- table: "ServicesDefinitions",
- column: "TenantId");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "AgentDefinitions",
- schema: _schema.Schema);
-
- migrationBuilder.DropTable(
- name: "ApiKeysDefinitions",
- schema: _schema.Schema);
-
- migrationBuilder.DropTable(
- name: "ServicesDefinitions",
- schema: _schema.Schema);
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs
deleted file mode 100644
index 2363cb794..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/Migrations/AgentsDbContextModelSnapshot.cs
+++ /dev/null
@@ -1,113 +0,0 @@
-//
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.MySql.Migrations
-{
- [DbContext(typeof(AgentsDbContext))]
- partial class AgentsDbContextModelSnapshot : ModelSnapshot
- {
- protected override void BuildModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "7.0.20")
- .HasAnnotation("Relational:MaxIdentifierLength", 64);
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.AgentDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("AgentConfig")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_AgentDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_AgentDefinition_TenantId");
-
- b.ToTable("AgentDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ApiKeyDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ApiKeyDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ApiKeyDefinition_TenantId");
-
- b.ToTable("ApiKeysDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ServiceDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("varchar(255)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("varchar(255)");
-
- b.Property("Settings")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.Property("TenantId")
- .HasColumnType("varchar(255)");
-
- b.Property("Type")
- .IsRequired()
- .HasColumnType("longtext");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ServiceDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ServiceDefinition_TenantId");
-
- b.ToTable("ServicesDefinitions", "Elsa");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.3.sh b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.3.sh
deleted file mode 100644
index a6b7f12ad..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.MySql/efcore-3.3.sh
+++ /dev/null
@@ -1 +0,0 @@
-ef-migration-runtime-schema --interface Elsa.EntityFrameworkCore.IElsaDbContextSchema --efOptions "migrations add V3_3 -c AgentsDbContext -o Migrations"
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs
deleted file mode 100644
index b092dc915..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/DbContextFactories.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Elsa.EntityFrameworkCore.Abstractions;
-using Elsa.EntityFrameworkCore.Extensions;
-using JetBrains.Annotations;
-using Microsoft.EntityFrameworkCore;
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql;
-
-[UsedImplicitly]
-public class PostgreSqlAgentsDbContextFactory : DesignTimeDbContextFactoryBase
-{
- protected override void ConfigureBuilder(DbContextOptionsBuilder builder, string connectionString)
- {
- builder.UseElsaPostgreSql(GetType().Assembly, connectionString);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj
deleted file mode 100644
index af1407bb1..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.csproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- Provides an EF Core migrations for PostgreSQL for the Agents Persistence module.
- elsa module agents semantic kernel llm ai persistence efcore entity framework core postgresql
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.Designer.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.Designer.cs
deleted file mode 100644
index e6c43e0a0..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.Designer.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations
-{
- [DbContext(typeof(AgentsDbContext))]
- [Migration("20241023122148_V3_3")]
- partial class V3_3
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "7.0.20")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.AgentDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("AgentConfig")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_AgentDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_AgentDefinition_TenantId");
-
- b.ToTable("AgentDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ApiKeyDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ApiKeyDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ApiKeyDefinition_TenantId");
-
- b.ToTable("ApiKeysDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ServiceDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Settings")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.Property("Type")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ServiceDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ServiceDefinition_TenantId");
-
- b.ToTable("ServicesDefinitions", "Elsa");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.cs
deleted file mode 100644
index 9f9f25495..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/20241023122148_V3_3.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations
-{
- ///
- public partial class V3_3 : Migration
- {
- private readonly Elsa.EntityFrameworkCore.IElsaDbContextSchema _schema;
-
- ///
- public V3_3(Elsa.EntityFrameworkCore.IElsaDbContextSchema schema)
- {
- _schema = schema;
- }
-
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.EnsureSchema(
- name: "Elsa");
-
- migrationBuilder.CreateTable(
- name: "AgentDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "text", nullable: false),
- Name = table.Column(type: "text", nullable: false),
- Description = table.Column(type: "text", nullable: false),
- AgentConfig = table.Column(type: "text", nullable: false),
- TenantId = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AgentDefinitions", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "ApiKeysDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "text", nullable: false),
- Name = table.Column(type: "text", nullable: false),
- Value = table.Column(type: "text", nullable: false),
- TenantId = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_ApiKeysDefinitions", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "ServicesDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "text", nullable: false),
- Name = table.Column(type: "text", nullable: false),
- Type = table.Column(type: "text", nullable: false),
- Settings = table.Column(type: "text", nullable: false),
- TenantId = table.Column(type: "text", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_ServicesDefinitions", x => x.Id);
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_AgentDefinition_Name",
- schema: _schema.Schema,
- table: "AgentDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_AgentDefinition_TenantId",
- schema: _schema.Schema,
- table: "AgentDefinitions",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_ApiKeyDefinition_Name",
- schema: _schema.Schema,
- table: "ApiKeysDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_ApiKeyDefinition_TenantId",
- schema: _schema.Schema,
- table: "ApiKeysDefinitions",
- column: "TenantId");
-
- migrationBuilder.CreateIndex(
- name: "IX_ServiceDefinition_Name",
- schema: _schema.Schema,
- table: "ServicesDefinitions",
- column: "Name");
-
- migrationBuilder.CreateIndex(
- name: "IX_ServiceDefinition_TenantId",
- schema: _schema.Schema,
- table: "ServicesDefinitions",
- column: "TenantId");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "AgentDefinitions",
- schema: _schema.Schema);
-
- migrationBuilder.DropTable(
- name: "ApiKeysDefinitions",
- schema: _schema.Schema);
-
- migrationBuilder.DropTable(
- name: "ServicesDefinitions",
- schema: _schema.Schema);
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs
deleted file mode 100644
index 516888c89..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/Migrations/AgentsDbContextModelSnapshot.cs
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql.Migrations
-{
- [DbContext(typeof(AgentsDbContext))]
- partial class AgentsDbContextModelSnapshot : ModelSnapshot
- {
- protected override void BuildModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "7.0.20")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.AgentDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("AgentConfig")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_AgentDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_AgentDefinition_TenantId");
-
- b.ToTable("AgentDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ApiKeyDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ApiKeyDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ApiKeyDefinition_TenantId");
-
- b.ToTable("ApiKeysDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ServiceDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Settings")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TenantId")
- .HasColumnType("text");
-
- b.Property("Type")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ServiceDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ServiceDefinition_TenantId");
-
- b.ToTable("ServicesDefinitions", "Elsa");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs
deleted file mode 100644
index b8cccd4b0..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/PostgreSqlProvidersExtensions.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Reflection;
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-
-// ReSharper disable once CheckNamespace
-namespace Elsa.EntityFrameworkCore.Extensions;
-
-///
-/// Provides extensions to configure EF Core to use SQL Server.
-///
-public static class AgentsPostgreSqlProvidersExtensions
-{
- private static Assembly Assembly => typeof(AgentsPostgreSqlProvidersExtensions).Assembly;
-
- ///
- /// Configures the feature to use SQL Server.
- ///
- public static EFCoreAgentPersistenceFeature UsePostgreSql(this EFCoreAgentPersistenceFeature feature, string connectionString, ElsaDbContextOptions? options = null)
- {
- feature.UsePostgreSql(Assembly, connectionString, options);
- return feature;
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.3.sh b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.3.sh
deleted file mode 100644
index a6b7f12ad..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.PostgreSql/efcore-3.3.sh
+++ /dev/null
@@ -1 +0,0 @@
-ef-migration-runtime-schema --interface Elsa.EntityFrameworkCore.IElsaDbContextSchema --efOptions "migrations add V3_3 -c AgentsDbContext -o Migrations"
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs
deleted file mode 100644
index 27d4b1b42..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/DbContextFactories.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Elsa.EntityFrameworkCore.Abstractions;
-using Elsa.EntityFrameworkCore.Extensions;
-using JetBrains.Annotations;
-using Microsoft.EntityFrameworkCore;
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer;
-
-[UsedImplicitly]
-public class SqlServerAgentsDbContextFactory : DesignTimeDbContextFactoryBase
-{
- protected override void ConfigureBuilder(DbContextOptionsBuilder builder, string connectionString)
- {
- builder.UseElsaSqlServer(GetType().Assembly, connectionString);
- }
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer.csproj
deleted file mode 100644
index 5c8d582bc..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Elsa.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/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml
deleted file mode 100644
index 00e1d9a1c..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.Designer.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.Designer.cs
deleted file mode 100644
index c571b21aa..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.Designer.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-using Elsa.Agents.Persistence.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer.Migrations
-{
- [DbContext(typeof(AgentsDbContext))]
- [Migration("20241023123153_V3_3")]
- partial class V3_3
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasDefaultSchema("Elsa")
- .HasAnnotation("ProductVersion", "7.0.20")
- .HasAnnotation("Relational:MaxIdentifierLength", 128);
-
- SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.AgentDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("nvarchar(450)");
-
- b.Property("AgentConfig")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("nvarchar(450)");
-
- b.Property("TenantId")
- .HasColumnType("nvarchar(450)");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_AgentDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_AgentDefinition_TenantId");
-
- b.ToTable("AgentDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ApiKeyDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("nvarchar(450)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("nvarchar(450)");
-
- b.Property("TenantId")
- .HasColumnType("nvarchar(450)");
-
- b.Property("Value")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ApiKeyDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ApiKeyDefinition_TenantId");
-
- b.ToTable("ApiKeysDefinitions", "Elsa");
- });
-
- modelBuilder.Entity("Elsa.Agents.Persistence.Entities.ServiceDefinition", b =>
- {
- b.Property("Id")
- .HasColumnType("nvarchar(450)");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("nvarchar(450)");
-
- b.Property("Settings")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("TenantId")
- .HasColumnType("nvarchar(450)");
-
- b.Property("Type")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.HasKey("Id");
-
- b.HasIndex("Name")
- .HasDatabaseName("IX_ServiceDefinition_Name");
-
- b.HasIndex("TenantId")
- .HasDatabaseName("IX_ServiceDefinition_TenantId");
-
- b.ToTable("ServicesDefinitions", "Elsa");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.cs b/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.cs
deleted file mode 100644
index a3d49f1d8..000000000
--- a/src/modules/Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer/Migrations/20241023123153_V3_3.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace Elsa.Agents.Persistence.EntityFrameworkCore.SqlServer.Migrations
-{
- ///
- public partial class V3_3 : Migration
- {
- private readonly Elsa.EntityFrameworkCore.IElsaDbContextSchema _schema;
-
- ///
- public V3_3(Elsa.EntityFrameworkCore.IElsaDbContextSchema schema)
- {
- _schema = schema;
- }
-
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.EnsureSchema(
- name: "Elsa");
-
- migrationBuilder.CreateTable(
- name: "AgentDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "nvarchar(450)", nullable: false),
- Name = table.Column(type: "nvarchar(450)", nullable: false),
- Description = table.Column(type: "nvarchar(max)", nullable: false),
- AgentConfig = table.Column(type: "nvarchar(max)", nullable: false),
- TenantId = table.Column(type: "nvarchar(450)", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_AgentDefinitions", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "ApiKeysDefinitions",
- schema: _schema.Schema,
- columns: table => new
- {
- Id = table.Column(type: "nvarchar(450)", nullable: false),
- Name = table.Column(type: "nvarchar(450)", nullable: false),
- Value = table.Column