@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.mjs
CHANGED
|
@@ -2735,6 +2735,26 @@ ${attachmentContext}
|
|
|
2735
2735
|
} catch {
|
|
2736
2736
|
}
|
|
2737
2737
|
}
|
|
2738
|
+
const saveMessagesOnEarlyReturn = () => {
|
|
2739
|
+
if (!useExternalStorage || !capturedSessionId) return;
|
|
2740
|
+
queueMicrotask(() => {
|
|
2741
|
+
const latestSession = sessionsRef.current.find((s) => s.id === capturedSessionId);
|
|
2742
|
+
if (!latestSession) return;
|
|
2743
|
+
const latestMessages = latestSession.messages;
|
|
2744
|
+
const assistantMsg = [...latestMessages].reverse().find((m) => m.role === "assistant");
|
|
2745
|
+
const userMsg = latestMessages.find((m) => m.role === "user" && m.content === finalContent);
|
|
2746
|
+
const assistantContent = assistantMsg?.content || "";
|
|
2747
|
+
if (assistantContent && onSaveMessagesRef.current) {
|
|
2748
|
+
onSaveMessagesRef.current(capturedSessionId, [
|
|
2749
|
+
{ role: "user", message: finalContent, ...userMsg?.contentParts && { contentParts: userMsg.contentParts } },
|
|
2750
|
+
{ role: "assistant", message: assistantContent, ...assistantMsg?.contentParts && { contentParts: assistantMsg.contentParts } }
|
|
2751
|
+
]).catch((e) => console.error("[useChatUI] Failed to save messages:", e));
|
|
2752
|
+
}
|
|
2753
|
+
if (latestSession.messages.length > 0) {
|
|
2754
|
+
writeSessionCache(storageKey, latestSession);
|
|
2755
|
+
}
|
|
2756
|
+
});
|
|
2757
|
+
};
|
|
2738
2758
|
if (!shouldSkipSkillParsing) {
|
|
2739
2759
|
const assistantContent = accumulatedContent;
|
|
2740
2760
|
const { skillCall: detectedSkill, cleanContent: skillCleanContent } = parseSkillCallFromContent(assistantContent);
|
|
@@ -2838,6 +2858,7 @@ ${attachmentContext}
|
|
|
2838
2858
|
})
|
|
2839
2859
|
);
|
|
2840
2860
|
if (resultType === "image" || resultType === "file") {
|
|
2861
|
+
saveMessagesOnEarlyReturn();
|
|
2841
2862
|
setIsLoading(false);
|
|
2842
2863
|
abortControllerRef.current = null;
|
|
2843
2864
|
return;
|
|
@@ -2848,11 +2869,13 @@ ${attachmentContext}
|
|
|
2848
2869
|
shouldContinue = decision === "continue";
|
|
2849
2870
|
}
|
|
2850
2871
|
if (!shouldContinue) {
|
|
2872
|
+
saveMessagesOnEarlyReturn();
|
|
2851
2873
|
setIsLoading(false);
|
|
2852
2874
|
abortControllerRef.current = null;
|
|
2853
2875
|
return;
|
|
2854
2876
|
}
|
|
2855
2877
|
skipNextSkillParsingRef.current = true;
|
|
2878
|
+
saveMessagesOnEarlyReturn();
|
|
2856
2879
|
const feedbackPrompt = resultType === "error" ? `\uB3C4\uAD6C "${toolName}" \uC2E4\uD589 \uC911 \uC624\uB958 \uBC1C\uC0DD: ${result.content}
|
|
2857
2880
|
|
|
2858
2881
|
\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:
|
|
@@ -2888,6 +2911,7 @@ ${result.content}
|
|
|
2888
2911
|
})
|
|
2889
2912
|
);
|
|
2890
2913
|
if (streamedReport) {
|
|
2914
|
+
saveMessagesOnEarlyReturn();
|
|
2891
2915
|
setIsLoading(false);
|
|
2892
2916
|
abortControllerRef.current = null;
|
|
2893
2917
|
return;
|
|
@@ -2898,11 +2922,13 @@ ${result.content}
|
|
|
2898
2922
|
shouldContinueSkill = decision === "continue";
|
|
2899
2923
|
}
|
|
2900
2924
|
if (!shouldContinueSkill) {
|
|
2925
|
+
saveMessagesOnEarlyReturn();
|
|
2901
2926
|
setIsLoading(false);
|
|
2902
2927
|
abortControllerRef.current = null;
|
|
2903
2928
|
return;
|
|
2904
2929
|
}
|
|
2905
2930
|
skipNextSkillParsingRef.current = true;
|
|
2931
|
+
saveMessagesOnEarlyReturn();
|
|
2906
2932
|
const resultPrompt = `\uC2A4\uD0AC "${detectedSkill.name}" \uC2E4\uD589 \uACB0\uACFC:
|
|
2907
2933
|
|
|
2908
2934
|
${result.content}
|
|
@@ -6439,6 +6465,7 @@ var MarkdownRenderer = ({
|
|
|
6439
6465
|
if (hasUnfinishedPoll) {
|
|
6440
6466
|
processedContent += "\n\xA7POLL_LOADING\xA7";
|
|
6441
6467
|
}
|
|
6468
|
+
processedContent = processedContent.replace(/<skill_use[^>]*>[\s\S]*?<\/skill_use>/gi, "");
|
|
6442
6469
|
processedContent = processedContent.replace(UNCLOSED_SKILL_TAG_REGEX, "");
|
|
6443
6470
|
const codeBlocks = [];
|
|
6444
6471
|
processedContent = processedContent.replace(CODE_BLOCK_REGEX, (match, lang, code) => {
|