@flamingo-stack/openframe-frontend-core 0.0.517 → 0.0.518-1663.4312.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-WOGMH4XV.cjs → chunk-25JSVBPR.cjs} +7 -7
- package/dist/{chunk-WOGMH4XV.cjs.map → chunk-25JSVBPR.cjs.map} +1 -1
- package/dist/{chunk-NJADHL2G.cjs → chunk-3M2MFP2Y.cjs} +30 -2
- package/dist/chunk-3M2MFP2Y.cjs.map +1 -0
- package/dist/{chunk-R3J33R5R.cjs → chunk-BQXHC336.cjs} +3 -3
- package/dist/{chunk-R3J33R5R.cjs.map → chunk-BQXHC336.cjs.map} +1 -1
- package/dist/{chunk-JEZWQI7Q.cjs → chunk-CHMQCXYO.cjs} +40 -40
- package/dist/{chunk-JEZWQI7Q.cjs.map → chunk-CHMQCXYO.cjs.map} +1 -1
- package/dist/{chunk-5LLW2RW5.cjs → chunk-DN3GKQ47.cjs} +98 -98
- package/dist/{chunk-5LLW2RW5.cjs.map → chunk-DN3GKQ47.cjs.map} +1 -1
- package/dist/{chunk-UWOXZELG.cjs → chunk-GH5YZSQQ.cjs} +12 -12
- package/dist/{chunk-UWOXZELG.cjs.map → chunk-GH5YZSQQ.cjs.map} +1 -1
- package/dist/{chunk-XURRAFIB.js → chunk-GJAHN7LH.js} +404 -376
- package/dist/chunk-GJAHN7LH.js.map +1 -0
- package/dist/{chunk-FS3YSNSU.js → chunk-GS4HJA2G.js} +2 -2
- package/dist/{chunk-HIV2GIFP.cjs → chunk-GYONSC3U.cjs} +3 -3
- package/dist/{chunk-HIV2GIFP.cjs.map → chunk-GYONSC3U.cjs.map} +1 -1
- package/dist/{chunk-Q4MB6UPN.cjs → chunk-I6IWT62M.cjs} +5 -5
- package/dist/{chunk-Q4MB6UPN.cjs.map → chunk-I6IWT62M.cjs.map} +1 -1
- package/dist/{chunk-BF73V2AZ.js → chunk-KRBH3PI4.js} +5 -5
- package/dist/{chunk-H3M5QZ44.cjs → chunk-KW7GDLSG.cjs} +14 -14
- package/dist/{chunk-H3M5QZ44.cjs.map → chunk-KW7GDLSG.cjs.map} +1 -1
- package/dist/{chunk-EPIDZYPM.js → chunk-LL4C2NXG.js} +140 -110
- package/dist/{chunk-EPIDZYPM.js.map → chunk-LL4C2NXG.js.map} +1 -1
- package/dist/{chunk-BICXDTGO.cjs → chunk-LQ2R7IA2.cjs} +32 -32
- package/dist/{chunk-BICXDTGO.cjs.map → chunk-LQ2R7IA2.cjs.map} +1 -1
- package/dist/{chunk-TMGE3F3E.js → chunk-MI7WNVWX.js} +6 -6
- package/dist/{chunk-3VNPWA3O.cjs → chunk-MKN6S7SU.cjs} +268 -238
- package/dist/chunk-MKN6S7SU.cjs.map +1 -0
- package/dist/{chunk-GVPFTBHH.js → chunk-MOZUJ7IN.js} +3 -3
- package/dist/{chunk-TFJUYUN6.js → chunk-MVY3WDFZ.js} +2 -2
- package/dist/{chunk-7W26HSN2.js → chunk-NJJWY7SO.js} +3 -3
- package/dist/{chunk-6AQ24VWK.cjs → chunk-O4XLTA5G.cjs} +40 -40
- package/dist/{chunk-6AQ24VWK.cjs.map → chunk-O4XLTA5G.cjs.map} +1 -1
- package/dist/{chunk-YXMTAQXA.js → chunk-P6M5MN3L.js} +9 -9
- package/dist/{chunk-57YML5WZ.js → chunk-PUBL2NCH.js} +2 -2
- package/dist/{chunk-Q5ZIMMEU.js → chunk-PV3LXEHJ.js} +2 -2
- package/dist/{chunk-IKWINC5T.js → chunk-QJHBYNHI.js} +6 -6
- package/dist/{chunk-Z3ADCYC5.js → chunk-RCBRCZUF.js} +2 -2
- package/dist/{chunk-UYZ2W3YO.js → chunk-RJU7YCN3.js} +2 -2
- package/dist/{chunk-7R3FCSTM.cjs → chunk-RLVJISO4.cjs} +77 -77
- package/dist/{chunk-7R3FCSTM.cjs.map → chunk-RLVJISO4.cjs.map} +1 -1
- package/dist/{chunk-OGVIGAMZ.cjs → chunk-SXLEPNY2.cjs} +31 -31
- package/dist/{chunk-OGVIGAMZ.cjs.map → chunk-SXLEPNY2.cjs.map} +1 -1
- package/dist/{chunk-XAMVKFQC.js → chunk-TFIPJAA5.js} +3 -3
- package/dist/{chunk-B7XGR24L.cjs → chunk-URU6YKOA.cjs} +29 -29
- package/dist/{chunk-B7XGR24L.cjs.map → chunk-URU6YKOA.cjs.map} +1 -1
- package/dist/{chunk-GOBPN5U3.cjs → chunk-WQDDSJWN.cjs} +18 -18
- package/dist/{chunk-GOBPN5U3.cjs.map → chunk-WQDDSJWN.cjs.map} +1 -1
- package/dist/{chunk-4A3VWHSV.js → chunk-XARCNHWZ.js} +2 -2
- package/dist/{chunk-JABZ23WE.cjs → chunk-YH627NWE.cjs} +4 -4
- package/dist/{chunk-JABZ23WE.cjs.map → chunk-YH627NWE.cjs.map} +1 -1
- package/dist/{chunk-JTEUU62P.js → chunk-YUQNJXSC.js} +4 -4
- package/dist/components/case-studies/index.cjs +14 -14
- package/dist/components/case-studies/index.js +4 -4
- 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 +6 -4
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +5 -3
- 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 +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/index.js +6 -6
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/features/provider-button.d.ts +1 -1
- package/dist/components/features/provider-button.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +25 -25
- package/dist/components/help-center-pages/index.js +16 -16
- package/dist/components/icons/apple-icon.d.ts +10 -0
- package/dist/components/icons/apple-icon.d.ts.map +1 -0
- package/dist/components/icons/index.cjs +4 -2
- package/dist/components/icons/index.cjs.map +1 -1
- package/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.d.ts.map +1 -1
- package/dist/components/icons/index.js +3 -1
- package/dist/components/index.cjs +159 -155
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +18 -14
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +41 -41
- package/dist/components/meeting-scheduler/index.js +5 -5
- package/dist/components/navigation/index.cjs +4 -4
- package/dist/components/navigation/index.js +3 -3
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/provider-button.d.ts +1 -1
- package/dist/components/provider-button.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/tickets/index.js +7 -7
- package/dist/components/ui/index.cjs +6 -4
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +5 -3
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +8 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -3
- 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/src/components/features/auth-providers-list.tsx +1 -1
- package/src/components/features/provider-button.tsx +6 -2
- package/src/components/icons/apple-icon.tsx +30 -0
- package/src/components/icons/index.ts +1 -0
- package/src/components/provider-button.tsx +3 -2
- package/dist/chunk-3VNPWA3O.cjs.map +0 -1
- package/dist/chunk-NJADHL2G.cjs.map +0 -1
- package/dist/chunk-XURRAFIB.js.map +0 -1
- /package/dist/{chunk-FS3YSNSU.js.map → chunk-GS4HJA2G.js.map} +0 -0
- /package/dist/{chunk-BF73V2AZ.js.map → chunk-KRBH3PI4.js.map} +0 -0
- /package/dist/{chunk-TMGE3F3E.js.map → chunk-MI7WNVWX.js.map} +0 -0
- /package/dist/{chunk-GVPFTBHH.js.map → chunk-MOZUJ7IN.js.map} +0 -0
- /package/dist/{chunk-TFJUYUN6.js.map → chunk-MVY3WDFZ.js.map} +0 -0
- /package/dist/{chunk-7W26HSN2.js.map → chunk-NJJWY7SO.js.map} +0 -0
- /package/dist/{chunk-YXMTAQXA.js.map → chunk-P6M5MN3L.js.map} +0 -0
- /package/dist/{chunk-57YML5WZ.js.map → chunk-PUBL2NCH.js.map} +0 -0
- /package/dist/{chunk-Q5ZIMMEU.js.map → chunk-PV3LXEHJ.js.map} +0 -0
- /package/dist/{chunk-IKWINC5T.js.map → chunk-QJHBYNHI.js.map} +0 -0
- /package/dist/{chunk-Z3ADCYC5.js.map → chunk-RCBRCZUF.js.map} +0 -0
- /package/dist/{chunk-UYZ2W3YO.js.map → chunk-RJU7YCN3.js.map} +0 -0
- /package/dist/{chunk-XAMVKFQC.js.map → chunk-TFIPJAA5.js.map} +0 -0
- /package/dist/{chunk-4A3VWHSV.js.map → chunk-XARCNHWZ.js.map} +0 -0
- /package/dist/{chunk-JTEUU62P.js.map → chunk-YUQNJXSC.js.map} +0 -0
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
useResetOnPageHidden,
|
|
52
52
|
useSuppressCloneFocus,
|
|
53
53
|
useToast
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-GS4HJA2G.js";
|
|
55
55
|
import {
|
|
56
56
|
init_next_navigation,
|
|
57
57
|
usePathname,
|
|
@@ -59,6 +59,7 @@ import {
|
|
|
59
59
|
useSearchParams
|
|
60
60
|
} from "./chunk-ZJJERZUA.js";
|
|
61
61
|
import {
|
|
62
|
+
AppleIcon,
|
|
62
63
|
BashIcon,
|
|
63
64
|
ClickUpIcon,
|
|
64
65
|
CmdIcon,
|
|
@@ -101,7 +102,7 @@ import {
|
|
|
101
102
|
WindowsIcon,
|
|
102
103
|
XLogo,
|
|
103
104
|
YouTubeIcon
|
|
104
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-GJAHN7LH.js";
|
|
105
106
|
import {
|
|
106
107
|
AlertCircleIcon,
|
|
107
108
|
AnthropicLogoGreyIcon,
|
|
@@ -30785,6 +30786,10 @@ var PROVIDER_CONFIG = {
|
|
|
30785
30786
|
github: {
|
|
30786
30787
|
displayName: "Continue with GitHub",
|
|
30787
30788
|
icon: GitHubIcon
|
|
30789
|
+
},
|
|
30790
|
+
apple: {
|
|
30791
|
+
displayName: "Continue with Apple",
|
|
30792
|
+
icon: AppleIcon
|
|
30788
30793
|
}
|
|
30789
30794
|
};
|
|
30790
30795
|
function ProviderButton({ provider, onClick, disabled = false, loading = false }) {
|
|
@@ -52546,9 +52551,10 @@ function useScriptedStream(frames, resetKey, enabled = true) {
|
|
|
52546
52551
|
}
|
|
52547
52552
|
|
|
52548
52553
|
// src/components/chat/hooks/use-jetstream-dialog-subscription.ts
|
|
52549
|
-
import { useEffect as useEffect84, useRef as useRef68, useState as useState114 } from "react";
|
|
52554
|
+
import { useCallback as useCallback49, useEffect as useEffect84, useRef as useRef68, useState as useState114 } from "react";
|
|
52550
52555
|
var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
|
|
52551
52556
|
var RESYNC_AFTER_HIDDEN_MS = 1e4;
|
|
52557
|
+
var RESYNC_COALESCE_MS = 1e3;
|
|
52552
52558
|
var RECOVERY_REPORT_FLOOR_MS = 5e3;
|
|
52553
52559
|
function useJetStreamDialogSubscription({
|
|
52554
52560
|
enabled,
|
|
@@ -52564,7 +52570,8 @@ function useJetStreamDialogSubscription({
|
|
|
52564
52570
|
getNatsWsUrl,
|
|
52565
52571
|
clientConfig = {},
|
|
52566
52572
|
reconnectionBackoff,
|
|
52567
|
-
inactiveThresholdMs
|
|
52573
|
+
inactiveThresholdMs,
|
|
52574
|
+
resyncSignal = 0
|
|
52568
52575
|
}) {
|
|
52569
52576
|
const [isConnected, setIsConnected] = useState114(false);
|
|
52570
52577
|
const [isSubscribed, setIsSubscribed] = useState114(false);
|
|
@@ -52572,6 +52579,8 @@ function useJetStreamDialogSubscription({
|
|
|
52572
52579
|
const [recoveryCount, setRecoveryCount] = useState114(0);
|
|
52573
52580
|
const [currentStreamSeq, setCurrentStreamSeq] = useState114(null);
|
|
52574
52581
|
const lastRecoveryReportRef = useRef68(0);
|
|
52582
|
+
const resyncTimerRef = useRef68(null);
|
|
52583
|
+
const lastResyncSignalRef = useRef68(resyncSignal);
|
|
52575
52584
|
const clientRef = useRef68(null);
|
|
52576
52585
|
const subscriptionRef = useRef68(null);
|
|
52577
52586
|
const highestStreamSeqRef = useRef68(null);
|
|
@@ -52701,8 +52710,22 @@ function useJetStreamDialogSubscription({
|
|
|
52701
52710
|
}, [enabled, wsUrl]);
|
|
52702
52711
|
useEffect84(() => {
|
|
52703
52712
|
highestStreamSeqRef.current = null;
|
|
52713
|
+
lastResyncSignalRef.current = resyncSignal;
|
|
52704
52714
|
setCurrentStreamSeq(null);
|
|
52715
|
+
return () => {
|
|
52716
|
+
if (resyncTimerRef.current !== null) {
|
|
52717
|
+
clearTimeout(resyncTimerRef.current);
|
|
52718
|
+
resyncTimerRef.current = null;
|
|
52719
|
+
}
|
|
52720
|
+
};
|
|
52705
52721
|
}, [dialogId]);
|
|
52722
|
+
const requestResync = useCallback49(() => {
|
|
52723
|
+
if (resyncTimerRef.current !== null) clearTimeout(resyncTimerRef.current);
|
|
52724
|
+
resyncTimerRef.current = setTimeout(() => {
|
|
52725
|
+
resyncTimerRef.current = null;
|
|
52726
|
+
setReconnectionCount((c) => c + 1);
|
|
52727
|
+
}, RESYNC_COALESCE_MS);
|
|
52728
|
+
}, []);
|
|
52706
52729
|
useEffect84(() => {
|
|
52707
52730
|
if (!enabled) return;
|
|
52708
52731
|
let hiddenSince = document.visibilityState === "hidden" ? Date.now() : 0;
|
|
@@ -52714,12 +52737,18 @@ function useJetStreamDialogSubscription({
|
|
|
52714
52737
|
const awayMs = hiddenSince === 0 ? 0 : Date.now() - hiddenSince;
|
|
52715
52738
|
hiddenSince = 0;
|
|
52716
52739
|
if (awayMs >= RESYNC_AFTER_HIDDEN_MS) {
|
|
52717
|
-
|
|
52740
|
+
requestResync();
|
|
52718
52741
|
}
|
|
52719
52742
|
};
|
|
52720
52743
|
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
52721
52744
|
return () => document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
52722
|
-
}, [enabled]);
|
|
52745
|
+
}, [enabled, requestResync]);
|
|
52746
|
+
useEffect84(() => {
|
|
52747
|
+
if (!enabled) return;
|
|
52748
|
+
if (resyncSignal <= lastResyncSignalRef.current) return;
|
|
52749
|
+
lastResyncSignalRef.current = resyncSignal;
|
|
52750
|
+
requestResync();
|
|
52751
|
+
}, [enabled, resyncSignal, requestResync]);
|
|
52723
52752
|
useEffect84(() => {
|
|
52724
52753
|
if (!enabled || !dialogId || !isConnected) {
|
|
52725
52754
|
if (subscriptionRef.current) {
|
|
@@ -53222,7 +53251,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
|
|
|
53222
53251
|
}
|
|
53223
53252
|
|
|
53224
53253
|
// src/components/chat/hooks/use-chat-attachments.ts
|
|
53225
|
-
import { useCallback as
|
|
53254
|
+
import { useCallback as useCallback50, useMemo as useMemo49, useRef as useRef70, useState as useState117 } from "react";
|
|
53226
53255
|
import { fileTypeFromBlob } from "file-type";
|
|
53227
53256
|
var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
|
|
53228
53257
|
var CHAT_ATTACHMENTS_FOLDER = "chat";
|
|
@@ -53300,10 +53329,10 @@ function useChatAttachments() {
|
|
|
53300
53329
|
const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
|
|
53301
53330
|
const [attachments, setAttachments] = useState117([]);
|
|
53302
53331
|
const controllersRef = useRef70(/* @__PURE__ */ new Map());
|
|
53303
|
-
const updateOne =
|
|
53332
|
+
const updateOne = useCallback50((id, patch) => {
|
|
53304
53333
|
setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
|
|
53305
53334
|
}, []);
|
|
53306
|
-
const removeAttachment =
|
|
53335
|
+
const removeAttachment = useCallback50((id) => {
|
|
53307
53336
|
const ctrl = controllersRef.current.get(id);
|
|
53308
53337
|
if (ctrl) {
|
|
53309
53338
|
ctrl.abort();
|
|
@@ -53311,12 +53340,12 @@ function useChatAttachments() {
|
|
|
53311
53340
|
}
|
|
53312
53341
|
setAttachments((prev) => prev.filter((a) => a.id !== id));
|
|
53313
53342
|
}, []);
|
|
53314
|
-
const clear =
|
|
53343
|
+
const clear = useCallback50(() => {
|
|
53315
53344
|
for (const ctrl of controllersRef.current.values()) ctrl.abort();
|
|
53316
53345
|
controllersRef.current.clear();
|
|
53317
53346
|
setAttachments([]);
|
|
53318
53347
|
}, []);
|
|
53319
|
-
const uploadOne =
|
|
53348
|
+
const uploadOne = useCallback50(
|
|
53320
53349
|
async (att) => {
|
|
53321
53350
|
const ctrl = controllersRef.current.get(att.id);
|
|
53322
53351
|
try {
|
|
@@ -53390,7 +53419,7 @@ function useChatAttachments() {
|
|
|
53390
53419
|
);
|
|
53391
53420
|
const attachmentsRef = useRef70([]);
|
|
53392
53421
|
attachmentsRef.current = attachments;
|
|
53393
|
-
const addFiles =
|
|
53422
|
+
const addFiles = useCallback50(
|
|
53394
53423
|
(files) => {
|
|
53395
53424
|
const arr = Array.from(files);
|
|
53396
53425
|
if (arr.length === 0) return;
|
|
@@ -53465,7 +53494,7 @@ function useChatAttachments() {
|
|
|
53465
53494
|
}
|
|
53466
53495
|
|
|
53467
53496
|
// src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
|
|
53468
|
-
import { useCallback as
|
|
53497
|
+
import { useCallback as useCallback51, useEffect as useEffect87, useRef as useRef71, useState as useState118 } from "react";
|
|
53469
53498
|
import { jsx as jsx379 } from "react/jsx-runtime";
|
|
53470
53499
|
var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
|
|
53471
53500
|
function useChatAttachmentImageGallery() {
|
|
@@ -53473,7 +53502,7 @@ function useChatAttachmentImageGallery() {
|
|
|
53473
53502
|
const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
|
|
53474
53503
|
const panelRef = useRef71(null);
|
|
53475
53504
|
const [state, setState] = useState118(CLOSED);
|
|
53476
|
-
const handleClose =
|
|
53505
|
+
const handleClose = useCallback51(() => setState(CLOSED), []);
|
|
53477
53506
|
useEffect87(() => {
|
|
53478
53507
|
const root = panelRef.current;
|
|
53479
53508
|
if (!root) return;
|
|
@@ -53538,20 +53567,20 @@ function useCloseOnNavigation(close, pathname) {
|
|
|
53538
53567
|
}
|
|
53539
53568
|
|
|
53540
53569
|
// src/components/chat/hooks/use-chat.ts
|
|
53541
|
-
import { useState as useState120, useCallback as
|
|
53570
|
+
import { useState as useState120, useCallback as useCallback53, useEffect as useEffect89, useRef as useRef74 } from "react";
|
|
53542
53571
|
|
|
53543
53572
|
// src/components/chat/hooks/use-sse.ts
|
|
53544
|
-
import { useState as useState119, useCallback as
|
|
53573
|
+
import { useState as useState119, useCallback as useCallback52, useRef as useRef73 } from "react";
|
|
53545
53574
|
function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
53546
53575
|
const [isStreaming, setIsStreaming] = useState119(false);
|
|
53547
53576
|
const [error, setError] = useState119(null);
|
|
53548
53577
|
const abortControllerRef = useRef73(null);
|
|
53549
|
-
const fallbackStream =
|
|
53578
|
+
const fallbackStream = useCallback52(async function* () {
|
|
53550
53579
|
throw new Error(
|
|
53551
53580
|
"[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."
|
|
53552
53581
|
);
|
|
53553
53582
|
}, []);
|
|
53554
|
-
const streamMessage =
|
|
53583
|
+
const streamMessage = useCallback52(
|
|
53555
53584
|
async function* (message2, extra) {
|
|
53556
53585
|
setIsStreaming(true);
|
|
53557
53586
|
setError(null);
|
|
@@ -53581,13 +53610,13 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
|
|
|
53581
53610
|
},
|
|
53582
53611
|
[streamFn, fallbackStream]
|
|
53583
53612
|
);
|
|
53584
|
-
const abort =
|
|
53613
|
+
const abort = useCallback52(() => {
|
|
53585
53614
|
if (abortControllerRef.current) {
|
|
53586
53615
|
abortControllerRef.current.abort();
|
|
53587
53616
|
}
|
|
53588
53617
|
setIsStreaming(false);
|
|
53589
53618
|
}, []);
|
|
53590
|
-
const reset =
|
|
53619
|
+
const reset = useCallback52(() => {
|
|
53591
53620
|
}, []);
|
|
53592
53621
|
return {
|
|
53593
53622
|
streamMessage,
|
|
@@ -53630,10 +53659,10 @@ function useChat({
|
|
|
53630
53659
|
debugMode,
|
|
53631
53660
|
streamFn
|
|
53632
53661
|
});
|
|
53633
|
-
const addMessage =
|
|
53662
|
+
const addMessage = useCallback53((message2) => {
|
|
53634
53663
|
setMessages((prev) => [...prev, message2]);
|
|
53635
53664
|
}, []);
|
|
53636
|
-
const updateLastAssistantMessage =
|
|
53665
|
+
const updateLastAssistantMessage = useCallback53((segments) => {
|
|
53637
53666
|
setMessages((prev) => {
|
|
53638
53667
|
const newMessages = [...prev];
|
|
53639
53668
|
const lastMessage = newMessages[newMessages.length - 1];
|
|
@@ -53646,7 +53675,7 @@ function useChat({
|
|
|
53646
53675
|
return newMessages;
|
|
53647
53676
|
});
|
|
53648
53677
|
}, []);
|
|
53649
|
-
const sendMessage =
|
|
53678
|
+
const sendMessage = useCallback53(
|
|
53650
53679
|
async (text, extra, options) => {
|
|
53651
53680
|
const userMessage = {
|
|
53652
53681
|
id: `user-${Date.now()}`,
|
|
@@ -53876,21 +53905,21 @@ function useChat({
|
|
|
53876
53905
|
},
|
|
53877
53906
|
[streamMessage, addMessage, updateLastAssistantMessage, assistantName, assistantAvatar]
|
|
53878
53907
|
);
|
|
53879
|
-
const handleQuickAction =
|
|
53908
|
+
const handleQuickAction = useCallback53(
|
|
53880
53909
|
(actionText) => {
|
|
53881
53910
|
sendMessage(actionText);
|
|
53882
53911
|
},
|
|
53883
53912
|
[sendMessage]
|
|
53884
53913
|
);
|
|
53885
|
-
const clearMessages =
|
|
53914
|
+
const clearMessages = useCallback53(() => {
|
|
53886
53915
|
setMessages([]);
|
|
53887
53916
|
setIsTyping(false);
|
|
53888
53917
|
reset();
|
|
53889
53918
|
}, [reset]);
|
|
53890
|
-
const hydrateMessages =
|
|
53919
|
+
const hydrateMessages = useCallback53((history) => {
|
|
53891
53920
|
setMessages((prev) => prev.length === 0 ? history : [...history, ...prev]);
|
|
53892
53921
|
}, []);
|
|
53893
|
-
const stopMessage =
|
|
53922
|
+
const stopMessage = useCallback53(() => {
|
|
53894
53923
|
abort();
|
|
53895
53924
|
setIsTyping(false);
|
|
53896
53925
|
}, [abort]);
|
|
@@ -53909,7 +53938,7 @@ function useChat({
|
|
|
53909
53938
|
}
|
|
53910
53939
|
|
|
53911
53940
|
// src/components/chat/hooks/use-sse-chat-adapter.ts
|
|
53912
|
-
import { useCallback as
|
|
53941
|
+
import { useCallback as useCallback55, useMemo as useMemo51, useRef as useRef77 } from "react";
|
|
53913
53942
|
|
|
53914
53943
|
// src/chat-protocol/frames.ts
|
|
53915
53944
|
var FRAME_TERMINATOR = "\0";
|
|
@@ -56129,7 +56158,7 @@ function createChatDialogStore(options = {}) {
|
|
|
56129
56158
|
}
|
|
56130
56159
|
|
|
56131
56160
|
// src/components/chat/stream/use-chat-stream-reducer.ts
|
|
56132
|
-
import { useCallback as
|
|
56161
|
+
import { useCallback as useCallback54, useEffect as useEffect91, useMemo as useMemo50, useRef as useRef76, useSyncExternalStore } from "react";
|
|
56133
56162
|
|
|
56134
56163
|
// src/components/chat/stream/delta-batcher.ts
|
|
56135
56164
|
var DELTA_FLUSH_FALLBACK_MS = 50;
|
|
@@ -56221,9 +56250,9 @@ function useChatStreamReducer({
|
|
|
56221
56250
|
const optionsRef = useRef76(createReducerOptions);
|
|
56222
56251
|
optionsRef.current = createReducerOptions;
|
|
56223
56252
|
const reducer2 = store.getReducer(dialogId, side, () => optionsRef.current?.() ?? {});
|
|
56224
|
-
const getSnapshot =
|
|
56225
|
-
const getServerSnapshot =
|
|
56226
|
-
const subscribe =
|
|
56253
|
+
const getSnapshot = useCallback54(() => store.getSnapshot(dialogId, side), [store, dialogId, side]);
|
|
56254
|
+
const getServerSnapshot = useCallback54(() => store.getServerSnapshot(), [store]);
|
|
56255
|
+
const subscribe = useCallback54((listener) => store.subscribe(listener), [store]);
|
|
56227
56256
|
const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
56228
56257
|
useEffect91(() => store.retain(dialogId, side), [store, dialogId, side]);
|
|
56229
56258
|
const keyRef = useRef76({ dialogId, side });
|
|
@@ -56241,8 +56270,8 @@ function useChatStreamReducer({
|
|
|
56241
56270
|
});
|
|
56242
56271
|
}
|
|
56243
56272
|
const batcher = batcherRef.current;
|
|
56244
|
-
const flushDeltas =
|
|
56245
|
-
const applyEvent =
|
|
56273
|
+
const flushDeltas = useCallback54(() => batcher.flush(), [batcher]);
|
|
56274
|
+
const applyEvent = useCallback54(
|
|
56246
56275
|
(event) => {
|
|
56247
56276
|
if (batcher.push(event, keyRef.current)) return;
|
|
56248
56277
|
batcher.flush();
|
|
@@ -56251,7 +56280,7 @@ function useChatStreamReducer({
|
|
|
56251
56280
|
[batcher, store, dialogId, side]
|
|
56252
56281
|
);
|
|
56253
56282
|
useEffect91(() => () => batcher.dispose(), [batcher]);
|
|
56254
|
-
const mutate =
|
|
56283
|
+
const mutate = useCallback54(
|
|
56255
56284
|
(fn) => store.mutate(dialogId, side, fn),
|
|
56256
56285
|
[store, dialogId, side]
|
|
56257
56286
|
);
|
|
@@ -56283,7 +56312,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56283
56312
|
const source = runtime.source || DEFAULT_CHAT_SOURCE;
|
|
56284
56313
|
const tableIdForDocumentType = options?.tableIdForDocumentType ?? defaultTableIdForDocumentType;
|
|
56285
56314
|
const sendMessageRef = useRef77(async () => true);
|
|
56286
|
-
const cardResolve =
|
|
56315
|
+
const cardResolve = useCallback55(
|
|
56287
56316
|
(action) => (reqId) => {
|
|
56288
56317
|
if (!reqId) return;
|
|
56289
56318
|
return sendMessageRef.current("", {
|
|
@@ -56295,7 +56324,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56295
56324
|
);
|
|
56296
56325
|
const cardApprove = useMemo51(() => cardResolve("approve"), [cardResolve]);
|
|
56297
56326
|
const cardReject = useMemo51(() => cardResolve("reject"), [cardResolve]);
|
|
56298
|
-
const createReducerOptions =
|
|
56327
|
+
const createReducerOptions = useCallback55(
|
|
56299
56328
|
() => ({
|
|
56300
56329
|
transport: "sse",
|
|
56301
56330
|
callbacks: { onApprove: cardApprove, onReject: cardReject }
|
|
@@ -56345,7 +56374,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56345
56374
|
const historyUrl = runtime.endpoints.chatHistoryUrl ?? `${runtime.endpoints.chatStreamUrl.replace(/\/+$/, "")}/history`;
|
|
56346
56375
|
const hydrationRefsMapRef = useRef77(/* @__PURE__ */ new Map());
|
|
56347
56376
|
const hydrationSendCountRef = useRef77(0);
|
|
56348
|
-
const hydrateMessages =
|
|
56377
|
+
const hydrateMessages = useCallback55(
|
|
56349
56378
|
(history) => {
|
|
56350
56379
|
mutate((r) => {
|
|
56351
56380
|
const mapped = history.map(historyMessageToReducerMessage);
|
|
@@ -56377,7 +56406,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56377
56406
|
});
|
|
56378
56407
|
const endpointsRef = useRef77(runtime.endpoints);
|
|
56379
56408
|
endpointsRef.current = runtime.endpoints;
|
|
56380
|
-
const captureConversationId =
|
|
56409
|
+
const captureConversationId = useCallback55(
|
|
56381
56410
|
(event) => {
|
|
56382
56411
|
if (event.type !== "metadata") return;
|
|
56383
56412
|
const id = event.conversationId;
|
|
@@ -56388,7 +56417,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56388
56417
|
},
|
|
56389
56418
|
[conversationStorage]
|
|
56390
56419
|
);
|
|
56391
|
-
const sendMessage =
|
|
56420
|
+
const sendMessage = useCallback55(
|
|
56392
56421
|
// Resolves `true` on a clean turn, `false` when the request failed
|
|
56393
56422
|
// (surfaced to batch approve-all loops via the card callbacks).
|
|
56394
56423
|
async (text, sendOptions) => {
|
|
@@ -56473,12 +56502,12 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56473
56502
|
[mutate, applyEvent, flushDeltas, captureConversationId]
|
|
56474
56503
|
);
|
|
56475
56504
|
sendMessageRef.current = sendMessage;
|
|
56476
|
-
const stopMessage =
|
|
56505
|
+
const stopMessage = useCallback55(() => {
|
|
56477
56506
|
abortControllerRef.current?.abort();
|
|
56478
56507
|
flushDeltas();
|
|
56479
56508
|
mutate((r) => r.setPhase("idle"));
|
|
56480
56509
|
}, [mutate, flushDeltas]);
|
|
56481
|
-
const clearMessages =
|
|
56510
|
+
const clearMessages = useCallback55(() => {
|
|
56482
56511
|
mutate((r) => r.reset());
|
|
56483
56512
|
conversationIdRef.current = null;
|
|
56484
56513
|
conversationStorage.clear();
|
|
@@ -56516,7 +56545,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56516
56545
|
};
|
|
56517
56546
|
});
|
|
56518
56547
|
}, [state.messages, state.turnMeta]);
|
|
56519
|
-
const displayRef =
|
|
56548
|
+
const displayRef = useCallback55(
|
|
56520
56549
|
(reference) => {
|
|
56521
56550
|
const tableId = tableIdForDocumentType(reference.type);
|
|
56522
56551
|
if (!tableId) {
|
|
@@ -56540,7 +56569,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
|
|
|
56540
56569
|
},
|
|
56541
56570
|
[sendMessage, source, cmdIdByTableId, tableIdForDocumentType]
|
|
56542
56571
|
);
|
|
56543
|
-
const discussRef =
|
|
56572
|
+
const discussRef = useCallback55(
|
|
56544
56573
|
(reference) => {
|
|
56545
56574
|
const tableId = tableIdForDocumentType(reference.type);
|
|
56546
56575
|
if (!tableId) {
|
|
@@ -56642,7 +56671,7 @@ var noopBumpMetaTick = () => {
|
|
|
56642
56671
|
};
|
|
56643
56672
|
|
|
56644
56673
|
// src/components/chat/hooks/use-nats-chat-adapter.ts
|
|
56645
|
-
import { useCallback as
|
|
56674
|
+
import { useCallback as useCallback56, useEffect as useEffect92, useMemo as useMemo52, useRef as useRef78, useState as useState122 } from "react";
|
|
56646
56675
|
|
|
56647
56676
|
// src/chat-protocol/nats-decoder.ts
|
|
56648
56677
|
function normalizeToolCalls(raw) {
|
|
@@ -57398,11 +57427,11 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57398
57427
|
async () => {
|
|
57399
57428
|
}
|
|
57400
57429
|
);
|
|
57401
|
-
const accumApprove =
|
|
57430
|
+
const accumApprove = useCallback56((requestId) => {
|
|
57402
57431
|
if (!requestId) return;
|
|
57403
57432
|
return handleApproveRef.current(requestId);
|
|
57404
57433
|
}, []);
|
|
57405
|
-
const accumReject =
|
|
57434
|
+
const accumReject = useCallback56((requestId) => {
|
|
57406
57435
|
if (!requestId) return;
|
|
57407
57436
|
return handleRejectRef.current(requestId);
|
|
57408
57437
|
}, []);
|
|
@@ -57456,7 +57485,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57456
57485
|
console.error("[useNatsChatAdapter] rejectRequest failed:", err);
|
|
57457
57486
|
}
|
|
57458
57487
|
};
|
|
57459
|
-
const processChunk =
|
|
57488
|
+
const processChunk = useCallback56(
|
|
57460
57489
|
(chunk) => {
|
|
57461
57490
|
const event = decodeNatsChunk(chunk);
|
|
57462
57491
|
if (event) applyEvent(event);
|
|
@@ -57485,7 +57514,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57485
57514
|
fetchChunks
|
|
57486
57515
|
});
|
|
57487
57516
|
const historyLoadSeqRef = useRef78(0);
|
|
57488
|
-
const loadDialogHistory =
|
|
57517
|
+
const loadDialogHistory = useCallback56(
|
|
57489
57518
|
async (id, cursor) => {
|
|
57490
57519
|
if (!fetchDialogMessages) return;
|
|
57491
57520
|
historyLoadSeqRef.current += 1;
|
|
@@ -57632,7 +57661,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57632
57661
|
setConnectionState("connecting");
|
|
57633
57662
|
}, [active, dialogId]);
|
|
57634
57663
|
const initialDialogsLoadedRef = useRef78(false);
|
|
57635
|
-
const loadDialogsPage =
|
|
57664
|
+
const loadDialogsPage = useCallback56(
|
|
57636
57665
|
async (cursor) => {
|
|
57637
57666
|
if (!fetchDialogs) return;
|
|
57638
57667
|
setIsDialogsLoading(true);
|
|
@@ -57660,7 +57689,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57660
57689
|
},
|
|
57661
57690
|
[fetchDialogs, dialogsPageSize]
|
|
57662
57691
|
);
|
|
57663
|
-
const reloadDialogs =
|
|
57692
|
+
const reloadDialogs = useCallback56(() => {
|
|
57664
57693
|
void loadDialogsPage();
|
|
57665
57694
|
}, [loadDialogsPage]);
|
|
57666
57695
|
useEffect92(() => {
|
|
@@ -57670,7 +57699,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57670
57699
|
initialDialogsLoadedRef.current = true;
|
|
57671
57700
|
void loadDialogsPage();
|
|
57672
57701
|
}, [active, fetchDialogs, loadDialogsPage]);
|
|
57673
|
-
const sendMessage =
|
|
57702
|
+
const sendMessage = useCallback56(
|
|
57674
57703
|
async (text, sendOptions) => {
|
|
57675
57704
|
const hidden = sendOptions?.hidden ?? false;
|
|
57676
57705
|
mutate((r) => r.pushOptimisticSend(text, hidden));
|
|
@@ -57678,7 +57707,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57678
57707
|
},
|
|
57679
57708
|
[mutate, publishUserMessage, dialogId]
|
|
57680
57709
|
);
|
|
57681
|
-
const stopMessage =
|
|
57710
|
+
const stopMessage = useCallback56(() => {
|
|
57682
57711
|
mutate((r) => r.setPhase("idle"));
|
|
57683
57712
|
if (stopGenerationCallback && dialogId) {
|
|
57684
57713
|
void stopGenerationCallback(dialogId).catch((err) => {
|
|
@@ -57686,10 +57715,10 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57686
57715
|
});
|
|
57687
57716
|
}
|
|
57688
57717
|
}, [mutate, stopGenerationCallback, dialogId]);
|
|
57689
|
-
const clearMessages =
|
|
57718
|
+
const clearMessages = useCallback56(() => {
|
|
57690
57719
|
mutate((r) => r.clearThread());
|
|
57691
57720
|
}, [mutate]);
|
|
57692
|
-
const selectDialog =
|
|
57721
|
+
const selectDialog = useCallback56(
|
|
57693
57722
|
(id) => {
|
|
57694
57723
|
if (!isManagedMode) {
|
|
57695
57724
|
return;
|
|
@@ -57698,7 +57727,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57698
57727
|
},
|
|
57699
57728
|
[isManagedMode]
|
|
57700
57729
|
);
|
|
57701
|
-
const startNewDialog =
|
|
57730
|
+
const startNewDialog = useCallback56(async () => {
|
|
57702
57731
|
if (!createDialogCallback) return null;
|
|
57703
57732
|
if (isCreatingDialog) return null;
|
|
57704
57733
|
try {
|
|
@@ -57723,7 +57752,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57723
57752
|
setIsCreatingDialog(false);
|
|
57724
57753
|
}
|
|
57725
57754
|
}, [createDialogCallback, isCreatingDialog, isManagedMode]);
|
|
57726
|
-
const deleteDialog =
|
|
57755
|
+
const deleteDialog = useCallback56(
|
|
57727
57756
|
async (id) => {
|
|
57728
57757
|
if (!deleteDialogCallback) return;
|
|
57729
57758
|
try {
|
|
@@ -57739,7 +57768,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57739
57768
|
},
|
|
57740
57769
|
[deleteDialogCallback, internalDialogId, isManagedMode]
|
|
57741
57770
|
);
|
|
57742
|
-
const renameDialog =
|
|
57771
|
+
const renameDialog = useCallback56(
|
|
57743
57772
|
async (id, title) => {
|
|
57744
57773
|
if (!renameDialogCallback) return;
|
|
57745
57774
|
let previous;
|
|
@@ -57763,7 +57792,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57763
57792
|
},
|
|
57764
57793
|
[renameDialogCallback]
|
|
57765
57794
|
);
|
|
57766
|
-
const archiveDialog =
|
|
57795
|
+
const archiveDialog = useCallback56(
|
|
57767
57796
|
async (id) => {
|
|
57768
57797
|
if (!archiveDialogCallback) return;
|
|
57769
57798
|
try {
|
|
@@ -57778,27 +57807,27 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57778
57807
|
},
|
|
57779
57808
|
[archiveDialogCallback, internalDialogId, isManagedMode]
|
|
57780
57809
|
);
|
|
57781
|
-
const loadMoreDialogs =
|
|
57810
|
+
const loadMoreDialogs = useCallback56(async () => {
|
|
57782
57811
|
if (!dialogsNextCursor) return;
|
|
57783
57812
|
await loadDialogsPage(dialogsNextCursor);
|
|
57784
57813
|
}, [dialogsNextCursor, loadDialogsPage]);
|
|
57785
|
-
const loadMoreMessages =
|
|
57814
|
+
const loadMoreMessages = useCallback56(async () => {
|
|
57786
57815
|
if (!dialogId || !messagesNextCursor) return;
|
|
57787
57816
|
await loadDialogHistory(dialogId, messagesNextCursor);
|
|
57788
57817
|
}, [dialogId, messagesNextCursor, loadDialogHistory]);
|
|
57789
|
-
const approveRequest =
|
|
57818
|
+
const approveRequest = useCallback56(
|
|
57790
57819
|
async (requestId) => {
|
|
57791
57820
|
await handleApproveRef.current(requestId);
|
|
57792
57821
|
},
|
|
57793
57822
|
[]
|
|
57794
57823
|
);
|
|
57795
|
-
const rejectRequest =
|
|
57824
|
+
const rejectRequest = useCallback56(
|
|
57796
57825
|
async (requestId, reason) => {
|
|
57797
57826
|
await handleRejectRef.current(requestId, reason);
|
|
57798
57827
|
},
|
|
57799
57828
|
[]
|
|
57800
57829
|
);
|
|
57801
|
-
const discussRef =
|
|
57830
|
+
const discussRef = useCallback56(
|
|
57802
57831
|
(reference) => {
|
|
57803
57832
|
const prompt = buildDiscussPrompt(reference, { includeReference: true });
|
|
57804
57833
|
void sendMessage(prompt).catch((err) => {
|
|
@@ -57807,7 +57836,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57807
57836
|
},
|
|
57808
57837
|
[sendMessage]
|
|
57809
57838
|
);
|
|
57810
|
-
const displayRef =
|
|
57839
|
+
const displayRef = useCallback56((_ref) => {
|
|
57811
57840
|
}, []);
|
|
57812
57841
|
const { messages, streamingPhase, dialogTokenUsage = null, liveModel = null } = state;
|
|
57813
57842
|
const isLoading = streamingPhase !== "idle";
|
|
@@ -57896,7 +57925,7 @@ function useNatsChatAdapter(config, options = {}) {
|
|
|
57896
57925
|
}
|
|
57897
57926
|
|
|
57898
57927
|
// src/components/chat/hooks/use-unified-chat.ts
|
|
57899
|
-
import { useCallback as
|
|
57928
|
+
import { useCallback as useCallback57, useMemo as useMemo53, useRef as useRef79 } from "react";
|
|
57900
57929
|
var EMPTY_SSE_OPTIONS = {};
|
|
57901
57930
|
function createDisabledNatsConfig() {
|
|
57902
57931
|
return {
|
|
@@ -57927,64 +57956,64 @@ function useUnifiedChat(options) {
|
|
|
57927
57956
|
const activeState = activeMode === "guide" ? sseState : mingoStateOverride ?? natsState;
|
|
57928
57957
|
const activeStateRef = useRef79(activeState);
|
|
57929
57958
|
activeStateRef.current = activeState;
|
|
57930
|
-
const stopMessage =
|
|
57931
|
-
const clearMessages =
|
|
57959
|
+
const stopMessage = useCallback57(() => activeStateRef.current.stopMessage(), []);
|
|
57960
|
+
const clearMessages = useCallback57(
|
|
57932
57961
|
() => activeStateRef.current.clearMessages(),
|
|
57933
57962
|
[]
|
|
57934
57963
|
);
|
|
57935
|
-
const sendMessage =
|
|
57964
|
+
const sendMessage = useCallback57(
|
|
57936
57965
|
(text, opts) => activeStateRef.current.sendMessage(text, opts),
|
|
57937
57966
|
[]
|
|
57938
57967
|
);
|
|
57939
|
-
const discussRef =
|
|
57968
|
+
const discussRef = useCallback57(
|
|
57940
57969
|
(ref) => activeStateRef.current.discussRef(ref),
|
|
57941
57970
|
[]
|
|
57942
57971
|
);
|
|
57943
|
-
const displayRef =
|
|
57972
|
+
const displayRef = useCallback57(
|
|
57944
57973
|
(ref) => activeStateRef.current.displayRef(ref),
|
|
57945
57974
|
[]
|
|
57946
57975
|
);
|
|
57947
|
-
const selectDialog =
|
|
57976
|
+
const selectDialog = useCallback57(
|
|
57948
57977
|
(id) => activeStateRef.current.selectDialog(id),
|
|
57949
57978
|
[]
|
|
57950
57979
|
);
|
|
57951
|
-
const startNewDialog =
|
|
57980
|
+
const startNewDialog = useCallback57(
|
|
57952
57981
|
() => activeStateRef.current.startNewDialog(),
|
|
57953
57982
|
[]
|
|
57954
57983
|
);
|
|
57955
|
-
const deleteDialog =
|
|
57984
|
+
const deleteDialog = useCallback57(
|
|
57956
57985
|
(id) => activeStateRef.current.deleteDialog(id),
|
|
57957
57986
|
[]
|
|
57958
57987
|
);
|
|
57959
|
-
const renameDialog =
|
|
57988
|
+
const renameDialog = useCallback57(
|
|
57960
57989
|
(id, title) => activeStateRef.current.renameDialog(id, title),
|
|
57961
57990
|
[]
|
|
57962
57991
|
);
|
|
57963
|
-
const archiveDialog =
|
|
57992
|
+
const archiveDialog = useCallback57(
|
|
57964
57993
|
(id) => activeStateRef.current.archiveDialog(id),
|
|
57965
57994
|
[]
|
|
57966
57995
|
);
|
|
57967
|
-
const loadMoreDialogs =
|
|
57996
|
+
const loadMoreDialogs = useCallback57(
|
|
57968
57997
|
() => activeStateRef.current.loadMoreDialogs(),
|
|
57969
57998
|
[]
|
|
57970
57999
|
);
|
|
57971
|
-
const setDialogScope =
|
|
58000
|
+
const setDialogScope = useCallback57(
|
|
57972
58001
|
(scope) => activeStateRef.current.setDialogScope?.(scope),
|
|
57973
58002
|
[]
|
|
57974
58003
|
);
|
|
57975
|
-
const reloadDialogs =
|
|
58004
|
+
const reloadDialogs = useCallback57(
|
|
57976
58005
|
() => activeStateRef.current.reloadDialogs(),
|
|
57977
58006
|
[]
|
|
57978
58007
|
);
|
|
57979
|
-
const loadMoreMessages =
|
|
58008
|
+
const loadMoreMessages = useCallback57(
|
|
57980
58009
|
() => activeStateRef.current.loadMoreMessages(),
|
|
57981
58010
|
[]
|
|
57982
58011
|
);
|
|
57983
|
-
const approveRequest =
|
|
58012
|
+
const approveRequest = useCallback57(
|
|
57984
58013
|
(requestId) => activeStateRef.current.approveRequest(requestId),
|
|
57985
58014
|
[]
|
|
57986
58015
|
);
|
|
57987
|
-
const rejectRequest =
|
|
58016
|
+
const rejectRequest = useCallback57(
|
|
57988
58017
|
(requestId, reason) => activeStateRef.current.rejectRequest(requestId, reason),
|
|
57989
58018
|
[]
|
|
57990
58019
|
);
|
|
@@ -58324,7 +58353,7 @@ function buildStreamFrames(messages) {
|
|
|
58324
58353
|
|
|
58325
58354
|
// src/components/chat/embeddable-chat.tsx
|
|
58326
58355
|
init_cn();
|
|
58327
|
-
import { useCallback as
|
|
58356
|
+
import { useCallback as useCallback59, useEffect as useEffect93, useMemo as useMemo55, useRef as useRef81, useState as useState124 } from "react";
|
|
58328
58357
|
import * as DialogPrimitive5 from "@radix-ui/react-dialog";
|
|
58329
58358
|
import { usePreventScroll as usePreventScroll6 } from "@react-aria/overlays";
|
|
58330
58359
|
import { isIOS } from "@react-aria/utils";
|
|
@@ -58411,7 +58440,7 @@ init_button2();
|
|
|
58411
58440
|
import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
|
|
58412
58441
|
|
|
58413
58442
|
// src/components/chat/hooks/use-chat-dialog-manager.ts
|
|
58414
|
-
import { useCallback as
|
|
58443
|
+
import { useCallback as useCallback58, useMemo as useMemo54, useRef as useRef80, useState as useState123 } from "react";
|
|
58415
58444
|
function useChatDialogManager({
|
|
58416
58445
|
dialogs,
|
|
58417
58446
|
activeDialogId,
|
|
@@ -58424,14 +58453,14 @@ function useChatDialogManager({
|
|
|
58424
58453
|
}) {
|
|
58425
58454
|
const [renameTarget, setRenameTarget] = useState123(null);
|
|
58426
58455
|
const [archiveTarget, setArchiveTarget] = useState123(null);
|
|
58427
|
-
const handleConfirmRename =
|
|
58456
|
+
const handleConfirmRename = useCallback58(
|
|
58428
58457
|
(name) => {
|
|
58429
58458
|
if (renameTarget) void renameDialog(renameTarget.id, name);
|
|
58430
58459
|
setRenameTarget(null);
|
|
58431
58460
|
},
|
|
58432
58461
|
[renameTarget, renameDialog]
|
|
58433
58462
|
);
|
|
58434
|
-
const handleConfirmArchive =
|
|
58463
|
+
const handleConfirmArchive = useCallback58(async () => {
|
|
58435
58464
|
if (archiveTarget) {
|
|
58436
58465
|
try {
|
|
58437
58466
|
await archiveDialog(archiveTarget.id);
|
|
@@ -58452,7 +58481,7 @@ function useChatDialogManager({
|
|
|
58452
58481
|
const [archivedLoading, setArchivedLoading] = useState123(false);
|
|
58453
58482
|
const [archivedPending, setArchivedPending] = useState123(false);
|
|
58454
58483
|
const archivedRequestIdRef = useRef80(0);
|
|
58455
|
-
const loadArchivedPage =
|
|
58484
|
+
const loadArchivedPage = useCallback58(
|
|
58456
58485
|
async (cursor) => {
|
|
58457
58486
|
if (!fetchArchivedDialogs) return;
|
|
58458
58487
|
const requestId = ++archivedRequestIdRef.current;
|
|
@@ -58487,16 +58516,16 @@ function useChatDialogManager({
|
|
|
58487
58516
|
},
|
|
58488
58517
|
[fetchArchivedDialogs]
|
|
58489
58518
|
);
|
|
58490
|
-
const openArchive =
|
|
58519
|
+
const openArchive = useCallback58(() => {
|
|
58491
58520
|
setArchiveOpen(true);
|
|
58492
58521
|
void loadArchivedPage();
|
|
58493
58522
|
}, [loadArchivedPage]);
|
|
58494
|
-
const closeArchive =
|
|
58523
|
+
const closeArchive = useCallback58(() => setArchiveOpen(false), []);
|
|
58495
58524
|
const [viewingArchivedId, setViewingArchivedId] = useState123(
|
|
58496
58525
|
null
|
|
58497
58526
|
);
|
|
58498
58527
|
const [openingDialogId, setOpeningDialogId] = useState123(null);
|
|
58499
|
-
const handleSelectDialog =
|
|
58528
|
+
const handleSelectDialog = useCallback58(
|
|
58500
58529
|
(id) => {
|
|
58501
58530
|
setViewingArchivedId(null);
|
|
58502
58531
|
setOpeningDialogId(id);
|
|
@@ -58505,7 +58534,7 @@ function useChatDialogManager({
|
|
|
58505
58534
|
[selectDialog]
|
|
58506
58535
|
);
|
|
58507
58536
|
const isOpeningDialog = openingDialogId != null && openingDialogId === activeDialogId;
|
|
58508
|
-
const handleArchivedSelect =
|
|
58537
|
+
const handleArchivedSelect = useCallback58(
|
|
58509
58538
|
(id) => {
|
|
58510
58539
|
setArchiveOpen(false);
|
|
58511
58540
|
setOpeningDialogId(null);
|
|
@@ -58515,7 +58544,7 @@ function useChatDialogManager({
|
|
|
58515
58544
|
[selectDialog]
|
|
58516
58545
|
);
|
|
58517
58546
|
const [restoreTarget, setRestoreTarget] = useState123(null);
|
|
58518
|
-
const handleConfirmRestore =
|
|
58547
|
+
const handleConfirmRestore = useCallback58(async () => {
|
|
58519
58548
|
if (restoreTarget) {
|
|
58520
58549
|
try {
|
|
58521
58550
|
await unarchiveDialog?.(restoreTarget.id);
|
|
@@ -58529,7 +58558,7 @@ function useChatDialogManager({
|
|
|
58529
58558
|
setRestoreTarget(null);
|
|
58530
58559
|
}, [restoreTarget, unarchiveDialog]);
|
|
58531
58560
|
const isViewingArchived = viewingArchivedId != null && viewingArchivedId === activeDialogId;
|
|
58532
|
-
const handleBack =
|
|
58561
|
+
const handleBack = useCallback58(() => {
|
|
58533
58562
|
const wasArchived = isViewingArchived;
|
|
58534
58563
|
setViewingArchivedId(null);
|
|
58535
58564
|
setOpeningDialogId(null);
|
|
@@ -58537,7 +58566,7 @@ function useChatDialogManager({
|
|
|
58537
58566
|
clearMessages();
|
|
58538
58567
|
if (wasArchived) setArchiveOpen(true);
|
|
58539
58568
|
}, [isViewingArchived, selectDialog, clearMessages]);
|
|
58540
|
-
const resetToNewChat =
|
|
58569
|
+
const resetToNewChat = useCallback58(() => {
|
|
58541
58570
|
setViewingArchivedId(null);
|
|
58542
58571
|
setOpeningDialogId(null);
|
|
58543
58572
|
selectDialog(null);
|
|
@@ -59029,7 +59058,7 @@ function EmbeddableChatInner({
|
|
|
59029
59058
|
const initialActiveMode = controlledActiveMode ?? defaultActiveMode ?? (effectiveModes.guide ? "guide" : "mingo");
|
|
59030
59059
|
const [uncontrolledActiveMode, setUncontrolledActiveMode] = useState124(initialActiveMode);
|
|
59031
59060
|
const activeMode = controlledActiveMode ?? uncontrolledActiveMode;
|
|
59032
|
-
const handleActiveModeChange =
|
|
59061
|
+
const handleActiveModeChange = useCallback59(
|
|
59033
59062
|
(next) => {
|
|
59034
59063
|
if (controlledActiveMode === void 0) {
|
|
59035
59064
|
setUncontrolledActiveMode(next);
|
|
@@ -59135,7 +59164,7 @@ function EmbeddableChatInner({
|
|
|
59135
59164
|
for (const t of contextEntityTypes ?? []) byType.set(t.type, t.icon);
|
|
59136
59165
|
return (item) => byType.get(item.type);
|
|
59137
59166
|
}, [contextEntityTypes]);
|
|
59138
|
-
const toggleContextItem =
|
|
59167
|
+
const toggleContextItem = useCallback59(
|
|
59139
59168
|
(item) => {
|
|
59140
59169
|
const key = `${item.type}:${item.id}`;
|
|
59141
59170
|
if (mentionActiveRef.current) {
|
|
@@ -59158,7 +59187,7 @@ function EmbeddableChatInner({
|
|
|
59158
59187
|
},
|
|
59159
59188
|
[contextMaxItems, contextItems, mentionMarkerByType, resolveContextIcon]
|
|
59160
59189
|
);
|
|
59161
|
-
const removeContextItem =
|
|
59190
|
+
const removeContextItem = useCallback59((item) => {
|
|
59162
59191
|
const key = `${item.type}:${item.id}`;
|
|
59163
59192
|
setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
|
|
59164
59193
|
if (mentionKeysRef.current.has(key)) {
|
|
@@ -59168,7 +59197,7 @@ function EmbeddableChatInner({
|
|
|
59168
59197
|
chatInputRef.current?.setValue(next);
|
|
59169
59198
|
}
|
|
59170
59199
|
}, [mentionMarkerByType]);
|
|
59171
|
-
const handleContextValueChange =
|
|
59200
|
+
const handleContextValueChange = useCallback59((value) => {
|
|
59172
59201
|
for (const key of Array.from(mentionKeysRef.current)) {
|
|
59173
59202
|
if (!value.includes(`@${mentionTokenOf(key, mentionMarkerByType)}`)) {
|
|
59174
59203
|
mentionKeysRef.current.delete(key);
|
|
@@ -59176,24 +59205,24 @@ function EmbeddableChatInner({
|
|
|
59176
59205
|
}
|
|
59177
59206
|
}
|
|
59178
59207
|
}, [mentionMarkerByType]);
|
|
59179
|
-
const openContextPicker =
|
|
59208
|
+
const openContextPicker = useCallback59(() => {
|
|
59180
59209
|
setMentionQuery(null);
|
|
59181
59210
|
setContextPickerOpen(true);
|
|
59182
59211
|
}, []);
|
|
59183
|
-
const closeContextPicker =
|
|
59212
|
+
const closeContextPicker = useCallback59(() => {
|
|
59184
59213
|
if (mentionActiveRef.current) {
|
|
59185
59214
|
chatInputRef.current?.removeMentionTrigger();
|
|
59186
59215
|
}
|
|
59187
59216
|
setContextPickerOpen(false);
|
|
59188
59217
|
setMentionQuery(null);
|
|
59189
59218
|
}, []);
|
|
59190
|
-
const handleMentionQueryChange =
|
|
59219
|
+
const handleMentionQueryChange = useCallback59((query) => {
|
|
59191
59220
|
setMentionQuery(query);
|
|
59192
59221
|
setContextPickerOpen(query !== null);
|
|
59193
59222
|
}, []);
|
|
59194
59223
|
const resolvedBaseRoute = baseRoute || (source === "flamingo" ? "/knowledge-base" : "/data-room");
|
|
59195
|
-
const handleClose =
|
|
59196
|
-
const handleNavigationClose =
|
|
59224
|
+
const handleClose = useCallback59(() => setIsOpen(false), [setIsOpen]);
|
|
59225
|
+
const handleNavigationClose = useCallback59(() => {
|
|
59197
59226
|
navigatingAwayRef.current = true;
|
|
59198
59227
|
setIsOpen(false);
|
|
59199
59228
|
}, [setIsOpen]);
|
|
@@ -59201,7 +59230,7 @@ function EmbeddableChatInner({
|
|
|
59201
59230
|
() => ({ closeChat: handleNavigationClose }),
|
|
59202
59231
|
[handleNavigationClose]
|
|
59203
59232
|
);
|
|
59204
|
-
const renderEntityCard =
|
|
59233
|
+
const renderEntityCard = useCallback59(
|
|
59205
59234
|
(reference) => renderChatInlineEntityCard(reference, {
|
|
59206
59235
|
onDiscuss: discussRef,
|
|
59207
59236
|
onDisplay: displayRef,
|
|
@@ -59264,7 +59293,7 @@ function EmbeddableChatInner({
|
|
|
59264
59293
|
}
|
|
59265
59294
|
return mapped;
|
|
59266
59295
|
}, [rawMessages, guideUserName, guideUserAvatar]);
|
|
59267
|
-
const handleSend =
|
|
59296
|
+
const handleSend = useCallback59(
|
|
59268
59297
|
(text) => {
|
|
59269
59298
|
let augmentedText = text;
|
|
59270
59299
|
if (readyAttachments.length > 0) {
|
|
@@ -59346,7 +59375,7 @@ function EmbeddableChatInner({
|
|
|
59346
59375
|
fetchArchivedDialogs: mingoCaps.fetchArchivedDialogs,
|
|
59347
59376
|
unarchiveDialog: mingoCaps.unarchiveDialog
|
|
59348
59377
|
});
|
|
59349
|
-
const handleOpen =
|
|
59378
|
+
const handleOpen = useCallback59(() => setIsOpen(true), [setIsOpen]);
|
|
59350
59379
|
useCloseOnNavigation(handleNavigationClose, null);
|
|
59351
59380
|
useEffect93(() => {
|
|
59352
59381
|
const handler = (e) => {
|
|
@@ -59432,7 +59461,7 @@ function EmbeddableChatInner({
|
|
|
59432
59461
|
setPanelWidth(el.clientWidth);
|
|
59433
59462
|
return () => ro.disconnect();
|
|
59434
59463
|
}, []);
|
|
59435
|
-
const setPanelNode =
|
|
59464
|
+
const setPanelNode = useCallback59((node) => {
|
|
59436
59465
|
panelMeasureRef.current = node;
|
|
59437
59466
|
setPanelBoundary(node);
|
|
59438
59467
|
}, []);
|
|
@@ -59444,7 +59473,7 @@ function EmbeddableChatInner({
|
|
|
59444
59473
|
} catch {
|
|
59445
59474
|
}
|
|
59446
59475
|
}, []);
|
|
59447
|
-
const toggleRailCollapsed =
|
|
59476
|
+
const toggleRailCollapsed = useCallback59(() => {
|
|
59448
59477
|
setRailCollapsed((prev) => {
|
|
59449
59478
|
const next = !prev;
|
|
59450
59479
|
try {
|
|
@@ -59479,7 +59508,7 @@ function EmbeddableChatInner({
|
|
|
59479
59508
|
const headerPersonName = headerOwner?.name?.trim() || headerUserName;
|
|
59480
59509
|
const headerPersonAvatarUrl = headerOwner ? headerOwner.avatarUrl?.trim() || void 0 : identityUser?.avatarUrl?.trim() || userAvatarUrl?.trim() || void 0;
|
|
59481
59510
|
const headerAvatar = headerPersonName || headerPersonAvatarUrl ? { name: headerPersonName, avatarUrl: headerPersonAvatarUrl } : void 0;
|
|
59482
|
-
const handleNewChat =
|
|
59511
|
+
const handleNewChat = useCallback59(() => {
|
|
59483
59512
|
resetToNewChat();
|
|
59484
59513
|
}, [resetToNewChat]);
|
|
59485
59514
|
const splitHeaderMenuItems = [
|
|
@@ -60586,6 +60615,7 @@ export {
|
|
|
60586
60615
|
NETWORK_CONFIG,
|
|
60587
60616
|
useChunkCatchup,
|
|
60588
60617
|
useScriptedStream,
|
|
60618
|
+
RESYNC_AFTER_HIDDEN_MS,
|
|
60589
60619
|
useJetStreamDialogSubscription,
|
|
60590
60620
|
useNatsDialogSubscription,
|
|
60591
60621
|
buildNatsWsUrl,
|
|
@@ -61095,4 +61125,4 @@ export {
|
|
|
61095
61125
|
LogsList,
|
|
61096
61126
|
assets
|
|
61097
61127
|
};
|
|
61098
|
-
//# sourceMappingURL=chunk-
|
|
61128
|
+
//# sourceMappingURL=chunk-LL4C2NXG.js.map
|