MCPcopy Create free account
hub / github.com/Palm1r/QodeAssist / serializeMessage

Method serializeMessage

ChatView/ChatSerializer.cpp:68–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68QJsonObject ChatSerializer::serializeMessage(
69 const ChatModel::Message &message, const QString &chatFilePath)
70{
71 QJsonObject messageObj;
72 messageObj["role"] = static_cast<int>(message.role);
73 messageObj["content"] = message.content;
74 messageObj["id"] = message.id;
75
76 if (message.isRedacted) {
77 messageObj["isRedacted"] = true;
78 }
79
80 if (!message.signature.isEmpty()) {
81 messageObj["signature"] = message.signature;
82 }
83
84 if (message.role == ChatModel::ChatRole::Tool) {
85 if (!message.toolName.isEmpty())
86 messageObj["toolName"] = message.toolName;
87 if (!message.toolArguments.isEmpty())
88 messageObj["toolArguments"] = message.toolArguments;
89 if (!message.toolResult.isEmpty())
90 messageObj["toolResult"] = message.toolResult;
91 }
92
93 if (!message.attachments.isEmpty()) {
94 QJsonArray attachmentsArray;
95 for (const auto &attachment : message.attachments) {
96 QJsonObject attachmentObj;
97 attachmentObj["fileName"] = attachment.filename;
98 attachmentObj["storedPath"] = attachment.content;
99 attachmentsArray.append(attachmentObj);
100 }
101 messageObj["attachments"] = attachmentsArray;
102 }
103
104 if (!message.images.isEmpty()) {
105 QJsonArray imagesArray;
106 for (const auto &image : message.images) {
107 QJsonObject imageObj;
108 imageObj["fileName"] = image.fileName;
109 imageObj["storedPath"] = image.storedPath;
110 imageObj["mediaType"] = image.mediaType;
111 imagesArray.append(imageObj);
112 }
113 messageObj["images"] = imagesArray;
114 }
115
116 if (message.promptTokens > 0 || message.completionTokens > 0) {
117 QJsonObject usageObj;
118 usageObj["promptTokens"] = message.promptTokens;
119 usageObj["completionTokens"] = message.completionTokens;
120 if (message.cachedPromptTokens > 0)
121 usageObj["cachedPromptTokens"] = message.cachedPromptTokens;
122 if (message.reasoningTokens > 0)
123 usageObj["reasoningTokens"] = message.reasoningTokens;
124 messageObj["usage"] = usageObj;
125 }

Callers

nothing calls this directly

Calls 2

appendMethod · 0.80
isEmptyMethod · 0.45

Tested by

no test coverage detected