mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-08-11 19:52:10 +00:00
wired up the logic to parse the server sent events into a full markdown document
This commit is contained in:
parent
40cfb77cb3
commit
d865ffa503
@ -7,6 +7,7 @@ public static class ContentStreamSseHandler
|
|||||||
{
|
{
|
||||||
private static readonly ConcurrentDictionary<string, List<ContentStreamPptxImageData>> CHUNKED_IMAGES = new();
|
private static readonly ConcurrentDictionary<string, List<ContentStreamPptxImageData>> CHUNKED_IMAGES = new();
|
||||||
private static readonly ConcurrentDictionary<string, SlideManager> SLIDE_MANAGERS = new();
|
private static readonly ConcurrentDictionary<string, SlideManager> SLIDE_MANAGERS = new();
|
||||||
|
private static readonly ConcurrentDictionary<string, DocumentManager> DOCUMENT_MANAGERS = new();
|
||||||
|
|
||||||
public static string? ProcessEvent(ContentStreamSseEvent? sseEvent, bool extractImages = true)
|
public static string? ProcessEvent(ContentStreamSseEvent? sseEvent, bool extractImages = true)
|
||||||
{
|
{
|
||||||
@ -39,7 +40,12 @@ public static class ContentStreamSseHandler
|
|||||||
spreadSheetResult.Append(sseEvent.Content);
|
spreadSheetResult.Append(sseEvent.Content);
|
||||||
return spreadSheetResult.ToString();
|
return spreadSheetResult.ToString();
|
||||||
|
|
||||||
case ContentStreamDocumentMetadata:
|
case ContentStreamDocumentMetadata documentMetadata:
|
||||||
|
if (documentMetadata.Document?.PageNumber is not > 0)
|
||||||
|
return sseEvent.Content;
|
||||||
|
var documentManager = DOCUMENT_MANAGERS.GetOrAdd(sseEvent.StreamId!, _ => new());
|
||||||
|
return documentManager.AddPage(documentMetadata, sseEvent.Content, extractImages);
|
||||||
|
|
||||||
case ContentStreamImageMetadata:
|
case ContentStreamImageMetadata:
|
||||||
return sseEvent.Content;
|
return sseEvent.Content;
|
||||||
|
|
||||||
@ -79,6 +85,7 @@ public static class ContentStreamSseHandler
|
|||||||
Content = content,
|
Content = content,
|
||||||
Segment = segment,
|
Segment = segment,
|
||||||
IsEnd = isEnd,
|
IsEnd = isEnd,
|
||||||
|
MediaType = contentStreamPptxImageData.MediaType,
|
||||||
};
|
};
|
||||||
|
|
||||||
CHUNKED_IMAGES.AddOrUpdate(
|
CHUNKED_IMAGES.AddOrUpdate(
|
||||||
@ -123,12 +130,20 @@ public static class ContentStreamSseHandler
|
|||||||
if (!string.IsNullOrWhiteSpace(result))
|
if (!string.IsNullOrWhiteSpace(result))
|
||||||
finalContentChunk.Append(result);
|
finalContentChunk.Append(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (DOCUMENT_MANAGERS.TryGetValue(streamId, out var documentManager))
|
||||||
|
{
|
||||||
|
var result = documentManager.Flush();
|
||||||
|
if (!string.IsNullOrWhiteSpace(result))
|
||||||
|
finalContentChunk.Append(result);
|
||||||
|
}
|
||||||
|
|
||||||
SLIDE_MANAGERS.TryRemove(streamId, out _);
|
SLIDE_MANAGERS.TryRemove(streamId, out _);
|
||||||
|
DOCUMENT_MANAGERS.TryRemove(streamId, out _);
|
||||||
var imageIdPrefix = $"{streamId}-";
|
var imageIdPrefix = $"{streamId}-";
|
||||||
foreach (var key in CHUNKED_IMAGES.Keys.Where(k => k.StartsWith(imageIdPrefix, StringComparison.InvariantCultureIgnoreCase)))
|
foreach (var key in CHUNKED_IMAGES.Keys.Where(k => k.StartsWith(imageIdPrefix, StringComparison.InvariantCultureIgnoreCase)))
|
||||||
CHUNKED_IMAGES.TryRemove(key, out _);
|
CHUNKED_IMAGES.TryRemove(key, out _);
|
||||||
|
|
||||||
return finalContentChunk.Length > 0 ? finalContentChunk.ToString() : null;
|
return finalContentChunk.Length > 0 ? finalContentChunk.ToString() : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user