@gendive/chatllm 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -981,7 +981,12 @@ ${finalContent}`;
981
981
  setQuotedText(null);
982
982
  setSelectedAction(null);
983
983
  const capturedSessionId = sessionId;
984
- const isFirstMessage = !sessions.find((s) => s.id === capturedSessionId)?.messages.length;
984
+ const currentSession2 = sessions.find((s) => s.id === capturedSessionId);
985
+ const existingMessages = currentSession2?.messages || [];
986
+ const isFirstMessage = !existingMessages.length;
987
+ const contextSummary = currentSession2?.compressionState?.contextSummary || currentSession2?.contextSummary;
988
+ const summaryAfterIndex = currentSession2?.compressionState?.summaryAfterIndex || currentSession2?.summaryAfterIndex || 0;
989
+ let compressionCount = currentSession2?.compressionState?.compressionCount || 0;
985
990
  setSessions(
986
991
  (prev) => prev.map((s) => {
987
992
  if (s.id === capturedSessionId) {
@@ -1012,29 +1017,25 @@ ${finalContent}`;
1012
1017
  setIsLoading(true);
1013
1018
  abortControllerRef.current = new AbortController();
1014
1019
  try {
1015
- const session = sessions.find((s) => s.id === capturedSessionId);
1016
- const existingMessages = session?.messages || [];
1017
1020
  let messagesToSend = [...existingMessages, userMessage];
1018
1021
  const recompressionThreshold = DEFAULT_RECOMPRESSION_THRESHOLD;
1019
1022
  const tokenLimit = DEFAULT_TOKEN_LIMIT;
1020
- let contextSummary = session?.compressionState?.contextSummary || session?.contextSummary;
1021
- const summaryAfterIndex = session?.compressionState?.summaryAfterIndex || session?.summaryAfterIndex || 0;
1022
- let compressionCount = session?.compressionState?.compressionCount || 0;
1023
+ let currentContextSummary = contextSummary;
1023
1024
  const newMessageCount = messagesToSend.length - summaryAfterIndex;
1024
1025
  const estimatedTokensCount = estimateTokens(messagesToSend);
1025
- const needsInitialCompression = !contextSummary && messagesToSend.length > contextCompressionThreshold;
1026
- const needsRecompression = contextSummary && (newMessageCount > recompressionThreshold || estimatedTokensCount > tokenLimit * 0.7);
1026
+ const needsInitialCompression = !currentContextSummary && messagesToSend.length > contextCompressionThreshold;
1027
+ const needsRecompression = currentContextSummary && (newMessageCount > recompressionThreshold || estimatedTokensCount > tokenLimit * 0.7);
1027
1028
  if (needsInitialCompression || needsRecompression) {
1028
1029
  const toCompress = messagesToSend.slice(0, -keepRecentMessages);
1029
1030
  let summary;
1030
- if (needsRecompression && contextSummary) {
1031
+ if (needsRecompression && currentContextSummary) {
1031
1032
  const newMessages = toCompress.slice(summaryAfterIndex);
1032
- summary = await incrementalCompressContext(contextSummary, newMessages, selectedModel);
1033
+ summary = await incrementalCompressContext(currentContextSummary, newMessages, selectedModel);
1033
1034
  } else {
1034
1035
  summary = await compressContext(toCompress, selectedModel);
1035
1036
  }
1036
1037
  if (summary) {
1037
- contextSummary = summary;
1038
+ currentContextSummary = summary;
1038
1039
  compressionCount += 1;
1039
1040
  setSessions(
1040
1041
  (prev) => prev.map(
@@ -1062,11 +1063,11 @@ ${finalContent}`;
1062
1063
  }
1063
1064
  }
1064
1065
  let chatMessages;
1065
- if (contextSummary) {
1066
+ if (currentContextSummary) {
1066
1067
  const recentMessages = messagesToSend.slice(-keepRecentMessages);
1067
1068
  chatMessages = [
1068
1069
  { role: "system", content: `[\uC774\uC804 \uB300\uD654 \uC694\uC57D]
1069
- ${contextSummary}` },
1070
+ ${currentContextSummary}` },
1070
1071
  ...recentMessages.map((m) => ({ role: m.role, content: m.content }))
1071
1072
  ];
1072
1073
  } else {