From 171b267891c9255236e43a32243815f9cfa6a3a8 Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Fri, 17 Jan 2025 02:22:46 +0900 Subject: [PATCH] feat: display next message to be summarized in HypaV3 modal --- src/lib/Others/HypaV3Modal.svelte | 61 +++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/src/lib/Others/HypaV3Modal.svelte b/src/lib/Others/HypaV3Modal.svelte index 77cc034e..717f6fd5 100644 --- a/src/lib/Others/HypaV3Modal.svelte +++ b/src/lib/Others/HypaV3Modal.svelte @@ -12,6 +12,7 @@ import { DBState, alertStore, selectedCharID } from "src/ts/stores.svelte"; import { summarize } from "src/ts/process/memory/hypav3"; import { type OpenAIChat } from "src/ts/process/index.svelte"; + import { type Message } from "src/ts/storage/database.svelte"; import { translateHTML } from "src/ts/translator/translator"; interface SummaryUI { @@ -61,9 +62,7 @@ ); } - function getMessageFromChatMemo( - chatMemo: string | null - ): { role: string; data: string } | null { + function getMessageFromChatMemo(chatMemo: string | null): Message | null { const char = DBState.db.characters[$selectedCharID]; const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; const firstMessage = @@ -71,10 +70,11 @@ ? char.firstMessage : char.alternateGreetings?.[chat.fmIndex ?? 0]; - const targetMessage = + const targetMessage = ( chatMemo == null ? { role: "char", data: firstMessage } - : chat.message.find((m) => m.chatId === chatMemo); + : chat.message.find((m) => m.chatId === chatMemo) + ) as Message; return targetMessage; } @@ -232,6 +232,36 @@ }; } + function getNextMessageToSummarize(): Message { + const char = DBState.db.characters[$selectedCharID]; + const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; + const firstMessage = + chat.fmIndex === -1 + ? char.firstMessage + : char.alternateGreetings?.[chat.fmIndex ?? 0]; + + if (hypaV3DataState.summaries.length > 0) { + const lastSummary = hypaV3DataState.summaries.at(-1); + const lastMessageIndex = chat.message.findIndex( + (msg) => msg.chatId === lastSummary.chatMemos.at(-1) + ); + + if (lastMessageIndex !== -1) { + const nextMessage = chat.message[lastMessageIndex + 1]; + + if (nextMessage) { + return nextMessage; + } + } + } + + if (firstMessage?.trim() === "") { + return chat.message[0]; + } + + return { role: "char", chatId: "first message", data: firstMessage }; + } + async function translate( text: string, regenerate?: boolean @@ -311,7 +341,7 @@
@@ -359,6 +389,10 @@
+ {#if hypaV3DataState.summaries.length === 0} + No summaries yet + {/if} + {#each hypaV3DataState.summaries as summary, i} {#if summaryUIStates[i]}
No summaries yet + {#if true} + + {@const nextMessage = getNextMessageToSummarize()} +
+ + HypaV3 will summarize {nextMessage.chatId} + +
+ {nextMessage.data} +
+
{/if}