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;