feat: add lastSelectedSummaries property to store selected memory indices
This commit is contained in:
@@ -332,6 +332,7 @@
|
|||||||
DBState.db.characters[$selectedCharID].chatPage
|
DBState.db.characters[$selectedCharID].chatPage
|
||||||
].hypaV3Data = {
|
].hypaV3Data = {
|
||||||
summaries: [],
|
summaries: [],
|
||||||
|
lastSelectedSummaries: [],
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
showHypaV3Alert();
|
showHypaV3Alert();
|
||||||
|
|||||||
@@ -1113,6 +1113,7 @@
|
|||||||
onclick={() => {
|
onclick={() => {
|
||||||
DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].hypaV3Data ??= {
|
DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].hypaV3Data ??= {
|
||||||
summaries: [],
|
summaries: [],
|
||||||
|
lastSelectedSummaries: [],
|
||||||
}
|
}
|
||||||
showHypaV3Alert()
|
showHypaV3Alert()
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ interface Summary {
|
|||||||
|
|
||||||
interface HypaV3Data {
|
interface HypaV3Data {
|
||||||
summaries: Summary[];
|
summaries: Summary[];
|
||||||
|
lastSelectedSummaries?: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SerializableHypaV3Data {
|
export interface SerializableHypaV3Data {
|
||||||
@@ -32,6 +33,7 @@ export interface SerializableHypaV3Data {
|
|||||||
chatMemos: string[];
|
chatMemos: string[];
|
||||||
isImportant: boolean;
|
isImportant: boolean;
|
||||||
}[];
|
}[];
|
||||||
|
lastSelectedSummaries?: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SummaryChunk {
|
interface SummaryChunk {
|
||||||
@@ -55,6 +57,7 @@ function isSubset(subset: Set<string>, superset: Set<string>): boolean {
|
|||||||
|
|
||||||
function toSerializableHypaV3Data(data: HypaV3Data): SerializableHypaV3Data {
|
function toSerializableHypaV3Data(data: HypaV3Data): SerializableHypaV3Data {
|
||||||
return {
|
return {
|
||||||
|
...data,
|
||||||
summaries: data.summaries.map((summary) => ({
|
summaries: data.summaries.map((summary) => ({
|
||||||
...summary,
|
...summary,
|
||||||
chatMemos: [...summary.chatMemos],
|
chatMemos: [...summary.chatMemos],
|
||||||
@@ -64,6 +67,7 @@ function toSerializableHypaV3Data(data: HypaV3Data): SerializableHypaV3Data {
|
|||||||
|
|
||||||
function toHypaV3Data(serialData: SerializableHypaV3Data): HypaV3Data {
|
function toHypaV3Data(serialData: SerializableHypaV3Data): HypaV3Data {
|
||||||
return {
|
return {
|
||||||
|
...serialData,
|
||||||
summaries: serialData.summaries.map((summary) => ({
|
summaries: serialData.summaries.map((summary) => ({
|
||||||
...summary,
|
...summary,
|
||||||
// Convert null back to undefined (JSON serialization converts undefined to null)
|
// Convert null back to undefined (JSON serialization converts undefined to null)
|
||||||
@@ -231,16 +235,16 @@ async function retryableSummarize(
|
|||||||
while (summarizationFailures < maxSummarizationFailures) {
|
while (summarizationFailures < maxSummarizationFailures) {
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Attempting summarization:",
|
"[HypaV3] Attempting summarization:",
|
||||||
"\nAttempt: ",
|
"\nAttempt:",
|
||||||
summarizationFailures + 1,
|
summarizationFailures + 1,
|
||||||
"\nTarget: ",
|
"\nTarget:",
|
||||||
oaiChats
|
oaiChats
|
||||||
);
|
);
|
||||||
|
|
||||||
const summarizeResult = await summarize(oaiChats);
|
const summarizeResult = await summarize(oaiChats);
|
||||||
|
|
||||||
if (!summarizeResult.success) {
|
if (!summarizeResult.success) {
|
||||||
console.log("[HypaV3] Summarization failed: ", summarizeResult.data);
|
console.log("[HypaV3] Summarization failed:", summarizeResult.data);
|
||||||
summarizationFailures++;
|
summarizationFailures++;
|
||||||
|
|
||||||
if (summarizationFailures >= maxSummarizationFailures) {
|
if (summarizationFailures >= maxSummarizationFailures) {
|
||||||
@@ -288,6 +292,7 @@ export async function hypaMemoryV3(
|
|||||||
// Load existing hypa data if available
|
// Load existing hypa data if available
|
||||||
let data: HypaV3Data = {
|
let data: HypaV3Data = {
|
||||||
summaries: [],
|
summaries: [],
|
||||||
|
lastSelectedSummaries: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (room.hypaV3Data) {
|
if (room.hypaV3Data) {
|
||||||
@@ -336,10 +341,10 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
if (shouldReserveEmptyMemoryTokens) {
|
if (shouldReserveEmptyMemoryTokens) {
|
||||||
currentTokens += emptyMemoryTokens;
|
currentTokens += emptyMemoryTokens;
|
||||||
console.log("[HypaV3] Reserved empty memory tokens: ", emptyMemoryTokens);
|
console.log("[HypaV3] Reserved empty memory tokens:", emptyMemoryTokens);
|
||||||
} else {
|
} else {
|
||||||
currentTokens += memoryTokens;
|
currentTokens += memoryTokens;
|
||||||
console.log("[HypaV3] Reserved max memory tokens: ", memoryTokens);
|
console.log("[HypaV3] Reserved max memory tokens:", memoryTokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If summarization is needed
|
// If summarization is needed
|
||||||
@@ -374,17 +379,17 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Evaluating summarization batch:",
|
"[HypaV3] Evaluating summarization batch:",
|
||||||
"\nCurrent Tokens: ",
|
"\nCurrent Tokens:",
|
||||||
currentTokens,
|
currentTokens,
|
||||||
"\nMax Context Tokens: ",
|
"\nMax Context Tokens:",
|
||||||
maxContextTokens,
|
maxContextTokens,
|
||||||
"\nStart Index: ",
|
"\nStart Index:",
|
||||||
startIdx,
|
startIdx,
|
||||||
"\nEnd Index: ",
|
"\nEnd Index:",
|
||||||
endIdx,
|
endIdx,
|
||||||
"\nChat Count: ",
|
"\nChat Count:",
|
||||||
endIdx - startIdx,
|
endIdx - startIdx,
|
||||||
"\nMax Chats Per Summary: ",
|
"\nMax Chats Per Summary:",
|
||||||
db.hypaV3Settings.maxChatsPerSummary
|
db.hypaV3Settings.maxChatsPerSummary
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -394,13 +399,13 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Evaluating chat:",
|
"[HypaV3] Evaluating chat:",
|
||||||
"\nIndex: ",
|
"\nIndex:",
|
||||||
i,
|
i,
|
||||||
"\nRole: ",
|
"\nRole:",
|
||||||
chat.role,
|
chat.role,
|
||||||
"\nContent:\n",
|
"\nContent:",
|
||||||
chat.content,
|
"\n" + chat.content,
|
||||||
"\nTokens: ",
|
"\nTokens:",
|
||||||
chatTokens
|
chatTokens
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -456,11 +461,11 @@ export async function hypaMemoryV3(
|
|||||||
`[HypaV3] ${
|
`[HypaV3] ${
|
||||||
summarizationMode ? "Completed" : "Skipped"
|
summarizationMode ? "Completed" : "Skipped"
|
||||||
} summarization phase:`,
|
} summarization phase:`,
|
||||||
"\nCurrent Tokens: ",
|
"\nCurrent Tokens:",
|
||||||
currentTokens,
|
currentTokens,
|
||||||
"\nMax Context Tokens: ",
|
"\nMax Context Tokens:",
|
||||||
maxContextTokens,
|
maxContextTokens,
|
||||||
"\nAvailable Memory Tokens: ",
|
"\nAvailable Memory Tokens:",
|
||||||
availableMemoryTokens
|
availableMemoryTokens
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -494,11 +499,11 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] After important memory selection:",
|
"[HypaV3] After important memory selection:",
|
||||||
"\nSummary Count: ",
|
"\nSummary Count:",
|
||||||
selectedImportantSummaries.length,
|
selectedImportantSummaries.length,
|
||||||
"\nSummaries: ",
|
"\nSummaries:",
|
||||||
selectedImportantSummaries,
|
selectedImportantSummaries,
|
||||||
"\nAvailable Memory Tokens: ",
|
"\nAvailable Memory Tokens:",
|
||||||
availableMemoryTokens
|
availableMemoryTokens
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -539,13 +544,13 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] After recent memory selection:",
|
"[HypaV3] After recent memory selection:",
|
||||||
"\nSummary Count: ",
|
"\nSummary Count:",
|
||||||
selectedRecentSummaries.length,
|
selectedRecentSummaries.length,
|
||||||
"\nSummaries: ",
|
"\nSummaries:",
|
||||||
selectedRecentSummaries,
|
selectedRecentSummaries,
|
||||||
"\nReserved Recent Memory Tokens: ",
|
"\nReserved Tokens:",
|
||||||
reservedRecentMemoryTokens,
|
reservedRecentMemoryTokens,
|
||||||
"\nConsumed Recent Memory Tokens: ",
|
"\nConsumed Tokens:",
|
||||||
consumedRecentMemoryTokens
|
consumedRecentMemoryTokens
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -567,7 +572,7 @@ export async function hypaMemoryV3(
|
|||||||
reservedSimilarMemoryTokens += unusedRecentTokens;
|
reservedSimilarMemoryTokens += unusedRecentTokens;
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Additional available token space for similar memory:",
|
"[HypaV3] Additional available token space for similar memory:",
|
||||||
"\nFrom recent: ",
|
"\nFrom recent:",
|
||||||
unusedRecentTokens
|
unusedRecentTokens
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -666,13 +671,13 @@ export async function hypaMemoryV3(
|
|||||||
/*
|
/*
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Trying to add similar summary:",
|
"[HypaV3] Trying to add similar summary:",
|
||||||
"\nSummary Tokens: ",
|
"\nSummary Tokens:",
|
||||||
summaryTokens,
|
summaryTokens,
|
||||||
"\nConsumed Similar Memory Tokens: ",
|
"\nConsumed Similar Memory Tokens:",
|
||||||
consumedSimilarMemoryTokens,
|
consumedSimilarMemoryTokens,
|
||||||
"\nReserved Tokens: ",
|
"\nReserved Tokens:",
|
||||||
reservedSimilarMemoryTokens,
|
reservedSimilarMemoryTokens,
|
||||||
"\nWould exceed: ",
|
"\nWould exceed:",
|
||||||
summaryTokens + consumedSimilarMemoryTokens > reservedSimilarMemoryTokens
|
summaryTokens + consumedSimilarMemoryTokens > reservedSimilarMemoryTokens
|
||||||
);
|
);
|
||||||
*/
|
*/
|
||||||
@@ -695,13 +700,13 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] After similar memory selection:",
|
"[HypaV3] After similar memory selection:",
|
||||||
"\nSummary Count: ",
|
"\nSummary Count:",
|
||||||
selectedSimilarSummaries.length,
|
selectedSimilarSummaries.length,
|
||||||
"\nSummaries: ",
|
"\nSummaries:",
|
||||||
selectedSimilarSummaries,
|
selectedSimilarSummaries,
|
||||||
"\nReserved Similar Memory Tokens: ",
|
"\nReserved Tokens:",
|
||||||
reservedSimilarMemoryTokens,
|
reservedSimilarMemoryTokens,
|
||||||
"\nConsumed Similar Memory Tokens: ",
|
"\nConsumed Tokens:",
|
||||||
consumedSimilarMemoryTokens
|
consumedSimilarMemoryTokens
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -724,11 +729,11 @@ export async function hypaMemoryV3(
|
|||||||
reservedRandomMemoryTokens += unusedRecentTokens + unusedSimilarTokens;
|
reservedRandomMemoryTokens += unusedRecentTokens + unusedSimilarTokens;
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Additional available token space for random memory:",
|
"[HypaV3] Additional available token space for random memory:",
|
||||||
"\nFrom recent: ",
|
"\nFrom recent:",
|
||||||
unusedRecentTokens,
|
unusedRecentTokens,
|
||||||
"\nFrom similar: ",
|
"\nFrom similar:",
|
||||||
unusedSimilarTokens,
|
unusedSimilarTokens,
|
||||||
"\nTotal added: ",
|
"\nTotal added:",
|
||||||
unusedRecentTokens + unusedSimilarTokens
|
unusedRecentTokens + unusedSimilarTokens
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -759,13 +764,13 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] After random memory selection:",
|
"[HypaV3] After random memory selection:",
|
||||||
"\nSummary Count: ",
|
"\nSummary Count:",
|
||||||
selectedRandomSummaries.length,
|
selectedRandomSummaries.length,
|
||||||
"\nSummaries: ",
|
"\nSummaries:",
|
||||||
selectedRandomSummaries,
|
selectedRandomSummaries,
|
||||||
"\nReserved Random Memory Tokens: ",
|
"\nReserved Tokens:",
|
||||||
reservedRandomMemoryTokens,
|
reservedRandomMemoryTokens,
|
||||||
"\nConsumed Random Memory Tokens: ",
|
"\nConsumed Tokens:",
|
||||||
consumedRandomMemoryTokens
|
consumedRandomMemoryTokens
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -795,13 +800,13 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Final memory selection:",
|
"[HypaV3] Final memory selection:",
|
||||||
"\nSummary Count: ",
|
"\nSummary Count:",
|
||||||
selectedSummaries.length,
|
selectedSummaries.length,
|
||||||
"\nSummaries: ",
|
"\nSummaries:",
|
||||||
selectedSummaries,
|
selectedSummaries,
|
||||||
"\nReal Memory Tokens: ",
|
"\nReal Memory Tokens:",
|
||||||
realMemoryTokens,
|
realMemoryTokens,
|
||||||
"\nAvailable Memory Tokens: ",
|
"\nAvailable Memory Tokens:",
|
||||||
availableMemoryTokens
|
availableMemoryTokens
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -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[] = [
|
const newChats: OpenAIChat[] = [
|
||||||
{
|
{
|
||||||
role: "system",
|
role: "system",
|
||||||
@@ -822,11 +832,11 @@ export async function hypaMemoryV3(
|
|||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"[HypaV3] Exiting function:",
|
"[HypaV3] Exiting function:",
|
||||||
"\nCurrent Tokens: ",
|
"\nCurrent Tokens:",
|
||||||
currentTokens,
|
currentTokens,
|
||||||
"\nAll chats, including memory prompt: ",
|
"\nAll chats, including memory prompt:",
|
||||||
newChats,
|
newChats,
|
||||||
"\nMemory Data: ",
|
"\nMemory Data:",
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user