type Chat = { id: string; title: string; messages: Array; date: string; }; type TempChat = { messages: Array; }; type Message = { id: string; content: string; transcripts: Array; role: "user" | "assistant" | "system"; timestamp: Date; }; type Transcript = { index: number; text: string; timestamp: string; timestamp_seconds: number; filename: string; speaker: string; }; export type { Chat, Message, Transcript, TempChat }; function chatToJson(chat: Chat): string { return JSON.stringify(chat, null, 2); } function messageToJson(message: Message): Object { // remove the timestamp, id and the transcripts from the message const { content, role } = message; return { content, role }; } function transcriptToJson(transcript: Transcript): string { return JSON.stringify(transcript, null, 2); } function tempChatToJson(tempChat: TempChat): string { return JSON.stringify(tempChat, null, 2); } function tempChatToChat(tempChat: TempChat, title: string = "New Chat"): Chat { return { id: crypto.randomUUID(), title: title, messages: tempChat.messages, date: new Date().toISOString(), }; } export { chatToJson, messageToJson, transcriptToJson, tempChatToJson, tempChatToChat, };