diff --git a/tools/server/public/index.html.gz b/tools/server/public/index.html.gz
index 53b71079c1e2a..f2d74a4e985fc 100644
Binary files a/tools/server/public/index.html.gz and b/tools/server/public/index.html.gz differ
diff --git a/tools/server/webui/src/components/Sidebar.tsx b/tools/server/webui/src/components/Sidebar.tsx
index b52a8df03c969..2b20b225a3498 100644
--- a/tools/server/webui/src/components/Sidebar.tsx
+++ b/tools/server/webui/src/components/Sidebar.tsx
@@ -149,21 +149,29 @@ export default function Sidebar() {
navigate('/');
}
}}
- onDownload={() => {
+ onDownload={async () => {
if (isGenerating(conv.id)) {
toast.error(
'Cannot download conversation while generating'
);
return;
}
- const conversationJson = JSON.stringify(conv, null, 2);
- const blob = new Blob([conversationJson], {
- type: 'application/json',
+ const messages = await StorageUtils.getMessages(conv.id);
+ const messageChain = StorageUtils.filterByLeafNodeId(
+ messages,
+ conv.currNode,
+ false
+ );
+ const conversationText = messageChain
+ .map((msg) => `${msg.role}: ${msg.content}`)
+ .join('\n\n');
+ const blob = new Blob([conversationText], {
+ type: 'text/plain',
});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
- a.download = `conversation_${conv.id}.json`;
+ a.download = `conversation_${conv.id}.txt`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);