From f9f3fe5ec02ef63259e1ad3ac2fa1de7335f9e54 Mon Sep 17 00:00:00 2001 From: Danny Liu Date: Sat, 2 Mar 2024 23:23:49 -0800 Subject: [PATCH 01/42] refac delete logic --- src/lib/components/chat/Messages.svelte | 132 +++++++++++------------- src/routes/(app)/+page.svelte | 4 +- src/routes/(app)/c/[id]/+page.svelte | 4 +- 3 files changed, 64 insertions(+), 76 deletions(-) diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index fd0a6e835..77e6cad0d 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -223,32 +223,22 @@ }, 100); }; - // TODO: change delete behaviour - // const deleteMessageAndDescendants = async (messageId: string) => { - // if (history.messages[messageId]) { - // history.messages[messageId].deleted = true; - - // for (const childId of history.messages[messageId].childrenIds) { - // await deleteMessageAndDescendants(childId); - // } - // } - // }; - - // const triggerDeleteMessageRecursive = async (messageId: string) => { - // await deleteMessageAndDescendants(messageId); - // await updateChatById(localStorage.token, chatId, { history }); - // await chats.set(await getChatList(localStorage.token)); - // }; - const messageDeleteHandler = async (messageId) => { - if (history.messages[messageId]) { - history.messages[messageId].deleted = true; + const messageParentId = history.messages[messageId]?.parentId; - for (const childId of history.messages[messageId].childrenIds) { - history.messages[childId].deleted = true; - } + if (messageParentId !== null) { + history.messages[messageParentId].childrenIds = [] } - await updateChatById(localStorage.token, chatId, { history }); + + delete history.messages[messageId]; + history.currentId = messageParentId; + + await tick(); + + await updateChatById(localStorage.token, chatId, { + messages: messages, + history: history + }); }; @@ -258,57 +248,55 @@
{#key chatId} {#each messages as message, messageIdx} - {#if !message.deleted} -
-
- {#if message.role === 'user'} - messageDeleteHandler(message.id)} - user={$user} - {message} - isFirstMessage={messageIdx === 0} - siblings={message.parentId !== null - ? history.messages[message.parentId]?.childrenIds ?? [] - : Object.values(history.messages) - .filter((message) => message.parentId === null) - .map((message) => message.id) ?? []} - {confirmEditMessage} - {showPreviousMessage} - {showNextMessage} - {copyToClipboard} - /> - {:else} - { - console.log('save', e); +
+
+ {#if message.role === 'user'} + messageDeleteHandler(message.id)} + user={$user} + {message} + isFirstMessage={messageIdx === 0} + siblings={message.parentId !== null + ? history.messages[message.parentId]?.childrenIds ?? [] + : Object.values(history.messages) + .filter((message) => message.parentId === null) + .map((message) => message.id) ?? []} + {confirmEditMessage} + {showPreviousMessage} + {showNextMessage} + {copyToClipboard} + /> + {:else} + { + console.log('save', e); - const message = e.detail; - history.messages[message.id] = message; - await updateChatById(localStorage.token, chatId, { - messages: messages, - history: history - }); - }} - /> - {/if} -
+ const message = e.detail; + history.messages[message.id] = message; + await updateChatById(localStorage.token, chatId, { + messages: messages, + history: history + }); + }} + /> + {/if}
- {/if} +
{/each} {#if bottomPadding} diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index 04dc922c9..da3aff237 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -342,7 +342,7 @@ content: $settings.system } : undefined, - ...messages.filter((message) => !message.deleted) + ...messages ] .filter((message) => message) .map((message, idx, arr) => ({ @@ -550,7 +550,7 @@ content: $settings.system } : undefined, - ...messages.filter((message) => !message.deleted) + ...messages ] .filter((message) => message) .map((message, idx, arr) => ({ diff --git a/src/routes/(app)/c/[id]/+page.svelte b/src/routes/(app)/c/[id]/+page.svelte index 69ebfde55..85638c401 100644 --- a/src/routes/(app)/c/[id]/+page.svelte +++ b/src/routes/(app)/c/[id]/+page.svelte @@ -355,7 +355,7 @@ content: $settings.system } : undefined, - ...messages.filter((message) => !message.deleted) + ...messages ] .filter((message) => message) .map((message, idx, arr) => ({ @@ -563,7 +563,7 @@ content: $settings.system } : undefined, - ...messages.filter((message) => !message.deleted) + ...messages ] .filter((message) => message) .map((message, idx, arr) => ({ From 225038738294f35228003ba497d3378c0aaa3a8e Mon Sep 17 00:00:00 2001 From: Danny Liu Date: Sat, 2 Mar 2024 23:31:03 -0800 Subject: [PATCH 02/42] retain the message in history object --- src/lib/components/chat/Messages.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index 77e6cad0d..5711fb174 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -230,7 +230,6 @@ history.messages[messageParentId].childrenIds = [] } - delete history.messages[messageId]; history.currentId = messageParentId; await tick(); From 05221ea1355165b44b44f1bc6676992c5bb011a3 Mon Sep 17 00:00:00 2001 From: Firat Birlik Date: Sun, 3 Mar 2024 13:58:51 -0600 Subject: [PATCH 03/42] add fake_useragent to get a realistic header for rag/web requests --- backend/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/requirements.txt b/backend/requirements.txt index 0cacacd80..6d3d044dc 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -22,6 +22,7 @@ google-generativeai langchain langchain-community +fake_useragent chromadb sentence_transformers pypdf From cc471597cdde23cfa0272b5761d5d149fb24bd32 Mon Sep 17 00:00:00 2001 From: Carlos Daniel Vilaseca Date: Sun, 3 Mar 2024 17:03:03 -0500 Subject: [PATCH 04/42] rf: message input dom queries --- src/lib/components/chat/MessageInput.svelte | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 022ee4fb4..438d700c7 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -19,7 +19,7 @@ export let suggestionPrompts = []; export let autoScroll = true; - + let chatTextArea:HTMLTextAreaElement let filesInputElement; let promptsElement; @@ -43,11 +43,9 @@ let speechRecognition; $: if (prompt) { - const chatInput = document.getElementById('chat-textarea'); - - if (chatInput) { - chatInput.style.height = ''; - chatInput.style.height = Math.min(chatInput.scrollHeight, 200) + 'px'; + if (chatTextArea) { + chatTextArea.style.height = ''; + chatTextArea.style.height = Math.min(chatTextArea.scrollHeight, 200) + 'px'; } } @@ -86,9 +84,7 @@ if (res) { prompt = res.text; await tick(); - - const inputElement = document.getElementById('chat-textarea'); - inputElement?.focus(); + chatTextArea?.focus(); if (prompt !== '' && $settings?.speechAutoSend === true) { submitPrompt(prompt, user); @@ -191,8 +187,7 @@ prompt = `${prompt}${transcript}`; await tick(); - const inputElement = document.getElementById('chat-textarea'); - inputElement?.focus(); + chatTextArea?.focus(); // Restart the inactivity timeout timeoutId = setTimeout(() => { @@ -294,8 +289,7 @@ }; onMount(() => { - const chatInput = document.getElementById('chat-textarea'); - window.setTimeout(() => chatInput?.focus(), 0); + window.setTimeout(() => chatTextArea?.focus(), 0); const dropZone = document.querySelector('body'); @@ -663,6 +657,7 @@