feat: add lastSelectedSummaries property to store selected memory indices

This commit is contained in:
Bo26fhmC5M
2025-01-17 00:17:12 +09:00
parent 6a13b33103
commit 3c62317f3a
3 changed files with 61 additions and 49 deletions

View File

@@ -332,6 +332,7 @@
DBState.db.characters[$selectedCharID].chatPage
].hypaV3Data = {
summaries: [],
lastSelectedSummaries: [],
};
} else {
showHypaV3Alert();

View File

@@ -1113,6 +1113,7 @@
onclick={() => {
DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].hypaV3Data ??= {
summaries: [],
lastSelectedSummaries: [],
}
showHypaV3Alert()
}}

View File

@@ -24,6 +24,7 @@ interface Summary {
interface HypaV3Data {
summaries: Summary[];
lastSelectedSummaries?: number[];
}
export interface SerializableHypaV3Data {
@@ -32,6 +33,7 @@ export interface SerializableHypaV3Data {
chatMemos: string[];
isImportant: boolean;
}[];
lastSelectedSummaries?: number[];
}
interface SummaryChunk {
@@ -55,6 +57,7 @@ function isSubset(subset: Set<string>, superset: Set<string>): boolean {
function toSerializableHypaV3Data(data: HypaV3Data): SerializableHypaV3Data {
return {
...data,
summaries: data.summaries.map((summary) => ({
...summary,
chatMemos: [...summary.chatMemos],
@@ -64,6 +67,7 @@ function toSerializableHypaV3Data(data: HypaV3Data): SerializableHypaV3Data {
function toHypaV3Data(serialData: SerializableHypaV3Data): HypaV3Data {
return {
...serialData,
summaries: serialData.summaries.map((summary) => ({
...summary,
// Convert null back to undefined (JSON serialization converts undefined to null)
@@ -288,6 +292,7 @@ export async function hypaMemoryV3(
// Load existing hypa data if available
let data: HypaV3Data = {
summaries: [],
lastSelectedSummaries: [],
};
if (room.hypaV3Data) {
@@ -398,8 +403,8 @@ export async function hypaMemoryV3(
i,
"\nRole:",
chat.role,
"\nContent:\n",
chat.content,
"\nContent:",
"\n" + chat.content,
"\nTokens:",
chatTokens
);
@@ -543,9 +548,9 @@ export async function hypaMemoryV3(
selectedRecentSummaries.length,
"\nSummaries:",
selectedRecentSummaries,
"\nReserved Recent Memory Tokens: ",
"\nReserved Tokens:",
reservedRecentMemoryTokens,
"\nConsumed Recent Memory Tokens: ",
"\nConsumed Tokens:",
consumedRecentMemoryTokens
);
}
@@ -699,9 +704,9 @@ export async function hypaMemoryV3(
selectedSimilarSummaries.length,
"\nSummaries:",
selectedSimilarSummaries,
"\nReserved Similar Memory Tokens: ",
"\nReserved Tokens:",
reservedSimilarMemoryTokens,
"\nConsumed Similar Memory Tokens: ",
"\nConsumed Tokens:",
consumedSimilarMemoryTokens
);
}
@@ -763,9 +768,9 @@ export async function hypaMemoryV3(
selectedRandomSummaries.length,
"\nSummaries:",
selectedRandomSummaries,
"\nReserved Random Memory Tokens: ",
"\nReserved Tokens:",
reservedRandomMemoryTokens,
"\nConsumed Random Memory Tokens: ",
"\nConsumed Tokens:",
consumedRandomMemoryTokens
);
}
@@ -811,6 +816,11 @@ export async function hypaMemoryV3(
);
}
// Save last selected summaries
data.lastSelectedSummaries = selectedSummaries.map((selectedSummary) =>
data.summaries.findIndex((summary) => summary === selectedSummary)
);
const newChats: OpenAIChat[] = [
{
role: "system",