diff --git a/app/MindWork AI Studio/Pages/Assistants.razor b/app/MindWork AI Studio/Pages/Assistants.razor index 1cd72a5f..3c41920f 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor +++ b/app/MindWork AI Studio/Pages/Assistants.razor @@ -14,54 +14,96 @@ @T("General") - - - - - + @if (IsAssistantVisible(Components.TEXT_SUMMARIZER_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.TRANSLATION_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.GRAMMAR_SPELLING_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.REWRITE_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.SYNONYMS_ASSISTANT)) + { + + } @T("Business") - - - @if (PreviewFeatures.PRE_DOCUMENT_ANALYSIS_2025.IsEnabled(this.SettingsManager)) + @if (IsAssistantVisible(Components.EMAIL_ASSISTANT)) + { + + } + + @if (PreviewFeatures.PRE_DOCUMENT_ANALYSIS_2025.IsEnabled(this.SettingsManager) && IsAssistantVisible(Components.DOCUMENT_ANALYSIS_ASSISTANT)) { } - - - - - - + + @if (IsAssistantVisible(Components.MY_TASKS_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.AGENDA_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.JOB_POSTING_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.LEGAL_CHECK_ASSISTANT)) + { + + } + @if (IsAssistantVisible(Components.ICON_FINDER_ASSISTANT)) + { + + } @T("Learning") - + @if (IsAssistantVisible(Components.BIAS_DAY_ASSISTANT)) + { + + } - + @T("Software Engineering") - - @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + @if (IsAssistantVisible(Components.CODING_ASSISTANT)) + { + + } + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager) && IsAssistantVisible(Components.ERI_ASSISTANT)) { } - + @T("AI Studio Development") - + @if (IsAssistantVisible(Components.I18N_ASSISTANT)) + { + + } diff --git a/app/MindWork AI Studio/Pages/Assistants.razor.cs b/app/MindWork AI Studio/Pages/Assistants.razor.cs index e2c2de49..ead98360 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor.cs +++ b/app/MindWork AI Studio/Pages/Assistants.razor.cs @@ -1,5 +1,45 @@ using AIStudio.Components; +using AIStudio.Settings; +using AIStudio.Tools; namespace AIStudio.Pages; -public partial class Assistants : MSGComponentBase; \ No newline at end of file +public partial class Assistants : MSGComponentBase +{ + /// + /// Checks if an assistant should be visible based on configuration. + /// + /// The assistant component to check. + /// True if the assistant should be visible, false otherwise. + private bool IsAssistantVisible(Components component) + { + // Map Components enum to ConfigurableAssistant enum + var configurableAssistant = component switch + { + Components.GRAMMAR_SPELLING_ASSISTANT => ConfigurableAssistant.GRAMMAR_SPELLING_ASSISTANT, + Components.ICON_FINDER_ASSISTANT => ConfigurableAssistant.ICON_FINDER_ASSISTANT, + Components.REWRITE_ASSISTANT => ConfigurableAssistant.REWRITE_ASSISTANT, + Components.TRANSLATION_ASSISTANT => ConfigurableAssistant.TRANSLATION_ASSISTANT, + Components.AGENDA_ASSISTANT => ConfigurableAssistant.AGENDA_ASSISTANT, + Components.CODING_ASSISTANT => ConfigurableAssistant.CODING_ASSISTANT, + Components.TEXT_SUMMARIZER_ASSISTANT => ConfigurableAssistant.TEXT_SUMMARIZER_ASSISTANT, + Components.EMAIL_ASSISTANT => ConfigurableAssistant.EMAIL_ASSISTANT, + Components.LEGAL_CHECK_ASSISTANT => ConfigurableAssistant.LEGAL_CHECK_ASSISTANT, + Components.SYNONYMS_ASSISTANT => ConfigurableAssistant.SYNONYMS_ASSISTANT, + Components.MY_TASKS_ASSISTANT => ConfigurableAssistant.MY_TASKS_ASSISTANT, + Components.JOB_POSTING_ASSISTANT => ConfigurableAssistant.JOB_POSTING_ASSISTANT, + Components.BIAS_DAY_ASSISTANT => ConfigurableAssistant.BIAS_DAY_ASSISTANT, + Components.ERI_ASSISTANT => ConfigurableAssistant.ERI_ASSISTANT, + Components.DOCUMENT_ANALYSIS_ASSISTANT => ConfigurableAssistant.DOCUMENT_ANALYSIS_ASSISTANT, + Components.I18N_ASSISTANT => ConfigurableAssistant.I18N_ASSISTANT, + _ => (ConfigurableAssistant?)null, + }; + + // If the component doesn't map to a configurable assistant, it's always visible + if (configurableAssistant is null) + return true; + + // Check if the assistant is hidden in configuration + return !this.SettingsManager.ConfigurationData.App.HiddenAssistants.Contains(configurableAssistant.Value); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/configuration/plugin.lua b/app/MindWork AI Studio/Plugins/configuration/plugin.lua index 8cd62555..9bb5ee44 100644 --- a/app/MindWork AI Studio/Plugins/configuration/plugin.lua +++ b/app/MindWork AI Studio/Plugins/configuration/plugin.lua @@ -143,6 +143,15 @@ CONFIG["SETTINGS"] = {} -- Please note: using an empty string ("") will lock the selection and disable dictation/transcription. -- CONFIG["SETTINGS"]["DataApp.UseTranscriptionProvider"] = "00000000-0000-0000-0000-000000000000" +-- Configure which assistants should be hidden from the UI. +-- Allowed values can be found in ConfigurableAssistant enum. +-- Examples: GRAMMAR_SPELLING_ASSISTANT, ICON_FINDER_ASSISTANT, REWRITE_ASSISTANT, +-- TRANSLATION_ASSISTANT, AGENDA_ASSISTANT, CODING_ASSISTANT, +-- TEXT_SUMMARIZER_ASSISTANT, EMAIL_ASSISTANT, LEGAL_CHECK_ASSISTANT, +-- SYNONYMS_ASSISTANT, MY_TASKS_ASSISTANT, JOB_POSTING_ASSISTANT, +-- BIAS_DAY_ASSISTANT, ERI_ASSISTANT, DOCUMENT_ANALYSIS_ASSISTANT, I18N_ASSISTANT +-- CONFIG["SETTINGS"]["DataApp.HiddenAssistants"] = { "GRAMMAR_SPELLING_ASSISTANT", "SYNONYMS_ASSISTANT" } + -- Example chat templates for this configuration: CONFIG["CHAT_TEMPLATES"] = {} diff --git a/app/MindWork AI Studio/Settings/ConfigurableAssistant.cs b/app/MindWork AI Studio/Settings/ConfigurableAssistant.cs new file mode 100644 index 00000000..6e5d22a9 --- /dev/null +++ b/app/MindWork AI Studio/Settings/ConfigurableAssistant.cs @@ -0,0 +1,27 @@ +namespace AIStudio.Settings; + +/// +/// Enum representing assistants that can be hidden via configuration plugin. +/// +public enum ConfigurableAssistant +{ + GRAMMAR_SPELLING_ASSISTANT, + ICON_FINDER_ASSISTANT, + REWRITE_ASSISTANT, + TRANSLATION_ASSISTANT, + AGENDA_ASSISTANT, + CODING_ASSISTANT, + TEXT_SUMMARIZER_ASSISTANT, + EMAIL_ASSISTANT, + LEGAL_CHECK_ASSISTANT, + SYNONYMS_ASSISTANT, + MY_TASKS_ASSISTANT, + JOB_POSTING_ASSISTANT, + BIAS_DAY_ASSISTANT, + ERI_ASSISTANT, + DOCUMENT_ANALYSIS_ASSISTANT, + + // ReSharper disable InconsistentNaming + I18N_ASSISTANT, + // ReSharper restore InconsistentNaming +} diff --git a/app/MindWork AI Studio/Settings/DataModel/DataApp.cs b/app/MindWork AI Studio/Settings/DataModel/DataApp.cs index 720d3b5a..d2ac4bb7 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataApp.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataApp.cs @@ -86,4 +86,9 @@ public sealed class DataApp(Expression>? configSelection = n /// Should the user be allowed to add providers? /// public bool AllowUserToAddProvider { get; set; } = ManagedConfiguration.Register(configSelection, n => n.AllowUserToAddProvider, true); + + /// + /// List of assistants that should be hidden from the UI. + /// + public HashSet HiddenAssistants { get; set; } = ManagedConfiguration.Register(configSelection, n => n.HiddenAssistants, []); } \ No newline at end of file