@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.
Files changed (135) hide show
  1. package/dist/{chunk-WOGMH4XV.cjs → chunk-25JSVBPR.cjs} +7 -7
  2. package/dist/{chunk-WOGMH4XV.cjs.map → chunk-25JSVBPR.cjs.map} +1 -1
  3. package/dist/{chunk-NJADHL2G.cjs → chunk-3M2MFP2Y.cjs} +30 -2
  4. package/dist/chunk-3M2MFP2Y.cjs.map +1 -0
  5. package/dist/{chunk-R3J33R5R.cjs → chunk-BQXHC336.cjs} +3 -3
  6. package/dist/{chunk-R3J33R5R.cjs.map → chunk-BQXHC336.cjs.map} +1 -1
  7. package/dist/{chunk-JEZWQI7Q.cjs → chunk-CHMQCXYO.cjs} +40 -40
  8. package/dist/{chunk-JEZWQI7Q.cjs.map → chunk-CHMQCXYO.cjs.map} +1 -1
  9. package/dist/{chunk-5LLW2RW5.cjs → chunk-DN3GKQ47.cjs} +98 -98
  10. package/dist/{chunk-5LLW2RW5.cjs.map → chunk-DN3GKQ47.cjs.map} +1 -1
  11. package/dist/{chunk-UWOXZELG.cjs → chunk-GH5YZSQQ.cjs} +12 -12
  12. package/dist/{chunk-UWOXZELG.cjs.map → chunk-GH5YZSQQ.cjs.map} +1 -1
  13. package/dist/{chunk-XURRAFIB.js → chunk-GJAHN7LH.js} +404 -376
  14. package/dist/chunk-GJAHN7LH.js.map +1 -0
  15. package/dist/{chunk-FS3YSNSU.js → chunk-GS4HJA2G.js} +2 -2
  16. package/dist/{chunk-HIV2GIFP.cjs → chunk-GYONSC3U.cjs} +3 -3
  17. package/dist/{chunk-HIV2GIFP.cjs.map → chunk-GYONSC3U.cjs.map} +1 -1
  18. package/dist/{chunk-Q4MB6UPN.cjs → chunk-I6IWT62M.cjs} +5 -5
  19. package/dist/{chunk-Q4MB6UPN.cjs.map → chunk-I6IWT62M.cjs.map} +1 -1
  20. package/dist/{chunk-BF73V2AZ.js → chunk-KRBH3PI4.js} +5 -5
  21. package/dist/{chunk-H3M5QZ44.cjs → chunk-KW7GDLSG.cjs} +14 -14
  22. package/dist/{chunk-H3M5QZ44.cjs.map → chunk-KW7GDLSG.cjs.map} +1 -1
  23. package/dist/{chunk-EPIDZYPM.js → chunk-LL4C2NXG.js} +140 -110
  24. package/dist/{chunk-EPIDZYPM.js.map → chunk-LL4C2NXG.js.map} +1 -1
  25. package/dist/{chunk-BICXDTGO.cjs → chunk-LQ2R7IA2.cjs} +32 -32
  26. package/dist/{chunk-BICXDTGO.cjs.map → chunk-LQ2R7IA2.cjs.map} +1 -1
  27. package/dist/{chunk-TMGE3F3E.js → chunk-MI7WNVWX.js} +6 -6
  28. package/dist/{chunk-3VNPWA3O.cjs → chunk-MKN6S7SU.cjs} +268 -238
  29. package/dist/chunk-MKN6S7SU.cjs.map +1 -0
  30. package/dist/{chunk-GVPFTBHH.js → chunk-MOZUJ7IN.js} +3 -3
  31. package/dist/{chunk-TFJUYUN6.js → chunk-MVY3WDFZ.js} +2 -2
  32. package/dist/{chunk-7W26HSN2.js → chunk-NJJWY7SO.js} +3 -3
  33. package/dist/{chunk-6AQ24VWK.cjs → chunk-O4XLTA5G.cjs} +40 -40
  34. package/dist/{chunk-6AQ24VWK.cjs.map → chunk-O4XLTA5G.cjs.map} +1 -1
  35. package/dist/{chunk-YXMTAQXA.js → chunk-P6M5MN3L.js} +9 -9
  36. package/dist/{chunk-57YML5WZ.js → chunk-PUBL2NCH.js} +2 -2
  37. package/dist/{chunk-Q5ZIMMEU.js → chunk-PV3LXEHJ.js} +2 -2
  38. package/dist/{chunk-IKWINC5T.js → chunk-QJHBYNHI.js} +6 -6
  39. package/dist/{chunk-Z3ADCYC5.js → chunk-RCBRCZUF.js} +2 -2
  40. package/dist/{chunk-UYZ2W3YO.js → chunk-RJU7YCN3.js} +2 -2
  41. package/dist/{chunk-7R3FCSTM.cjs → chunk-RLVJISO4.cjs} +77 -77
  42. package/dist/{chunk-7R3FCSTM.cjs.map → chunk-RLVJISO4.cjs.map} +1 -1
  43. package/dist/{chunk-OGVIGAMZ.cjs → chunk-SXLEPNY2.cjs} +31 -31
  44. package/dist/{chunk-OGVIGAMZ.cjs.map → chunk-SXLEPNY2.cjs.map} +1 -1
  45. package/dist/{chunk-XAMVKFQC.js → chunk-TFIPJAA5.js} +3 -3
  46. package/dist/{chunk-B7XGR24L.cjs → chunk-URU6YKOA.cjs} +29 -29
  47. package/dist/{chunk-B7XGR24L.cjs.map → chunk-URU6YKOA.cjs.map} +1 -1
  48. package/dist/{chunk-GOBPN5U3.cjs → chunk-WQDDSJWN.cjs} +18 -18
  49. package/dist/{chunk-GOBPN5U3.cjs.map → chunk-WQDDSJWN.cjs.map} +1 -1
  50. package/dist/{chunk-4A3VWHSV.js → chunk-XARCNHWZ.js} +2 -2
  51. package/dist/{chunk-JABZ23WE.cjs → chunk-YH627NWE.cjs} +4 -4
  52. package/dist/{chunk-JABZ23WE.cjs.map → chunk-YH627NWE.cjs.map} +1 -1
  53. package/dist/{chunk-JTEUU62P.js → chunk-YUQNJXSC.js} +4 -4
  54. package/dist/components/case-studies/index.cjs +14 -14
  55. package/dist/components/case-studies/index.js +4 -4
  56. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts +7 -1
  57. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  58. package/dist/components/chat/index.cjs +6 -4
  59. package/dist/components/chat/index.cjs.map +1 -1
  60. package/dist/components/chat/index.js +5 -3
  61. package/dist/components/chat/types/api.types.d.ts +22 -4
  62. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  63. package/dist/components/contact/index.cjs +5 -5
  64. package/dist/components/contact/index.js +4 -4
  65. package/dist/components/docs/index.cjs +7 -7
  66. package/dist/components/docs/index.js +6 -6
  67. package/dist/components/embeds/index.cjs +5 -5
  68. package/dist/components/embeds/index.js +4 -4
  69. package/dist/components/faq/index.cjs +6 -6
  70. package/dist/components/faq/index.js +5 -5
  71. package/dist/components/features/index.cjs +4 -4
  72. package/dist/components/features/index.js +3 -3
  73. package/dist/components/features/provider-button.d.ts +1 -1
  74. package/dist/components/features/provider-button.d.ts.map +1 -1
  75. package/dist/components/help-center-pages/index.cjs +25 -25
  76. package/dist/components/help-center-pages/index.js +16 -16
  77. package/dist/components/icons/apple-icon.d.ts +10 -0
  78. package/dist/components/icons/apple-icon.d.ts.map +1 -0
  79. package/dist/components/icons/index.cjs +4 -2
  80. package/dist/components/icons/index.cjs.map +1 -1
  81. package/dist/components/icons/index.d.ts +1 -0
  82. package/dist/components/icons/index.d.ts.map +1 -1
  83. package/dist/components/icons/index.js +3 -1
  84. package/dist/components/index.cjs +159 -155
  85. package/dist/components/index.cjs.map +1 -1
  86. package/dist/components/index.js +18 -14
  87. package/dist/components/index.js.map +1 -1
  88. package/dist/components/meeting-scheduler/index.cjs +41 -41
  89. package/dist/components/meeting-scheduler/index.js +5 -5
  90. package/dist/components/navigation/index.cjs +4 -4
  91. package/dist/components/navigation/index.js +3 -3
  92. package/dist/components/onboarding-guides/index.cjs +8 -8
  93. package/dist/components/onboarding-guides/index.js +7 -7
  94. package/dist/components/provider-button.d.ts +1 -1
  95. package/dist/components/provider-button.d.ts.map +1 -1
  96. package/dist/components/related-content/index.cjs +6 -6
  97. package/dist/components/related-content/index.js +5 -5
  98. package/dist/components/tickets/index.cjs +8 -8
  99. package/dist/components/tickets/index.js +7 -7
  100. package/dist/components/ui/index.cjs +6 -4
  101. package/dist/components/ui/index.cjs.map +1 -1
  102. package/dist/components/ui/index.js +5 -3
  103. package/dist/hooks/index.cjs +3 -3
  104. package/dist/hooks/index.js +2 -2
  105. package/dist/index.cjs +8 -4
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +7 -3
  108. package/package.json +1 -1
  109. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +11 -4
  110. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +71 -6
  111. package/src/components/chat/types/api.types.ts +22 -4
  112. package/src/components/chat/utils/__tests__/history-merge.test.ts +99 -0
  113. package/src/components/features/auth-providers-list.tsx +1 -1
  114. package/src/components/features/provider-button.tsx +6 -2
  115. package/src/components/icons/apple-icon.tsx +30 -0
  116. package/src/components/icons/index.ts +1 -0
  117. package/src/components/provider-button.tsx +3 -2
  118. package/dist/chunk-3VNPWA3O.cjs.map +0 -1
  119. package/dist/chunk-NJADHL2G.cjs.map +0 -1
  120. package/dist/chunk-XURRAFIB.js.map +0 -1
  121. /package/dist/{chunk-FS3YSNSU.js.map → chunk-GS4HJA2G.js.map} +0 -0
  122. /package/dist/{chunk-BF73V2AZ.js.map → chunk-KRBH3PI4.js.map} +0 -0
  123. /package/dist/{chunk-TMGE3F3E.js.map → chunk-MI7WNVWX.js.map} +0 -0
  124. /package/dist/{chunk-GVPFTBHH.js.map → chunk-MOZUJ7IN.js.map} +0 -0
  125. /package/dist/{chunk-TFJUYUN6.js.map → chunk-MVY3WDFZ.js.map} +0 -0
  126. /package/dist/{chunk-7W26HSN2.js.map → chunk-NJJWY7SO.js.map} +0 -0
  127. /package/dist/{chunk-YXMTAQXA.js.map → chunk-P6M5MN3L.js.map} +0 -0
  128. /package/dist/{chunk-57YML5WZ.js.map → chunk-PUBL2NCH.js.map} +0 -0
  129. /package/dist/{chunk-Q5ZIMMEU.js.map → chunk-PV3LXEHJ.js.map} +0 -0
  130. /package/dist/{chunk-IKWINC5T.js.map → chunk-QJHBYNHI.js.map} +0 -0
  131. /package/dist/{chunk-Z3ADCYC5.js.map → chunk-RCBRCZUF.js.map} +0 -0
  132. /package/dist/{chunk-UYZ2W3YO.js.map → chunk-RJU7YCN3.js.map} +0 -0
  133. /package/dist/{chunk-XAMVKFQC.js.map → chunk-TFIPJAA5.js.map} +0 -0
  134. /package/dist/{chunk-4A3VWHSV.js.map → chunk-XARCNHWZ.js.map} +0 -0
  135. /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-FS3YSNSU.js";
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-XURRAFIB.js";
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
- setReconnectionCount((c) => c + 1);
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 useCallback49, useMemo as useMemo49, useRef as useRef70, useState as useState117 } from "react";
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 = useCallback49((id, patch) => {
53332
+ const updateOne = useCallback50((id, patch) => {
53304
53333
  setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
53305
53334
  }, []);
53306
- const removeAttachment = useCallback49((id) => {
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 = useCallback49(() => {
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 = useCallback49(
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 = useCallback49(
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 useCallback50, useEffect as useEffect87, useRef as useRef71, useState as useState118 } from "react";
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 = useCallback50(() => setState(CLOSED), []);
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 useCallback52, useEffect as useEffect89, useRef as useRef74 } from "react";
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 useCallback51, useRef as useRef73 } from "react";
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 = useCallback51(async function* () {
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 = useCallback51(
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 = useCallback51(() => {
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 = useCallback51(() => {
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 = useCallback52((message2) => {
53662
+ const addMessage = useCallback53((message2) => {
53634
53663
  setMessages((prev) => [...prev, message2]);
53635
53664
  }, []);
53636
- const updateLastAssistantMessage = useCallback52((segments) => {
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 = useCallback52(
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 = useCallback52(
53908
+ const handleQuickAction = useCallback53(
53880
53909
  (actionText) => {
53881
53910
  sendMessage(actionText);
53882
53911
  },
53883
53912
  [sendMessage]
53884
53913
  );
53885
- const clearMessages = useCallback52(() => {
53914
+ const clearMessages = useCallback53(() => {
53886
53915
  setMessages([]);
53887
53916
  setIsTyping(false);
53888
53917
  reset();
53889
53918
  }, [reset]);
53890
- const hydrateMessages = useCallback52((history) => {
53919
+ const hydrateMessages = useCallback53((history) => {
53891
53920
  setMessages((prev) => prev.length === 0 ? history : [...history, ...prev]);
53892
53921
  }, []);
53893
- const stopMessage = useCallback52(() => {
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 useCallback54, useMemo as useMemo51, useRef as useRef77 } from "react";
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 useCallback53, useEffect as useEffect91, useMemo as useMemo50, useRef as useRef76, useSyncExternalStore } from "react";
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 = useCallback53(() => store.getSnapshot(dialogId, side), [store, dialogId, side]);
56225
- const getServerSnapshot = useCallback53(() => store.getServerSnapshot(), [store]);
56226
- const subscribe = useCallback53((listener) => store.subscribe(listener), [store]);
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 = useCallback53(() => batcher.flush(), [batcher]);
56245
- const applyEvent = useCallback53(
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 = useCallback53(
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 = useCallback54(
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 = useCallback54(
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 = useCallback54(
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 = useCallback54(
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 = useCallback54(
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 = useCallback54(() => {
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 = useCallback54(() => {
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 = useCallback54(
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 = useCallback54(
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 useCallback55, useEffect as useEffect92, useMemo as useMemo52, useRef as useRef78, useState as useState122 } from "react";
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 = useCallback55((requestId) => {
57430
+ const accumApprove = useCallback56((requestId) => {
57402
57431
  if (!requestId) return;
57403
57432
  return handleApproveRef.current(requestId);
57404
57433
  }, []);
57405
- const accumReject = useCallback55((requestId) => {
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 = useCallback55(
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 = useCallback55(
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 = useCallback55(
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 = useCallback55(() => {
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 = useCallback55(
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 = useCallback55(() => {
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 = useCallback55(() => {
57718
+ const clearMessages = useCallback56(() => {
57690
57719
  mutate((r) => r.clearThread());
57691
57720
  }, [mutate]);
57692
- const selectDialog = useCallback55(
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 = useCallback55(async () => {
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 = useCallback55(
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 = useCallback55(
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 = useCallback55(
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 = useCallback55(async () => {
57810
+ const loadMoreDialogs = useCallback56(async () => {
57782
57811
  if (!dialogsNextCursor) return;
57783
57812
  await loadDialogsPage(dialogsNextCursor);
57784
57813
  }, [dialogsNextCursor, loadDialogsPage]);
57785
- const loadMoreMessages = useCallback55(async () => {
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 = useCallback55(
57818
+ const approveRequest = useCallback56(
57790
57819
  async (requestId) => {
57791
57820
  await handleApproveRef.current(requestId);
57792
57821
  },
57793
57822
  []
57794
57823
  );
57795
- const rejectRequest = useCallback55(
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 = useCallback55(
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 = useCallback55((_ref) => {
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 useCallback56, useMemo as useMemo53, useRef as useRef79 } from "react";
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 = useCallback56(() => activeStateRef.current.stopMessage(), []);
57931
- const clearMessages = useCallback56(
57959
+ const stopMessage = useCallback57(() => activeStateRef.current.stopMessage(), []);
57960
+ const clearMessages = useCallback57(
57932
57961
  () => activeStateRef.current.clearMessages(),
57933
57962
  []
57934
57963
  );
57935
- const sendMessage = useCallback56(
57964
+ const sendMessage = useCallback57(
57936
57965
  (text, opts) => activeStateRef.current.sendMessage(text, opts),
57937
57966
  []
57938
57967
  );
57939
- const discussRef = useCallback56(
57968
+ const discussRef = useCallback57(
57940
57969
  (ref) => activeStateRef.current.discussRef(ref),
57941
57970
  []
57942
57971
  );
57943
- const displayRef = useCallback56(
57972
+ const displayRef = useCallback57(
57944
57973
  (ref) => activeStateRef.current.displayRef(ref),
57945
57974
  []
57946
57975
  );
57947
- const selectDialog = useCallback56(
57976
+ const selectDialog = useCallback57(
57948
57977
  (id) => activeStateRef.current.selectDialog(id),
57949
57978
  []
57950
57979
  );
57951
- const startNewDialog = useCallback56(
57980
+ const startNewDialog = useCallback57(
57952
57981
  () => activeStateRef.current.startNewDialog(),
57953
57982
  []
57954
57983
  );
57955
- const deleteDialog = useCallback56(
57984
+ const deleteDialog = useCallback57(
57956
57985
  (id) => activeStateRef.current.deleteDialog(id),
57957
57986
  []
57958
57987
  );
57959
- const renameDialog = useCallback56(
57988
+ const renameDialog = useCallback57(
57960
57989
  (id, title) => activeStateRef.current.renameDialog(id, title),
57961
57990
  []
57962
57991
  );
57963
- const archiveDialog = useCallback56(
57992
+ const archiveDialog = useCallback57(
57964
57993
  (id) => activeStateRef.current.archiveDialog(id),
57965
57994
  []
57966
57995
  );
57967
- const loadMoreDialogs = useCallback56(
57996
+ const loadMoreDialogs = useCallback57(
57968
57997
  () => activeStateRef.current.loadMoreDialogs(),
57969
57998
  []
57970
57999
  );
57971
- const setDialogScope = useCallback56(
58000
+ const setDialogScope = useCallback57(
57972
58001
  (scope) => activeStateRef.current.setDialogScope?.(scope),
57973
58002
  []
57974
58003
  );
57975
- const reloadDialogs = useCallback56(
58004
+ const reloadDialogs = useCallback57(
57976
58005
  () => activeStateRef.current.reloadDialogs(),
57977
58006
  []
57978
58007
  );
57979
- const loadMoreMessages = useCallback56(
58008
+ const loadMoreMessages = useCallback57(
57980
58009
  () => activeStateRef.current.loadMoreMessages(),
57981
58010
  []
57982
58011
  );
57983
- const approveRequest = useCallback56(
58012
+ const approveRequest = useCallback57(
57984
58013
  (requestId) => activeStateRef.current.approveRequest(requestId),
57985
58014
  []
57986
58015
  );
57987
- const rejectRequest = useCallback56(
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 useCallback58, useEffect as useEffect93, useMemo as useMemo55, useRef as useRef81, useState as useState124 } from "react";
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 useCallback57, useMemo as useMemo54, useRef as useRef80, useState as useState123 } from "react";
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 = useCallback57(
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 = useCallback57(async () => {
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 = useCallback57(
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 = useCallback57(() => {
58519
+ const openArchive = useCallback58(() => {
58491
58520
  setArchiveOpen(true);
58492
58521
  void loadArchivedPage();
58493
58522
  }, [loadArchivedPage]);
58494
- const closeArchive = useCallback57(() => setArchiveOpen(false), []);
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 = useCallback57(
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 = useCallback57(
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 = useCallback57(async () => {
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 = useCallback57(() => {
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 = useCallback57(() => {
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 = useCallback58(
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 = useCallback58(
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 = useCallback58((item) => {
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 = useCallback58((value) => {
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 = useCallback58(() => {
59208
+ const openContextPicker = useCallback59(() => {
59180
59209
  setMentionQuery(null);
59181
59210
  setContextPickerOpen(true);
59182
59211
  }, []);
59183
- const closeContextPicker = useCallback58(() => {
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 = useCallback58((query) => {
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 = useCallback58(() => setIsOpen(false), [setIsOpen]);
59196
- const handleNavigationClose = useCallback58(() => {
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 = useCallback58(
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 = useCallback58(
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 = useCallback58(() => setIsOpen(true), [setIsOpen]);
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 = useCallback58((node) => {
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 = useCallback58(() => {
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 = useCallback58(() => {
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-EPIDZYPM.js.map
61128
+ //# sourceMappingURL=chunk-LL4C2NXG.js.map