export interface OpenAIModel { id: string; name: string; } export enum OpenAIModelID { GPT_3_5 = "gpt-3.5-turbo", GPT_4 = "gpt-4" } export const OpenAIModels: Record = { [OpenAIModelID.GPT_3_5]: { id: OpenAIModelID.GPT_3_5, name: "Default (GPT-3.5)" }, [OpenAIModelID.GPT_4]: { id: OpenAIModelID.GPT_4, name: "GPT-4" } }; export interface Message { role: Role; content: string; } export type Role = "assistant" | "user"; export interface ChatFolder { id: number; name: string; } export interface Conversation { id: number; name: string; messages: Message[]; model: OpenAIModel; prompt: string; folderId: number; } export interface ChatBody { model: OpenAIModel; messages: Message[]; key: string; prompt: string; } export interface KeyValuePair { key: string; value: any; } // keep track of local storage schema export interface LocalStorage { apiKey: string; conversationHistory: Conversation[]; selectedConversation: Conversation; theme: "light" | "dark"; // added folders (3/23/23) folders: ChatFolder[]; } export interface ErrorMessage { code: String | null, title: String, messageLines: String[] }