Files
ashutoshpythoncs@gmail.com b564857c0b claude-code
2026-03-31 18:58:05 +05:30

46 lines
1.3 KiB
TypeScript

import type { Conversation, Message, ExportOptions, ContentBlock } from "../types";
function filterContent(
content: ContentBlock[] | string,
options: ExportOptions
): ContentBlock[] | string {
if (typeof content === "string") return content;
return content.filter((block) => {
if (block.type === "tool_use" || block.type === "tool_result") {
return options.includeToolUse;
}
return true;
});
}
function filterMessage(msg: Message, options: ExportOptions): Message {
return {
...msg,
content: filterContent(msg.content, options),
createdAt: options.includeTimestamps ? msg.createdAt : 0,
};
}
export function toJSON(conv: Conversation, options: ExportOptions): string {
let messages = conv.messages;
if (options.dateRange) {
const { start, end } = options.dateRange;
messages = messages.filter((m) => m.createdAt >= start && m.createdAt <= end);
}
const output = {
id: conv.id,
title: conv.title,
model: conv.model,
createdAt: options.includeTimestamps ? conv.createdAt : undefined,
updatedAt: options.includeTimestamps ? conv.updatedAt : undefined,
messageCount: messages.length,
messages: messages.map((m) => filterMessage(m, options)),
exportedAt: new Date().toISOString(),
};
return JSON.stringify(output, null, 2);
}