diff --git a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua index 9a31bea1..01fe7f72 100644 --- a/app/MindWork AI Studio/Assistants/I18N/allTexts.lua +++ b/app/MindWork AI Studio/Assistants/I18N/allTexts.lua @@ -1648,6 +1648,18 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can -- Provider UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider" +-- Images are not supported yet +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T298062956"] = "Images are not supported yet" + +-- Use file content as input +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T3499386973"] = "Use file content as input" + +-- Select file to read its content +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T354817589"] = "Select file to read its content" + +-- Executables are not allowed +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed" + -- Use PDF content as input UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input" diff --git a/app/MindWork AI Studio/Components/ReadFileContent.razor b/app/MindWork AI Studio/Components/ReadFileContent.razor index 8be6f058..f9e33fc8 100644 --- a/app/MindWork AI Studio/Components/ReadFileContent.razor +++ b/app/MindWork AI Studio/Components/ReadFileContent.razor @@ -1,4 +1,4 @@ @inherits MSGComponentBase - Use PDF content as input" + @T("Use file content as input") \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs index 1653fa55..475dbaa9 100644 --- a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs +++ b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs @@ -18,7 +18,7 @@ public partial class ReadFileContent : MSGComponentBase private async Task SelectFile() { - var selectedFile = await this.RustService.SelectFile("Select Text file"); + var selectedFile = await this.RustService.SelectFile(T("Select file to read its content")); if (selectedFile.UserCancelled) return; @@ -29,13 +29,13 @@ public partial class ReadFileContent : MSGComponentBase if (Array.Exists(FileTypeFilter.Executables.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase))) { - await MessageBus.INSTANCE.SendError(new(@Icons.Material.Filled.AppBlocking, "Executables are not allowed")); + await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.AppBlocking, T("Executables are not allowed"))); return; } if (Array.Exists(FileTypeFilter.AllImages.FilterExtensions, x => x.Equals(ext, StringComparison.OrdinalIgnoreCase))) { - await MessageBus.INSTANCE.SendWarning(new(@Icons.Material.Filled.ImageNotSupported, "Images are not supported yet")); + await MessageBus.INSTANCE.SendWarning(new(Icons.Material.Filled.ImageNotSupported, T("Images are not supported yet"))); return; } diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index 97fc257a..fed3857d 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -1650,6 +1650,12 @@ UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROFILESELECTION::T918741365"] = "You can -- Provider UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::PROVIDERSELECTION::T900237532"] = "Provider" +-- Use PDF content as input +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T2849276709"] = "Use PDF content as input" + +-- Executables are not allowed +UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READFILECONTENT::T4167762413"] = "Executables are not allowed" + -- Use PDF content as input UI_TEXT_CONTENT["AISTUDIO::COMPONENTS::READPDFCONTENT::T2849276709"] = "Use PDF content as input" @@ -5481,6 +5487,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T304 -- AI-based data source selection with AI retrieval context validation UI_TEXT_CONTENT["AISTUDIO::TOOLS::RAG::RAGPROCESSES::AISRCSELWITHRETCTXVAL::T3775725978"] = "AI-based data source selection with AI retrieval context validation" +-- Executable Files +UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T2217313358"] = "Executable Files" + -- PDF Files UI_TEXT_CONTENT["AISTUDIO::TOOLS::RUST::FILETYPEFILTER::T3108466742"] = "PDF Files" diff --git a/app/MindWork AI Studio/Tools/Services/RustService.Retrieval.cs b/app/MindWork AI Studio/Tools/Services/RustService.Retrieval.cs index 79c65de0..3491568c 100644 --- a/app/MindWork AI Studio/Tools/Services/RustService.Retrieval.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.Retrieval.cs @@ -53,7 +53,7 @@ public sealed partial class RustService eventCount++; } } - catch (JsonException) { resultBuilder.AppendLine(); } + catch (JsonException) { resultBuilder.Append(string.Empty); } } var result = resultBuilder.ToString(); diff --git a/app/MindWork AI Studio/Tools/SseHandler.cs b/app/MindWork AI Studio/Tools/SseHandler.cs index a1b47101..9f64507b 100644 --- a/app/MindWork AI Studio/Tools/SseHandler.cs +++ b/app/MindWork AI Studio/Tools/SseHandler.cs @@ -7,6 +7,7 @@ namespace AIStudio.Tools; public static class SseHandler { private static readonly ConcurrentDictionary> PPTX_IMAGES = new(); + private static int CURRENT_SLIDE_NUMBER; public static async Task ProcessEventAsync(SseEvent? sseEvent, bool extractImages = true) { @@ -25,14 +26,14 @@ public static class SseHandler case PdfMetadata pdfMetadata: var pageNumber = pdfMetadata.Pdf?.PageNumber ?? 0; - result.AppendLine($"[Page {pageNumber}]:\n{sseEvent.Content}"); + result.AppendLine($"# Page {pageNumber}\n{sseEvent.Content}"); break; case SpreadsheetMetadata spreadsheetMetadata: var sheetName = spreadsheetMetadata.Spreadsheet?.SheetName; var rowNumber = spreadsheetMetadata.Spreadsheet?.RowNumber; - if (rowNumber == 1) { result.AppendLine($"\n{sheetName}:"); } + if (rowNumber == 1) { result.AppendLine($"\n# {sheetName}"); } result.AppendLine($"{sseEvent.Content}"); break; @@ -48,13 +49,17 @@ public static class SseHandler case PresentationMetadata presentationMetadata: var slideNumber = presentationMetadata.Presentation?.SlideNumber ?? 0; var image = presentationMetadata.Presentation?.Image ?? null; - result.AppendLine($"{sseEvent.Content}"); + + if (slideNumber != CURRENT_SLIDE_NUMBER) { result.AppendLine($"# Slide {slideNumber}"); } + result.Append($"{sseEvent.Content}"); if (image != null) { var isEnd = ProcessImageSegment(image); if (isEnd && extractImages) { result.AppendLine(BuildImage(image.Id!)); } } + + CURRENT_SLIDE_NUMBER = slideNumber; break; default: @@ -64,11 +69,11 @@ public static class SseHandler } else if (!string.IsNullOrEmpty(sseEvent.Content)) { - result.AppendLine(sseEvent.Content); + result.Append(sseEvent.Content); } else if (string.IsNullOrEmpty(sseEvent.Content)) { - result.AppendLine(); + result.Append(string.Empty); } await Task.CompletedTask;