mirror of
https://github.com/codeaashu/claude-code.git
synced 2026-04-08 22:28:48 +03:00
46 lines
1.3 KiB
TypeScript
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);
|
|
}
|