diff --git a/app/MindWork AI Studio/Components/AssistantBase.razor b/app/MindWork AI Studio/Components/AssistantBase.razor
index 0a8c0c25..934231e7 100644
--- a/app/MindWork AI Studio/Components/AssistantBase.razor
+++ b/app/MindWork AI Studio/Components/AssistantBase.razor
@@ -17,7 +17,7 @@
- @if (this.resultingContentBlock is not null)
+ @if (this.ShowResult && this.resultingContentBlock is not null)
{
}
diff --git a/app/MindWork AI Studio/Components/AssistantBase.razor.cs b/app/MindWork AI Studio/Components/AssistantBase.razor.cs
index 5ef9e707..b843efa2 100644
--- a/app/MindWork AI Studio/Components/AssistantBase.razor.cs
+++ b/app/MindWork AI Studio/Components/AssistantBase.razor.cs
@@ -26,6 +26,8 @@ public abstract partial class AssistantBase : ComponentBase
private protected virtual RenderFragment? Body => null;
+ protected virtual bool ShowResult => true;
+
protected static readonly Dictionary USER_INPUT_ATTRIBUTES = new();
protected AIStudio.Settings.Provider providerSettings;
diff --git a/app/MindWork AI Studio/Components/Pages/Assistants.razor b/app/MindWork AI Studio/Components/Pages/Assistants.razor
index 97ad4847..85656318 100644
--- a/app/MindWork AI Studio/Components/Pages/Assistants.razor
+++ b/app/MindWork AI Studio/Components/Pages/Assistants.razor
@@ -12,6 +12,7 @@
+
diff --git a/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor b/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor
new file mode 100644
index 00000000..647cb947
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor
@@ -0,0 +1,11 @@
+@using AIStudio.Tools
+@page "/assistant/grammar-spelling"
+@inherits AssistantBaseCore
+
+
+
+
+
+
+ Proofread
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor.cs b/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor.cs
new file mode 100644
index 00000000..58e1d724
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Pages/GrammarSpelling/AssistantGrammarSpelling.razor.cs
@@ -0,0 +1,73 @@
+using AIStudio.Tools;
+
+namespace AIStudio.Components.Pages.GrammarSpelling;
+
+public partial class AssistantGrammarSpelling : AssistantBaseCore
+{
+ protected override string Title => "Grammar and Spelling Checker";
+
+ protected override string Description =>
+ """
+ Check the grammar and spelling of a text.
+ """;
+
+ protected override string SystemPrompt =>
+ $"""
+ You get a text as input. The user wants you to check the grammar and spelling of the text.
+ Correct any spelling or grammar mistakes. Do not add any information. Do not ask for additional information.
+ Do not improve the text. Do not mirror the user's language. Do not mirror your task.{this.SystemPromptLanguage()}
+ """;
+
+ protected override bool ShowResult => true;
+
+ private string originalText = string.Empty;
+ private string inputText = string.Empty;
+ private CommonLanguages selectedTargetLanguage;
+ private string customTargetLanguage = string.Empty;
+
+ private string? ValidateText(string text)
+ {
+ if(string.IsNullOrWhiteSpace(text))
+ return "Please provide a text as input. You might copy the desired text from a document or a website.";
+
+ return null;
+ }
+
+ private string? ValidateCustomLanguage(string language)
+ {
+ if(this.selectedTargetLanguage == CommonLanguages.OTHER && string.IsNullOrWhiteSpace(language))
+ return "Please provide a custom language.";
+
+ return null;
+ }
+
+ private string SystemPromptLanguage()
+ {
+ var lang = this.selectedTargetLanguage switch
+ {
+ CommonLanguages.AS_IS => string.Empty,
+ CommonLanguages.OTHER => this.customTargetLanguage,
+
+ _ => this.selectedTargetLanguage.Name(),
+ };
+
+ if (string.IsNullOrWhiteSpace(lang))
+ return string.Empty;
+
+ return
+ $"""
+ The text is written in {lang}.
+ """;
+ }
+
+ private async Task ProofreadText()
+ {
+ if (!this.inputIsValid)
+ return;
+
+ this.CreateChatThread();
+ var time = this.AddUserRequest(this.inputText);
+
+ await this.AddAIResponseAsync(time);
+ }
+}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs b/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs
index 57618b65..96dfafe0 100644
--- a/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs
+++ b/app/MindWork AI Studio/Tools/CommonLanguageExtensions.cs
@@ -42,4 +42,12 @@ public static class CommonLanguageExtensions
return language.Name();
}
+
+ public static string NameSelectingOptional(this CommonLanguages language)
+ {
+ if(language is CommonLanguages.AS_IS)
+ return "Do not specify the language";
+
+ return language.Name();
+ }
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.8.8.md b/app/MindWork AI Studio/wwwroot/changelog/v0.8.8.md
index 9ab877bd..a7d009c5 100644
--- a/app/MindWork AI Studio/wwwroot/changelog/v0.8.8.md
+++ b/app/MindWork AI Studio/wwwroot/changelog/v0.8.8.md
@@ -1,2 +1,3 @@
# v0.8.8, build 170
+- Added a grammar and spell checker assistant
- Upgraded MudBlazor to v7.6.0
\ No newline at end of file