diff --git a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs
index 310f070..00f0d26 100644
--- a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs
@@ -6,7 +6,7 @@ namespace AIStudio.Assistants.Agenda;
public partial class AssistantAgenda : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.AGENDA_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.AGENDA_ASSISTANT;
protected override string Title => "Agenda Planner";
diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor
index 6f94150..0a7fb3d 100644
--- a/app/MindWork AI Studio/Assistants/AssistantBase.razor
+++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor
@@ -13,7 +13,9 @@
@if (this.Body is not null)
{
- @this.Body
+
+ @this.Body
+
@this.SubmitText
diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs
index b8274ac..da0ac6f 100644
--- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs
+++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs
@@ -40,7 +40,7 @@ public abstract partial class AssistantBase : ComponentBase
protected abstract string SystemPrompt { get; }
- protected abstract Tools.Components Component { get; }
+ public abstract Tools.Components Component { get; }
protected virtual Func Result2Copy => () => this.resultingContentBlock is null ? string.Empty : this.resultingContentBlock.Content switch
{
diff --git a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs
index b06a3d4..1c7f69d 100644
--- a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.Coding;
public partial class AssistantCoding : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.CODING_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.CODING_ASSISTANT;
protected override string Title => "Coding Assistant";
diff --git a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs
index 2f9b6f3..59d5fec 100644
--- a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs
+++ b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs
@@ -6,7 +6,7 @@ namespace AIStudio.Assistants.EMail;
public partial class AssistantEMail : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.EMAIL_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.EMAIL_ASSISTANT;
protected override string Title => "E-Mail";
diff --git a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs
index f90af67..38f8aa2 100644
--- a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs
+++ b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.GrammarSpelling;
public partial class AssistantGrammarSpelling : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.GRAMMAR_SPELLING_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.GRAMMAR_SPELLING_ASSISTANT;
protected override string Title => "Grammar & Spelling Checker";
diff --git a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs
index 5123b91..6b7ace7 100644
--- a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs
+++ b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs
@@ -2,7 +2,7 @@ namespace AIStudio.Assistants.IconFinder;
public partial class AssistantIconFinder : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.ICON_FINDER_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.ICON_FINDER_ASSISTANT;
protected override string Title => "Icon Finder";
diff --git a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs
index b8dd0ef..b2695d3 100644
--- a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs
+++ b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs
@@ -2,7 +2,7 @@ namespace AIStudio.Assistants.LegalCheck;
public partial class AssistantLegalCheck : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.LEGAL_CHECK_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.LEGAL_CHECK_ASSISTANT;
protected override string Title => "Legal Check";
diff --git a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs
index 1b3f5be..a5f3762 100644
--- a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs
+++ b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.MyTasks;
public partial class AssistantMyTasks : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.MY_TASKS_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.MY_TASKS_ASSISTANT;
protected override string Title => "My Tasks";
diff --git a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs
index 0274610..e4e4bb1 100644
--- a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs
+++ b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.RewriteImprove;
public partial class AssistantRewriteImprove : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.REWRITE_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.REWRITE_ASSISTANT;
protected override string Title => "Rewrite & Improve Text";
diff --git a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs
index 444c348..e99c6f3 100644
--- a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.Synonym;
public partial class AssistantSynonyms : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.SYNONYMS_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.SYNONYMS_ASSISTANT;
protected override string Title => "Synonyms";
diff --git a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs
index 8e5b071..02c222d 100644
--- a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs
+++ b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.TextSummarizer;
public partial class AssistantTextSummarizer : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.TEXT_SUMMARIZER_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.TEXT_SUMMARIZER_ASSISTANT;
protected override string Title => "Text Summarizer";
diff --git a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs
index 3f2c37f..8263112 100644
--- a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs
+++ b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs
@@ -4,7 +4,7 @@ namespace AIStudio.Assistants.Translation;
public partial class AssistantTranslation : AssistantBaseCore
{
- protected override Tools.Components Component => Tools.Components.TRANSLATION_ASSISTANT;
+ public override Tools.Components Component => Tools.Components.TRANSLATION_ASSISTANT;
protected override string Title => "Translation";
diff --git a/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor b/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor
new file mode 100644
index 0000000..75290ba
--- /dev/null
+++ b/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor
@@ -0,0 +1,2 @@
+@using AIStudio.Settings
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor.cs b/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor.cs
new file mode 100644
index 0000000..5271b8f
--- /dev/null
+++ b/app/MindWork AI Studio/Components/ConfigurationMinConfidenceSelection.razor.cs
@@ -0,0 +1,51 @@
+using AIStudio.Provider;
+using AIStudio.Settings;
+
+using Microsoft.AspNetCore.Components;
+
+namespace AIStudio.Components;
+
+public partial class ConfigurationMinConfidenceSelection : ComponentBase
+{
+ ///
+ /// The selected value.
+ ///
+ [Parameter]
+ public Func SelectedValue { get; set; } = () => default!;
+
+ ///
+ /// An action that is called when the selection changes.
+ ///
+ [Parameter]
+ public Action SelectionUpdate { get; set; } = _ => { };
+
+ ///
+ /// Is the selection component disabled?
+ ///
+ [Parameter]
+ public Func Disabled { get; set; } = () => false;
+
+ ///
+ /// Boolean value indicating whether the selection is restricted to a global minimum confidence level.
+ ///
+ [Parameter]
+ public bool RestrictToGlobalMinimumConfidence { get; set; }
+
+ [Inject]
+ private SettingsManager SettingsManager { get; init; } = null!;
+
+ private ConfidenceLevel FilteredSelectedValue()
+ {
+ if (this.SelectedValue() is ConfidenceLevel.NONE)
+ return ConfidenceLevel.NONE;
+
+ if(this.RestrictToGlobalMinimumConfidence && this.SettingsManager.ConfigurationData.LLMProviders.EnforceGlobalMinimumConfidence)
+ {
+ var minimumLevel = this.SettingsManager.ConfigurationData.LLMProviders.GlobalMinimumConfidence;
+ if(this.SelectedValue() < minimumLevel)
+ return minimumLevel;
+ }
+
+ return this.SelectedValue();
+ }
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs
index 28f2b4b..7e93e76 100644
--- a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs
+++ b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs
@@ -24,6 +24,9 @@ public partial class ConfigurationProviderSelection : ComponentBase, IMessageBus
[Parameter]
public Func HelpText { get; set; } = () => "Select a provider that is preselected.";
+
+ [Parameter]
+ public Tools.Components Component { get; set; } = Tools.Components.NONE;
[Inject]
private SettingsManager SettingsManager { get; init; } = null!;
@@ -46,20 +49,12 @@ public partial class ConfigurationProviderSelection : ComponentBase, IMessageBus
private IEnumerable> FilteredData()
{
- if (this.SettingsManager.ConfigurationData.LLMProviders is { EnforceGlobalMinimumConfidence: true, GlobalMinimumConfidence: not ConfidenceLevel.NONE and not ConfidenceLevel.UNKNOWN })
+ var minimumLevel = this.SettingsManager.GetMinimumConfidenceLevel(this.Component);
+ foreach (var providerId in this.Data)
{
- var minimumLevel = this.SettingsManager.ConfigurationData.LLMProviders.GlobalMinimumConfidence;
- foreach (var providerId in this.Data)
- {
- var provider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == providerId.Value);
- if (provider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level >= minimumLevel)
- yield return providerId;
- }
- }
- else
- {
- foreach (var provider in this.Data)
- yield return provider;
+ var provider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == providerId.Value);
+ if (provider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level >= minimumLevel)
+ yield return providerId;
}
}
diff --git a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs
index 82ff2e7..a5e39e5 100644
--- a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs
+++ b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs
@@ -1,3 +1,4 @@
+using AIStudio.Assistants;
using AIStudio.Provider;
using AIStudio.Settings;
@@ -7,6 +8,9 @@ namespace AIStudio.Components;
public partial class ProviderSelection : ComponentBase
{
+ [CascadingParameter]
+ public AssistantBase? AssistantBase { get; set; }
+
[Parameter]
public Settings.Provider ProviderSettings { get; set; }
@@ -27,17 +31,9 @@ public partial class ProviderSelection : ComponentBase
private IEnumerable GetAvailableProviders()
{
- if (this.SettingsManager.ConfigurationData.LLMProviders is { EnforceGlobalMinimumConfidence: true, GlobalMinimumConfidence: not ConfidenceLevel.NONE and not ConfidenceLevel.UNKNOWN })
- {
- var minimumLevel = this.SettingsManager.ConfigurationData.LLMProviders.GlobalMinimumConfidence;
- foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
- if (provider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level >= minimumLevel)
- yield return provider;
- }
- else
- {
- foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
+ var minimumLevel = this.SettingsManager.GetMinimumConfidenceLevel(this.AssistantBase?.Component ?? Tools.Components.NONE);
+ foreach (var provider in this.SettingsManager.ConfigurationData.Providers)
+ if (provider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level >= minimumLevel)
yield return provider;
- }
}
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor
index 50f40da..1f4e20c 100644
--- a/app/MindWork AI Studio/Pages/Settings.razor
+++ b/app/MindWork AI Studio/Pages/Settings.razor
@@ -83,7 +83,7 @@
@if(this.SettingsManager.ConfigurationData.LLMProviders.EnforceGlobalMinimumConfidence)
{
-
+
}
@@ -207,7 +207,8 @@
-
+
+
@@ -224,7 +225,8 @@
{
}
-
+
+
@@ -237,7 +239,8 @@
{
}
-
+
+
@@ -258,7 +261,8 @@
{
}
-
+
+
@@ -286,7 +290,8 @@
{
}
-
+
+
@@ -299,7 +304,8 @@
{
}
-
+
+
@@ -313,7 +319,8 @@
}
-
+
+
@@ -328,7 +335,8 @@
}
-
+
+
@@ -339,7 +347,8 @@
-
+
+
@@ -352,7 +361,8 @@
{
}
-
+
+
@@ -365,7 +375,8 @@
}
-
+
+
diff --git a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
index 44b17af..2ba2a49 100644
--- a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
+++ b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
@@ -144,19 +144,26 @@ public static class ConfigurationSelectDataFactory
yield return new(scheme.GetListDescription(), scheme);
}
- public static IEnumerable> GetConfidenceLevelsData()
+ public static IEnumerable> GetConfidenceLevelsData(SettingsManager settingsManager, bool restrictToGlobalMinimum = false)
{
+ var minimumLevel = ConfidenceLevel.NONE;
+ if(restrictToGlobalMinimum && settingsManager.ConfigurationData.LLMProviders is { EnforceGlobalMinimumConfidence: true, GlobalMinimumConfidence: not ConfidenceLevel.NONE and not ConfidenceLevel.UNKNOWN })
+ minimumLevel = settingsManager.ConfigurationData.LLMProviders.GlobalMinimumConfidence;
+
foreach (var level in Enum.GetValues())
{
+ if(level is ConfidenceLevel.NONE)
+ yield return new("No minimum confidence level chosen", level);
+
+ if(level < minimumLevel)
+ continue;
+
switch (level)
{
+ case ConfidenceLevel.NONE:
case ConfidenceLevel.UNKNOWN:
continue;
- case ConfidenceLevel.NONE:
- yield return new("No minimum confidence level chosen", level);
- break;
-
default:
yield return new(level.GetName(), level);
break;
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataAgenda.cs b/app/MindWork AI Studio/Settings/DataModel/DataAgenda.cs
index 3960274..52fe423 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataAgenda.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataAgenda.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.Agenda;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -51,6 +52,11 @@ public sealed class DataAgenda
///
public string PreselectedOtherLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Preselect a agenda provider?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataCoding.cs b/app/MindWork AI Studio/Settings/DataModel/DataCoding.cs
index f83c616..15f9a45 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataCoding.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataCoding.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.Coding;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -24,6 +25,11 @@ public sealed class DataCoding
///
public string PreselectedOtherProgrammingLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Which coding provider should be preselected?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataEMail.cs b/app/MindWork AI Studio/Settings/DataModel/DataEMail.cs
index a913c7f..d592d8b 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataEMail.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataEMail.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.EMail;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -23,16 +24,6 @@ public sealed class DataEMail
/// Preselect any writing style?
///
public WritingStyles PreselectedWritingStyle { get; set; }
-
- ///
- /// Preselect a provider?
- ///
- public string PreselectedProvider { get; set; } = string.Empty;
-
- ///
- /// Preselect a profile?
- ///
- public string PreselectedProfile { get; set; } = string.Empty;
///
/// Preselect a greeting phrase?
@@ -43,4 +34,19 @@ public sealed class DataEMail
/// Preselect the sender name for the closing salutation?
///
public string SenderName { get; set; } = string.Empty;
+
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
+ ///
+ /// Preselect a provider?
+ ///
+ public string PreselectedProvider { get; set; } = string.Empty;
+
+ ///
+ /// Preselect a profile?
+ ///
+ public string PreselectedProfile { get; set; } = string.Empty;
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataGrammarSpelling.cs b/app/MindWork AI Studio/Settings/DataModel/DataGrammarSpelling.cs
index 01cc0f6..b5483ee 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataGrammarSpelling.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataGrammarSpelling.cs
@@ -1,3 +1,5 @@
+using AIStudio.Provider;
+
namespace AIStudio.Settings.DataModel;
public sealed class DataGrammarSpelling
@@ -17,6 +19,11 @@ public sealed class DataGrammarSpelling
///
public string PreselectedOtherLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Preselect a provider?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataIconFinder.cs b/app/MindWork AI Studio/Settings/DataModel/DataIconFinder.cs
index 6a0257e..abf7976 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataIconFinder.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataIconFinder.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.IconFinder;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -14,6 +15,11 @@ public sealed class DataIconFinder
///
public IconSources PreselectedSource { get; set; }
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// The preselected icon provider.
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataLegalCheck.cs b/app/MindWork AI Studio/Settings/DataModel/DataLegalCheck.cs
index c72b157..5ead9bf 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataLegalCheck.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataLegalCheck.cs
@@ -1,3 +1,5 @@
+using AIStudio.Provider;
+
namespace AIStudio.Settings.DataModel;
public class DataLegalCheck
@@ -22,6 +24,11 @@ public class DataLegalCheck
///
public bool PreselectContentCleanerAgent { get; set; }
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// The preselected translator provider.
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataMyTasks.cs b/app/MindWork AI Studio/Settings/DataModel/DataMyTasks.cs
index 9b848e4..dcadd60 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataMyTasks.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataMyTasks.cs
@@ -1,3 +1,5 @@
+using AIStudio.Provider;
+
namespace AIStudio.Settings.DataModel;
public sealed class DataMyTasks
@@ -17,6 +19,11 @@ public sealed class DataMyTasks
///
public string PreselectOtherLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// The preselected provider.
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataRewriteImprove.cs b/app/MindWork AI Studio/Settings/DataModel/DataRewriteImprove.cs
index 738d63a..d690d79 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataRewriteImprove.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataRewriteImprove.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.RewriteImprove;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -29,6 +30,11 @@ public sealed class DataRewriteImprove
///
public SentenceStructure PreselectedSentenceStructure { get; set; }
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Preselect a provider?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSynonyms.cs b/app/MindWork AI Studio/Settings/DataModel/DataSynonyms.cs
index 1d1fdb8..f4736f8 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataSynonyms.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataSynonyms.cs
@@ -1,3 +1,5 @@
+using AIStudio.Provider;
+
namespace AIStudio.Settings.DataModel;
public sealed class DataSynonyms
@@ -17,6 +19,11 @@ public sealed class DataSynonyms
///
public string PreselectedOtherLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Preselect a provider?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataTextSummarizer.cs b/app/MindWork AI Studio/Settings/DataModel/DataTextSummarizer.cs
index 6074a77..c437551 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataTextSummarizer.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataTextSummarizer.cs
@@ -1,4 +1,5 @@
using AIStudio.Assistants.TextSummarizer;
+using AIStudio.Provider;
namespace AIStudio.Settings.DataModel;
@@ -45,6 +46,11 @@ public sealed class DataTextSummarizer
///
public string PreselectedExpertInField { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// Preselect a text summarizer provider?
///
diff --git a/app/MindWork AI Studio/Settings/DataModel/DataTranslation.cs b/app/MindWork AI Studio/Settings/DataModel/DataTranslation.cs
index a861dca..1af8abf 100644
--- a/app/MindWork AI Studio/Settings/DataModel/DataTranslation.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/DataTranslation.cs
@@ -1,3 +1,5 @@
+using AIStudio.Provider;
+
namespace AIStudio.Settings.DataModel;
public sealed class DataTranslation
@@ -42,6 +44,11 @@ public sealed class DataTranslation
///
public string PreselectOtherLanguage { get; set; } = string.Empty;
+ ///
+ /// The minimum confidence level required for a provider to be considered.
+ ///
+ public ConfidenceLevel MinimumProviderConfidence { get; set; } = ConfidenceLevel.NONE;
+
///
/// The preselected translator provider.
///
diff --git a/app/MindWork AI Studio/Settings/SettingsManager.cs b/app/MindWork AI Studio/Settings/SettingsManager.cs
index 485d550..8dee766 100644
--- a/app/MindWork AI Studio/Settings/SettingsManager.cs
+++ b/app/MindWork AI Studio/Settings/SettingsManager.cs
@@ -112,51 +112,40 @@ public sealed class SettingsManager(ILogger logger)
public void InjectSpellchecking(Dictionary attributes) => attributes["spellcheck"] = this.ConfigurationData.App.EnableSpellchecking ? "true" : "false";
+ public ConfidenceLevel GetMinimumConfidenceLevel(Tools.Components component)
+ {
+ var minimumLevel = ConfidenceLevel.NONE;
+ var enforceGlobalMinimumConfidence = this.ConfigurationData.LLMProviders is { EnforceGlobalMinimumConfidence: true, GlobalMinimumConfidence: not ConfidenceLevel.NONE and not ConfidenceLevel.UNKNOWN };
+ if (enforceGlobalMinimumConfidence)
+ minimumLevel = this.ConfigurationData.LLMProviders.GlobalMinimumConfidence;
+
+ var componentMinimumLevel = component.MinimumConfidence(this);
+ if (componentMinimumLevel > minimumLevel)
+ minimumLevel = componentMinimumLevel;
+
+ return minimumLevel;
+ }
+
public Provider GetPreselectedProvider(Tools.Components component)
{
- var minimumLevel = this.ConfigurationData.LLMProviders.EnforceGlobalMinimumConfidence ? this.ConfigurationData.LLMProviders.GlobalMinimumConfidence : ConfidenceLevel.NONE;
-
+ var minimumLevel = this.GetMinimumConfidenceLevel(component);
+
+ // When there is only one provider, and it has a confidence level that is high enough, we return it:
if (this.ConfigurationData.Providers.Count == 1 && this.ConfigurationData.Providers[0].UsedLLMProvider.GetConfidence(this).Level >= minimumLevel)
return this.ConfigurationData.Providers[0];
-
- var preselection = component switch
- {
- Tools.Components.CHAT => this.ConfigurationData.Chat.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.Chat.PreselectedProvider) : default,
- Tools.Components.GRAMMAR_SPELLING_ASSISTANT => this.ConfigurationData.GrammarSpelling.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.GrammarSpelling.PreselectedProvider) : default,
- Tools.Components.ICON_FINDER_ASSISTANT => this.ConfigurationData.IconFinder.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.IconFinder.PreselectedProvider) : default,
- Tools.Components.REWRITE_ASSISTANT => this.ConfigurationData.RewriteImprove.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.RewriteImprove.PreselectedProvider) : default,
- Tools.Components.TRANSLATION_ASSISTANT => this.ConfigurationData.Translation.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.Translation.PreselectedProvider) : default,
- Tools.Components.AGENDA_ASSISTANT => this.ConfigurationData.Agenda.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.Agenda.PreselectedProvider) : default,
- Tools.Components.CODING_ASSISTANT => this.ConfigurationData.Coding.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.Coding.PreselectedProvider) : default,
- Tools.Components.TEXT_SUMMARIZER_ASSISTANT => this.ConfigurationData.TextSummarizer.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.TextSummarizer.PreselectedProvider) : default,
- Tools.Components.EMAIL_ASSISTANT => this.ConfigurationData.EMail.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.EMail.PreselectedProvider) : default,
- Tools.Components.LEGAL_CHECK_ASSISTANT => this.ConfigurationData.LegalCheck.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.LegalCheck.PreselectedProvider) : default,
- Tools.Components.SYNONYMS_ASSISTANT => this.ConfigurationData.Synonyms.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.Synonyms.PreselectedProvider) : default,
- Tools.Components.MY_TASKS_ASSISTANT => this.ConfigurationData.MyTasks.PreselectOptions ? this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.MyTasks.PreselectedProvider) : default,
-
- _ => default,
- };
- if(preselection != default && preselection.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel)
- return preselection;
+ // When there is a component-preselected provider, and it has a confidence level that is high enough, we return it:
+ var preselectedProvider = component.PreselectedProvider(this);
+ if(preselectedProvider != default && preselectedProvider.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel)
+ return preselectedProvider;
+ // When there is an app-wide preselected provider, and it has a confidence level that is high enough, we return it:
return this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.ConfigurationData.App.PreselectedProvider && x.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel);
}
public Profile GetPreselectedProfile(Tools.Components component)
{
- var preselection = component switch
- {
- Tools.Components.CHAT => this.ConfigurationData.Chat.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.Chat.PreselectedProfile) : default,
- Tools.Components.AGENDA_ASSISTANT => this.ConfigurationData.Agenda.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.Agenda.PreselectedProfile) : default,
- Tools.Components.CODING_ASSISTANT => this.ConfigurationData.Coding.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.Coding.PreselectedProfile) : default,
- Tools.Components.EMAIL_ASSISTANT => this.ConfigurationData.EMail.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.EMail.PreselectedProfile) : default,
- Tools.Components.LEGAL_CHECK_ASSISTANT => this.ConfigurationData.LegalCheck.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.LegalCheck.PreselectedProfile) : default,
- Tools.Components.MY_TASKS_ASSISTANT => this.ConfigurationData.MyTasks.PreselectOptions ? this.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == this.ConfigurationData.MyTasks.PreselectedProfile) : default,
-
- _ => default,
- };
-
+ var preselection = component.PreselectedProfile(this);
if (preselection != default)
return preselection;
diff --git a/app/MindWork AI Studio/Tools/ComponentsData.cs b/app/MindWork AI Studio/Tools/ComponentsData.cs
new file mode 100644
index 0000000..d44c153
--- /dev/null
+++ b/app/MindWork AI Studio/Tools/ComponentsData.cs
@@ -0,0 +1,3 @@
+namespace AIStudio.Tools;
+
+public readonly record struct ComponentsData(Event Event, string Route);
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs
new file mode 100644
index 0000000..e2b4628
--- /dev/null
+++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs
@@ -0,0 +1,94 @@
+using AIStudio.Provider;
+using AIStudio.Settings;
+
+namespace AIStudio.Tools;
+
+public static class ComponentsExtensions
+{
+ public static string Name(this Components component) => component switch
+ {
+ Components.GRAMMAR_SPELLING_ASSISTANT => "Grammar & Spelling Assistant",
+ Components.TEXT_SUMMARIZER_ASSISTANT => "Text Summarizer Assistant",
+ Components.ICON_FINDER_ASSISTANT => "Icon Finder Assistant",
+ Components.TRANSLATION_ASSISTANT => "Translation Assistant",
+ Components.REWRITE_ASSISTANT => "Rewrite Assistant",
+ Components.AGENDA_ASSISTANT => "Agenda Assistant",
+ Components.CODING_ASSISTANT => "Coding Assistant",
+ Components.EMAIL_ASSISTANT => "E-Mail Assistant",
+ Components.LEGAL_CHECK_ASSISTANT => "Legal Check Assistant",
+ Components.SYNONYMS_ASSISTANT => "Synonym Assistant",
+ Components.MY_TASKS_ASSISTANT => "My Tasks Assistant",
+
+ Components.CHAT => "New Chat",
+
+ _ => Enum.GetName(typeof(Components), component)!,
+ };
+
+ public static ComponentsData GetData(this Components destination) => destination switch
+ {
+ Components.AGENDA_ASSISTANT => new(Event.SEND_TO_AGENDA_ASSISTANT, Routes.ASSISTANT_AGENDA),
+ Components.CODING_ASSISTANT => new(Event.SEND_TO_CODING_ASSISTANT, Routes.ASSISTANT_CODING),
+ Components.REWRITE_ASSISTANT => new(Event.SEND_TO_REWRITE_ASSISTANT, Routes.ASSISTANT_REWRITE),
+ Components.EMAIL_ASSISTANT => new(Event.SEND_TO_EMAIL_ASSISTANT, Routes.ASSISTANT_EMAIL),
+ Components.TRANSLATION_ASSISTANT => new(Event.SEND_TO_TRANSLATION_ASSISTANT, Routes.ASSISTANT_TRANSLATION),
+ Components.ICON_FINDER_ASSISTANT => new(Event.SEND_TO_ICON_FINDER_ASSISTANT, Routes.ASSISTANT_ICON_FINDER),
+ Components.GRAMMAR_SPELLING_ASSISTANT => new(Event.SEND_TO_GRAMMAR_SPELLING_ASSISTANT, Routes.ASSISTANT_GRAMMAR_SPELLING),
+ Components.TEXT_SUMMARIZER_ASSISTANT => new(Event.SEND_TO_TEXT_SUMMARIZER_ASSISTANT, Routes.ASSISTANT_SUMMARIZER),
+ Components.LEGAL_CHECK_ASSISTANT => new(Event.SEND_TO_LEGAL_CHECK_ASSISTANT, Routes.ASSISTANT_LEGAL_CHECK),
+ Components.SYNONYMS_ASSISTANT => new(Event.SEND_TO_SYNONYMS_ASSISTANT, Routes.ASSISTANT_SYNONYMS),
+ Components.MY_TASKS_ASSISTANT => new(Event.SEND_TO_MY_TASKS_ASSISTANT, Routes.ASSISTANT_MY_TASKS),
+
+ Components.CHAT => new(Event.SEND_TO_CHAT, Routes.CHAT),
+
+ _ => new(Event.NONE, Routes.ASSISTANTS),
+ };
+
+ public static ConfidenceLevel MinimumConfidence(this Components component, SettingsManager settingsManager) => component switch
+ {
+ Components.GRAMMAR_SPELLING_ASSISTANT => settingsManager.ConfigurationData.GrammarSpelling.PreselectOptions ? settingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence : default,
+ Components.ICON_FINDER_ASSISTANT => settingsManager.ConfigurationData.IconFinder.PreselectOptions ? settingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence : default,
+ Components.REWRITE_ASSISTANT => settingsManager.ConfigurationData.RewriteImprove.PreselectOptions ? settingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence : default,
+ Components.TRANSLATION_ASSISTANT => settingsManager.ConfigurationData.Translation.PreselectOptions ? settingsManager.ConfigurationData.Translation.MinimumProviderConfidence : default,
+ Components.AGENDA_ASSISTANT => settingsManager.ConfigurationData.Agenda.PreselectOptions ? settingsManager.ConfigurationData.Agenda.MinimumProviderConfidence : default,
+ Components.CODING_ASSISTANT => settingsManager.ConfigurationData.Coding.PreselectOptions ? settingsManager.ConfigurationData.Coding.MinimumProviderConfidence : default,
+ Components.TEXT_SUMMARIZER_ASSISTANT => settingsManager.ConfigurationData.TextSummarizer.PreselectOptions ? settingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence : default,
+ Components.EMAIL_ASSISTANT => settingsManager.ConfigurationData.EMail.PreselectOptions ? settingsManager.ConfigurationData.EMail.MinimumProviderConfidence : default,
+ Components.LEGAL_CHECK_ASSISTANT => settingsManager.ConfigurationData.LegalCheck.PreselectOptions ? settingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence : default,
+ Components.SYNONYMS_ASSISTANT => settingsManager.ConfigurationData.Synonyms.PreselectOptions ? settingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence : default,
+ Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence : default,
+
+ _ => default,
+ };
+
+ public static Settings.Provider PreselectedProvider(this Components component, SettingsManager settingsManager) => component switch
+ {
+ Components.GRAMMAR_SPELLING_ASSISTANT => settingsManager.ConfigurationData.GrammarSpelling.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider) : default,
+ Components.ICON_FINDER_ASSISTANT => settingsManager.ConfigurationData.IconFinder.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.IconFinder.PreselectedProvider) : default,
+ Components.REWRITE_ASSISTANT => settingsManager.ConfigurationData.RewriteImprove.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.RewriteImprove.PreselectedProvider) : default,
+ Components.TRANSLATION_ASSISTANT => settingsManager.ConfigurationData.Translation.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Translation.PreselectedProvider) : default,
+ Components.AGENDA_ASSISTANT => settingsManager.ConfigurationData.Agenda.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Agenda.PreselectedProvider) : default,
+ Components.CODING_ASSISTANT => settingsManager.ConfigurationData.Coding.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Coding.PreselectedProvider) : default,
+ Components.TEXT_SUMMARIZER_ASSISTANT => settingsManager.ConfigurationData.TextSummarizer.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.TextSummarizer.PreselectedProvider) : default,
+ Components.EMAIL_ASSISTANT => settingsManager.ConfigurationData.EMail.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.EMail.PreselectedProvider) : default,
+ Components.LEGAL_CHECK_ASSISTANT => settingsManager.ConfigurationData.LegalCheck.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.LegalCheck.PreselectedProvider) : default,
+ Components.SYNONYMS_ASSISTANT => settingsManager.ConfigurationData.Synonyms.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Synonyms.PreselectedProvider) : default,
+ Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProvider) : default,
+
+ Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProvider) : default,
+
+ _ => default,
+ };
+
+ public static Profile PreselectedProfile(this Components component, SettingsManager settingsManager) => component switch
+ {
+ Components.AGENDA_ASSISTANT => settingsManager.ConfigurationData.Agenda.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Agenda.PreselectedProfile) : default,
+ Components.CODING_ASSISTANT => settingsManager.ConfigurationData.Coding.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Coding.PreselectedProfile) : default,
+ Components.EMAIL_ASSISTANT => settingsManager.ConfigurationData.EMail.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.EMail.PreselectedProfile) : default,
+ Components.LEGAL_CHECK_ASSISTANT => settingsManager.ConfigurationData.LegalCheck.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.LegalCheck.PreselectedProfile) : default,
+ Components.MY_TASKS_ASSISTANT => settingsManager.ConfigurationData.MyTasks.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.MyTasks.PreselectedProfile) : default,
+
+ Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProfile) : default,
+
+ _ => default,
+ };
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/SendToData.cs b/app/MindWork AI Studio/Tools/SendToData.cs
deleted file mode 100644
index 2200208..0000000
--- a/app/MindWork AI Studio/Tools/SendToData.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-namespace AIStudio.Tools;
-
-public readonly record struct SendToData(Event Event, string Route);
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/SendToExtensions.cs b/app/MindWork AI Studio/Tools/SendToExtensions.cs
deleted file mode 100644
index c8abe68..0000000
--- a/app/MindWork AI Studio/Tools/SendToExtensions.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-namespace AIStudio.Tools;
-
-public static class SendToExtensions
-{
- public static string Name(this Components assistant) => assistant switch
- {
- Components.GRAMMAR_SPELLING_ASSISTANT => "Grammar & Spelling Assistant",
- Components.TEXT_SUMMARIZER_ASSISTANT => "Text Summarizer Assistant",
- Components.ICON_FINDER_ASSISTANT => "Icon Finder Assistant",
- Components.TRANSLATION_ASSISTANT => "Translation Assistant",
- Components.REWRITE_ASSISTANT => "Rewrite Assistant",
- Components.AGENDA_ASSISTANT => "Agenda Assistant",
- Components.CODING_ASSISTANT => "Coding Assistant",
- Components.EMAIL_ASSISTANT => "E-Mail Assistant",
- Components.LEGAL_CHECK_ASSISTANT => "Legal Check Assistant",
- Components.SYNONYMS_ASSISTANT => "Synonym Assistant",
- Components.MY_TASKS_ASSISTANT => "My Tasks Assistant",
-
- Components.CHAT => "New Chat",
-
- _ => Enum.GetName(typeof(Components), assistant)!,
- };
-
- public static SendToData GetData(this Components destination) => destination switch
- {
- Components.AGENDA_ASSISTANT => new(Event.SEND_TO_AGENDA_ASSISTANT, Routes.ASSISTANT_AGENDA),
- Components.CODING_ASSISTANT => new(Event.SEND_TO_CODING_ASSISTANT, Routes.ASSISTANT_CODING),
- Components.REWRITE_ASSISTANT => new(Event.SEND_TO_REWRITE_ASSISTANT, Routes.ASSISTANT_REWRITE),
- Components.EMAIL_ASSISTANT => new(Event.SEND_TO_EMAIL_ASSISTANT, Routes.ASSISTANT_EMAIL),
- Components.TRANSLATION_ASSISTANT => new(Event.SEND_TO_TRANSLATION_ASSISTANT, Routes.ASSISTANT_TRANSLATION),
- Components.ICON_FINDER_ASSISTANT => new(Event.SEND_TO_ICON_FINDER_ASSISTANT, Routes.ASSISTANT_ICON_FINDER),
- Components.GRAMMAR_SPELLING_ASSISTANT => new(Event.SEND_TO_GRAMMAR_SPELLING_ASSISTANT, Routes.ASSISTANT_GRAMMAR_SPELLING),
- Components.TEXT_SUMMARIZER_ASSISTANT => new(Event.SEND_TO_TEXT_SUMMARIZER_ASSISTANT, Routes.ASSISTANT_SUMMARIZER),
- Components.LEGAL_CHECK_ASSISTANT => new(Event.SEND_TO_LEGAL_CHECK_ASSISTANT, Routes.ASSISTANT_LEGAL_CHECK),
- Components.SYNONYMS_ASSISTANT => new(Event.SEND_TO_SYNONYMS_ASSISTANT, Routes.ASSISTANT_SYNONYMS),
- Components.MY_TASKS_ASSISTANT => new(Event.SEND_TO_MY_TASKS_ASSISTANT, Routes.ASSISTANT_MY_TASKS),
-
- Components.CHAT => new(Event.SEND_TO_CHAT, Routes.CHAT),
-
- _ => new(Event.NONE, Routes.ASSISTANTS),
- };
-}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.11.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.11.md
index b9dd0a2..538a925 100644
--- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.11.md
+++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.11.md
@@ -1,4 +1,5 @@
# v0.9.11, build 186
-- Added a tooltip to the confidence card button.
- Added an option to enforce a minimum confidence level throughout the entire app.
+- Added options to enforce minimum confidence levels for each assistant individually.
+- Added a tooltip to the confidence card button.
- Renamed the `Providers` enum to `LLMProviders` for better clarity. Renamed also all dependent variables and methods.
\ No newline at end of file