@gendive/chatllm 0.17.23 → 0.17.24
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.
- package/dist/react/index.js +27 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +27 -0
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -2801,6 +2801,26 @@ ${attachmentContext}
|
|
|
2801
2801
|
} catch {
|
|
2802
2802
|
}
|
|
2803
2803
|
}
|
|
2804
|
+
const saveMessagesOnEarlyReturn = () => {
|
|
2805
|
+
if (!useExternalStorage || !capturedSessionId) return;
|
|
2806
|
+
queueMicrotask(() => {
|
|
2807
|
+
const latestSession = sessionsRef.current.find((s) => s.id === capturedSessionId);
|
|
2808
|
+
if (!latestSession) return;
|
|
2809
|
+
const latestMessages = latestSession.messages;
|
|
2810
|
+
const assistantMsg = [...latestMessages].reverse().find((m) => m.role === "assistant");
|
|
2811
|
+
const userMsg = latestMessages.find((m) => m.role === "user" && m.content === finalContent);
|
|
2812
|
+
const assistantContent = assistantMsg?.content || "";
|
|
2813
|
+
if (assistantContent && onSaveMessagesRef.current) {
|
|
2814
|
+
onSaveMessagesRef.current(capturedSessionId, [
|
|
2815
|
+
{ role: "user", message: finalContent, ...userMsg?.contentParts && { contentParts: userMsg.contentParts } },
|
|
2816
|
+
{ role: "assistant", message: assistantContent, ...assistantMsg?.contentParts && { contentParts: assistantMsg.contentParts } }
|
|
2817
|
+
]).catch((e) => console.error("[useChatUI] Failed to save messages:", e));
|
|
2818
|
+
}
|
|
2819
|
+
if (latestSession.messages.length > 0) {
|
|
2820
|
+
writeSessionCache(storageKey, latestSession);
|
|
2821
|
+
}
|
|
2822
|
+
});
|
|
2823
|
+
};
|
|
2804
2824
|
if (!shouldSkipSkillParsing) {
|
|
2805
2825
|
const assistantContent = accumulatedContent;
|
|
2806
2826
|
const { skillCall: detectedSkill, cleanContent: skillCleanContent } = parseSkillCallFromContent(assistantContent);
|
|
@@ -2904,6 +2924,7 @@ ${attachmentContext}
|
|
|
2904
2924
|
})
|
|
2905
2925
|
);
|
|
2906
2926
|
if (resultType === "image" || resultType === "file") {
|
|
2927
|
+
saveMessagesOnEarlyReturn();
|
|
2907
2928
|
setIsLoading(false);
|
|
2908
2929
|
abortControllerRef.current = null;
|
|
2909
2930
|
return;
|
|
@@ -2914,11 +2935,13 @@ ${attachmentContext}
|
|
|
2914
2935
|
shouldContinue = decision === "continue";
|
|
2915
2936
|
}
|
|
2916
2937
|
if (!shouldContinue) {
|
|
2938
|
+
saveMessagesOnEarlyReturn();
|
|
2917
2939
|
setIsLoading(false);
|
|
2918
2940
|
abortControllerRef.current = null;
|
|
2919
2941
|
return;
|
|
2920
2942
|
}
|
|
2921
2943
|
skipNextSkillParsingRef.current = true;
|
|
2944
|
+
saveMessagesOnEarlyReturn();
|
|
2922
2945
|
const feedbackPrompt = resultType === "error" ? `\uB3C4\uAD6C "${toolName}" \uC2E4\uD589 \uC911 \uC624\uB958 \uBC1C\uC0DD: ${result.content}
|
|
2923
2946
|
|
|
2924
2947
|
\uC0AC\uC6A9\uC790\uC5D0\uAC8C \uC624\uB958\uB97C \uC548\uB0B4\uD574\uC8FC\uC138\uC694. skill_use \uD0DC\uADF8\uB294 \uC0AC\uC6A9\uD558\uC9C0 \uB9C8\uC138\uC694.` : `\uB3C4\uAD6C "${toolName}" \uACB0\uACFC:
|
|
@@ -2954,6 +2977,7 @@ ${result.content}
|
|
|
2954
2977
|
})
|
|
2955
2978
|
);
|
|
2956
2979
|
if (streamedReport) {
|
|
2980
|
+
saveMessagesOnEarlyReturn();
|
|
2957
2981
|
setIsLoading(false);
|
|
2958
2982
|
abortControllerRef.current = null;
|
|
2959
2983
|
return;
|
|
@@ -2964,11 +2988,13 @@ ${result.content}
|
|
|
2964
2988
|
shouldContinueSkill = decision === "continue";
|
|
2965
2989
|
}
|
|
2966
2990
|
if (!shouldContinueSkill) {
|
|
2991
|
+
saveMessagesOnEarlyReturn();
|
|
2967
2992
|
setIsLoading(false);
|
|
2968
2993
|
abortControllerRef.current = null;
|
|
2969
2994
|
return;
|
|
2970
2995
|
}
|
|
2971
2996
|
skipNextSkillParsingRef.current = true;
|
|
2997
|
+
saveMessagesOnEarlyReturn();
|
|
2972
2998
|
const resultPrompt = `\uC2A4\uD0AC "${detectedSkill.name}" \uC2E4\uD589 \uACB0\uACFC:
|
|
2973
2999
|
|
|
2974
3000
|
${result.content}
|
|
@@ -6505,6 +6531,7 @@ var MarkdownRenderer = ({
|
|
|
6505
6531
|
if (hasUnfinishedPoll) {
|
|
6506
6532
|
processedContent += "\n\xA7POLL_LOADING\xA7";
|
|
6507
6533
|
}
|
|
6534
|
+
processedContent = processedContent.replace(/<skill_use[^>]*>[\s\S]*?<\/skill_use>/gi, "");
|
|
6508
6535
|
processedContent = processedContent.replace(UNCLOSED_SKILL_TAG_REGEX, "");
|
|
6509
6536
|
const codeBlocks = [];
|
|
6510
6537
|
processedContent = processedContent.replace(CODE_BLOCK_REGEX, (match, lang, code) => {
|