@flamingo-stack/openframe-frontend-core 0.0.522 → 0.0.523-1663.4375.1
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/{chunk-RWTD4NQ2.cjs → chunk-43QX3P4G.cjs} +3 -3
- package/dist/{chunk-RWTD4NQ2.cjs.map → chunk-43QX3P4G.cjs.map} +1 -1
- package/dist/{chunk-JL3X7DPB.js → chunk-7EYNWY2N.js} +2 -2
- package/dist/{chunk-UUFE74C7.js → chunk-7LSK5YFW.js} +2 -2
- package/dist/{chunk-FRFXBRST.cjs → chunk-7RIYOJLG.cjs} +26 -26
- package/dist/{chunk-FRFXBRST.cjs.map → chunk-7RIYOJLG.cjs.map} +1 -1
- package/dist/{chunk-MZ2MPY3B.js → chunk-7ZIGB34Y.js} +6 -6
- package/dist/{chunk-IBHUZFIZ.js → chunk-ANKQQTAI.js} +4 -4
- package/dist/{chunk-ZVVEXK44.js → chunk-BPBMHS4U.js} +2 -2
- package/dist/{chunk-FVXRZ474.cjs → chunk-D3PPR2WR.cjs} +14 -14
- package/dist/{chunk-FVXRZ474.cjs.map → chunk-D3PPR2WR.cjs.map} +1 -1
- package/dist/{chunk-GZIJUOER.js → chunk-FP6HEAQC.js} +5 -5
- package/dist/{chunk-XCI5F273.cjs → chunk-H5TAFA4H.cjs} +4 -4
- package/dist/{chunk-XCI5F273.cjs.map → chunk-H5TAFA4H.cjs.map} +1 -1
- package/dist/{chunk-QUPS6IAR.cjs → chunk-HPGBHELQ.cjs} +7 -7
- package/dist/{chunk-QUPS6IAR.cjs.map → chunk-HPGBHELQ.cjs.map} +1 -1
- package/dist/{chunk-VXSGV2VP.js → chunk-ICWQQQTR.js} +2 -2
- package/dist/{chunk-K4ORVGWE.cjs → chunk-J2OPY22M.cjs} +87 -87
- package/dist/{chunk-K4ORVGWE.cjs.map → chunk-J2OPY22M.cjs.map} +1 -1
- package/dist/{chunk-AEDRJEID.cjs → chunk-JGYVXVN6.cjs} +61 -61
- package/dist/{chunk-AEDRJEID.cjs.map → chunk-JGYVXVN6.cjs.map} +1 -1
- package/dist/{chunk-S7BB62B4.cjs → chunk-JKUYXCG2.cjs} +9 -9
- package/dist/{chunk-S7BB62B4.cjs.map → chunk-JKUYXCG2.cjs.map} +1 -1
- package/dist/{chunk-SAAKOLLH.cjs → chunk-KBE7SNFZ.cjs} +5 -5
- package/dist/{chunk-SAAKOLLH.cjs.map → chunk-KBE7SNFZ.cjs.map} +1 -1
- package/dist/{chunk-IO3PCG3Z.js → chunk-L4DKYRHG.js} +2 -2
- package/dist/{chunk-ZVPLTDNE.cjs → chunk-LJCBSJFU.cjs} +26 -26
- package/dist/{chunk-ZVPLTDNE.cjs.map → chunk-LJCBSJFU.cjs.map} +1 -1
- package/dist/{chunk-3T3YTENO.js → chunk-M45XIHZY.js} +2 -2
- package/dist/{chunk-Q74DY577.js → chunk-NBANPQ3N.js} +2 -2
- package/dist/{chunk-SS3AJW6C.js → chunk-NMZ33YWL.js} +4 -4
- package/dist/{chunk-66XVK6ZG.cjs → chunk-OGXZCZSA.cjs} +31 -31
- package/dist/{chunk-66XVK6ZG.cjs.map → chunk-OGXZCZSA.cjs.map} +1 -1
- package/dist/{chunk-GZZG7MTN.js → chunk-OPU5BLBT.js} +2 -2
- package/dist/{chunk-WZR4RNJN.cjs → chunk-PZVYYDFL.cjs} +37 -37
- package/dist/{chunk-WZR4RNJN.cjs.map → chunk-PZVYYDFL.cjs.map} +1 -1
- package/dist/{chunk-HTQBSPHP.js → chunk-QBLLF7VS.js} +2 -2
- package/dist/{chunk-PZGS25UT.cjs → chunk-VYRP7JOD.cjs} +30 -5
- package/dist/chunk-VYRP7JOD.cjs.map +1 -0
- package/dist/{chunk-WEEOC4DQ.js → chunk-YJLQQGLH.js} +134 -109
- package/dist/{chunk-WEEOC4DQ.js.map → chunk-YJLQQGLH.js.map} +1 -1
- package/dist/{chunk-FL4IQO6P.cjs → chunk-ZIIIYUZ5.cjs} +11 -11
- package/dist/{chunk-FL4IQO6P.cjs.map → chunk-ZIIIYUZ5.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts +7 -1
- package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +4 -2
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +3 -1
- package/dist/components/chat/types/api.types.d.ts +22 -4
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +134 -132
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +13 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +34 -34
- package/dist/components/meeting-scheduler/index.js +3 -3
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/index.cjs +4 -2
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +3 -1
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -1
- package/package.json +1 -1
- package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +11 -4
- package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +71 -6
- package/src/components/chat/types/api.types.ts +22 -4
- package/src/components/chat/utils/__tests__/history-merge.test.ts +99 -0
- package/dist/chunk-PZGS25UT.cjs.map +0 -1
- /package/dist/{chunk-JL3X7DPB.js.map → chunk-7EYNWY2N.js.map} +0 -0
- /package/dist/{chunk-UUFE74C7.js.map → chunk-7LSK5YFW.js.map} +0 -0
- /package/dist/{chunk-MZ2MPY3B.js.map → chunk-7ZIGB34Y.js.map} +0 -0
- /package/dist/{chunk-IBHUZFIZ.js.map → chunk-ANKQQTAI.js.map} +0 -0
- /package/dist/{chunk-ZVVEXK44.js.map → chunk-BPBMHS4U.js.map} +0 -0
- /package/dist/{chunk-GZIJUOER.js.map → chunk-FP6HEAQC.js.map} +0 -0
- /package/dist/{chunk-VXSGV2VP.js.map → chunk-ICWQQQTR.js.map} +0 -0
- /package/dist/{chunk-IO3PCG3Z.js.map → chunk-L4DKYRHG.js.map} +0 -0
- /package/dist/{chunk-3T3YTENO.js.map → chunk-M45XIHZY.js.map} +0 -0
- /package/dist/{chunk-Q74DY577.js.map → chunk-NBANPQ3N.js.map} +0 -0
- /package/dist/{chunk-SS3AJW6C.js.map → chunk-NMZ33YWL.js.map} +0 -0
- /package/dist/{chunk-GZZG7MTN.js.map → chunk-OPU5BLBT.js.map} +0 -0
- /package/dist/{chunk-HTQBSPHP.js.map → chunk-QBLLF7VS.js.map} +0 -0
|
@@ -52766,9 +52766,10 @@ function useScriptedStream(frames, resetKey, enabled = true) {
|
|
|
52766
52766
|
}
|
|
52767
52767
|
|
|
52768
52768
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
52769
|
-
import { useEffect as useEffect85, useRef as useRef69, useState as useState115 } from "react";
|
|
52769
|
+
import { useCallback as useCallback49, useEffect as useEffect85, useRef as useRef69, useState as useState115 } from "react";
|
|
52770
52770
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
52771
52771
|
var RESYNC_AFTER_HIDDEN_MS = 1e4;
|
|
52772
|
+
var RESYNC_COALESCE_MS = 1e3;
|
|
52772
52773
|
var RECOVERY_REPORT_FLOOR_MS = 5e3;
|
|
52773
52774
|
function useJetStreamDialogSubscription({
|
|
52774
52775
|
enabled,
|
|
@@ -52784,7 +52785,8 @@ function useJetStreamDialogSubscription({
|
|
|
52784
52785
|
getNatsWsUrl,
|
|
52785
52786
|
clientConfig = {},
|
|
52786
52787
|
reconnectionBackoff,
|
|
52787
|
-
inactiveThresholdMs
|
|
52788
|
+
inactiveThresholdMs,
|
|
52789
|
+
resyncSignal = 0
|
|
52788
52790
|
}) {
|
|
52789
52791
|
const [isConnected, setIsConnected] = useState115(false);
|
|
52790
52792
|
const [isSubscribed, setIsSubscribed] = useState115(false);
|
|
@@ -52792,6 +52794,8 @@ function useJetStreamDialogSubscription({
|
|
|
52792
52794
|
const [recoveryCount, setRecoveryCount] = useState115(0);
|
|
52793
52795
|
const [currentStreamSeq, setCurrentStreamSeq] = useState115(null);
|
|
52794
52796
|
const lastRecoveryReportRef = useRef69(0);
|
|
52797
|
+
const resyncTimerRef = useRef69(null);
|
|
52798
|
+
const lastResyncSignalRef = useRef69(resyncSignal);
|
|
52795
52799
|
const clientRef = useRef69(null);
|
|
52796
52800
|
const subscriptionRef = useRef69(null);
|
|
52797
52801
|
const highestStreamSeqRef = useRef69(null);
|
|
@@ -52921,8 +52925,22 @@ function useJetStreamDialogSubscription({
|
|
|
52921
52925
|
}, [enabled, wsUrl]);
|
|
52922
52926
|
useEffect85(() => {
|
|
52923
52927
|
highestStreamSeqRef.current = null;
|
|
52928
|
+
lastResyncSignalRef.current = resyncSignal;
|
|
52924
52929
|
setCurrentStreamSeq(null);
|
|
52930
|
+
return () => {
|
|
52931
|
+
if (resyncTimerRef.current !== null) {
|
|
52932
|
+
clearTimeout(resyncTimerRef.current);
|
|
52933
|
+
resyncTimerRef.current = null;
|
|
52934
|
+
}
|
|
52935
|
+
};
|
|
52925
52936
|
}, [dialogId]);
|
|
52937
|
+
const requestResync = useCallback49(() => {
|
|
52938
|
+
if (resyncTimerRef.current !== null) clearTimeout(resyncTimerRef.current);
|
|
52939
|
+
resyncTimerRef.current = setTimeout(() => {
|
|
52940
|
+
resyncTimerRef.current = null;
|
|
52941
|
+
setReconnectionCount((c) => c + 1);
|
|
52942
|
+
}, RESYNC_COALESCE_MS);
|
|
52943
|
+
}, []);
|
|
52926
52944
|
useEffect85(() => {
|
|
52927
52945
|
if (!enabled) return;
|
|
52928
52946
|
let hiddenSince = document.visibilityState === "hidden" ? Date.now() : 0;
|
|
@@ -52934,12 +52952,18 @@ function useJetStreamDialogSubscription({
|
|
|
52934
52952
|
const awayMs = hiddenSince === 0 ? 0 : Date.now() - hiddenSince;
|
|
52935
52953
|
hiddenSince = 0;
|
|
52936
52954
|
if (awayMs >= RESYNC_AFTER_HIDDEN_MS) {
|
|
52937
|
-
|
|
52955
|
+
requestResync();
|
|
52938
52956
|
}
|
|
52939
52957
|
};
|
|
52940
52958
|
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
52941
52959
|
return () => document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
52942
|
-
}, [enabled]);
|
|
52960
|
+
}, [enabled, requestResync]);
|
|
52961
|
+
useEffect85(() => {
|
|
52962
|
+
if (!enabled) return;
|
|
52963
|
+
if (resyncSignal <= lastResyncSignalRef.current) return;
|
|
52964
|
+
lastResyncSignalRef.current = resyncSignal;
|
|
52965
|
+
requestResync();
|
|
52966
|
+
}, [enabled, resyncSignal, requestResync]);
|
|
52943
52967
|
useEffect85(() => {
|
|
52944
52968
|
if (!enabled || !dialogId || !isConnected) {
|
|
52945
52969
|
if (subscriptionRef.current) {
|
|
@@ -53442,7 +53466,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
53442
53466
|
}
|
|
53443
53467
|
|
|
53444
53468
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
53445
|
-
import { useCallback as
|
|
53469
|
+
import { useCallback as useCallback50, useMemo as useMemo50, useRef as useRef71, useState as useState118 } from "react";
|
|
53446
53470
|
import { fileTypeFromBlob } from "file-type";
|
|
53447
53471
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
53448
53472
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -53520,10 +53544,10 @@ function useChatAttachments() {
|
|
|
53520
53544
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
53521
53545
|
const [attachments, setAttachments] = useState118([]);
|
|
53522
53546
|
const controllersRef = useRef71(/* @__PURE__ */ new Map());
|
|
53523
|
-
const updateOne =
|
|
53547
|
+
const updateOne = useCallback50((id, patch) => {
|
|
53524
53548
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
53525
53549
|
}, []);
|
|
53526
|
-
const removeAttachment =
|
|
53550
|
+
const removeAttachment = useCallback50((id) => {
|
|
53527
53551
|
const ctrl = controllersRef.current.get(id);
|
|
53528
53552
|
if (ctrl) {
|
|
53529
53553
|
ctrl.abort();
|
|
@@ -53531,12 +53555,12 @@ function useChatAttachments() {
|
|
|
53531
53555
|
}
|
|
53532
53556
|
setAttachments((prev) => prev.filter((a) => a.id !== id));
|
|
53533
53557
|
}, []);
|
|
53534
|
-
const clear =
|
|
53558
|
+
const clear = useCallback50(() => {
|
|
53535
53559
|
for (const ctrl of controllersRef.current.values()) ctrl.abort();
|
|
53536
53560
|
controllersRef.current.clear();
|
|
53537
53561
|
setAttachments([]);
|
|
53538
53562
|
}, []);
|
|
53539
|
-
const uploadOne =
|
|
53563
|
+
const uploadOne = useCallback50(
|
|
53540
53564
|
async (att) => {
|
|
53541
53565
|
const ctrl = controllersRef.current.get(att.id);
|
|
53542
53566
|
try {
|
|
@@ -53610,7 +53634,7 @@ function useChatAttachments() {
|
|
|
53610
53634
|
);
|
|
53611
53635
|
const attachmentsRef = useRef71([]);
|
|
53612
53636
|
attachmentsRef.current = attachments;
|
|
53613
|
-
const addFiles =
|
|
53637
|
+
const addFiles = useCallback50(
|
|
53614
53638
|
(files) => {
|
|
53615
53639
|
const arr = Array.from(files);
|
|
53616
53640
|
if (arr.length === 0) return;
|
|
@@ -53685,7 +53709,7 @@ function useChatAttachments() {
|
|
|
53685
53709
|
}
|
|
53686
53710
|
|
|
53687
53711
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
53688
|
-
import { useCallback as
|
|
53712
|
+
import { useCallback as useCallback51, useEffect as useEffect88, useRef as useRef72, useState as useState119 } from "react";
|
|
53689
53713
|
import { jsx as jsx380 } from "react/jsx-runtime";
|
|
53690
53714
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
53691
53715
|
function useChatAttachmentImageGallery() {
|
|
@@ -53693,7 +53717,7 @@ function useChatAttachmentImageGallery() {
|
|
|
53693
53717
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
53694
53718
|
const panelRef = useRef72(null);
|
|
53695
53719
|
const [state, setState] = useState119(CLOSED);
|
|
53696
|
-
const handleClose =
|
|
53720
|
+
const handleClose = useCallback51(() => setState(CLOSED), []);
|
|
53697
53721
|
useEffect88(() => {
|
|
53698
53722
|
const root = panelRef.current;
|
|
53699
53723
|
if (!root) return;
|
|
@@ -53758,20 +53782,20 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
53758
53782
|
}
|
|
53759
53783
|
|
|
53760
53784
|
// src/components/chat/hooks/use-chat.ts
|
|
53761
|
-
import { useState as useState121, useCallback as
|
|
53785
|
+
import { useState as useState121, useCallback as useCallback53, useEffect as useEffect90, useRef as useRef75 } from "react";
|
|
53762
53786
|
|
|
53763
53787
|
// src/components/chat/hooks/use-sse.ts
|
|
53764
|
-
import { useState as useState120, useCallback as
|
|
53788
|
+
import { useState as useState120, useCallback as useCallback52, useRef as useRef74 } from "react";
|
|
53765
53789
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
53766
53790
|
const [isStreaming, setIsStreaming] = useState120(false);
|
|
53767
53791
|
const [error, setError] = useState120(null);
|
|
53768
53792
|
const abortControllerRef = useRef74(null);
|
|
53769
|
-
const fallbackStream =
|
|
53793
|
+
const fallbackStream = useCallback52(async function* () {
|
|
53770
53794
|
throw new Error(
|
|
53771
53795
|
"[useSSE] No streamFn provided and `useMock: true` is no longer wired into the lib. Supply a `streamFn` (see `createDocStreamFn` in use-embedded-chat) or migrate the mock to your host code."
|
|
53772
53796
|
);
|
|
53773
53797
|
}, []);
|
|
53774
|
-
const streamMessage =
|
|
53798
|
+
const streamMessage = useCallback52(
|
|
53775
53799
|
async function* (message2, extra) {
|
|
53776
53800
|
setIsStreaming(true);
|
|
53777
53801
|
setError(null);
|
|
@@ -53801,13 +53825,13 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
|
53801
53825
|
},
|
|
53802
53826
|
[streamFn, fallbackStream]
|
|
53803
53827
|
);
|
|
53804
|
-
const abort =
|
|
53828
|
+
const abort = useCallback52(() => {
|
|
53805
53829
|
if (abortControllerRef.current) {
|
|
53806
53830
|
abortControllerRef.current.abort();
|
|
53807
53831
|
}
|
|
53808
53832
|
setIsStreaming(false);
|
|
53809
53833
|
}, []);
|
|
53810
|
-
const reset =
|
|
53834
|
+
const reset = useCallback52(() => {
|
|
53811
53835
|
}, []);
|
|
53812
53836
|
return {
|
|
53813
53837
|
streamMessage,
|
|
@@ -53850,10 +53874,10 @@ function useChat({
|
|
|
53850
53874
|
debugMode,
|
|
53851
53875
|
streamFn
|
|
53852
53876
|
});
|
|
53853
|
-
const addMessage =
|
|
53877
|
+
const addMessage = useCallback53((message2) => {
|
|
53854
53878
|
setMessages((prev) => [...prev, message2]);
|
|
53855
53879
|
}, []);
|
|
53856
|
-
const updateLastAssistantMessage =
|
|
53880
|
+
const updateLastAssistantMessage = useCallback53((segments) => {
|
|
53857
53881
|
setMessages((prev) => {
|
|
53858
53882
|
const newMessages = [...prev];
|
|
53859
53883
|
const lastMessage = newMessages[newMessages.length - 1];
|
|
@@ -53866,7 +53890,7 @@ function useChat({
|
|
|
53866
53890
|
return newMessages;
|
|
53867
53891
|
});
|
|
53868
53892
|
}, []);
|
|
53869
|
-
const sendMessage =
|
|
53893
|
+
const sendMessage = useCallback53(
|
|
53870
53894
|
async (text, extra, options) => {
|
|
53871
53895
|
const userMessage = {
|
|
53872
53896
|
id: `user-${Date.now()}`,
|
|
@@ -54096,21 +54120,21 @@ function useChat({
|
|
|
54096
54120
|
},
|
|
54097
54121
|
[streamMessage, addMessage, updateLastAssistantMessage, assistantName, assistantAvatar]
|
|
54098
54122
|
);
|
|
54099
|
-
const handleQuickAction =
|
|
54123
|
+
const handleQuickAction = useCallback53(
|
|
54100
54124
|
(actionText) => {
|
|
54101
54125
|
sendMessage(actionText);
|
|
54102
54126
|
},
|
|
54103
54127
|
[sendMessage]
|
|
54104
54128
|
);
|
|
54105
|
-
const clearMessages =
|
|
54129
|
+
const clearMessages = useCallback53(() => {
|
|
54106
54130
|
setMessages([]);
|
|
54107
54131
|
setIsTyping(false);
|
|
54108
54132
|
reset();
|
|
54109
54133
|
}, [reset]);
|
|
54110
|
-
const hydrateMessages =
|
|
54134
|
+
const hydrateMessages = useCallback53((history) => {
|
|
54111
54135
|
setMessages((prev) => prev.length === 0 ? history : [...history, ...prev]);
|
|
54112
54136
|
}, []);
|
|
54113
|
-
const stopMessage =
|
|
54137
|
+
const stopMessage = useCallback53(() => {
|
|
54114
54138
|
abort();
|
|
54115
54139
|
setIsTyping(false);
|
|
54116
54140
|
}, [abort]);
|
|
@@ -54129,7 +54153,7 @@ function useChat({
|
|
|
54129
54153
|
}
|
|
54130
54154
|
|
|
54131
54155
|
// src/components/chat/hooks/use-sse-chat-adapter.ts
|
|
54132
|
-
import { useCallback as
|
|
54156
|
+
import { useCallback as useCallback55, useMemo as useMemo52, useRef as useRef78 } from "react";
|
|
54133
54157
|
|
|
54134
54158
|
// src/chat-protocol/frames.ts
|
|
54135
54159
|
var FRAME_TERMINATOR = "\0";
|
|
@@ -56383,7 +56407,7 @@ function createChatDialogStore(options = {}) {
|
|
|
56383
56407
|
}
|
|
56384
56408
|
|
|
56385
56409
|
// src/components/chat/stream/use-chat-stream-reducer.ts
|
|
56386
|
-
import { useCallback as
|
|
56410
|
+
import { useCallback as useCallback54, useEffect as useEffect92, useMemo as useMemo51, useRef as useRef77, useSyncExternalStore } from "react";
|
|
56387
56411
|
|
|
56388
56412
|
// src/components/chat/stream/delta-batcher.ts
|
|
56389
56413
|
var DELTA_FLUSH_FALLBACK_MS = 50;
|
|
@@ -56475,9 +56499,9 @@ function useChatStreamReducer({
|
|
|
56475
56499
|
const optionsRef = useRef77(createReducerOptions);
|
|
56476
56500
|
optionsRef.current = createReducerOptions;
|
|
56477
56501
|
const reducer2 = store.getReducer(dialogId, side, () => optionsRef.current?.() ?? {});
|
|
56478
|
-
const getSnapshot =
|
|
56479
|
-
const getServerSnapshot =
|
|
56480
|
-
const subscribe =
|
|
56502
|
+
const getSnapshot = useCallback54(() => store.getSnapshot(dialogId, side), [store, dialogId, side]);
|
|
56503
|
+
const getServerSnapshot = useCallback54(() => store.getServerSnapshot(), [store]);
|
|
56504
|
+
const subscribe = useCallback54((listener) => store.subscribe(listener), [store]);
|
|
56481
56505
|
const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
56482
56506
|
useEffect92(() => store.retain(dialogId, side), [store, dialogId, side]);
|
|
56483
56507
|
const keyRef = useRef77({ dialogId, side });
|
|
@@ -56495,8 +56519,8 @@ function useChatStreamReducer({
|
|
|
56495
56519
|
});
|
|
56496
56520
|
}
|
|
56497
56521
|
const batcher = batcherRef.current;
|
|
56498
|
-
const flushDeltas =
|
|
56499
|
-
const applyEvent =
|
|
56522
|
+
const flushDeltas = useCallback54(() => batcher.flush(), [batcher]);
|
|
56523
|
+
const applyEvent = useCallback54(
|
|
56500
56524
|
(event) => {
|
|
56501
56525
|
if (batcher.push(event, keyRef.current)) return;
|
|
56502
56526
|
batcher.flush();
|
|
@@ -56505,7 +56529,7 @@ function useChatStreamReducer({
|
|
|
56505
56529
|
[batcher, store, dialogId, side]
|
|
56506
56530
|
);
|
|
56507
56531
|
useEffect92(() => () => batcher.dispose(), [batcher]);
|
|
56508
|
-
const mutate =
|
|
56532
|
+
const mutate = useCallback54(
|
|
56509
56533
|
(fn) => store.mutate(dialogId, side, fn),
|
|
56510
56534
|
[store, dialogId, side]
|
|
56511
56535
|
);
|
|
@@ -56537,7 +56561,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56537
56561
|
const source = runtime.source || DEFAULT_CHAT_SOURCE;
|
|
56538
56562
|
const tableIdForDocumentType = options?.tableIdForDocumentType ?? defaultTableIdForDocumentType;
|
|
56539
56563
|
const sendMessageRef = useRef78(async () => true);
|
|
56540
|
-
const cardResolve =
|
|
56564
|
+
const cardResolve = useCallback55(
|
|
56541
56565
|
(action) => (reqId) => {
|
|
56542
56566
|
if (!reqId) return;
|
|
56543
56567
|
return sendMessageRef.current("", {
|
|
@@ -56549,7 +56573,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56549
56573
|
);
|
|
56550
56574
|
const cardApprove = useMemo52(() => cardResolve("approve"), [cardResolve]);
|
|
56551
56575
|
const cardReject = useMemo52(() => cardResolve("reject"), [cardResolve]);
|
|
56552
|
-
const createReducerOptions =
|
|
56576
|
+
const createReducerOptions = useCallback55(
|
|
56553
56577
|
() => ({
|
|
56554
56578
|
transport: "sse",
|
|
56555
56579
|
callbacks: { onApprove: cardApprove, onReject: cardReject }
|
|
@@ -56599,7 +56623,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56599
56623
|
const historyUrl = runtime.endpoints.chatHistoryUrl ?? `${runtime.endpoints.chatStreamUrl.replace(/\/+$/, "")}/history`;
|
|
56600
56624
|
const hydrationRefsMapRef = useRef78(/* @__PURE__ */ new Map());
|
|
56601
56625
|
const hydrationSendCountRef = useRef78(0);
|
|
56602
|
-
const hydrateMessages =
|
|
56626
|
+
const hydrateMessages = useCallback55(
|
|
56603
56627
|
(history) => {
|
|
56604
56628
|
mutate((r) => {
|
|
56605
56629
|
const mapped = history.map(historyMessageToReducerMessage);
|
|
@@ -56631,7 +56655,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56631
56655
|
});
|
|
56632
56656
|
const endpointsRef = useRef78(runtime.endpoints);
|
|
56633
56657
|
endpointsRef.current = runtime.endpoints;
|
|
56634
|
-
const captureConversationId =
|
|
56658
|
+
const captureConversationId = useCallback55(
|
|
56635
56659
|
(event) => {
|
|
56636
56660
|
if (event.type !== "metadata") return;
|
|
56637
56661
|
const id = event.conversationId;
|
|
@@ -56642,7 +56666,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56642
56666
|
},
|
|
56643
56667
|
[conversationStorage]
|
|
56644
56668
|
);
|
|
56645
|
-
const sendMessage =
|
|
56669
|
+
const sendMessage = useCallback55(
|
|
56646
56670
|
// Resolves `true` on a clean turn, `false` when the request failed
|
|
56647
56671
|
// (surfaced to batch approve-all loops via the card callbacks).
|
|
56648
56672
|
async (text, sendOptions) => {
|
|
@@ -56727,12 +56751,12 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56727
56751
|
[mutate, applyEvent, flushDeltas, captureConversationId]
|
|
56728
56752
|
);
|
|
56729
56753
|
sendMessageRef.current = sendMessage;
|
|
56730
|
-
const stopMessage =
|
|
56754
|
+
const stopMessage = useCallback55(() => {
|
|
56731
56755
|
abortControllerRef.current?.abort();
|
|
56732
56756
|
flushDeltas();
|
|
56733
56757
|
mutate((r) => r.setPhase("idle"));
|
|
56734
56758
|
}, [mutate, flushDeltas]);
|
|
56735
|
-
const clearMessages =
|
|
56759
|
+
const clearMessages = useCallback55(() => {
|
|
56736
56760
|
mutate((r) => r.reset());
|
|
56737
56761
|
conversationIdRef.current = null;
|
|
56738
56762
|
conversationStorage.clear();
|
|
@@ -56770,7 +56794,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56770
56794
|
};
|
|
56771
56795
|
});
|
|
56772
56796
|
}, [state.messages, state.turnMeta]);
|
|
56773
|
-
const displayRef =
|
|
56797
|
+
const displayRef = useCallback55(
|
|
56774
56798
|
(reference) => {
|
|
56775
56799
|
const tableId = tableIdForDocumentType(reference.type);
|
|
56776
56800
|
if (!tableId) {
|
|
@@ -56794,7 +56818,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56794
56818
|
},
|
|
56795
56819
|
[sendMessage, source, cmdIdByTableId, tableIdForDocumentType]
|
|
56796
56820
|
);
|
|
56797
|
-
const discussRef =
|
|
56821
|
+
const discussRef = useCallback55(
|
|
56798
56822
|
(reference) => {
|
|
56799
56823
|
const tableId = tableIdForDocumentType(reference.type);
|
|
56800
56824
|
if (!tableId) {
|
|
@@ -56896,7 +56920,7 @@ var noopBumpMetaTick = () => {
|
|
|
56896
56920
|
};
|
|
56897
56921
|
|
|
56898
56922
|
// src/components/chat/hooks/use-nats-chat-adapter.ts
|
|
56899
|
-
import { useCallback as
|
|
56923
|
+
import { useCallback as useCallback56, useEffect as useEffect93, useMemo as useMemo53, useRef as useRef79, useState as useState123 } from "react";
|
|
56900
56924
|
|
|
56901
56925
|
// src/chat-protocol/nats-decoder.ts
|
|
56902
56926
|
function normalizeToolCalls(raw) {
|
|
@@ -57696,11 +57720,11 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57696
57720
|
async () => {
|
|
57697
57721
|
}
|
|
57698
57722
|
);
|
|
57699
|
-
const accumApprove =
|
|
57723
|
+
const accumApprove = useCallback56((requestId) => {
|
|
57700
57724
|
if (!requestId) return;
|
|
57701
57725
|
return handleApproveRef.current(requestId);
|
|
57702
57726
|
}, []);
|
|
57703
|
-
const accumReject =
|
|
57727
|
+
const accumReject = useCallback56((requestId) => {
|
|
57704
57728
|
if (!requestId) return;
|
|
57705
57729
|
return handleRejectRef.current(requestId);
|
|
57706
57730
|
}, []);
|
|
@@ -57754,7 +57778,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57754
57778
|
console.error("[useNatsChatAdapter] rejectRequest failed:", err);
|
|
57755
57779
|
}
|
|
57756
57780
|
};
|
|
57757
|
-
const processChunk =
|
|
57781
|
+
const processChunk = useCallback56(
|
|
57758
57782
|
(chunk) => {
|
|
57759
57783
|
const event = decodeNatsChunk(chunk);
|
|
57760
57784
|
if (event) applyEvent(event);
|
|
@@ -57783,7 +57807,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57783
57807
|
fetchChunks
|
|
57784
57808
|
});
|
|
57785
57809
|
const historyLoadSeqRef = useRef79(0);
|
|
57786
|
-
const loadDialogHistory =
|
|
57810
|
+
const loadDialogHistory = useCallback56(
|
|
57787
57811
|
async (id, cursor) => {
|
|
57788
57812
|
if (!fetchDialogMessages) return;
|
|
57789
57813
|
historyLoadSeqRef.current += 1;
|
|
@@ -57930,7 +57954,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57930
57954
|
setConnectionState("connecting");
|
|
57931
57955
|
}, [active, dialogId]);
|
|
57932
57956
|
const initialDialogsLoadedRef = useRef79(false);
|
|
57933
|
-
const loadDialogsPage =
|
|
57957
|
+
const loadDialogsPage = useCallback56(
|
|
57934
57958
|
async (cursor) => {
|
|
57935
57959
|
if (!fetchDialogs) return;
|
|
57936
57960
|
setIsDialogsLoading(true);
|
|
@@ -57958,7 +57982,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57958
57982
|
},
|
|
57959
57983
|
[fetchDialogs, dialogsPageSize]
|
|
57960
57984
|
);
|
|
57961
|
-
const reloadDialogs =
|
|
57985
|
+
const reloadDialogs = useCallback56(() => {
|
|
57962
57986
|
void loadDialogsPage();
|
|
57963
57987
|
}, [loadDialogsPage]);
|
|
57964
57988
|
useEffect93(() => {
|
|
@@ -57968,7 +57992,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57968
57992
|
initialDialogsLoadedRef.current = true;
|
|
57969
57993
|
void loadDialogsPage();
|
|
57970
57994
|
}, [active, fetchDialogs, loadDialogsPage]);
|
|
57971
|
-
const sendMessage =
|
|
57995
|
+
const sendMessage = useCallback56(
|
|
57972
57996
|
async (text, sendOptions) => {
|
|
57973
57997
|
const hidden = sendOptions?.hidden ?? false;
|
|
57974
57998
|
mutate((r) => r.pushOptimisticSend(text, hidden));
|
|
@@ -57976,7 +58000,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57976
58000
|
},
|
|
57977
58001
|
[mutate, publishUserMessage, dialogId]
|
|
57978
58002
|
);
|
|
57979
|
-
const stopMessage =
|
|
58003
|
+
const stopMessage = useCallback56(() => {
|
|
57980
58004
|
mutate((r) => r.setPhase("idle"));
|
|
57981
58005
|
if (stopGenerationCallback && dialogId) {
|
|
57982
58006
|
void stopGenerationCallback(dialogId).catch((err) => {
|
|
@@ -57984,10 +58008,10 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57984
58008
|
});
|
|
57985
58009
|
}
|
|
57986
58010
|
}, [mutate, stopGenerationCallback, dialogId]);
|
|
57987
|
-
const clearMessages =
|
|
58011
|
+
const clearMessages = useCallback56(() => {
|
|
57988
58012
|
mutate((r) => r.clearThread());
|
|
57989
58013
|
}, [mutate]);
|
|
57990
|
-
const selectDialog =
|
|
58014
|
+
const selectDialog = useCallback56(
|
|
57991
58015
|
(id) => {
|
|
57992
58016
|
if (!isManagedMode) {
|
|
57993
58017
|
return;
|
|
@@ -57996,7 +58020,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57996
58020
|
},
|
|
57997
58021
|
[isManagedMode]
|
|
57998
58022
|
);
|
|
57999
|
-
const startNewDialog =
|
|
58023
|
+
const startNewDialog = useCallback56(async () => {
|
|
58000
58024
|
if (!createDialogCallback) return null;
|
|
58001
58025
|
if (isCreatingDialog) return null;
|
|
58002
58026
|
try {
|
|
@@ -58021,7 +58045,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58021
58045
|
setIsCreatingDialog(false);
|
|
58022
58046
|
}
|
|
58023
58047
|
}, [createDialogCallback, isCreatingDialog, isManagedMode]);
|
|
58024
|
-
const deleteDialog =
|
|
58048
|
+
const deleteDialog = useCallback56(
|
|
58025
58049
|
async (id) => {
|
|
58026
58050
|
if (!deleteDialogCallback) return;
|
|
58027
58051
|
try {
|
|
@@ -58037,7 +58061,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58037
58061
|
},
|
|
58038
58062
|
[deleteDialogCallback, internalDialogId, isManagedMode]
|
|
58039
58063
|
);
|
|
58040
|
-
const renameDialog =
|
|
58064
|
+
const renameDialog = useCallback56(
|
|
58041
58065
|
async (id, title) => {
|
|
58042
58066
|
if (!renameDialogCallback) return;
|
|
58043
58067
|
let previous;
|
|
@@ -58061,7 +58085,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58061
58085
|
},
|
|
58062
58086
|
[renameDialogCallback]
|
|
58063
58087
|
);
|
|
58064
|
-
const archiveDialog =
|
|
58088
|
+
const archiveDialog = useCallback56(
|
|
58065
58089
|
async (id) => {
|
|
58066
58090
|
if (!archiveDialogCallback) return;
|
|
58067
58091
|
try {
|
|
@@ -58076,27 +58100,27 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58076
58100
|
},
|
|
58077
58101
|
[archiveDialogCallback, internalDialogId, isManagedMode]
|
|
58078
58102
|
);
|
|
58079
|
-
const loadMoreDialogs =
|
|
58103
|
+
const loadMoreDialogs = useCallback56(async () => {
|
|
58080
58104
|
if (!dialogsNextCursor) return;
|
|
58081
58105
|
await loadDialogsPage(dialogsNextCursor);
|
|
58082
58106
|
}, [dialogsNextCursor, loadDialogsPage]);
|
|
58083
|
-
const loadMoreMessages =
|
|
58107
|
+
const loadMoreMessages = useCallback56(async () => {
|
|
58084
58108
|
if (!dialogId || !messagesNextCursor) return;
|
|
58085
58109
|
await loadDialogHistory(dialogId, messagesNextCursor);
|
|
58086
58110
|
}, [dialogId, messagesNextCursor, loadDialogHistory]);
|
|
58087
|
-
const approveRequest =
|
|
58111
|
+
const approveRequest = useCallback56(
|
|
58088
58112
|
async (requestId) => {
|
|
58089
58113
|
await handleApproveRef.current(requestId);
|
|
58090
58114
|
},
|
|
58091
58115
|
[]
|
|
58092
58116
|
);
|
|
58093
|
-
const rejectRequest =
|
|
58117
|
+
const rejectRequest = useCallback56(
|
|
58094
58118
|
async (requestId, reason) => {
|
|
58095
58119
|
await handleRejectRef.current(requestId, reason);
|
|
58096
58120
|
},
|
|
58097
58121
|
[]
|
|
58098
58122
|
);
|
|
58099
|
-
const discussRef =
|
|
58123
|
+
const discussRef = useCallback56(
|
|
58100
58124
|
(reference) => {
|
|
58101
58125
|
const prompt = buildDiscussPrompt(reference, { includeReference: true });
|
|
58102
58126
|
void sendMessage(prompt).catch((err) => {
|
|
@@ -58105,7 +58129,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58105
58129
|
},
|
|
58106
58130
|
[sendMessage]
|
|
58107
58131
|
);
|
|
58108
|
-
const displayRef =
|
|
58132
|
+
const displayRef = useCallback56((_ref) => {
|
|
58109
58133
|
}, []);
|
|
58110
58134
|
const { messages, streamingPhase, dialogTokenUsage = null, liveModel = null } = state;
|
|
58111
58135
|
const isLoading = streamingPhase !== "idle";
|
|
@@ -58194,7 +58218,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
58194
58218
|
}
|
|
58195
58219
|
|
|
58196
58220
|
// src/components/chat/hooks/use-unified-chat.ts
|
|
58197
|
-
import { useCallback as
|
|
58221
|
+
import { useCallback as useCallback57, useMemo as useMemo54, useRef as useRef80 } from "react";
|
|
58198
58222
|
var EMPTY_SSE_OPTIONS = {};
|
|
58199
58223
|
function createDisabledNatsConfig() {
|
|
58200
58224
|
return {
|
|
@@ -58225,64 +58249,64 @@ function useUnifiedChat(options) {
|
|
|
58225
58249
|
const activeState = activeMode === "guide" ? sseState : mingoStateOverride ?? natsState;
|
|
58226
58250
|
const activeStateRef = useRef80(activeState);
|
|
58227
58251
|
activeStateRef.current = activeState;
|
|
58228
|
-
const stopMessage =
|
|
58229
|
-
const clearMessages =
|
|
58252
|
+
const stopMessage = useCallback57(() => activeStateRef.current.stopMessage(), []);
|
|
58253
|
+
const clearMessages = useCallback57(
|
|
58230
58254
|
() => activeStateRef.current.clearMessages(),
|
|
58231
58255
|
[]
|
|
58232
58256
|
);
|
|
58233
|
-
const sendMessage =
|
|
58257
|
+
const sendMessage = useCallback57(
|
|
58234
58258
|
(text, opts) => activeStateRef.current.sendMessage(text, opts),
|
|
58235
58259
|
[]
|
|
58236
58260
|
);
|
|
58237
|
-
const discussRef =
|
|
58261
|
+
const discussRef = useCallback57(
|
|
58238
58262
|
(ref) => activeStateRef.current.discussRef(ref),
|
|
58239
58263
|
[]
|
|
58240
58264
|
);
|
|
58241
|
-
const displayRef =
|
|
58265
|
+
const displayRef = useCallback57(
|
|
58242
58266
|
(ref) => activeStateRef.current.displayRef(ref),
|
|
58243
58267
|
[]
|
|
58244
58268
|
);
|
|
58245
|
-
const selectDialog =
|
|
58269
|
+
const selectDialog = useCallback57(
|
|
58246
58270
|
(id) => activeStateRef.current.selectDialog(id),
|
|
58247
58271
|
[]
|
|
58248
58272
|
);
|
|
58249
|
-
const startNewDialog =
|
|
58273
|
+
const startNewDialog = useCallback57(
|
|
58250
58274
|
() => activeStateRef.current.startNewDialog(),
|
|
58251
58275
|
[]
|
|
58252
58276
|
);
|
|
58253
|
-
const deleteDialog =
|
|
58277
|
+
const deleteDialog = useCallback57(
|
|
58254
58278
|
(id) => activeStateRef.current.deleteDialog(id),
|
|
58255
58279
|
[]
|
|
58256
58280
|
);
|
|
58257
|
-
const renameDialog =
|
|
58281
|
+
const renameDialog = useCallback57(
|
|
58258
58282
|
(id, title) => activeStateRef.current.renameDialog(id, title),
|
|
58259
58283
|
[]
|
|
58260
58284
|
);
|
|
58261
|
-
const archiveDialog =
|
|
58285
|
+
const archiveDialog = useCallback57(
|
|
58262
58286
|
(id) => activeStateRef.current.archiveDialog(id),
|
|
58263
58287
|
[]
|
|
58264
58288
|
);
|
|
58265
|
-
const loadMoreDialogs =
|
|
58289
|
+
const loadMoreDialogs = useCallback57(
|
|
58266
58290
|
() => activeStateRef.current.loadMoreDialogs(),
|
|
58267
58291
|
[]
|
|
58268
58292
|
);
|
|
58269
|
-
const setDialogScope =
|
|
58293
|
+
const setDialogScope = useCallback57(
|
|
58270
58294
|
(scope) => activeStateRef.current.setDialogScope?.(scope),
|
|
58271
58295
|
[]
|
|
58272
58296
|
);
|
|
58273
|
-
const reloadDialogs =
|
|
58297
|
+
const reloadDialogs = useCallback57(
|
|
58274
58298
|
() => activeStateRef.current.reloadDialogs(),
|
|
58275
58299
|
[]
|
|
58276
58300
|
);
|
|
58277
|
-
const loadMoreMessages =
|
|
58301
|
+
const loadMoreMessages = useCallback57(
|
|
58278
58302
|
() => activeStateRef.current.loadMoreMessages(),
|
|
58279
58303
|
[]
|
|
58280
58304
|
);
|
|
58281
|
-
const approveRequest =
|
|
58305
|
+
const approveRequest = useCallback57(
|
|
58282
58306
|
(requestId) => activeStateRef.current.approveRequest(requestId),
|
|
58283
58307
|
[]
|
|
58284
58308
|
);
|
|
58285
|
-
const rejectRequest =
|
|
58309
|
+
const rejectRequest = useCallback57(
|
|
58286
58310
|
(requestId, reason) => activeStateRef.current.rejectRequest(requestId, reason),
|
|
58287
58311
|
[]
|
|
58288
58312
|
);
|
|
@@ -58622,7 +58646,7 @@ function buildStreamFrames(messages) {
|
|
|
58622
58646
|
|
|
58623
58647
|
// src/components/chat/embeddable-chat.tsx
|
|
58624
58648
|
init_cn();
|
|
58625
|
-
import { useCallback as
|
|
58649
|
+
import { useCallback as useCallback59, useEffect as useEffect94, useMemo as useMemo56, useRef as useRef82, useState as useState125 } from "react";
|
|
58626
58650
|
import * as DialogPrimitive5 from "@radix-ui/react-dialog";
|
|
58627
58651
|
import { usePreventScroll as usePreventScroll6 } from "@react-aria/overlays";
|
|
58628
58652
|
import { isIOS } from "@react-aria/utils";
|
|
@@ -58709,7 +58733,7 @@ init_button2();
|
|
|
58709
58733
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
58710
58734
|
|
|
58711
58735
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
58712
|
-
import { useCallback as
|
|
58736
|
+
import { useCallback as useCallback58, useMemo as useMemo55, useRef as useRef81, useState as useState124 } from "react";
|
|
58713
58737
|
function useChatDialogManager({
|
|
58714
58738
|
dialogs,
|
|
58715
58739
|
activeDialogId,
|
|
@@ -58722,14 +58746,14 @@ function useChatDialogManager({
|
|
|
58722
58746
|
}) {
|
|
58723
58747
|
const [renameTarget, setRenameTarget] = useState124(null);
|
|
58724
58748
|
const [archiveTarget, setArchiveTarget] = useState124(null);
|
|
58725
|
-
const handleConfirmRename =
|
|
58749
|
+
const handleConfirmRename = useCallback58(
|
|
58726
58750
|
(name) => {
|
|
58727
58751
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
58728
58752
|
setRenameTarget(null);
|
|
58729
58753
|
},
|
|
58730
58754
|
[renameTarget, renameDialog]
|
|
58731
58755
|
);
|
|
58732
|
-
const handleConfirmArchive =
|
|
58756
|
+
const handleConfirmArchive = useCallback58(async () => {
|
|
58733
58757
|
if (archiveTarget) {
|
|
58734
58758
|
try {
|
|
58735
58759
|
await archiveDialog(archiveTarget.id);
|
|
@@ -58750,7 +58774,7 @@ function useChatDialogManager({
|
|
|
58750
58774
|
const [archivedLoading, setArchivedLoading] = useState124(false);
|
|
58751
58775
|
const [archivedPending, setArchivedPending] = useState124(false);
|
|
58752
58776
|
const archivedRequestIdRef = useRef81(0);
|
|
58753
|
-
const loadArchivedPage =
|
|
58777
|
+
const loadArchivedPage = useCallback58(
|
|
58754
58778
|
async (cursor) => {
|
|
58755
58779
|
if (!fetchArchivedDialogs) return;
|
|
58756
58780
|
const requestId = ++archivedRequestIdRef.current;
|
|
@@ -58785,16 +58809,16 @@ function useChatDialogManager({
|
|
|
58785
58809
|
},
|
|
58786
58810
|
[fetchArchivedDialogs]
|
|
58787
58811
|
);
|
|
58788
|
-
const openArchive =
|
|
58812
|
+
const openArchive = useCallback58(() => {
|
|
58789
58813
|
setArchiveOpen(true);
|
|
58790
58814
|
void loadArchivedPage();
|
|
58791
58815
|
}, [loadArchivedPage]);
|
|
58792
|
-
const closeArchive =
|
|
58816
|
+
const closeArchive = useCallback58(() => setArchiveOpen(false), []);
|
|
58793
58817
|
const [viewingArchivedId, setViewingArchivedId] = useState124(
|
|
58794
58818
|
null
|
|
58795
58819
|
);
|
|
58796
58820
|
const [openingDialogId, setOpeningDialogId] = useState124(null);
|
|
58797
|
-
const handleSelectDialog =
|
|
58821
|
+
const handleSelectDialog = useCallback58(
|
|
58798
58822
|
(id) => {
|
|
58799
58823
|
setViewingArchivedId(null);
|
|
58800
58824
|
setOpeningDialogId(id);
|
|
@@ -58803,7 +58827,7 @@ function useChatDialogManager({
|
|
|
58803
58827
|
[selectDialog]
|
|
58804
58828
|
);
|
|
58805
58829
|
const isOpeningDialog = openingDialogId != null && openingDialogId === activeDialogId;
|
|
58806
|
-
const handleArchivedSelect =
|
|
58830
|
+
const handleArchivedSelect = useCallback58(
|
|
58807
58831
|
(id) => {
|
|
58808
58832
|
setArchiveOpen(false);
|
|
58809
58833
|
setOpeningDialogId(null);
|
|
@@ -58813,7 +58837,7 @@ function useChatDialogManager({
|
|
|
58813
58837
|
[selectDialog]
|
|
58814
58838
|
);
|
|
58815
58839
|
const [restoreTarget, setRestoreTarget] = useState124(null);
|
|
58816
|
-
const handleConfirmRestore =
|
|
58840
|
+
const handleConfirmRestore = useCallback58(async () => {
|
|
58817
58841
|
if (restoreTarget) {
|
|
58818
58842
|
try {
|
|
58819
58843
|
await unarchiveDialog?.(restoreTarget.id);
|
|
@@ -58827,7 +58851,7 @@ function useChatDialogManager({
|
|
|
58827
58851
|
setRestoreTarget(null);
|
|
58828
58852
|
}, [restoreTarget, unarchiveDialog]);
|
|
58829
58853
|
const isViewingArchived = viewingArchivedId != null && viewingArchivedId === activeDialogId;
|
|
58830
|
-
const handleBack =
|
|
58854
|
+
const handleBack = useCallback58(() => {
|
|
58831
58855
|
const wasArchived = isViewingArchived;
|
|
58832
58856
|
setViewingArchivedId(null);
|
|
58833
58857
|
setOpeningDialogId(null);
|
|
@@ -58835,7 +58859,7 @@ function useChatDialogManager({
|
|
|
58835
58859
|
clearMessages();
|
|
58836
58860
|
if (wasArchived) setArchiveOpen(true);
|
|
58837
58861
|
}, [isViewingArchived, selectDialog, clearMessages]);
|
|
58838
|
-
const resetToNewChat =
|
|
58862
|
+
const resetToNewChat = useCallback58(() => {
|
|
58839
58863
|
setViewingArchivedId(null);
|
|
58840
58864
|
setOpeningDialogId(null);
|
|
58841
58865
|
selectDialog(null);
|
|
@@ -59327,7 +59351,7 @@ function EmbeddableChatInner({
|
|
|
59327
59351
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
59328
59352
|
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState125(initialActiveMode);
|
|
59329
59353
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
59330
|
-
const handleActiveModeChange =
|
|
59354
|
+
const handleActiveModeChange = useCallback59(
|
|
59331
59355
|
(next) => {
|
|
59332
59356
|
if (controlledActiveMode === void 0) {
|
|
59333
59357
|
setUncontrolledActiveMode(next);
|
|
@@ -59433,7 +59457,7 @@ function EmbeddableChatInner({
|
|
|
59433
59457
|
for (const t of contextEntityTypes ?? []) byType.set(t.type, t.icon);
|
|
59434
59458
|
return (item) => byType.get(item.type);
|
|
59435
59459
|
}, [contextEntityTypes]);
|
|
59436
|
-
const toggleContextItem =
|
|
59460
|
+
const toggleContextItem = useCallback59(
|
|
59437
59461
|
(item) => {
|
|
59438
59462
|
const key = `${item.type}:${item.id}`;
|
|
59439
59463
|
if (mentionActiveRef.current) {
|
|
@@ -59456,7 +59480,7 @@ function EmbeddableChatInner({
|
|
|
59456
59480
|
},
|
|
59457
59481
|
[contextMaxItems, contextItems, mentionMarkerByType, resolveContextIcon]
|
|
59458
59482
|
);
|
|
59459
|
-
const removeContextItem =
|
|
59483
|
+
const removeContextItem = useCallback59((item) => {
|
|
59460
59484
|
const key = `${item.type}:${item.id}`;
|
|
59461
59485
|
setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
|
|
59462
59486
|
if (mentionKeysRef.current.has(key)) {
|
|
@@ -59466,7 +59490,7 @@ function EmbeddableChatInner({
|
|
|
59466
59490
|
chatInputRef.current?.setValue(next);
|
|
59467
59491
|
}
|
|
59468
59492
|
}, [mentionMarkerByType]);
|
|
59469
|
-
const handleContextValueChange =
|
|
59493
|
+
const handleContextValueChange = useCallback59((value) => {
|
|
59470
59494
|
for (const key of Array.from(mentionKeysRef.current)) {
|
|
59471
59495
|
if (!value.includes(`@${mentionTokenOf(key, mentionMarkerByType)}`)) {
|
|
59472
59496
|
mentionKeysRef.current.delete(key);
|
|
@@ -59474,24 +59498,24 @@ function EmbeddableChatInner({
|
|
|
59474
59498
|
}
|
|
59475
59499
|
}
|
|
59476
59500
|
}, [mentionMarkerByType]);
|
|
59477
|
-
const openContextPicker =
|
|
59501
|
+
const openContextPicker = useCallback59(() => {
|
|
59478
59502
|
setMentionQuery(null);
|
|
59479
59503
|
setContextPickerOpen(true);
|
|
59480
59504
|
}, []);
|
|
59481
|
-
const closeContextPicker =
|
|
59505
|
+
const closeContextPicker = useCallback59(() => {
|
|
59482
59506
|
if (mentionActiveRef.current) {
|
|
59483
59507
|
chatInputRef.current?.removeMentionTrigger();
|
|
59484
59508
|
}
|
|
59485
59509
|
setContextPickerOpen(false);
|
|
59486
59510
|
setMentionQuery(null);
|
|
59487
59511
|
}, []);
|
|
59488
|
-
const handleMentionQueryChange =
|
|
59512
|
+
const handleMentionQueryChange = useCallback59((query) => {
|
|
59489
59513
|
setMentionQuery(query);
|
|
59490
59514
|
setContextPickerOpen(query !== null);
|
|
59491
59515
|
}, []);
|
|
59492
59516
|
const resolvedBaseRoute = baseRoute || (source === "flamingo" ? "/knowledge-base" : "/data-room");
|
|
59493
|
-
const handleClose =
|
|
59494
|
-
const handleNavigationClose =
|
|
59517
|
+
const handleClose = useCallback59(() => setIsOpen(false), [setIsOpen]);
|
|
59518
|
+
const handleNavigationClose = useCallback59(() => {
|
|
59495
59519
|
navigatingAwayRef.current = true;
|
|
59496
59520
|
setIsOpen(false);
|
|
59497
59521
|
}, [setIsOpen]);
|
|
@@ -59499,7 +59523,7 @@ function EmbeddableChatInner({
|
|
|
59499
59523
|
() => ({ closeChat: handleNavigationClose }),
|
|
59500
59524
|
[handleNavigationClose]
|
|
59501
59525
|
);
|
|
59502
|
-
const renderEntityCard =
|
|
59526
|
+
const renderEntityCard = useCallback59(
|
|
59503
59527
|
(reference) => renderChatInlineEntityCard(reference, {
|
|
59504
59528
|
onDiscuss: discussRef,
|
|
59505
59529
|
onDisplay: displayRef,
|
|
@@ -59562,7 +59586,7 @@ function EmbeddableChatInner({
|
|
|
59562
59586
|
}
|
|
59563
59587
|
return mapped;
|
|
59564
59588
|
}, [rawMessages, guideUserName, guideUserAvatar]);
|
|
59565
|
-
const handleSend =
|
|
59589
|
+
const handleSend = useCallback59(
|
|
59566
59590
|
(text) => {
|
|
59567
59591
|
let augmentedText = text;
|
|
59568
59592
|
if (readyAttachments.length > 0) {
|
|
@@ -59582,7 +59606,7 @@ function EmbeddableChatInner({
|
|
|
59582
59606
|
},
|
|
59583
59607
|
[sendMessage, readyAttachments, viewUrlPrefix, clearAttachments, contextItems]
|
|
59584
59608
|
);
|
|
59585
|
-
const handleAskSelect =
|
|
59609
|
+
const handleAskSelect = useCallback59(
|
|
59586
59610
|
(label) => {
|
|
59587
59611
|
sendMessage(label);
|
|
59588
59612
|
},
|
|
@@ -59650,7 +59674,7 @@ function EmbeddableChatInner({
|
|
|
59650
59674
|
fetchArchivedDialogs: mingoCaps.fetchArchivedDialogs,
|
|
59651
59675
|
unarchiveDialog: mingoCaps.unarchiveDialog
|
|
59652
59676
|
});
|
|
59653
|
-
const handleOpen =
|
|
59677
|
+
const handleOpen = useCallback59(() => setIsOpen(true), [setIsOpen]);
|
|
59654
59678
|
useCloseOnNavigation(handleNavigationClose, null);
|
|
59655
59679
|
useEffect94(() => {
|
|
59656
59680
|
const handler = (e) => {
|
|
@@ -59736,7 +59760,7 @@ function EmbeddableChatInner({
|
|
|
59736
59760
|
setPanelWidth(el.clientWidth);
|
|
59737
59761
|
return () => ro.disconnect();
|
|
59738
59762
|
}, []);
|
|
59739
|
-
const setPanelNode =
|
|
59763
|
+
const setPanelNode = useCallback59((node) => {
|
|
59740
59764
|
panelMeasureRef.current = node;
|
|
59741
59765
|
setPanelBoundary(node);
|
|
59742
59766
|
}, []);
|
|
@@ -59748,7 +59772,7 @@ function EmbeddableChatInner({
|
|
|
59748
59772
|
} catch {
|
|
59749
59773
|
}
|
|
59750
59774
|
}, []);
|
|
59751
|
-
const toggleRailCollapsed =
|
|
59775
|
+
const toggleRailCollapsed = useCallback59(() => {
|
|
59752
59776
|
setRailCollapsed((prev) => {
|
|
59753
59777
|
const next = !prev;
|
|
59754
59778
|
try {
|
|
@@ -59783,7 +59807,7 @@ function EmbeddableChatInner({
|
|
|
59783
59807
|
const headerPersonName = headerOwner?.name?.trim() || headerUserName;
|
|
59784
59808
|
const headerPersonAvatarUrl = headerOwner ? headerOwner.avatarUrl?.trim() || void 0 : identityUser?.avatarUrl?.trim() || userAvatarUrl?.trim() || void 0;
|
|
59785
59809
|
const headerAvatar = headerPersonName || headerPersonAvatarUrl ? { name: headerPersonName, avatarUrl: headerPersonAvatarUrl } : void 0;
|
|
59786
|
-
const handleNewChat =
|
|
59810
|
+
const handleNewChat = useCallback59(() => {
|
|
59787
59811
|
resetToNewChat();
|
|
59788
59812
|
}, [resetToNewChat]);
|
|
59789
59813
|
const splitHeaderMenuItems = [
|
|
@@ -60892,6 +60916,7 @@ export {
|
|
|
60892
60916
|
NETWORK_CONFIG,
|
|
60893
60917
|
useChunkCatchup,
|
|
60894
60918
|
useScriptedStream,
|
|
60919
|
+
RESYNC_AFTER_HIDDEN_MS,
|
|
60895
60920
|
useJetStreamDialogSubscription,
|
|
60896
60921
|
useNatsDialogSubscription,
|
|
60897
60922
|
buildNatsWsUrl,
|
|
@@ -61401,4 +61426,4 @@ export {
|
|
|
61401
61426
|
LogsList,
|
|
61402
61427
|
assets
|
|
61403
61428
|
};
|
|
61404
|
-
//# sourceMappingURL=chunk-
|
|
61429
|
+
//# sourceMappingURL=chunk-YJLQQGLH.js.map
|