Forge
csharpdeeb25a2
1using System.Text;
2using CascadeIDE.ViewModels;
3
4namespace CascadeIDE.Features.Chat;
5
6/// <summary>Семантический текстовый экспорт чата для агента/людей (Markdown).</summary>
7public static class ChatReadableExporter
8{
9 public static string BuildMarkdown(Guid sessionId, IReadOnlyList<ChatMessageViewModel> messages)
10 {
11 var sb = new StringBuilder();
12 sb.AppendLine($"# Chat session `{sessionId:N}`");
13 sb.AppendLine();
14 sb.AppendLine($"Messages: **{messages.Count}**");
15 sb.AppendLine();
16
17 for (var i = 0; i < messages.Count; i++)
18 {
19 var m = messages[i];
20 var role = (m.Role ?? "unknown").Trim();
21 sb.Append($"## [{i}] **{role}** · `message_id={m.MessageId:N}`");
22 if (m.ThreadId != Guid.Empty)
23 sb.Append($" · `thread_id={m.ThreadId:N}`");
24 if (m.ParentMessageId is { } par)
25 sb.Append($" · `parent_message_id={par:N}`");
26 sb.AppendLine();
27 sb.AppendLine();
28 sb.AppendLine(m.Content ?? "");
29 sb.AppendLine();
30 }
31
32 return sb.ToString();
33 }
34}
35
View only · write via MCP/CIDE