diff --git a/app/MindWork AI Studio/Chat/ListContentBlockExtensions.cs b/app/MindWork AI Studio/Chat/ListContentBlockExtensions.cs
index 0cc10c4e..28b04301 100644
--- a/app/MindWork AI Studio/Chat/ListContentBlockExtensions.cs
+++ b/app/MindWork AI Studio/Chat/ListContentBlockExtensions.cs
@@ -13,24 +13,32 @@ public static class ListContentBlockExtensions
/// An asynchronous task that resolves to a list of transformed results.
public static async Task> BuildMessagesAsync(this List blocks, Func roleTransformer)
{
- var messages = blocks
- .Where(n => n.ContentType is ContentType.TEXT && !string.IsNullOrWhiteSpace((n.Content as ContentText)?.Text))
- .Select(async n => new TextMessage
- {
- Role = roleTransformer(n.Role),
- Content = n.Content switch
- {
- ContentText text => await text.PrepareTextContentForAI(),
- _ => string.Empty,
- }
- })
- .ToList();
-
- // Await all messages:
- await Task.WhenAll(messages);
+ var messageTaskList = new List>(blocks.Count);
+ foreach (var block in blocks)
+ {
+ switch (block.Content)
+ {
+ case ContentText text when block.ContentType is ContentType.TEXT && !string.IsNullOrWhiteSpace(text.Text):
+ messageTaskList.Add(CreateTextMessageAsync(block, text));
+ break;
+ }
+ }
+ // Await all messages:
+ await Task.WhenAll(messageTaskList);
+
// Select all results:
- return messages.Select(n => n.Result).Cast().ToList();
+ return messageTaskList.Select(n => n.Result).ToList();
+
+ // Local function to create a text message asynchronously.
+ Task CreateTextMessageAsync(ContentBlock block, ContentText text)
+ {
+ return Task.Run(async () => new TextMessage
+ {
+ Role = roleTransformer(block.Role),
+ Content = await text.PrepareTextContentForAI(),
+ } as IMessageBase);
+ }
}
///