@flamingo-stack/openframe-frontend-core 0.0.444 → 0.0.445

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 (123) hide show
  1. package/dist/{chunk-DTMJWBDQ.js → chunk-22NSWMI6.js} +3 -3
  2. package/dist/{chunk-NDWIFCLS.js → chunk-3BHV2QAH.js} +555 -135
  3. package/dist/{chunk-NDWIFCLS.js.map → chunk-3BHV2QAH.js.map} +1 -1
  4. package/dist/{chunk-PMTR5W5G.js → chunk-3DQ5BFPM.js} +5 -5
  5. package/dist/{chunk-RALJEQWM.cjs → chunk-3HYSD7NR.cjs} +15 -15
  6. package/dist/{chunk-RALJEQWM.cjs.map → chunk-3HYSD7NR.cjs.map} +1 -1
  7. package/dist/{chunk-YP7VJPCJ.cjs → chunk-5DWPXK37.cjs} +40 -40
  8. package/dist/{chunk-YP7VJPCJ.cjs.map → chunk-5DWPXK37.cjs.map} +1 -1
  9. package/dist/{chunk-OXZLBIR7.cjs → chunk-5FUQTSTT.cjs} +18 -18
  10. package/dist/{chunk-OXZLBIR7.cjs.map → chunk-5FUQTSTT.cjs.map} +1 -1
  11. package/dist/{chunk-MG4AMIFX.js → chunk-5NYXGWBN.js} +2 -2
  12. package/dist/{chunk-LCJGOV6P.js → chunk-7R256DKK.js} +2 -2
  13. package/dist/{chunk-2PLNDTRG.cjs → chunk-DTLNCOSG.cjs} +32 -32
  14. package/dist/{chunk-2PLNDTRG.cjs.map → chunk-DTLNCOSG.cjs.map} +1 -1
  15. package/dist/{chunk-3SCNEGL2.js → chunk-FIAXFNAA.js} +5 -5
  16. package/dist/{chunk-FQASXKBK.js → chunk-G2KXNMFQ.js} +2 -2
  17. package/dist/{chunk-H7H3AFLF.js → chunk-H2DYCT6M.js} +2 -2
  18. package/dist/{chunk-CE3AITV2.js → chunk-H352AZJN.js} +6 -6
  19. package/dist/{chunk-DCDB3SM4.js → chunk-K4RASNQM.js} +3 -3
  20. package/dist/{chunk-WXU6A6CA.cjs → chunk-KISQUH33.cjs} +73 -73
  21. package/dist/{chunk-WXU6A6CA.cjs.map → chunk-KISQUH33.cjs.map} +1 -1
  22. package/dist/{chunk-BYTJNRJW.cjs → chunk-MPSA6YAM.cjs} +40 -40
  23. package/dist/{chunk-BYTJNRJW.cjs.map → chunk-MPSA6YAM.cjs.map} +1 -1
  24. package/dist/{chunk-ABIRMYG5.js → chunk-MQUS6BFR.js} +6 -6
  25. package/dist/{chunk-DSW6FIEF.cjs → chunk-N64VTHZ5.cjs} +7 -7
  26. package/dist/{chunk-DSW6FIEF.cjs.map → chunk-N64VTHZ5.cjs.map} +1 -1
  27. package/dist/{chunk-F6NMMPDL.cjs → chunk-P3FN4NAE.cjs} +29 -29
  28. package/dist/{chunk-F6NMMPDL.cjs.map → chunk-P3FN4NAE.cjs.map} +1 -1
  29. package/dist/{chunk-PHWQLKVE.js → chunk-P47NN7RY.js} +29 -31
  30. package/dist/chunk-P47NN7RY.js.map +1 -0
  31. package/dist/{chunk-2CJ734N2.cjs → chunk-PTT4J5GF.cjs} +3 -3
  32. package/dist/{chunk-2CJ734N2.cjs.map → chunk-PTT4J5GF.cjs.map} +1 -1
  33. package/dist/{chunk-4R3SVOKH.cjs → chunk-QL2EI56X.cjs} +797 -377
  34. package/dist/chunk-QL2EI56X.cjs.map +1 -0
  35. package/dist/{chunk-VI2QQIGR.cjs → chunk-R6WGCJBB.cjs} +73 -73
  36. package/dist/{chunk-VI2QQIGR.cjs.map → chunk-R6WGCJBB.cjs.map} +1 -1
  37. package/dist/{chunk-Q6XOEVPH.cjs → chunk-RXLMN6B5.cjs} +12 -12
  38. package/dist/{chunk-Q6XOEVPH.cjs.map → chunk-RXLMN6B5.cjs.map} +1 -1
  39. package/dist/{chunk-F2XHBAHT.js → chunk-TCEBFMLQ.js} +2 -2
  40. package/dist/{chunk-7CZ4MJSI.cjs → chunk-VIJARDBM.cjs} +3 -3
  41. package/dist/{chunk-7CZ4MJSI.cjs.map → chunk-VIJARDBM.cjs.map} +1 -1
  42. package/dist/{chunk-PXXS27EE.cjs → chunk-W24U7ZUV.cjs} +40 -42
  43. package/dist/chunk-W24U7ZUV.cjs.map +1 -0
  44. package/dist/{chunk-37ZZQXHK.js → chunk-XPZLIONZ.js} +4 -4
  45. package/dist/{chunk-FO4CI4R5.cjs → chunk-YCLSV2H6.cjs} +5 -5
  46. package/dist/{chunk-FO4CI4R5.cjs.map → chunk-YCLSV2H6.cjs.map} +1 -1
  47. package/dist/{chunk-U7U2CZBZ.js → chunk-Z4N7XLFG.js} +3 -3
  48. package/dist/components/case-studies/index.cjs +10 -10
  49. package/dist/components/case-studies/index.js +4 -4
  50. package/dist/components/chat/hooks/use-chunk-catchup.d.ts.map +1 -1
  51. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  52. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +44 -1
  53. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  54. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts.map +1 -1
  55. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -1
  56. package/dist/components/chat/index.cjs +10 -4
  57. package/dist/components/chat/index.cjs.map +1 -1
  58. package/dist/components/chat/index.js +9 -3
  59. package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
  60. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  61. package/dist/components/contact/index.cjs +5 -5
  62. package/dist/components/contact/index.js +4 -4
  63. package/dist/components/docs/index.cjs +7 -7
  64. package/dist/components/docs/index.js +6 -6
  65. package/dist/components/embeds/index.cjs +5 -5
  66. package/dist/components/embeds/index.js +4 -4
  67. package/dist/components/faq/index.cjs +6 -6
  68. package/dist/components/faq/index.js +5 -5
  69. package/dist/components/features/index.cjs +4 -4
  70. package/dist/components/features/index.js +3 -3
  71. package/dist/components/help-center-pages/index.cjs +23 -23
  72. package/dist/components/help-center-pages/index.js +14 -14
  73. package/dist/components/index.cjs +142 -136
  74. package/dist/components/index.cjs.map +1 -1
  75. package/dist/components/index.js +18 -12
  76. package/dist/components/index.js.map +1 -1
  77. package/dist/components/navigation/index.cjs +4 -4
  78. package/dist/components/navigation/index.js +3 -3
  79. package/dist/components/onboarding-guides/index.cjs +8 -8
  80. package/dist/components/onboarding-guides/index.js +7 -7
  81. package/dist/components/related-content/index.cjs +6 -6
  82. package/dist/components/related-content/index.js +5 -5
  83. package/dist/components/tickets/index.cjs +7 -7
  84. package/dist/components/tickets/index.js +6 -6
  85. package/dist/components/ui/index.cjs +10 -4
  86. package/dist/components/ui/index.cjs.map +1 -1
  87. package/dist/components/ui/index.js +9 -3
  88. package/dist/hooks/index.cjs +3 -3
  89. package/dist/hooks/index.js +2 -2
  90. package/dist/index.cjs +10 -4
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.js +9 -3
  93. package/dist/nats/index.cjs +2 -2
  94. package/dist/nats/index.js +1 -1
  95. package/dist/nats/shared-connection.d.ts +6 -0
  96. package/dist/nats/shared-connection.d.ts.map +1 -1
  97. package/package.json +1 -1
  98. package/src/components/chat/hooks/__tests__/nats-adapter-message-updaters.test.ts +270 -0
  99. package/src/components/chat/hooks/use-chunk-catchup.ts +212 -57
  100. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +12 -8
  101. package/src/components/chat/hooks/use-nats-chat-adapter.ts +574 -9
  102. package/src/components/chat/hooks/use-nats-dialog-subscription.ts +12 -6
  103. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +40 -3
  104. package/src/components/chat/utils/__tests__/process-historical-messages-approvals.test.ts +62 -0
  105. package/src/components/chat/utils/message-segment-accumulator.ts +6 -0
  106. package/src/components/chat/utils/process-historical-messages.ts +25 -3
  107. package/src/nats/shared-connection.ts +42 -29
  108. package/dist/chunk-4R3SVOKH.cjs.map +0 -1
  109. package/dist/chunk-PHWQLKVE.js.map +0 -1
  110. package/dist/chunk-PXXS27EE.cjs.map +0 -1
  111. /package/dist/{chunk-DTMJWBDQ.js.map → chunk-22NSWMI6.js.map} +0 -0
  112. /package/dist/{chunk-PMTR5W5G.js.map → chunk-3DQ5BFPM.js.map} +0 -0
  113. /package/dist/{chunk-MG4AMIFX.js.map → chunk-5NYXGWBN.js.map} +0 -0
  114. /package/dist/{chunk-LCJGOV6P.js.map → chunk-7R256DKK.js.map} +0 -0
  115. /package/dist/{chunk-3SCNEGL2.js.map → chunk-FIAXFNAA.js.map} +0 -0
  116. /package/dist/{chunk-FQASXKBK.js.map → chunk-G2KXNMFQ.js.map} +0 -0
  117. /package/dist/{chunk-H7H3AFLF.js.map → chunk-H2DYCT6M.js.map} +0 -0
  118. /package/dist/{chunk-CE3AITV2.js.map → chunk-H352AZJN.js.map} +0 -0
  119. /package/dist/{chunk-DCDB3SM4.js.map → chunk-K4RASNQM.js.map} +0 -0
  120. /package/dist/{chunk-ABIRMYG5.js.map → chunk-MQUS6BFR.js.map} +0 -0
  121. /package/dist/{chunk-F2XHBAHT.js.map → chunk-TCEBFMLQ.js.map} +0 -0
  122. /package/dist/{chunk-37ZZQXHK.js.map → chunk-XPZLIONZ.js.map} +0 -0
  123. /package/dist/{chunk-U7U2CZBZ.js.map → chunk-Z4N7XLFG.js.map} +0 -0
@@ -27,7 +27,7 @@
27
27
 
28
28
 
29
29
 
30
- var _chunk7CZ4MJSIcjs = require('./chunk-7CZ4MJSI.cjs');
30
+ var _chunkVIJARDBMcjs = require('./chunk-VIJARDBM.cjs');
31
31
 
32
32
 
33
33
 
@@ -249,7 +249,7 @@ var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
249
249
 
250
250
 
251
251
 
252
- var _chunkPXXS27EEcjs = require('./chunk-PXXS27EE.cjs');
252
+ var _chunkW24U7ZUVcjs = require('./chunk-W24U7ZUV.cjs');
253
253
 
254
254
 
255
255
  var _chunkVRHGVLSLcjs = require('./chunk-VRHGVLSL.cjs');
@@ -799,7 +799,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution, showExe
799
799
  onClick: onToggle,
800
800
  className: "flex gap-[var(--spacing-system-xsf)] items-start w-full p-[var(--spacing-system-sf)] cursor-pointer text-left",
801
801
  children: [
802
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.ToolIcon, { toolType, size: 16 }) }),
802
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVIJARDBMcjs.ToolIcon, { toolType, size: 16 }) }),
803
803
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
804
804
  "div",
805
805
  {
@@ -4886,7 +4886,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
4886
4886
  className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full",
4887
4887
  onClick: () => setExpanded((prev) => !prev),
4888
4888
  children: [
4889
- !isClient && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
4889
+ !isClient && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVIJARDBMcjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
4890
4890
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4891
4891
  "div",
4892
4892
  {
@@ -6624,7 +6624,7 @@ function ChatQuickActionRow({
6624
6624
  skeletonCount = 8,
6625
6625
  className
6626
6626
  }) {
6627
- const auto = _chunk7CZ4MJSIcjs.useAutoLimitTags.call(void 0, {
6627
+ const auto = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
6628
6628
  count: chips.length,
6629
6629
  reserveInputWidth: false
6630
6630
  });
@@ -8027,7 +8027,7 @@ function ChatHeaderSearchField({
8027
8027
  className
8028
8028
  }) {
8029
8029
  const [value, setValue] = React24.useState(_nullishCoalesce(initialValue, () => ( "")));
8030
- const debounced = _chunk7CZ4MJSIcjs.useDebounce.call(void 0, value, 300);
8030
+ const debounced = _chunkVIJARDBMcjs.useDebounce.call(void 0, value, 300);
8031
8031
  const lastEmitted = React24.useRef(_nullishCoalesce(initialValue, () => ( "")));
8032
8032
  const [exiting, setExiting] = React24.useState(false);
8033
8033
  const collapsedRef = React24.useRef(false);
@@ -9231,7 +9231,7 @@ function runNavigation(runtime, href, path, targetPlatform, fallbackNavigate) {
9231
9231
  return;
9232
9232
  }
9233
9233
  const target = stripSameOriginToPath(href);
9234
- if (target.includes("#") && _chunk7CZ4MJSIcjs.navigateSamePageHash.call(void 0, target, { headerOffset: _chunk7CZ4MJSIcjs.STICKY_HEADER_OFFSET_PX })) {
9234
+ if (target.includes("#") && _chunkVIJARDBMcjs.navigateSamePageHash.call(void 0, target, { headerOffset: _chunkVIJARDBMcjs.STICKY_HEADER_OFFSET_PX })) {
9235
9235
  return;
9236
9236
  }
9237
9237
  const handled = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _144 => _144.navigation, 'access', _145 => _145.navigate, 'optionalCall', _146 => _146({ href, path, targetPlatform })]), () => ( false));
@@ -9691,7 +9691,7 @@ function EntityPortraitCard({
9691
9691
  setIsWide(img.naturalWidth / img.naturalHeight >= MIN_WIDE_RATIO);
9692
9692
  }
9693
9693
  };
9694
- const edgeColor = _chunk7CZ4MJSIcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
9694
+ const edgeColor = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
9695
9695
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target, rel, className: _chunkFIG2RKZFcjs.cn.call(void 0, "block h-full", className), "aria-label": `Open ${title}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: "bg-ods-card border border-ods-border hover:border-ods-accent hover:shadow-lg hover:shadow-ods-accent/[0.08] transition-all duration-200 p-6 flex flex-col gap-6 overflow-hidden h-full", children: [
9696
9696
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
9697
9697
  "div",
@@ -9998,7 +9998,7 @@ function AdminContentCard({
9998
9998
  const [imageError, setImageError] = _react.useState.call(void 0, false);
9999
9999
  const [imageLoaded, setImageLoaded] = _react.useState.call(void 0, false);
10000
10000
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
10001
- const imageBgColor = _chunk7CZ4MJSIcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
10001
+ const imageBgColor = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
10002
10002
  _react.useEffect.call(void 0, () => {
10003
10003
  setImageLoaded(false);
10004
10004
  }, [displayUrl]);
@@ -10718,7 +10718,7 @@ function useVideoWarmup({
10718
10718
  const runtime = _chunk2B6773QMcjs.useChatRuntime.call(void 0, );
10719
10719
  const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _188 => _188.endpoints, 'access', _189 => _189.supabaseStorageOrigin])));
10720
10720
  useVideoOriginPreconnect({ supabaseStorageOrigin: resolvedOrigin });
10721
- const { ref, isNear } = _chunk7CZ4MJSIcjs.useNearViewport.call(void 0, nearMargin);
10721
+ const { ref, isNear } = _chunkVIJARDBMcjs.useNearViewport.call(void 0, nearMargin);
10722
10722
  _react.useEffect.call(void 0, () => {
10723
10723
  if (!isNear || !videoUrl || !resolvedOrigin) return;
10724
10724
  const conn = navigator.connection;
@@ -12292,7 +12292,7 @@ function useEntityCardPlaceholder({
12292
12292
  siteName = "",
12293
12293
  aspect = "wide"
12294
12294
  }) {
12295
- const derived = _chunk7CZ4MJSIcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
12295
+ const derived = _chunkVIJARDBMcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
12296
12296
  return placeholderUrl !== void 0 ? placeholderUrl : derived;
12297
12297
  }
12298
12298
 
@@ -13560,7 +13560,7 @@ function AutocompleteInner(props, ref) {
13560
13560
  }, [valueArray, options]);
13561
13561
  const selectedOption = !multiple && selectedOptions.length > 0 ? selectedOptions[0] : null;
13562
13562
  const inputPlaceholder = multiple ? valueArray.length === 0 ? placeholder : "Add More..." : placeholder;
13563
- const autoLimitTags = _chunk7CZ4MJSIcjs.useAutoLimitTags.call(void 0, {
13563
+ const autoLimitTags = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
13564
13564
  count: multiple ? selectedOptions.length : 0,
13565
13565
  limitTags: multiple ? limitTagsProp : 0,
13566
13566
  placeholder: inputPlaceholder
@@ -14304,7 +14304,7 @@ function DatePickerCalendar({
14304
14304
  fluid = false
14305
14305
  }) {
14306
14306
  const today = /* @__PURE__ */ new Date();
14307
- const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useMdUp.call(void 0, ), () => ( true));
14307
+ const isMdUp = _nullishCoalesce(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( true));
14308
14308
  const monthsToShow = isMdUp ? numberOfMonths : 1;
14309
14309
  const [draftRange, setDraftRange] = React43.useState(
14310
14310
  mode === "range" ? selected : void 0
@@ -15328,7 +15328,7 @@ var ProgressBar = ({
15328
15328
  mobileHeight = 8,
15329
15329
  inverted = false
15330
15330
  }) => {
15331
- const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useMdUp.call(void 0, ), () => ( true));
15331
+ const isMdUp = _nullishCoalesce(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( true));
15332
15332
  const effectiveSegmentWidth = isMdUp ? segmentWidth : mobileSegmentWidth;
15333
15333
  const effectiveHeight = isMdUp ? height : mobileHeight;
15334
15334
  const containerRef = _react.useRef.call(void 0, null);
@@ -15455,7 +15455,7 @@ function InfoCardFooter({ footer }) {
15455
15455
  ] });
15456
15456
  }
15457
15457
  function InfoCardValueRow({ label, value, showLabel, copyable, icon, copyAriaLabel }) {
15458
- const { copy, copied } = _chunk7CZ4MJSIcjs.useCopyToClipboard.call(void 0, );
15458
+ const { copy, copied } = _chunkVIJARDBMcjs.useCopyToClipboard.call(void 0, );
15459
15459
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-6 items-center gap-[var(--spacing-system-xs)] self-stretch w-full", children: [
15460
15460
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4 text-ods-text-primary whitespace-nowrap", children: showLabel ? label : "" }),
15461
15461
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 h-px bg-ods-divider" }),
@@ -17745,7 +17745,7 @@ var DrawerContent = React63.forwardRef(
17745
17745
  const resolvedSide = _nullishCoalesce(side, () => ( "right"));
17746
17746
  const isHorizontal = HORIZONTAL_SIDES.has(resolvedSide);
17747
17747
  const initialSize = _nullishCoalesce(defaultSize, () => ( (isHorizontal ? 560 : 480)));
17748
- const headerHeight = _chunk7CZ4MJSIcjs.useHeaderHeight.call(void 0, );
17748
+ const headerHeight = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, );
17749
17749
  const [isMobile, setIsMobile] = React63.useState(false);
17750
17750
  React63.useEffect(() => {
17751
17751
  if (typeof window === "undefined") return;
@@ -19967,7 +19967,7 @@ var OGLinkPreview = ({
19967
19967
  const hasImage = !!resolvedImageUrl;
19968
19968
  const isFallbackImage = resolvedImageUrl === fallbackImage;
19969
19969
  const isPlaceholder = resolvedImageUrl === placeholderImageUrl && !isFallbackImage;
19970
- const bgColor = _chunk7CZ4MJSIcjs.useImageEdgeColor.call(void 0, _nullishCoalesce(resolvedImageUrl, () => ( null)), "var(--color-bg-surface)");
19970
+ const bgColor = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, _nullishCoalesce(resolvedImageUrl, () => ( null)), "var(--color-bg-surface)");
19971
19971
  const renderSkeleton = () => isCompact ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "my-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-row border border-ods-border rounded-lg overflow-hidden bg-ods-card h-[120px]", children: [
19972
19972
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[200px] h-full flex-shrink-0 bg-ods-border animate-pulse" }),
19973
19973
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 p-3 flex flex-col justify-center", children: [
@@ -22418,7 +22418,7 @@ function ListPageLayout({
22418
22418
  }) {
22419
22419
  const [mobileFilterOpen, setMobileFilterOpen] = _react.useState.call(void 0, false);
22420
22420
  const [localSearchValue, setLocalSearchValue] = _react.useState.call(void 0, searchValue);
22421
- const debouncedSearchValue = _chunk7CZ4MJSIcjs.useDebounce.call(void 0, localSearchValue, 500);
22421
+ const debouncedSearchValue = _chunkVIJARDBMcjs.useDebounce.call(void 0, localSearchValue, 500);
22422
22422
  _react.useEffect.call(void 0, () => {
22423
22423
  setLocalSearchValue(searchValue);
22424
22424
  }, [searchValue]);
@@ -23084,7 +23084,7 @@ function toToolLabel(input) {
23084
23084
  if (!input) return "";
23085
23085
  const toolType = normalizeToolType(input);
23086
23086
  if (toolType) {
23087
- return _chunk7CZ4MJSIcjs.toolLabels[toolType];
23087
+ return _chunkVIJARDBMcjs.toolLabels[toolType];
23088
23088
  }
23089
23089
  return input;
23090
23090
  }
@@ -23095,7 +23095,7 @@ function getToolTypeAliases(toolType) {
23095
23095
  return Object.entries(toolAliasMap).filter(([_, value]) => value === toolType).map(([key]) => key);
23096
23096
  }
23097
23097
  function getToolLabel(toolType) {
23098
- return _chunk7CZ4MJSIcjs.toolLabels[toolType] || toolType;
23098
+ return _chunkVIJARDBMcjs.toolLabels[toolType] || toolType;
23099
23099
  }
23100
23100
 
23101
23101
  // src/types/shell.types.ts
@@ -26248,10 +26248,10 @@ function CompleteAccountForm({
26248
26248
  children
26249
26249
  }) {
26250
26250
  const fieldsDisabled = disabled || loading;
26251
- const firstNameErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _521 => _521.firstName]), firstName);
26252
- const lastNameErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _522 => _522.lastName]), lastName);
26253
- const passwordErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _523 => _523.password]), password);
26254
- const confirmErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _524 => _524.confirmPassword]), confirmPassword);
26251
+ const firstNameErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _521 => _521.firstName]), firstName);
26252
+ const lastNameErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _522 => _522.lastName]), lastName);
26253
+ const passwordErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _523 => _523.password]), password);
26254
+ const confirmErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _524 => _524.confirmPassword]), confirmPassword);
26255
26255
  const handleKeyDown = (event) => {
26256
26256
  if (event.key === "Enter" && !fieldsDisabled && !submitDisabled) {
26257
26257
  onSubmit();
@@ -26442,9 +26442,9 @@ function CreateOrganizationForm({
26442
26442
  }) {
26443
26443
  const hasSso = !!ssoProviders && ssoProviders.length > 0;
26444
26444
  const fieldsDisabled = disabled || loading;
26445
- const emailErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _525 => _525.email]), email);
26446
- const orgNameErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _526 => _526.organizationName]), organizationName);
26447
- const domainErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _527 => _527.domain]), domain);
26445
+ const emailErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _525 => _525.email]), email);
26446
+ const orgNameErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _526 => _526.organizationName]), organizationName);
26447
+ const domainErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _527 => _527.domain]), domain);
26448
26448
  const handleKeyDown = (event) => {
26449
26449
  if (event.key === "Enter" && !fieldsDisabled) {
26450
26450
  onSubmit();
@@ -26598,7 +26598,7 @@ function LoginForm({
26598
26598
  className
26599
26599
  }) {
26600
26600
  const fieldDisabled = disabled || loading;
26601
- const emailErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _533 => _533.email]), email);
26601
+ const emailErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _533 => _533.email]), email);
26602
26602
  const handleKeyDown = (event) => {
26603
26603
  if (event.key === "Enter" && !fieldDisabled) {
26604
26604
  _optionalChain([onSubmit, 'optionalCall', _534 => _534()]);
@@ -26672,8 +26672,8 @@ function OpenFrameSsoLoginForm({
26672
26672
  className
26673
26673
  }) {
26674
26674
  const fieldsDisabled = disabled || loading;
26675
- const emailErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _537 => _537.email]), email);
26676
- const passwordErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _538 => _538.password]), password);
26675
+ const emailErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _537 => _537.email]), email);
26676
+ const passwordErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _538 => _538.password]), password);
26677
26677
  const handleKeyDown = (event) => {
26678
26678
  if (event.key === "Enter" && !fieldsDisabled && !submitDisabled) {
26679
26679
  onSubmit();
@@ -26780,11 +26780,11 @@ function OpenFrameSsoSignUpForm({
26780
26780
  className
26781
26781
  }) {
26782
26782
  const fieldsDisabled = disabled || loading;
26783
- const emailErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _539 => _539.email]), email);
26784
- const firstNameErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _540 => _540.firstName]), firstName);
26785
- const lastNameErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _541 => _541.lastName]), lastName);
26786
- const passwordErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _542 => _542.password]), password);
26787
- const confirmErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _543 => _543.confirmPassword]), confirmPassword);
26783
+ const emailErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _539 => _539.email]), email);
26784
+ const firstNameErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _540 => _540.firstName]), firstName);
26785
+ const lastNameErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _541 => _541.lastName]), lastName);
26786
+ const passwordErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _542 => _542.password]), password);
26787
+ const confirmErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _543 => _543.confirmPassword]), confirmPassword);
26788
26788
  const handleKeyDown = (event) => {
26789
26789
  if (event.key === "Enter" && !fieldsDisabled && !submitDisabled) {
26790
26790
  onSubmit();
@@ -26927,8 +26927,8 @@ function PasswordResetForm({
26927
26927
  className
26928
26928
  }) {
26929
26929
  const fieldsDisabled = disabled || loading;
26930
- const passwordErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _544 => _544.password]), password);
26931
- const confirmErr = _chunk7CZ4MJSIcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _545 => _545.confirmPassword]), confirmPassword);
26930
+ const passwordErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _544 => _544.password]), password);
26931
+ const confirmErr = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _545 => _545.confirmPassword]), confirmPassword);
26932
26932
  const handleKeyDown = (event) => {
26933
26933
  if (event.key === "Enter" && !fieldsDisabled && !submitDisabled) {
26934
26934
  onSubmit();
@@ -29217,7 +29217,7 @@ function PlatformFilterComponent({
29217
29217
  variant: selectedPlatform === platform.value ? "accent" : "outline",
29218
29218
  size: size2,
29219
29219
  onClick: () => onPlatformChange(platform.value),
29220
- leftIcon: showIcons ? _chunk7CZ4MJSIcjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
29220
+ leftIcon: showIcons ? _chunkVIJARDBMcjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
29221
29221
  className: "text-h3",
29222
29222
  children: platform.label
29223
29223
  },
@@ -31988,7 +31988,7 @@ var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
31988
31988
  if (level) onPermissionChange(categoryId, policy.id, level);
31989
31989
  };
31990
31990
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-bg border-b last:border-b-0 border-ods-border flex gap-[var(--spacing-system-m)] items-start md:items-center px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)]", children: [
31991
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8 shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.ToolIcon, { toolType: policy.toolName, size: 16 }) }),
31991
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8 shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVIJARDBMcjs.ToolIcon, { toolType: policy.toolName, size: 16 }) }),
31992
31992
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col min-w-0", children: [
31993
31993
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary truncate", title: policy.name, children: policy.name }),
31994
31994
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary break-all", children: policy.commandPattern }),
@@ -32300,8 +32300,8 @@ function WaitlistForm({
32300
32300
  const [email, setEmail] = _react.useState.call(void 0, defaultEmail);
32301
32301
  const [phone, setPhone] = _react.useState.call(void 0, defaultPhone);
32302
32302
  const [countryCode, setCountryCode] = _react.useState.call(void 0, "US");
32303
- const { toast } = _chunk7CZ4MJSIcjs.useToast.call(void 0, );
32304
- const { honeypotInputProps, getSignals, resetSignals } = _chunk7CZ4MJSIcjs.useHumanitySignals.call(void 0, );
32303
+ const { toast } = _chunkVIJARDBMcjs.useToast.call(void 0, );
32304
+ const { honeypotInputProps, getSignals, resetSignals } = _chunkVIJARDBMcjs.useHumanitySignals.call(void 0, );
32305
32305
  const [smsConsent, setSmsConsent] = _react.useState.call(void 0, false);
32306
32306
  const [isClient, setIsClient] = _react.useState.call(void 0, false);
32307
32307
  const [isPhoneInvalid, setIsPhoneInvalid] = _react.useState.call(void 0, false);
@@ -33283,7 +33283,7 @@ function NotificationTile({
33283
33283
  onError: () => setFailedImageUrl(image),
33284
33284
  className: "size-4 rounded-[2px] object-cover"
33285
33285
  }
33286
- ) : _nullishCoalesce(icon, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "size-1.5 rounded-full", _chunk7CZ4MJSIcjs.dotColorByVariant[accentVariant]) })))
33286
+ ) : _nullishCoalesce(icon, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "size-1.5 rounded-full", _chunkVIJARDBMcjs.dotColorByVariant[accentVariant]) })))
33287
33287
  }
33288
33288
  ),
33289
33289
  type ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -33331,7 +33331,7 @@ function NotificationTile({
33331
33331
  "aria-hidden": true,
33332
33332
  className: _chunkFIG2RKZFcjs.cn.call(void 0,
33333
33333
  "absolute inset-x-0 -bottom-px h-1 origin-left",
33334
- _chunk7CZ4MJSIcjs.progressColorByVariant[accentVariant]
33334
+ _chunkVIJARDBMcjs.progressColorByVariant[accentVariant]
33335
33335
  ),
33336
33336
  style: {
33337
33337
  animation: `toast-progress ${liveDurationMs}ms linear forwards`,
@@ -33554,7 +33554,7 @@ function ShowNotificationsToggleRow({ checked, onChange }) {
33554
33554
  ] });
33555
33555
  }
33556
33556
  function DesktopNotificationsToggleRow({ checked, onChange }) {
33557
- const { supported, permission, request } = _chunk7CZ4MJSIcjs.useNotificationPermission.call(void 0, );
33557
+ const { supported, permission, request } = _chunkVIJARDBMcjs.useNotificationPermission.call(void 0, );
33558
33558
  if (!supported) return null;
33559
33559
  const blocked = permission === "denied";
33560
33560
  const handleChange = async (value) => {
@@ -35012,7 +35012,7 @@ function EmptyState2() {
35012
35012
  // src/components/features/board/use-board-collapse.ts
35013
35013
 
35014
35014
  function useBoardCollapse(storageKey) {
35015
- const [persisted, setPersisted] = _chunk7CZ4MJSIcjs.useLocalStorage.call(void 0,
35015
+ const [persisted, setPersisted] = _chunkVIJARDBMcjs.useLocalStorage.call(void 0,
35016
35016
  _nullishCoalesce(storageKey, () => ( "__board_collapse_unused__")),
35017
35017
  {}
35018
35018
  );
@@ -35062,7 +35062,7 @@ function Board({
35062
35062
  onThumbPointerDown,
35063
35063
  onThumbPointerMove,
35064
35064
  onThumbPointerUp
35065
- } = _chunk7CZ4MJSIcjs.useHorizontalScrollbar.call(void 0, );
35065
+ } = _chunkVIJARDBMcjs.useHorizontalScrollbar.call(void 0, );
35066
35066
  const [items, setItems] = React105.useState(columns);
35067
35067
  const isDraggingRef = React105.useRef(false);
35068
35068
  React105.useEffect(() => {
@@ -35420,8 +35420,8 @@ var MOBILE_NAV_PANEL_ID = "mobile-nav-panel";
35420
35420
  function MobileNavPanel({ isOpen, config }) {
35421
35421
  const panelRef = _react.useRef.call(void 0, null);
35422
35422
  _overlays.usePreventScroll.call(void 0, { isDisabled: !isOpen });
35423
- _chunk7CZ4MJSIcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: config.onClose });
35424
- const headerHeight = _chunk7CZ4MJSIcjs.useHeaderHeight.call(void 0, 64, { enabled: isOpen });
35423
+ _chunkVIJARDBMcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: config.onClose });
35424
+ const headerHeight = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, 64, { enabled: isOpen });
35425
35425
  if (!isOpen) return null;
35426
35426
  const renderNavigationItem = (item) => {
35427
35427
  if (item.element) {
@@ -35914,11 +35914,11 @@ _chunkPYR4LVAFcjs.init_button2.call(void 0, );
35914
35914
  function SlidingSidebar({ config }) {
35915
35915
  const [expandedItems, setExpandedItems] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
35916
35916
  const [mounted, setMounted] = _react.useState.call(void 0, false);
35917
- const headerHeight = _chunk7CZ4MJSIcjs.useHeaderHeight.call(void 0, );
35917
+ const headerHeight = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, );
35918
35918
  const asideRef = _react.useRef.call(void 0, null);
35919
35919
  const prefersReducedMotion2 = _framermotion.useReducedMotion.call(void 0, );
35920
35920
  _overlays.usePreventScroll.call(void 0, { isDisabled: !config.isOpen });
35921
- _chunk7CZ4MJSIcjs.useFocusTrap.call(void 0, asideRef, config.isOpen, { onEscape: config.onClose, contain: false });
35921
+ _chunkVIJARDBMcjs.useFocusTrap.call(void 0, asideRef, config.isOpen, { onEscape: config.onClose, contain: false });
35922
35922
  _react.useEffect.call(void 0, () => {
35923
35923
  setMounted(true);
35924
35924
  }, []);
@@ -36156,7 +36156,7 @@ function useSectionNavigation(sections, options) {
36156
36156
  if (!targetElement) return;
36157
36157
  isScrollingFromClick.current = true;
36158
36158
  setActiveSection(sectionId);
36159
- _chunk7CZ4MJSIcjs.scrollElementIntoView.call(void 0, targetElement, { headerOffset: offset2 });
36159
+ _chunkVIJARDBMcjs.scrollElementIntoView.call(void 0, targetElement, { headerOffset: offset2 });
36160
36160
  setTimeout(() => {
36161
36161
  isScrollingFromClick.current = false;
36162
36162
  }, 500);
@@ -36342,10 +36342,10 @@ var MINIMIZED_WIDTH = 56;
36342
36342
  var EXPANDED_WIDTH = 224;
36343
36343
  var STORAGE_KEY = "of.navigationSidebar.minimized";
36344
36344
  function NavigationSidebar({ config, disabled = false }) {
36345
- const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useMdUp.call(void 0, ), () => ( false));
36346
- const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useLgUp.call(void 0, ), () => ( false));
36345
+ const isMdUp = _nullishCoalesce(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( false));
36346
+ const isLgUp = _nullishCoalesce(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
36347
36347
  const isTablet = isMdUp && !isLgUp;
36348
- const [desktopMinimized, setDesktopMinimized] = _chunk7CZ4MJSIcjs.useLocalStorage.call(void 0,
36348
+ const [desktopMinimized, setDesktopMinimized] = _chunkVIJARDBMcjs.useLocalStorage.call(void 0,
36349
36349
  STORAGE_KEY,
36350
36350
  _nullishCoalesce(config.minimized, () => ( false))
36351
36351
  );
@@ -36669,7 +36669,7 @@ var AppHeader = React120.default.memo(function AppHeader2({
36669
36669
  onToggleMobileMenu,
36670
36670
  disabled = false
36671
36671
  }) {
36672
- const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useMdUp.call(void 0, ), () => ( false));
36672
+ const isMdUp = _nullishCoalesce(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( false));
36673
36673
  const dimmedClass = disabled ? "pointer-events-none opacity-50" : "";
36674
36674
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
36675
36675
  "header",
@@ -36868,7 +36868,7 @@ var MobileBurgerMenu = React120.default.memo(function MobileBurgerMenu2({
36868
36868
  }) {
36869
36869
  const panelRef = _react.useRef.call(void 0, null);
36870
36870
  _overlays.usePreventScroll.call(void 0, { isDisabled: !isOpen });
36871
- _chunk7CZ4MJSIcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: onClose });
36871
+ _chunkVIJARDBMcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: onClose });
36872
36872
  const handleItemClick = _react.useCallback.call(void 0, (item) => {
36873
36873
  if (item.onClick) {
36874
36874
  item.onClick();
@@ -37431,7 +37431,7 @@ var ToolBadge = ({
37431
37431
  }) => {
37432
37432
  const label = getToolLabel(toolType);
37433
37433
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex items-center gap-1 text-ods-text-secondary", className), children: [
37434
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
37434
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVIJARDBMcjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
37435
37435
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: label })
37436
37436
  ] });
37437
37437
  };
@@ -37803,7 +37803,7 @@ function OnboardingWalkthrough({
37803
37803
  isStepSkipped,
37804
37804
  allStepsComplete,
37805
37805
  markMultipleComplete
37806
- } = _chunk7CZ4MJSIcjs.useOnboardingState.call(void 0, storageKey);
37806
+ } = _chunkVIJARDBMcjs.useOnboardingState.call(void 0, storageKey);
37807
37807
  const hasAutoMarkedRef = _react.useRef.call(void 0, false);
37808
37808
  const autoMarkingInProgressRef = _react.useRef.call(void 0, false);
37809
37809
  const lastCompletionStatusRef = _react.useRef.call(void 0, null);
@@ -38010,7 +38010,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
38010
38010
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-primary", children: log.title }),
38011
38011
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
38012
38012
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 text-ods-text-secondary", children: formatTimestamp(log.timestamp) }),
38013
- log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.ToolIcon, { toolType: log.toolType, size: 16 })
38013
+ log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVIJARDBMcjs.ToolIcon, { toolType: log.toolType, size: 16 })
38014
38014
  ] })
38015
38015
  ] })
38016
38016
  ]
@@ -38147,7 +38147,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
38147
38147
  }
38148
38148
  function ServiceCardRowItem({ row }) {
38149
38149
  const [revealed, setRevealed] = _react.useState.call(void 0, false);
38150
- const { copy, copied } = _chunk7CZ4MJSIcjs.useCopyToClipboard.call(void 0, );
38150
+ const { copy, copied } = _chunkVIJARDBMcjs.useCopyToClipboard.call(void 0, );
38151
38151
  const actions = _react.useMemo.call(void 0, () => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
38152
38152
  const displayValue = row.isSecret ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.value });
38153
38153
  const handleCopy = () => copy(_nullishCoalesce(row.copyValue, () => ( row.value)));
@@ -38809,7 +38809,7 @@ function TableHeader({
38809
38809
  }
38810
38810
  return sortDirection === "asc" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGD345ZVcjs.Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGD345ZVcjs.Arrow01DownIcon, { className: "w-4 h-4 text-ods-accent" });
38811
38811
  };
38812
- const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useLgUp.call(void 0, ), () => ( false));
38812
+ const isLgUp = _nullishCoalesce(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
38813
38813
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
38814
38814
  "div",
38815
38815
  {
@@ -39732,7 +39732,7 @@ function QueryReportTable({
39732
39732
  onThumbPointerDown,
39733
39733
  onThumbPointerMove,
39734
39734
  onThumbPointerUp
39735
- } = _chunk7CZ4MJSIcjs.useHorizontalScrollbar.call(void 0, );
39735
+ } = _chunkVIJARDBMcjs.useHorizontalScrollbar.call(void 0, );
39736
39736
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex flex-col w-full", isCompact ? "gap-0" : "gap-6", className), children: [
39737
39737
  !isCompact && (title || headerActions || showExport && data.length > 0) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-end justify-between pt-6", children: [
39738
39738
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h2 text-ods-text-primary", children: title }),
@@ -39963,7 +39963,7 @@ function DataTableHeader({
39963
39963
  onSortChange
39964
39964
  }) {
39965
39965
  const table = useDataTableContext();
39966
- const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useLgUp.call(void 0, ), () => ( false));
39966
+ const isLgUp = _nullishCoalesce(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
39967
39967
  const headerGroup = table.getHeaderGroups()[0];
39968
39968
  if (!headerGroup) return null;
39969
39969
  const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
@@ -40534,7 +40534,7 @@ function SearchInput({
40534
40534
  }) {
40535
40535
  const [internalValue, setInternalValue] = React122.useState(defaultValue);
40536
40536
  const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
40537
- const debouncedValue = _chunk7CZ4MJSIcjs.useDebounce.call(void 0, currentValue, debounceMs);
40537
+ const debouncedValue = _chunkVIJARDBMcjs.useDebounce.call(void 0, currentValue, debounceMs);
40538
40538
  const [isOpen, setIsOpen] = React122.useState(false);
40539
40539
  const [highlightedIndex, setHighlightedIndex] = React122.useState(-1);
40540
40540
  const containerRef = React122.useRef(null);
@@ -40546,7 +40546,7 @@ function SearchInput({
40546
40546
  textMeasureRef,
40547
40547
  badgeRef,
40548
40548
  inputRef
40549
- } = _chunk7CZ4MJSIcjs.useAutoLimitTags.call(void 0, {
40549
+ } = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
40550
40550
  count: filterChips.length,
40551
40551
  limitTags,
40552
40552
  // When chips exist, pass empty placeholder so the hook only reserves input minWidth,
@@ -41013,7 +41013,7 @@ function TagSearchInput({
41013
41013
  textMeasureRef,
41014
41014
  badgeRef,
41015
41015
  inputRef
41016
- } = _chunk7CZ4MJSIcjs.useAutoLimitTags.call(void 0, {
41016
+ } = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
41017
41017
  count: tags.length,
41018
41018
  limitTags,
41019
41019
  placeholder: currentPlaceholder
@@ -45711,7 +45711,7 @@ function useChatCardItem(type, id) {
45711
45711
  queryKey: ["chat-card-item", type, id],
45712
45712
  queryFn: async () => {
45713
45713
  if (!url) return null;
45714
- const res = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url);
45714
+ const res = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url);
45715
45715
  if (!res.ok) return null;
45716
45716
  const data = await res.json();
45717
45717
  const items = extractItems(data);
@@ -46956,8 +46956,10 @@ function useChunkCatchup({
46956
46956
  }) {
46957
46957
  const processedSequenceKeys = _react.useRef.call(void 0, /* @__PURE__ */ new Set());
46958
46958
  const lastSequenceId = _react.useRef.call(void 0, null);
46959
+ const lastSequenceIdByType = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
46959
46960
  const fetchingInProgress = _react.useRef.call(void 0, false);
46960
46961
  const lastFetchParams = _react.useRef.call(void 0, null);
46962
+ const pendingCatchupRef = _react.useRef.call(void 0, null);
46961
46963
  const chunkBuffer = _react.useRef.call(void 0, []);
46962
46964
  const bufferUntilInitialCatchupComplete = _react.useRef.call(void 0, false);
46963
46965
  const hasCompletedInitialCatchup = _react.useRef.call(void 0, false);
@@ -46976,8 +46978,14 @@ function useChunkCatchup({
46976
46978
  }
46977
46979
  if (chunk.sequenceId !== void 0 && chunk.sequenceId !== null) {
46978
46980
  const chunkType = typeof chunk.type === "string" ? chunk.type : "";
46979
- processedSequenceKeys.current.add(makeSeqKey(messageType, chunkType, chunk.sequenceId));
46981
+ const key = makeSeqKey(messageType, chunkType, chunk.sequenceId);
46982
+ if (processedSequenceKeys.current.has(key)) return true;
46983
+ processedSequenceKeys.current.add(key);
46980
46984
  lastSequenceId.current = chunk.sequenceId;
46985
+ const prevTypeSeq = lastSequenceIdByType.current.get(messageType);
46986
+ if (prevTypeSeq === void 0 || chunk.sequenceId > prevTypeSeq) {
46987
+ lastSequenceIdByType.current.set(messageType, chunk.sequenceId);
46988
+ }
46981
46989
  }
46982
46990
  onChunkReceivedRef.current(chunk, messageType);
46983
46991
  return true;
@@ -46987,8 +46995,8 @@ function useChunkCatchup({
46987
46995
  const buffered = [...chunkBuffer.current];
46988
46996
  chunkBuffer.current = [];
46989
46997
  buffered.sort((a, b) => {
46990
- const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( 0));
46991
- const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( 0));
46998
+ const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
46999
+ const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
46992
47000
  return seqA - seqB;
46993
47001
  });
46994
47002
  buffered.forEach(({ chunk, messageType }) => {
@@ -47003,9 +47011,14 @@ function useChunkCatchup({
47003
47011
  return;
47004
47012
  }
47005
47013
  if (hasCompletedInitialCatchup.current) {
47014
+ if (bufferUntilInitialCatchupComplete.current) {
47015
+ bufferUntilInitialCatchupComplete.current = false;
47016
+ flushBufferedRealtimeChunks();
47017
+ }
47006
47018
  return;
47007
47019
  }
47008
47020
  if (fetchingInProgress.current) {
47021
+ pendingCatchupRef.current = { dialogId: dialogId2, fromSequenceId: _nullishCoalesce(fromSequenceId, () => ( lastSequenceId.current)) };
47009
47022
  return;
47010
47023
  }
47011
47024
  if (lastFetchParams.current && lastFetchParams.current.dialogId === dialogId2 && lastFetchParams.current.fromSequenceId === fromSequenceId) {
@@ -47022,7 +47035,8 @@ function useChunkCatchup({
47022
47035
  try {
47023
47036
  const chunkPromises = chatTypes2.map(async (chatType) => {
47024
47037
  try {
47025
- const chunks = await fetchChunks2(dialogId2, chatType, fromSequenceId);
47038
+ const typeFromSequenceId = fromSequenceId === void 0 ? void 0 : _nullishCoalesce(lastSequenceIdByType.current.get(getChatTypeMessageType(chatType)), () => ( null));
47039
+ const chunks = await fetchChunks2(dialogId2, chatType, typeFromSequenceId);
47026
47040
  const messageType = getChatTypeMessageType(chatType);
47027
47041
  return chunks.map((chunk) => ({ chunk, messageType }));
47028
47042
  } catch (error) {
@@ -47042,49 +47056,66 @@ function useChunkCatchup({
47042
47056
  chunkBuffer.current = [];
47043
47057
  const allChunks = [...allCatchupChunks, ...bufferedNatsChunks];
47044
47058
  allChunks.sort((a, b) => {
47045
- const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( 0));
47046
- const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( 0));
47059
+ const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47060
+ const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47047
47061
  return seqA - seqB;
47048
47062
  });
47049
47063
  const uniqueAllChunks = [];
47050
47064
  const seenInBatch = /* @__PURE__ */ new Set();
47051
47065
  for (const item of allChunks) {
47052
- const k = makeBatchDedupKey(item);
47053
- if (seenInBatch.has(k)) continue;
47054
- seenInBatch.add(k);
47055
- uniqueAllChunks.push(item);
47056
- }
47057
- let lastMessageStartSeqId = null;
47058
- let lastMessageEndSeqId = null;
47059
- for (let i = uniqueAllChunks.length - 1; i >= 0; i--) {
47060
- const seq = uniqueAllChunks[i].chunk.sequenceId;
47061
- if (uniqueAllChunks[i].chunk.type === MESSAGE_TYPE.MESSAGE_END && seq !== void 0 && seq !== null) {
47062
- lastMessageEndSeqId = seq;
47063
- break;
47066
+ const hasSeq = item.chunk.sequenceId !== void 0 && item.chunk.sequenceId !== null;
47067
+ if (hasSeq) {
47068
+ const k = makeBatchDedupKey(item);
47069
+ if (seenInBatch.has(k)) continue;
47070
+ seenInBatch.add(k);
47064
47071
  }
47072
+ uniqueAllChunks.push(item);
47065
47073
  }
47066
- for (let i = uniqueAllChunks.length - 1; i >= 0; i--) {
47067
- const chunk = uniqueAllChunks[i].chunk;
47068
- const seq = chunk.sequenceId;
47069
- if (chunk.type === MESSAGE_TYPE.MESSAGE_START && seq !== void 0 && seq !== null) {
47070
- if (lastMessageEndSeqId === null || seq > lastMessageEndSeqId) {
47071
- lastMessageStartSeqId = seq;
47074
+ const hasNoSeq = (item) => item.chunk.sequenceId === void 0 || item.chunk.sequenceId === null;
47075
+ const byType = /* @__PURE__ */ new Map();
47076
+ for (const item of uniqueAllChunks) {
47077
+ const list = byType.get(item.messageType);
47078
+ if (list) list.push(item);
47079
+ else byType.set(item.messageType, [item]);
47080
+ }
47081
+ const chunksToProcess = [];
47082
+ for (const items of byType.values()) {
47083
+ let lastMessageStartSeqId = null;
47084
+ let lastMessageEndSeqId = null;
47085
+ for (let i = items.length - 1; i >= 0; i--) {
47086
+ const seq = items[i].chunk.sequenceId;
47087
+ if (items[i].chunk.type === MESSAGE_TYPE.MESSAGE_END && seq !== void 0 && seq !== null) {
47088
+ lastMessageEndSeqId = seq;
47072
47089
  break;
47073
47090
  }
47074
47091
  }
47092
+ for (let i = items.length - 1; i >= 0; i--) {
47093
+ const chunk = items[i].chunk;
47094
+ const seq = chunk.sequenceId;
47095
+ if (chunk.type === MESSAGE_TYPE.MESSAGE_START && seq !== void 0 && seq !== null) {
47096
+ if (lastMessageEndSeqId === null || seq > lastMessageEndSeqId) {
47097
+ lastMessageStartSeqId = seq;
47098
+ break;
47099
+ }
47100
+ }
47101
+ }
47102
+ if (lastMessageStartSeqId !== null) {
47103
+ chunksToProcess.push(
47104
+ ...items.filter((item) => hasNoSeq(item) || item.chunk.sequenceId >= lastMessageStartSeqId)
47105
+ );
47106
+ } else if (lastMessageEndSeqId !== null) {
47107
+ chunksToProcess.push(
47108
+ ...items.filter((item) => hasNoSeq(item) || item.chunk.sequenceId > lastMessageEndSeqId)
47109
+ );
47110
+ } else {
47111
+ chunksToProcess.push(...items);
47112
+ }
47075
47113
  }
47076
- let chunksToProcess;
47077
- if (lastMessageStartSeqId !== null) {
47078
- chunksToProcess = uniqueAllChunks.filter(
47079
- (item) => item.chunk.sequenceId !== void 0 && item.chunk.sequenceId >= lastMessageStartSeqId
47080
- );
47081
- } else if (lastMessageEndSeqId !== null) {
47082
- chunksToProcess = uniqueAllChunks.filter(
47083
- (item) => item.chunk.sequenceId !== void 0 && item.chunk.sequenceId > lastMessageEndSeqId
47084
- );
47085
- } else {
47086
- chunksToProcess = uniqueAllChunks;
47087
- }
47114
+ chunksToProcess.sort((a, b) => {
47115
+ const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47116
+ const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47117
+ return seqA - seqB;
47118
+ });
47088
47119
  chunksToProcess.forEach(({ chunk, messageType }) => {
47089
47120
  if (chunk.sequenceId !== void 0 && chunk.sequenceId !== null) {
47090
47121
  const chunkType = typeof chunk.type === "string" ? chunk.type : "";
@@ -47092,6 +47123,10 @@ function useChunkCatchup({
47092
47123
  if (processedSequenceKeys.current.has(key)) return;
47093
47124
  processedSequenceKeys.current.add(key);
47094
47125
  lastSequenceId.current = chunk.sequenceId;
47126
+ const prevTypeSeq = lastSequenceIdByType.current.get(messageType);
47127
+ if (prevTypeSeq === void 0 || chunk.sequenceId > prevTypeSeq) {
47128
+ lastSequenceIdByType.current.set(messageType, chunk.sequenceId);
47129
+ }
47095
47130
  }
47096
47131
  onChunkReceivedRef.current(chunk, messageType);
47097
47132
  });
@@ -47100,26 +47135,55 @@ function useChunkCatchup({
47100
47135
  } catch (error) {
47101
47136
  console.error("Error during chunk catchup:", error);
47102
47137
  } finally {
47103
- fetchingInProgress.current = false;
47104
- if (bufferUntilInitialCatchupComplete.current) {
47105
- bufferUntilInitialCatchupComplete.current = false;
47106
- hasCompletedInitialCatchup.current = true;
47107
- flushBufferedRealtimeChunks();
47138
+ if (dialogId2 !== dialogIdRef.current) {
47139
+ if (_optionalChain([pendingCatchupRef, 'access', _1115 => _1115.current, 'optionalAccess', _1116 => _1116.dialogId]) === dialogId2) {
47140
+ pendingCatchupRef.current = null;
47141
+ }
47142
+ } else {
47143
+ fetchingInProgress.current = false;
47144
+ const pending = pendingCatchupRef.current;
47145
+ if (pending) {
47146
+ pendingCatchupRef.current = null;
47147
+ if (pending.dialogId === dialogId2) {
47148
+ hasCompletedInitialCatchup.current = false;
47149
+ lastFetchParams.current = null;
47150
+ bufferUntilInitialCatchupComplete.current = true;
47151
+ try {
47152
+ await _optionalChain([catchUpChunksRef, 'access', _1117 => _1117.current, 'optionalCall', _1118 => _1118(pending.fromSequenceId)]);
47153
+ } catch (rerunError) {
47154
+ console.error("Queued catch-up re-run failed:", rerunError);
47155
+ }
47156
+ } else if (bufferUntilInitialCatchupComplete.current) {
47157
+ bufferUntilInitialCatchupComplete.current = false;
47158
+ hasCompletedInitialCatchup.current = true;
47159
+ flushBufferedRealtimeChunks();
47160
+ }
47161
+ } else if (bufferUntilInitialCatchupComplete.current) {
47162
+ bufferUntilInitialCatchupComplete.current = false;
47163
+ hasCompletedInitialCatchup.current = true;
47164
+ flushBufferedRealtimeChunks();
47165
+ }
47108
47166
  }
47109
47167
  }
47110
47168
  }, [flushBufferedRealtimeChunks]);
47169
+ const catchUpChunksRef = _react.useRef.call(void 0, null);
47170
+ catchUpChunksRef.current = catchUpChunks;
47111
47171
  const resetChunkTracking = _react.useCallback.call(void 0, () => {
47112
47172
  processedSequenceKeys.current.clear();
47113
47173
  lastSequenceId.current = null;
47174
+ lastSequenceIdByType.current.clear();
47114
47175
  fetchingInProgress.current = false;
47115
47176
  lastFetchParams.current = null;
47177
+ pendingCatchupRef.current = null;
47116
47178
  chunkBuffer.current = [];
47117
47179
  bufferUntilInitialCatchupComplete.current = false;
47118
47180
  hasCompletedInitialCatchup.current = false;
47119
47181
  }, []);
47120
47182
  const startInitialBuffering = _react.useCallback.call(void 0, () => {
47121
- chunkBuffer.current = [];
47122
- bufferUntilInitialCatchupComplete.current = true;
47183
+ if (!bufferUntilInitialCatchupComplete.current) {
47184
+ chunkBuffer.current = [];
47185
+ bufferUntilInitialCatchupComplete.current = true;
47186
+ }
47123
47187
  hasCompletedInitialCatchup.current = false;
47124
47188
  }, []);
47125
47189
  const isBufferingActive = _react.useCallback.call(void 0, () => bufferUntilInitialCatchupComplete.current, []);
@@ -47128,8 +47192,10 @@ function useChunkCatchup({
47128
47192
  const fromSeq = lastSequenceId.current;
47129
47193
  hasCompletedInitialCatchup.current = false;
47130
47194
  lastFetchParams.current = null;
47131
- bufferUntilInitialCatchupComplete.current = true;
47132
- chunkBuffer.current = [];
47195
+ if (!bufferUntilInitialCatchupComplete.current) {
47196
+ chunkBuffer.current = [];
47197
+ bufferUntilInitialCatchupComplete.current = true;
47198
+ }
47133
47199
  await catchUpChunks(fromSeq);
47134
47200
  }, [catchUpChunks]);
47135
47201
  return {
@@ -47147,7 +47213,7 @@ function useChunkCatchup({
47147
47213
 
47148
47214
  var EMPTY_FRAME = { messages: [], phase: "idle", typing: false, delayMs: 0 };
47149
47215
  function prefersReducedMotion() {
47150
- return typeof window !== "undefined" && _optionalChain([window, 'access', _1115 => _1115.matchMedia, 'optionalCall', _1116 => _1116("(prefers-reduced-motion: reduce)"), 'access', _1117 => _1117.matches]) === true;
47216
+ return typeof window !== "undefined" && _optionalChain([window, 'access', _1119 => _1119.matchMedia, 'optionalCall', _1120 => _1120("(prefers-reduced-motion: reduce)"), 'access', _1121 => _1121.matches]) === true;
47151
47217
  }
47152
47218
  function useScriptedStream(frames, resetKey, enabled = true) {
47153
47219
  const [index, setIndex] = _react.useState.call(void 0, 0);
@@ -47159,7 +47225,7 @@ function useScriptedStream(frames, resetKey, enabled = true) {
47159
47225
  }
47160
47226
  _react.useEffect.call(void 0, () => {
47161
47227
  setReducedMotion(prefersReducedMotion());
47162
- const mq = _optionalChain([window, 'access', _1118 => _1118.matchMedia, 'optionalCall', _1119 => _1119("(prefers-reduced-motion: reduce)")]);
47228
+ const mq = _optionalChain([window, 'access', _1122 => _1122.matchMedia, 'optionalCall', _1123 => _1123("(prefers-reduced-motion: reduce)")]);
47163
47229
  if (!mq) return;
47164
47230
  const onChange = () => setReducedMotion(mq.matches);
47165
47231
  mq.addEventListener("change", onChange);
@@ -47251,7 +47317,7 @@ function useJetStreamDialogSubscription({
47251
47317
  _react.useEffect.call(void 0, () => {
47252
47318
  if (!enabled || !wsUrl) {
47253
47319
  if (currentWsUrlRef.current && clientRef.current) {
47254
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47320
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47255
47321
  clientRef.current = null;
47256
47322
  currentWsUrlRef.current = "";
47257
47323
  setIsConnected(false);
@@ -47262,13 +47328,13 @@ function useJetStreamDialogSubscription({
47262
47328
  return;
47263
47329
  }
47264
47330
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
47265
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47331
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47266
47332
  clientRef.current = null;
47267
47333
  setIsConnected(false);
47268
47334
  }
47269
47335
  currentWsUrlRef.current = wsUrl;
47270
47336
  const cfg = clientConfigRef.current;
47271
- const sharedConn = _chunkPXXS27EEcjs.acquireClient.call(void 0, wsUrl, {
47337
+ const sharedConn = _chunkW24U7ZUVcjs.acquireClient.call(void 0, wsUrl, {
47272
47338
  name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend-jetstream")),
47273
47339
  user: _nullishCoalesce(cfg.user, () => ( "machine")),
47274
47340
  pass: _nullishCoalesce(cfg.pass, () => ( ""))
@@ -47285,10 +47351,10 @@ function useJetStreamDialogSubscription({
47285
47351
  subscriptionRef.current = null;
47286
47352
  }
47287
47353
  };
47288
- const lifecycle = _chunkPXXS27EEcjs.startConnectionLifecycle.call(void 0, {
47354
+ const lifecycle = _chunkW24U7ZUVcjs.startConnectionLifecycle.call(void 0, {
47289
47355
  conn: sharedConn,
47290
47356
  wsUrl,
47291
- onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1120 => _1120.current, 'optionalCall', _1121 => _1121()]),
47357
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1124 => _1124.current, 'optionalCall', _1125 => _1125()]),
47292
47358
  backoff: reconnectionBackoffRef.current,
47293
47359
  getFreshUrl: () => getNatsWsUrlRef.current(),
47294
47360
  // JetStream emits 'error' for protocol-level failures (e.g. -ERR Permissions
@@ -47303,7 +47369,7 @@ function useJetStreamDialogSubscription({
47303
47369
  setReconnectionCount((c) => c + 1);
47304
47370
  }
47305
47371
  hadConnectionBeforeRef.current = true;
47306
- _optionalChain([onConnectRef, 'access', _1122 => _1122.current, 'optionalCall', _1123 => _1123()]);
47372
+ _optionalChain([onConnectRef, 'access', _1126 => _1126.current, 'optionalCall', _1127 => _1127()]);
47307
47373
  }
47308
47374
  if (status === "error") {
47309
47375
  console.warn("[JetStream] NATS protocol error:", evt.data);
@@ -47313,7 +47379,7 @@ function useJetStreamDialogSubscription({
47313
47379
  setIsConnected(false);
47314
47380
  setIsSubscribed(false);
47315
47381
  tearDownSubscription();
47316
- _optionalChain([onDisconnectRef, 'access', _1124 => _1124.current, 'optionalCall', _1125 => _1125()]);
47382
+ _optionalChain([onDisconnectRef, 'access', _1128 => _1128.current, 'optionalCall', _1129 => _1129()]);
47317
47383
  }
47318
47384
  }
47319
47385
  });
@@ -47323,12 +47389,16 @@ function useJetStreamDialogSubscription({
47323
47389
  setIsSubscribed(false);
47324
47390
  tearDownSubscription();
47325
47391
  if (clientRef.current && currentWsUrlRef.current) {
47326
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47392
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47327
47393
  clientRef.current = null;
47328
47394
  currentWsUrlRef.current = "";
47329
47395
  }
47330
47396
  };
47331
47397
  }, [enabled, wsUrl]);
47398
+ _react.useEffect.call(void 0, () => {
47399
+ highestStreamSeqRef.current = null;
47400
+ setCurrentStreamSeq(null);
47401
+ }, [dialogId]);
47332
47402
  _react.useEffect.call(void 0, () => {
47333
47403
  if (!enabled || !dialogId || !isConnected) {
47334
47404
  if (subscriptionRef.current) {
@@ -47392,7 +47462,7 @@ function useJetStreamDialogSubscription({
47392
47462
  }
47393
47463
  subscriptionRef.current = handle;
47394
47464
  setIsSubscribed(true);
47395
- _optionalChain([onSubscribedRef, 'access', _1126 => _1126.current, 'optionalCall', _1127 => _1127()]);
47465
+ _optionalChain([onSubscribedRef, 'access', _1130 => _1130.current, 'optionalCall', _1131 => _1131()]);
47396
47466
  } catch (e52) {
47397
47467
  if (!cancelled) {
47398
47468
  setIsSubscribed(false);
@@ -47412,10 +47482,6 @@ function useJetStreamDialogSubscription({
47412
47482
  setIsSubscribed(false);
47413
47483
  };
47414
47484
  }, [enabled, dialogId, isConnected, streamName, topic, reconnectionCount]);
47415
- _react.useEffect.call(void 0, () => {
47416
- highestStreamSeqRef.current = null;
47417
- setCurrentStreamSeq(null);
47418
- }, [dialogId]);
47419
47485
  return { isConnected, isSubscribed, reconnectionCount, currentStreamSeq };
47420
47486
  }
47421
47487
 
@@ -47477,7 +47543,7 @@ function useNatsDialogSubscription({
47477
47543
  _react.useEffect.call(void 0, () => {
47478
47544
  if (!enabled || !wsUrl) {
47479
47545
  if (currentWsUrlRef.current && clientRef.current) {
47480
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47546
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47481
47547
  clientRef.current = null;
47482
47548
  currentWsUrlRef.current = "";
47483
47549
  setIsConnected(false);
@@ -47488,13 +47554,13 @@ function useNatsDialogSubscription({
47488
47554
  return;
47489
47555
  }
47490
47556
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
47491
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47557
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47492
47558
  clientRef.current = null;
47493
47559
  setIsConnected(false);
47494
47560
  }
47495
47561
  currentWsUrlRef.current = wsUrl;
47496
47562
  const cfg = clientConfigRef.current;
47497
- const sharedConn = _chunkPXXS27EEcjs.acquireClient.call(void 0, wsUrl, {
47563
+ const sharedConn = _chunkW24U7ZUVcjs.acquireClient.call(void 0, wsUrl, {
47498
47564
  name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend")),
47499
47565
  user: _nullishCoalesce(cfg.user, () => ( "machine")),
47500
47566
  pass: _nullishCoalesce(cfg.pass, () => ( ""))
@@ -47505,20 +47571,20 @@ function useNatsDialogSubscription({
47505
47571
  const tearDownSubscriptions = () => {
47506
47572
  subscriptionRefs.current.forEach((sub) => {
47507
47573
  try {
47508
- _optionalChain([sub, 'optionalAccess', _1128 => _1128.unsubscribe, 'call', _1129 => _1129()]);
47574
+ _optionalChain([sub, 'optionalAccess', _1132 => _1132.unsubscribe, 'call', _1133 => _1133()]);
47509
47575
  } catch (e54) {
47510
47576
  }
47511
47577
  });
47512
47578
  subscriptionRefs.current.clear();
47513
47579
  lastSubscribedDialogIdRef.current = null;
47514
- _optionalChain([abortControllerRef, 'access', _1130 => _1130.current, 'optionalAccess', _1131 => _1131.abort, 'call', _1132 => _1132()]);
47580
+ _optionalChain([abortControllerRef, 'access', _1134 => _1134.current, 'optionalAccess', _1135 => _1135.abort, 'call', _1136 => _1136()]);
47515
47581
  abortControllerRef.current = null;
47516
47582
  };
47517
47583
  const isDisconnectStatus = (status) => status === "closed" || status === "disconnected";
47518
- const lifecycle = _chunkPXXS27EEcjs.startConnectionLifecycle.call(void 0, {
47584
+ const lifecycle = _chunkW24U7ZUVcjs.startConnectionLifecycle.call(void 0, {
47519
47585
  conn: sharedConn,
47520
47586
  wsUrl,
47521
- onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1133 => _1133.current, 'optionalCall', _1134 => _1134()]),
47587
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1137 => _1137.current, 'optionalCall', _1138 => _1138()]),
47522
47588
  backoff: reconnectionBackoffRef.current,
47523
47589
  getFreshUrl: () => getNatsWsUrlRef.current(),
47524
47590
  shouldRetryOn: isDisconnectStatus,
@@ -47529,7 +47595,7 @@ function useNatsDialogSubscription({
47529
47595
  setReconnectionCount((c) => c + 1);
47530
47596
  }
47531
47597
  hadConnectionBeforeRef.current = true;
47532
- _optionalChain([onConnectRef, 'access', _1135 => _1135.current, 'optionalCall', _1136 => _1136()]);
47598
+ _optionalChain([onConnectRef, 'access', _1139 => _1139.current, 'optionalCall', _1140 => _1140()]);
47533
47599
  }
47534
47600
  if (status === "error") {
47535
47601
  console.warn("[NATS] protocol error:", evt.data);
@@ -47539,7 +47605,7 @@ function useNatsDialogSubscription({
47539
47605
  setIsConnected(false);
47540
47606
  setIsSubscribed(false);
47541
47607
  tearDownSubscriptions();
47542
- _optionalChain([onDisconnectRef, 'access', _1137 => _1137.current, 'optionalCall', _1138 => _1138()]);
47608
+ _optionalChain([onDisconnectRef, 'access', _1141 => _1141.current, 'optionalCall', _1142 => _1142()]);
47543
47609
  }
47544
47610
  }
47545
47611
  });
@@ -47549,13 +47615,15 @@ function useNatsDialogSubscription({
47549
47615
  setIsSubscribed(false);
47550
47616
  tearDownSubscriptions();
47551
47617
  if (clientRef.current && currentWsUrlRef.current) {
47552
- _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47618
+ _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47553
47619
  clientRef.current = null;
47554
47620
  currentWsUrlRef.current = "";
47555
47621
  }
47556
47622
  };
47557
47623
  }, [enabled, wsUrl]);
47558
47624
  const topicsKey = topics.join(",");
47625
+ const topicsRef = _react.useRef.call(void 0, topics);
47626
+ topicsRef.current = topics;
47559
47627
  const lastSubscribedDialogIdRef = _react.useRef.call(void 0, null);
47560
47628
  const isConnectedRef = _react.useRef.call(void 0, isConnected);
47561
47629
  _react.useEffect.call(void 0, () => {
@@ -47570,13 +47638,13 @@ function useNatsDialogSubscription({
47570
47638
  setIsSubscribed(false);
47571
47639
  subscriptionRefs.current.forEach((sub) => {
47572
47640
  try {
47573
- _optionalChain([sub, 'optionalAccess', _1139 => _1139.unsubscribe, 'call', _1140 => _1140()]);
47641
+ _optionalChain([sub, 'optionalAccess', _1143 => _1143.unsubscribe, 'call', _1144 => _1144()]);
47574
47642
  } catch (e55) {
47575
47643
  }
47576
47644
  });
47577
47645
  subscriptionRefs.current.clear();
47578
47646
  lastSubscribedDialogIdRef.current = null;
47579
- _optionalChain([abortControllerRef, 'access', _1141 => _1141.current, 'optionalAccess', _1142 => _1142.abort, 'call', _1143 => _1143()]);
47647
+ _optionalChain([abortControllerRef, 'access', _1145 => _1145.current, 'optionalAccess', _1146 => _1146.abort, 'call', _1147 => _1147()]);
47580
47648
  abortControllerRef.current = null;
47581
47649
  }
47582
47650
  return;
@@ -47588,12 +47656,12 @@ function useNatsDialogSubscription({
47588
47656
  if (subscriptionRefs.current.size > 0) {
47589
47657
  subscriptionRefs.current.forEach((sub) => {
47590
47658
  try {
47591
- _optionalChain([sub, 'optionalAccess', _1144 => _1144.unsubscribe, 'call', _1145 => _1145()]);
47659
+ _optionalChain([sub, 'optionalAccess', _1148 => _1148.unsubscribe, 'call', _1149 => _1149()]);
47592
47660
  } catch (e56) {
47593
47661
  }
47594
47662
  });
47595
47663
  subscriptionRefs.current.clear();
47596
- _optionalChain([abortControllerRef, 'access', _1146 => _1146.current, 'optionalAccess', _1147 => _1147.abort, 'call', _1148 => _1148()]);
47664
+ _optionalChain([abortControllerRef, 'access', _1150 => _1150.current, 'optionalAccess', _1151 => _1151.abort, 'call', _1152 => _1152()]);
47597
47665
  }
47598
47666
  abortControllerRef.current = new AbortController();
47599
47667
  const abort = abortControllerRef.current;
@@ -47615,7 +47683,7 @@ function useNatsDialogSubscription({
47615
47683
  } catch (e57) {
47616
47684
  }
47617
47685
  };
47618
- topics.forEach((topic) => {
47686
+ topicsRef.current.forEach((topic) => {
47619
47687
  const subscription = client.subscribeBytes(
47620
47688
  `chat.${dialogId}.${topic}`,
47621
47689
  handleMessage(topic),
@@ -47625,7 +47693,7 @@ function useNatsDialogSubscription({
47625
47693
  });
47626
47694
  lastSubscribedDialogIdRef.current = dialogId;
47627
47695
  setIsSubscribed(true);
47628
- _optionalChain([onSubscribedRef, 'access', _1149 => _1149.current, 'optionalCall', _1150 => _1150()]);
47696
+ _optionalChain([onSubscribedRef, 'access', _1153 => _1153.current, 'optionalCall', _1154 => _1154()]);
47629
47697
  };
47630
47698
  if (isConnectedRef.current) {
47631
47699
  createSubscriptions();
@@ -47635,7 +47703,7 @@ function useNatsDialogSubscription({
47635
47703
  abort.abort();
47636
47704
  subscriptionRefs.current.forEach((sub) => {
47637
47705
  try {
47638
- _optionalChain([sub, 'optionalAccess', _1151 => _1151.unsubscribe, 'call', _1152 => _1152()]);
47706
+ _optionalChain([sub, 'optionalAccess', _1155 => _1155.unsubscribe, 'call', _1156 => _1156()]);
47639
47707
  } catch (e58) {
47640
47708
  }
47641
47709
  });
@@ -47643,7 +47711,7 @@ function useNatsDialogSubscription({
47643
47711
  lastSubscribedDialogIdRef.current = null;
47644
47712
  abortControllerRef.current = null;
47645
47713
  };
47646
- }, [enabled, dialogId, topicsKey, topics]);
47714
+ }, [enabled, dialogId, topicsKey]);
47647
47715
  _react.useEffect.call(void 0, () => {
47648
47716
  if (!enabled || !currentDialogIdRef.current || !isConnected) {
47649
47717
  return;
@@ -47666,7 +47734,7 @@ function useNatsDialogSubscription({
47666
47734
  } catch (e59) {
47667
47735
  }
47668
47736
  };
47669
- topics.forEach((topic) => {
47737
+ topicsRef.current.forEach((topic) => {
47670
47738
  const subscription = client.subscribeBytes(
47671
47739
  `chat.${dialogId2}.${topic}`,
47672
47740
  handleMessage(topic),
@@ -47676,18 +47744,18 @@ function useNatsDialogSubscription({
47676
47744
  });
47677
47745
  lastSubscribedDialogIdRef.current = dialogId2;
47678
47746
  setIsSubscribed(true);
47679
- _optionalChain([onSubscribedRef, 'access', _1153 => _1153.current, 'optionalCall', _1154 => _1154()]);
47747
+ _optionalChain([onSubscribedRef, 'access', _1157 => _1157.current, 'optionalCall', _1158 => _1158()]);
47680
47748
  } else if (subscriptionRefs.current.size > 0) {
47681
47749
  setIsSubscribed(true);
47682
47750
  }
47683
- }, [isConnected, enabled, topics, topicsKey]);
47751
+ }, [isConnected, enabled, topicsKey]);
47684
47752
  return { isConnected, isSubscribed, reconnectionCount };
47685
47753
  }
47686
47754
  function buildNatsWsUrl(apiBaseUrl, options) {
47687
- const path = _optionalChain([options, 'optionalAccess', _1155 => _1155.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
47755
+ const path = _optionalChain([options, 'optionalAccess', _1159 => _1159.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
47688
47756
  const u = new URL(path, apiBaseUrl);
47689
47757
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
47690
- if (_optionalChain([options, 'optionalAccess', _1156 => _1156.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _1157 => _1157.token])) {
47758
+ if (_optionalChain([options, 'optionalAccess', _1160 => _1160.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _1161 => _1161.token])) {
47691
47759
  u.searchParams.set("authorization", options.token);
47692
47760
  }
47693
47761
  return u.toString();
@@ -47823,7 +47891,7 @@ function parseChunkToAction(chunk) {
47823
47891
  // is REQUIRED on `ChatContextItem`, so fall back to the id (same as the
47824
47892
  // historical path in `process-historical-messages.ts`) — keeps both
47825
47893
  // message sources producing an identical shape.
47826
- contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof _optionalChain([it, 'optionalAccess', _1158 => _1158.type]) === "string" && typeof _optionalChain([it, 'optionalAccess', _1159 => _1159.id]) === "string").map((it) => ({ type: it.type, id: it.id, label: it.id })) : void 0
47894
+ contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof _optionalChain([it, 'optionalAccess', _1162 => _1162.type]) === "string" && typeof _optionalChain([it, 'optionalAccess', _1163 => _1163.id]) === "string").map((it) => ({ type: it.type, id: it.id, label: it.id })) : void 0
47827
47895
  };
47828
47896
  case MESSAGE_TYPE.TOKEN_USAGE:
47829
47897
  return {
@@ -48015,8 +48083,8 @@ var MessageSegmentAccumulator = class {
48015
48083
  type: "tool_execution",
48016
48084
  data: {
48017
48085
  ...toolData,
48018
- toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _1160 => _1160.data, 'access', _1161 => _1161.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _1162 => _1162.toolTitle]))),
48019
- parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _1163 => _1163.parameters])
48086
+ toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _1164 => _1164.data, 'access', _1165 => _1165.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _1166 => _1166.toolTitle]))),
48087
+ parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _1167 => _1167.parameters])
48020
48088
  }
48021
48089
  };
48022
48090
  if (existingIndex !== -1) {
@@ -48040,8 +48108,12 @@ var MessageSegmentAccumulator = class {
48040
48108
  if (seg.type !== "approval_batch") return seg;
48041
48109
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
48042
48110
  if (!hasCall) return seg;
48043
- const prev = _optionalChain([seg, 'access', _1164 => _1164.data, 'access', _1165 => _1165.executions, 'optionalAccess', _1166 => _1166[execId]]);
48044
- const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _1167 => _1167.result]), success: _optionalChain([prev, 'optionalAccess', _1168 => _1168.success]) };
48111
+ const prev = _optionalChain([seg, 'access', _1168 => _1168.data, 'access', _1169 => _1169.executions, 'optionalAccess', _1170 => _1170[execId]]);
48112
+ if (toolData.type === "EXECUTING_TOOL" && _optionalChain([prev, 'optionalAccess', _1171 => _1171.status]) === "done") {
48113
+ matched = true;
48114
+ return seg;
48115
+ }
48116
+ const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _1172 => _1172.result]), success: _optionalChain([prev, 'optionalAccess', _1173 => _1173.success]) };
48045
48117
  matched = true;
48046
48118
  return {
48047
48119
  ...seg,
@@ -48163,10 +48235,10 @@ var MessageSegmentAccumulator = class {
48163
48235
  const segment = {
48164
48236
  type: "approval_request",
48165
48237
  data: {
48166
- command: _optionalChain([pendingApproval, 'optionalAccess', _1169 => _1169.command]) || "",
48167
- explanation: _optionalChain([pendingApproval, 'optionalAccess', _1170 => _1170.explanation]),
48238
+ command: _optionalChain([pendingApproval, 'optionalAccess', _1174 => _1174.command]) || "",
48239
+ explanation: _optionalChain([pendingApproval, 'optionalAccess', _1175 => _1175.explanation]),
48168
48240
  requestId,
48169
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _1171 => _1171.approvalType]) || approvalType
48241
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _1176 => _1176.approvalType]) || approvalType
48170
48242
  },
48171
48243
  status,
48172
48244
  onApprove: this.callbacks.onApprove,
@@ -48358,7 +48430,7 @@ function useRealtimeChunkProcessor(options) {
48358
48430
  if (initialState.escalatedApprovals) {
48359
48431
  pendingEscalatedRef.current = new Map(initialState.escalatedApprovals);
48360
48432
  initialState.escalatedApprovals.forEach((data, requestId) => {
48361
- _optionalChain([callbacks, 'access', _1172 => _1172.onEscalatedApproval, 'optionalCall', _1173 => _1173(requestId, data)]);
48433
+ _optionalChain([callbacks, 'access', _1177 => _1177.onEscalatedApproval, 'optionalCall', _1178 => _1178(requestId, data)]);
48362
48434
  });
48363
48435
  }
48364
48436
  hasEverStreamedRef.current = true;
@@ -48380,13 +48452,13 @@ function useRealtimeChunkProcessor(options) {
48380
48452
  if (!action) return;
48381
48453
  const accumulator = accumulatorRef.current;
48382
48454
  const streamSeq = chunk && typeof chunk === "object" && typeof chunk.streamSeq === "number" ? chunk.streamSeq : void 0;
48383
- const emitSegments = (s, meta) => _optionalChain([callbacks, 'access', _1174 => _1174.onSegmentsUpdate, 'optionalCall', _1175 => _1175(s, streamSeq != null ? { ...meta, streamSeq } : meta)]);
48455
+ const emitSegments = (s, meta) => _optionalChain([callbacks, 'access', _1179 => _1179.onSegmentsUpdate, 'optionalCall', _1180 => _1180(s, streamSeq != null ? { ...meta, streamSeq } : meta)]);
48384
48456
  if (action.action === "direct_message") sawDirectMessageRef.current = true;
48385
48457
  if ((directModeFlagRef.current || sawDirectMessageRef.current) && !DIRECT_MODE_ALLOWED.has(action.action)) {
48386
48458
  if (isInStreamRef.current || !directTeardownFiredRef.current) {
48387
48459
  isInStreamRef.current = false;
48388
48460
  directTeardownFiredRef.current = true;
48389
- _optionalChain([callbacks, 'access', _1176 => _1176.onStreamEnd, 'optionalCall', _1177 => _1177()]);
48461
+ _optionalChain([callbacks, 'access', _1181 => _1181.onStreamEnd, 'optionalCall', _1182 => _1182()]);
48390
48462
  accumulator.resetSegments();
48391
48463
  }
48392
48464
  return;
@@ -48395,16 +48467,16 @@ function useRealtimeChunkProcessor(options) {
48395
48467
  case "message_start":
48396
48468
  isInStreamRef.current = true;
48397
48469
  hasEverStreamedRef.current = true;
48398
- _optionalChain([callbacks, 'access', _1178 => _1178.onStreamStart, 'optionalCall', _1179 => _1179()]);
48470
+ _optionalChain([callbacks, 'access', _1183 => _1183.onStreamStart, 'optionalCall', _1184 => _1184()]);
48399
48471
  accumulator.resetSegments();
48400
48472
  break;
48401
48473
  case "message_end":
48402
48474
  isInStreamRef.current = false;
48403
- _optionalChain([callbacks, 'access', _1180 => _1180.onStreamEnd, 'optionalCall', _1181 => _1181()]);
48475
+ _optionalChain([callbacks, 'access', _1185 => _1185.onStreamEnd, 'optionalCall', _1186 => _1186()]);
48404
48476
  accumulator.resetSegments();
48405
48477
  break;
48406
48478
  case "metadata":
48407
- _optionalChain([callbacks, 'access', _1182 => _1182.onMetadata, 'optionalCall', _1183 => _1183(action)]);
48479
+ _optionalChain([callbacks, 'access', _1187 => _1187.onMetadata, 'optionalCall', _1188 => _1188(action)]);
48408
48480
  break;
48409
48481
  case "text": {
48410
48482
  const segments = accumulator.appendText(action.text);
@@ -48426,7 +48498,7 @@ function useRealtimeChunkProcessor(options) {
48426
48498
  }
48427
48499
  case "tool_execution": {
48428
48500
  if (action.segment.data.type === "EXECUTING_TOOL") {
48429
- _optionalChain([callbacks, 'access', _1184 => _1184.onAgentBusy, 'optionalCall', _1185 => _1185()]);
48501
+ _optionalChain([callbacks, 'access', _1189 => _1189.onAgentBusy, 'optionalCall', _1190 => _1190()]);
48430
48502
  }
48431
48503
  if (!isInStreamRef.current && callbacks.onToolExecuted) {
48432
48504
  callbacks.onToolExecuted(action.segment);
@@ -48450,7 +48522,7 @@ function useRealtimeChunkProcessor(options) {
48450
48522
  emitSegments(segments);
48451
48523
  } else {
48452
48524
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
48453
- _optionalChain([callbacks, 'access', _1186 => _1186.onEscalatedApproval, 'optionalCall', _1187 => _1187(requestId, { command, explanation, approvalType })]);
48525
+ _optionalChain([callbacks, 'access', _1191 => _1191.onEscalatedApproval, 'optionalCall', _1192 => _1192(requestId, { command, explanation, approvalType })]);
48454
48526
  }
48455
48527
  break;
48456
48528
  }
@@ -48462,13 +48534,13 @@ function useRealtimeChunkProcessor(options) {
48462
48534
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
48463
48535
  pendingEscalatedRef.current.set(requestId, {
48464
48536
  command: summary,
48465
- explanation: _optionalChain([required, 'optionalAccess', _1188 => _1188.toolExplanation]),
48537
+ explanation: _optionalChain([required, 'optionalAccess', _1193 => _1193.toolExplanation]),
48466
48538
  approvalType,
48467
48539
  toolCalls
48468
48540
  });
48469
- _optionalChain([callbacks, 'access', _1189 => _1189.onEscalatedApproval, 'optionalCall', _1190 => _1190(requestId, {
48541
+ _optionalChain([callbacks, 'access', _1194 => _1194.onEscalatedApproval, 'optionalCall', _1195 => _1195(requestId, {
48470
48542
  command: summary,
48471
- explanation: _optionalChain([required, 'optionalAccess', _1191 => _1191.toolExplanation]),
48543
+ explanation: _optionalChain([required, 'optionalAccess', _1196 => _1196.toolExplanation]),
48472
48544
  approvalType
48473
48545
  })]);
48474
48546
  break;
@@ -48494,16 +48566,26 @@ function useRealtimeChunkProcessor(options) {
48494
48566
  }
48495
48567
  case "approval_result": {
48496
48568
  const { requestId, approved, approvalType, resolvedByName } = action;
48497
- if (approved) _optionalChain([callbacks, 'access', _1192 => _1192.onAgentBusy, 'optionalCall', _1193 => _1193()]);
48569
+ if (approved) _optionalChain([callbacks, 'access', _1197 => _1197.onAgentBusy, 'optionalCall', _1198 => _1198()]);
48498
48570
  const escalatedData = pendingEscalatedRef.current.get(requestId);
48499
48571
  const status = approved ? "approved" : "rejected";
48500
48572
  if (escalatedData) {
48501
48573
  pendingEscalatedRef.current.delete(requestId);
48502
- _optionalChain([callbacks, 'access', _1194 => _1194.onEscalatedApprovalResult, 'optionalCall', _1195 => _1195(requestId, approved, {
48574
+ _optionalChain([callbacks, 'access', _1199 => _1199.onEscalatedApprovalResult, 'optionalCall', _1200 => _1200(requestId, approved, {
48503
48575
  command: escalatedData.command,
48504
48576
  explanation: escalatedData.explanation,
48505
48577
  approvalType: escalatedData.approvalType
48506
48578
  })]);
48579
+ const emitResolved = (segments) => {
48580
+ if (isInStreamRef.current) {
48581
+ emitSegments(segments);
48582
+ return;
48583
+ }
48584
+ const delta = segments.filter(
48585
+ (s) => s.type === "approval_request" && s.data.requestId === requestId || s.type === "approval_batch" && s.data.approvalRequestId === requestId
48586
+ );
48587
+ emitSegments(delta, { append: true });
48588
+ };
48507
48589
  if (escalatedData.toolCalls && escalatedData.toolCalls.length > 0) {
48508
48590
  if (batchApprovalsEnabled) {
48509
48591
  const segments = accumulator.addApprovalBatch(
@@ -48514,7 +48596,7 @@ function useRealtimeChunkProcessor(options) {
48514
48596
  void 0,
48515
48597
  resolvedByName
48516
48598
  );
48517
- emitSegments(segments);
48599
+ emitResolved(segments);
48518
48600
  } else {
48519
48601
  let segments = accumulator.getSegments();
48520
48602
  for (const call of escalatedData.toolCalls) {
@@ -48527,7 +48609,7 @@ function useRealtimeChunkProcessor(options) {
48527
48609
  status
48528
48610
  );
48529
48611
  }
48530
- emitSegments(segments);
48612
+ emitResolved(segments);
48531
48613
  }
48532
48614
  } else {
48533
48615
  const segments = accumulator.addApprovalRequest(
@@ -48537,7 +48619,7 @@ function useRealtimeChunkProcessor(options) {
48537
48619
  escalatedData.approvalType,
48538
48620
  status
48539
48621
  );
48540
- emitSegments(segments);
48622
+ emitResolved(segments);
48541
48623
  }
48542
48624
  } else {
48543
48625
  accumulator.updateApprovalStatus(requestId, status, resolvedByName);
@@ -48545,29 +48627,29 @@ function useRealtimeChunkProcessor(options) {
48545
48627
  emitSegments(accumulator.getSegments());
48546
48628
  }
48547
48629
  }
48548
- _optionalChain([callbacks, 'access', _1196 => _1196.onApprovalResolved, 'optionalCall', _1197 => _1197(requestId, status, approvalType, resolvedByName)]);
48630
+ _optionalChain([callbacks, 'access', _1201 => _1201.onApprovalResolved, 'optionalCall', _1202 => _1202(requestId, status, approvalType, resolvedByName)]);
48549
48631
  break;
48550
48632
  }
48551
48633
  case "error": {
48552
48634
  let message2;
48553
- if ("details" in action && _optionalChain([action, 'optionalAccess', _1198 => _1198.details])) {
48635
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _1203 => _1203.details])) {
48554
48636
  try {
48555
- message2 = _optionalChain([JSON, 'access', _1199 => _1199.parse, 'call', _1200 => _1200(action.details), 'optionalAccess', _1201 => _1201.error, 'optionalAccess', _1202 => _1202.message]);
48637
+ message2 = _optionalChain([JSON, 'access', _1204 => _1204.parse, 'call', _1205 => _1205(action.details), 'optionalAccess', _1206 => _1206.error, 'optionalAccess', _1207 => _1207.message]);
48556
48638
  } catch (e60) {
48557
48639
  message2 = action.details;
48558
48640
  }
48559
48641
  }
48560
48642
  const segments = accumulator.addError(action.error, message2);
48561
48643
  emitSegments(segments);
48562
- _optionalChain([callbacks, 'access', _1203 => _1203.onError, 'optionalCall', _1204 => _1204(action.error, message2)]);
48644
+ _optionalChain([callbacks, 'access', _1208 => _1208.onError, 'optionalCall', _1209 => _1209(action.error, message2)]);
48563
48645
  break;
48564
48646
  }
48565
48647
  case "system": {
48566
- _optionalChain([callbacks, 'access', _1205 => _1205.onSystemMessage, 'optionalCall', _1206 => _1206(action.text, { streamSeq })]);
48648
+ _optionalChain([callbacks, 'access', _1210 => _1210.onSystemMessage, 'optionalCall', _1211 => _1211(action.text, { streamSeq })]);
48567
48649
  break;
48568
48650
  }
48569
48651
  case "direct_message": {
48570
- _optionalChain([callbacks, 'access', _1207 => _1207.onDirectMessage, 'optionalCall', _1208 => _1208(action.text, {
48652
+ _optionalChain([callbacks, 'access', _1212 => _1212.onDirectMessage, 'optionalCall', _1213 => _1213(action.text, {
48571
48653
  ownerType: action.ownerType,
48572
48654
  displayName: action.displayName,
48573
48655
  userId: action.userId,
@@ -48576,7 +48658,7 @@ function useRealtimeChunkProcessor(options) {
48576
48658
  break;
48577
48659
  }
48578
48660
  case "message_request":
48579
- _optionalChain([callbacks, 'access', _1209 => _1209.onUserMessage, 'optionalCall', _1210 => _1210(action.text, {
48661
+ _optionalChain([callbacks, 'access', _1214 => _1214.onUserMessage, 'optionalCall', _1215 => _1215(action.text, {
48580
48662
  ownerType: action.ownerType,
48581
48663
  displayName: action.displayName,
48582
48664
  userId: action.userId,
@@ -48585,7 +48667,7 @@ function useRealtimeChunkProcessor(options) {
48585
48667
  })]);
48586
48668
  break;
48587
48669
  case "token_usage":
48588
- _optionalChain([callbacks, 'access', _1211 => _1211.onTokenUsage, 'optionalCall', _1212 => _1212(action.data)]);
48670
+ _optionalChain([callbacks, 'access', _1216 => _1216.onTokenUsage, 'optionalCall', _1217 => _1217(action.data)]);
48589
48671
  break;
48590
48672
  case "context_compaction_start": {
48591
48673
  const standalone = !isInStreamRef.current;
@@ -48600,7 +48682,7 @@ function useRealtimeChunkProcessor(options) {
48600
48682
  break;
48601
48683
  }
48602
48684
  case "dialog_closed":
48603
- _optionalChain([callbacks, 'access', _1213 => _1213.onDialogClosed, 'optionalCall', _1214 => _1214()]);
48685
+ _optionalChain([callbacks, 'access', _1218 => _1218.onDialogClosed, 'optionalCall', _1219 => _1219()]);
48604
48686
  break;
48605
48687
  default:
48606
48688
  break;
@@ -48617,6 +48699,8 @@ function useRealtimeChunkProcessor(options) {
48617
48699
  hasInitializedWithData.current = false;
48618
48700
  sawDirectMessageRef.current = false;
48619
48701
  directTeardownFiredRef.current = false;
48702
+ isInStreamRef.current = false;
48703
+ hasEverStreamedRef.current = false;
48620
48704
  }, []);
48621
48705
  const updateApprovalStatus = _react.useCallback.call(void 0,
48622
48706
  (requestId, status, resolvedByName) => {
@@ -48643,12 +48727,12 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
48643
48727
  try {
48644
48728
  const url = new URL(commandsUrl, window.location.origin);
48645
48729
  if (prefix) url.searchParams.set("q", prefix);
48646
- const res = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48730
+ const res = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48647
48731
  if (!res.ok) return [];
48648
48732
  const data = await res.json();
48649
48733
  return _nullishCoalesce(data.commands, () => ( []));
48650
48734
  } catch (err) {
48651
- if (_optionalChain([err, 'optionalAccess', _1215 => _1215.name]) === "AbortError") throw err;
48735
+ if (_optionalChain([err, 'optionalAccess', _1220 => _1220.name]) === "AbortError") throw err;
48652
48736
  console.warn("[chat] slash-commands fetch failed, showing none:", err);
48653
48737
  return [];
48654
48738
  }
@@ -48669,7 +48753,7 @@ function useSlashCommands(prefix, commandsUrl) {
48669
48753
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
48670
48754
  if (!cancelled) setCommands(next);
48671
48755
  } catch (err) {
48672
- if (!cancelled && _optionalChain([err, 'optionalAccess', _1216 => _1216.name]) !== "AbortError") {
48756
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1221 => _1221.name]) !== "AbortError") {
48673
48757
  console.warn("[use-slash-commands] fetch failed:", err);
48674
48758
  }
48675
48759
  } finally {
@@ -48688,7 +48772,7 @@ function useSlashCommandRegistry(commandsUrl, options) {
48688
48772
  const query = _reactquery.useQuery.call(void 0, {
48689
48773
  queryKey: ["chat-slash-commands", commandsUrl],
48690
48774
  queryFn: ({ signal }) => fetchSlashCommands("", signal, commandsUrl),
48691
- enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1217 => _1217.enabled]), () => ( true)),
48775
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1222 => _1222.enabled]), () => ( true)),
48692
48776
  staleTime: Infinity,
48693
48777
  gcTime: Infinity,
48694
48778
  // The commands registry is non-critical chrome — a failure degrades to an
@@ -48718,7 +48802,7 @@ var EMPTY_STATE_FALLBACK = {
48718
48802
  async function fetchEmptyStateConfig(signal, emptyStateUrl) {
48719
48803
  try {
48720
48804
  const url = new URL(emptyStateUrl, window.location.origin);
48721
- const res = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48805
+ const res = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48722
48806
  if (!res.ok) {
48723
48807
  if (res.status >= 500) {
48724
48808
  console.error(`[chat] empty-state config fetch failed (${res.status}): ${url.pathname}`);
@@ -48727,21 +48811,21 @@ async function fetchEmptyStateConfig(signal, emptyStateUrl) {
48727
48811
  }
48728
48812
  const data = await res.json();
48729
48813
  return {
48730
- name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1218 => _1218.name]), () => ( null)),
48731
- icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1219 => _1219.icon]), () => ( null)),
48732
- greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1220 => _1220.greeting]), () => ( null)),
48733
- enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1221 => _1221.enabledRagTableIds]), () => ( [])),
48734
- quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1222 => _1222.quickActions]), () => ( [])),
48735
- suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1223 => _1223.suggestedQueries]), () => ( []))
48814
+ name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1223 => _1223.name]), () => ( null)),
48815
+ icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1224 => _1224.icon]), () => ( null)),
48816
+ greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1225 => _1225.greeting]), () => ( null)),
48817
+ enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1226 => _1226.enabledRagTableIds]), () => ( [])),
48818
+ quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1227 => _1227.quickActions]), () => ( [])),
48819
+ suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1228 => _1228.suggestedQueries]), () => ( []))
48736
48820
  };
48737
48821
  } catch (err) {
48738
- if (_optionalChain([err, 'optionalAccess', _1224 => _1224.name]) === "AbortError") throw err;
48822
+ if (_optionalChain([err, 'optionalAccess', _1229 => _1229.name]) === "AbortError") throw err;
48739
48823
  console.warn("[chat] empty-state config fetch failed, using neutral defaults:", err);
48740
48824
  return EMPTY_STATE_FALLBACK;
48741
48825
  }
48742
48826
  }
48743
48827
  function useEmptyStateConfig(emptyStateUrl, options) {
48744
- const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1225 => _1225.enabled]), () => ( true))) && !!emptyStateUrl;
48828
+ const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1230 => _1230.enabled]), () => ( true))) && !!emptyStateUrl;
48745
48829
  const query = _reactquery.useQuery.call(void 0, {
48746
48830
  queryKey: ["chat-empty-state", emptyStateUrl],
48747
48831
  queryFn: ({ signal }) => fetchEmptyStateConfig(signal, emptyStateUrl),
@@ -48770,7 +48854,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
48770
48854
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
48771
48855
  function uploadWithProgress(url, file, token, onProgress, signal) {
48772
48856
  return new Promise((resolve, reject) => {
48773
- if (_optionalChain([signal, 'optionalAccess', _1226 => _1226.aborted])) {
48857
+ if (_optionalChain([signal, 'optionalAccess', _1231 => _1231.aborted])) {
48774
48858
  reject(new Error("Upload cancelled"));
48775
48859
  return;
48776
48860
  }
@@ -48784,7 +48868,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48784
48868
  xhr.removeEventListener("error", handleError);
48785
48869
  xhr.removeEventListener("abort", handleAbort);
48786
48870
  xhr.removeEventListener("timeout", handleTimeout);
48787
- _optionalChain([signal, 'optionalAccess', _1227 => _1227.removeEventListener, 'call', _1228 => _1228("abort", handleSignalAbort)]);
48871
+ _optionalChain([signal, 'optionalAccess', _1232 => _1232.removeEventListener, 'call', _1233 => _1233("abort", handleSignalAbort)]);
48788
48872
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
48789
48873
  };
48790
48874
  const handleProgress = (event) => {
@@ -48820,7 +48904,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48820
48904
  const handleSignalAbort = () => {
48821
48905
  xhr.abort();
48822
48906
  };
48823
- _optionalChain([signal, 'optionalAccess', _1229 => _1229.addEventListener, 'call', _1230 => _1230("abort", handleSignalAbort, { once: true })]);
48907
+ _optionalChain([signal, 'optionalAccess', _1234 => _1234.addEventListener, 'call', _1235 => _1235("abort", handleSignalAbort, { once: true })]);
48824
48908
  xhr.upload.addEventListener("progress", handleProgress);
48825
48909
  xhr.addEventListener("load", handleLoad);
48826
48910
  xhr.addEventListener("error", handleError);
@@ -48864,12 +48948,12 @@ function useChatAttachments() {
48864
48948
  try {
48865
48949
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
48866
48950
  } catch (err) {
48867
- if (_optionalChain([ctrl, 'optionalAccess', _1231 => _1231.signal, 'access', _1232 => _1232.aborted])) return;
48951
+ if (_optionalChain([ctrl, 'optionalAccess', _1236 => _1236.signal, 'access', _1237 => _1237.aborted])) return;
48868
48952
  throw new Error(
48869
48953
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
48870
48954
  );
48871
48955
  }
48872
- if (_optionalChain([ctrl, 'optionalAccess', _1233 => _1233.signal, 'access', _1234 => _1234.aborted])) return;
48956
+ if (_optionalChain([ctrl, 'optionalAccess', _1238 => _1238.signal, 'access', _1239 => _1239.aborted])) return;
48873
48957
  if (!sniffed) {
48874
48958
  throw new Error("Unrecognized file format");
48875
48959
  }
@@ -48880,10 +48964,10 @@ function useChatAttachments() {
48880
48964
  );
48881
48965
  }
48882
48966
  updateOne(att.id, { status: "uploading", progress: 5 });
48883
- const urlResp = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
48967
+ const urlResp = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
48884
48968
  method: "POST",
48885
48969
  headers: { "Content-Type": "application/json" },
48886
- signal: _optionalChain([ctrl, 'optionalAccess', _1235 => _1235.signal]),
48970
+ signal: _optionalChain([ctrl, 'optionalAccess', _1240 => _1240.signal]),
48887
48971
  body: JSON.stringify({
48888
48972
  fileName: att.file.name,
48889
48973
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -48909,9 +48993,9 @@ function useChatAttachments() {
48909
48993
  (pct) => {
48910
48994
  updateOne(att.id, { progress: pct });
48911
48995
  },
48912
- _optionalChain([ctrl, 'optionalAccess', _1236 => _1236.signal])
48996
+ _optionalChain([ctrl, 'optionalAccess', _1241 => _1241.signal])
48913
48997
  );
48914
- if (_optionalChain([ctrl, 'optionalAccess', _1237 => _1237.signal, 'access', _1238 => _1238.aborted])) return;
48998
+ if (_optionalChain([ctrl, 'optionalAccess', _1242 => _1242.signal, 'access', _1243 => _1243.aborted])) return;
48915
48999
  updateOne(att.id, {
48916
49000
  status: "ready",
48917
49001
  progress: 100,
@@ -48919,7 +49003,7 @@ function useChatAttachments() {
48919
49003
  viewToken: mintData.viewToken
48920
49004
  });
48921
49005
  } catch (err) {
48922
- if (_optionalChain([ctrl, 'optionalAccess', _1239 => _1239.signal, 'access', _1240 => _1240.aborted])) return;
49006
+ if (_optionalChain([ctrl, 'optionalAccess', _1244 => _1244.signal, 'access', _1245 => _1245.aborted])) return;
48923
49007
  const message2 = err instanceof Error ? err.message : String(err);
48924
49008
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
48925
49009
  } finally {
@@ -49070,7 +49154,7 @@ var ANON_DEFAULTS = {
49070
49154
  function useResolveChatIdentity(enabled) {
49071
49155
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
49072
49156
  const url = runtime.endpoints.identityUrl;
49073
- const proxyEmail = _nullishCoalesce(_optionalChain([_chunk7CZ4MJSIcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1241 => _1241.email]), () => ( null));
49157
+ const proxyEmail = _nullishCoalesce(_optionalChain([_chunkVIJARDBMcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1246 => _1246.email]), () => ( null));
49074
49158
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
49075
49159
  const [isLoading, setIsLoading] = _react.useState.call(void 0, enabled);
49076
49160
  _react.useEffect.call(void 0, () => {
@@ -49078,7 +49162,7 @@ function useResolveChatIdentity(enabled) {
49078
49162
  let cancelled = false;
49079
49163
  const ctrl = new AbortController();
49080
49164
  setIsLoading(true);
49081
- _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url, { signal: ctrl.signal }).then(async (resp) => {
49165
+ _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url, { signal: ctrl.signal }).then(async (resp) => {
49082
49166
  if (!resp.ok) return ANON_DEFAULTS;
49083
49167
  return await resp.json();
49084
49168
  }).then((next) => {
@@ -49161,7 +49245,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
49161
49245
  yield chunk;
49162
49246
  }
49163
49247
  } catch (err) {
49164
- if (_optionalChain([err, 'optionalAccess', _1242 => _1242.name]) === "AbortError" || ctrl.signal.aborted) {
49248
+ if (_optionalChain([err, 'optionalAccess', _1247 => _1247.name]) === "AbortError" || ctrl.signal.aborted) {
49165
49249
  return;
49166
49250
  }
49167
49251
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -49212,7 +49296,7 @@ function useChat({
49212
49296
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
49213
49297
  onMessagesChangeRef.current = onMessagesChange;
49214
49298
  _react.useEffect.call(void 0, () => {
49215
- _optionalChain([onMessagesChangeRef, 'access', _1243 => _1243.current, 'optionalCall', _1244 => _1244(messages)]);
49299
+ _optionalChain([onMessagesChangeRef, 'access', _1248 => _1248.current, 'optionalCall', _1249 => _1249(messages)]);
49216
49300
  }, [messages]);
49217
49301
  const {
49218
49302
  streamMessage,
@@ -49249,7 +49333,7 @@ function useChat({
49249
49333
  name: "You",
49250
49334
  content: text,
49251
49335
  timestamp: /* @__PURE__ */ new Date(),
49252
- ..._optionalChain([options, 'optionalAccess', _1245 => _1245.hidden]) ? { hidden: true } : {}
49336
+ ..._optionalChain([options, 'optionalAccess', _1250 => _1250.hidden]) ? { hidden: true } : {}
49253
49337
  };
49254
49338
  addMessage(userMessage);
49255
49339
  setIsTyping(true);
@@ -49311,7 +49395,7 @@ function useChat({
49311
49395
  currentTextSegment = "";
49312
49396
  }
49313
49397
  const seg = segment;
49314
- const proposalId = _optionalChain([seg, 'access', _1246 => _1246.data, 'optionalAccess', _1247 => _1247.requestId]);
49398
+ const proposalId = _optionalChain([seg, 'access', _1251 => _1251.data, 'optionalAccess', _1252 => _1252.requestId]);
49315
49399
  const updateApprovalMessage = (transform) => {
49316
49400
  setMessages((prev) => {
49317
49401
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -49320,7 +49404,7 @@ function useChat({
49320
49404
  if (!Array.isArray(m.content)) continue;
49321
49405
  const segments = m.content;
49322
49406
  const hasMatch = segments.some(
49323
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1248 => _1248.data, 'optionalAccess', _1249 => _1249.requestId]) === proposalId
49407
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1253 => _1253.data, 'optionalAccess', _1254 => _1254.requestId]) === proposalId
49324
49408
  );
49325
49409
  if (!hasMatch) continue;
49326
49410
  const next = [...prev];
@@ -49362,11 +49446,11 @@ function useChat({
49362
49446
  if (!Array.isArray(m.content)) continue;
49363
49447
  const segments = m.content;
49364
49448
  const hasMatch = segments.some(
49365
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1250 => _1250.data, 'optionalAccess', _1251 => _1251.requestId]) === decision.proposalId
49449
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1255 => _1255.data, 'optionalAccess', _1256 => _1256.requestId]) === decision.proposalId
49366
49450
  );
49367
49451
  if (!hasMatch) continue;
49368
49452
  const flipped = segments.map(
49369
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1252 => _1252.data, 'optionalAccess', _1253 => _1253.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49453
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1257 => _1257.data, 'optionalAccess', _1258 => _1258.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49370
49454
  );
49371
49455
  const next = [...prev];
49372
49456
  next[i] = { ...m, content: flipped };
@@ -49528,8 +49612,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49528
49612
  })),
49529
49613
  { role: "user", content: message2 }
49530
49614
  ];
49531
- const targetPath = _optionalChain([extra, 'optionalAccess', _1254 => _1254.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49532
- const requestBody = _optionalChain([extra, 'optionalAccess', _1255 => _1255.approvalAction]) ? {
49615
+ const targetPath = _optionalChain([extra, 'optionalAccess', _1259 => _1259.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49616
+ const requestBody = _optionalChain([extra, 'optionalAccess', _1260 => _1260.approvalAction]) ? {
49533
49617
  proposal_id: extra.approvalAction.proposalId,
49534
49618
  action: extra.approvalAction.action,
49535
49619
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -49538,10 +49622,10 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49538
49622
  }))
49539
49623
  } : {
49540
49624
  messages: apiMessages,
49541
- ..._optionalChain([extra, 'optionalAccess', _1256 => _1256.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49542
- ..._optionalChain([extra, 'optionalAccess', _1257 => _1257.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49625
+ ..._optionalChain([extra, 'optionalAccess', _1261 => _1261.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49626
+ ..._optionalChain([extra, 'optionalAccess', _1262 => _1262.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49543
49627
  };
49544
- const response = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, targetPath, {
49628
+ const response = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, targetPath, {
49545
49629
  method: "POST",
49546
49630
  body: JSON.stringify(requestBody),
49547
49631
  signal
@@ -49549,7 +49633,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49549
49633
  if (!response.ok) {
49550
49634
  throw new Error(`Chat request failed: ${response.status}`);
49551
49635
  }
49552
- const reader = _optionalChain([response, 'access', _1258 => _1258.body, 'optionalAccess', _1259 => _1259.getReader, 'call', _1260 => _1260()]);
49636
+ const reader = _optionalChain([response, 'access', _1263 => _1263.body, 'optionalAccess', _1264 => _1264.getReader, 'call', _1265 => _1265()]);
49553
49637
  if (!reader) throw new Error("No response body");
49554
49638
  const decoder = new TextDecoder();
49555
49639
  let buffer = "";
@@ -49632,7 +49716,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49632
49716
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
49633
49717
  const result = _nullishCoalesce(meta.result, () => ( null));
49634
49718
  const card = _nullishCoalesce(meta.card, () => ( null));
49635
- if (_optionalChain([card, 'optionalAccess', _1261 => _1261.ref, 'optionalAccess', _1262 => _1262.id]) && _optionalChain([card, 'optionalAccess', _1263 => _1263.type])) {
49719
+ if (_optionalChain([card, 'optionalAccess', _1266 => _1266.ref, 'optionalAccess', _1267 => _1267.id]) && _optionalChain([card, 'optionalAccess', _1268 => _1268.type])) {
49636
49720
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
49637
49721
  const key = buildChatRefKey(card.type, card.ref.id);
49638
49722
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -49645,8 +49729,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49645
49729
  willAutoContinue: meta.willAutoContinue === true,
49646
49730
  ...toolName ? { toolName } : {},
49647
49731
  ...result ? { result } : {},
49648
- ..._optionalChain([card, 'optionalAccess', _1264 => _1264.marker]) ? { marker: card.marker } : {},
49649
- ..._optionalChain([card, 'optionalAccess', _1265 => _1265.ref]) ? { cardRef: card.ref } : {},
49732
+ ..._optionalChain([card, 'optionalAccess', _1269 => _1269.marker]) ? { marker: card.marker } : {},
49733
+ ..._optionalChain([card, 'optionalAccess', _1270 => _1270.ref]) ? { cardRef: card.ref } : {},
49650
49734
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
49651
49735
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
49652
49736
  };
@@ -49764,8 +49848,8 @@ var CHAT_STORAGE_VERSION = 1;
49764
49848
  var DEFAULT_CHAT_SOURCE = "embed";
49765
49849
  var chatStorageKey = (source) => {
49766
49850
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
49767
- const auth = _chunk7CZ4MJSIcjs.getEmbedProxyAuth.call(void 0, );
49768
- if (_optionalChain([auth, 'optionalAccess', _1266 => _1266.email])) {
49851
+ const auth = _chunkVIJARDBMcjs.getEmbedProxyAuth.call(void 0, );
49852
+ if (_optionalChain([auth, 'optionalAccess', _1271 => _1271.email])) {
49769
49853
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
49770
49854
  }
49771
49855
  return base;
@@ -49820,7 +49904,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49820
49904
  const { active = true } = runtimeOptions;
49821
49905
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
49822
49906
  const source = runtime.source || DEFAULT_CHAT_SOURCE;
49823
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1267 => _1267.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49907
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1272 => _1272.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49824
49908
  const persistedRef = _react.useRef.call(void 0, null);
49825
49909
  if (persistedRef.current === null) {
49826
49910
  pruneStaleChatStorage(source);
@@ -49925,7 +50009,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49925
50009
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
49926
50010
  sources = sourcesMapRef.current.get(lookupIdx);
49927
50011
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
49928
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1268 => _1268.current, 'access', _1269 => _1269.get, 'call', _1270 => _1270(lookupIdx), 'optionalAccess', _1271 => _1271.scrollAnchor]), () => ( void 0));
50012
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1273 => _1273.current, 'access', _1274 => _1274.get, 'call', _1275 => _1275(lookupIdx), 'optionalAccess', _1276 => _1276.scrollAnchor]), () => ( void 0));
49929
50013
  }
49930
50014
  return {
49931
50015
  id: m.id,
@@ -49973,7 +50057,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49973
50057
  );
49974
50058
  return;
49975
50059
  }
49976
- const refSlug = typeof _optionalChain([reference, 'access', _1272 => _1272.metadata, 'optionalAccess', _1273 => _1273.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
50060
+ const refSlug = typeof _optionalChain([reference, 'access', _1277 => _1277.metadata, 'optionalAccess', _1278 => _1278.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
49977
50061
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
49978
50062
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
49979
50063
  const text = `/${cmdId} display "${escaped}"`;
@@ -50045,18 +50129,18 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
50045
50129
  clearMessages,
50046
50130
  streamingPhase,
50047
50131
  /** Provider key for the lib's `<ModelDisplay>` icon. */
50048
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1274 => _1274.provider]), () => ( null)),
50049
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1275 => _1275.modelLabel]), () => ( null)),
50050
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1276 => _1276.contextWindowMaxTokens]), () => ( null)),
50132
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1279 => _1279.provider]), () => ( null)),
50133
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1280 => _1280.modelLabel]), () => ( null)),
50134
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1281 => _1281.contextWindowMaxTokens]), () => ( null)),
50051
50135
  /** Input tokens (known after server's message_start frame; null until). */
50052
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1277 => _1277.inputTokens]), () => ( null)),
50136
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1282 => _1282.inputTokens]), () => ( null)),
50053
50137
  /** Output tokens (known only after server's trailing usage frame). */
50054
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1278 => _1278.outputTokens]), () => ( null)),
50138
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1283 => _1283.outputTokens]), () => ( null)),
50055
50139
  /** Cache hit % (read / total-input × 100). null during streaming. */
50056
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1279 => _1279.cacheHitRatePct]), () => ( null)),
50140
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1284 => _1284.cacheHitRatePct]), () => ( null)),
50057
50141
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
50058
50142
  * token counts). null until the trailing usage frame lands. */
50059
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1280 => _1280.breakdown]), () => ( null)),
50143
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1285 => _1285.breakdown]), () => ( null)),
50060
50144
  // ─── Dialog management — stubs for v1 ────────────────────────────────
50061
50145
  // Guide mode currently keeps its history in `localStorage` opaquely
50062
50146
  // under the hood (`runtime.source` namespaced key). Surfacing that
@@ -50114,15 +50198,15 @@ var noopRejectRequest = async (_id, _reason) => {
50114
50198
 
50115
50199
  // src/components/chat/utils/process-historical-messages.ts
50116
50200
  function getOwnerDisplayName(owner) {
50117
- if (_optionalChain([owner, 'optionalAccess', _1281 => _1281.type]) === OWNER_TYPE.ADMIN && owner.user) {
50201
+ if (_optionalChain([owner, 'optionalAccess', _1286 => _1286.type]) === OWNER_TYPE.ADMIN && owner.user) {
50118
50202
  const { firstName, lastName } = owner.user;
50119
50203
  const name = [firstName, lastName].filter(Boolean).join(" ");
50120
50204
  if (name) return name;
50121
50205
  }
50122
- return _optionalChain([owner, 'optionalAccess', _1282 => _1282.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
50206
+ return _optionalChain([owner, 'optionalAccess', _1287 => _1287.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
50123
50207
  }
50124
50208
  function getOwnerAvatar(owner) {
50125
- return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1283 => _1283.user, 'optionalAccess', _1284 => _1284.image, 'optionalAccess', _1285 => _1285.imageUrl]), () => ( void 0));
50209
+ return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1288 => _1288.user, 'optionalAccess', _1289 => _1289.image, 'optionalAccess', _1290 => _1290.imageUrl]), () => ( void 0));
50126
50210
  }
50127
50211
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
50128
50212
  messageDataArray.forEach((data) => {
@@ -50147,7 +50231,15 @@ function processHistoricalMessages(messages, options = {}) {
50147
50231
  onReject,
50148
50232
  chatTypeFilter,
50149
50233
  approvalStatuses = {},
50150
- displayApprovalTypes
50234
+ // An omitted option means "display every approval type" — the original
50235
+ // history semantics. Deliberately NOT defaulted to the realtime
50236
+ // processor's ['CLIENT']: consumers that pass a wider list to their
50237
+ // realtime processor but omit it on the history path would silently lose
50238
+ // pending non-CLIENT approval cards on every reload/reconnect refetch
50239
+ // (they also ignore `escalatedApprovals`). Realtime/history parity is
50240
+ // opt-in: pass the same explicit list to both.
50241
+ displayApprovalTypes,
50242
+ batchApprovalsEnabled
50151
50243
  } = options;
50152
50244
  const processedMessages = [];
50153
50245
  const accumulator = createMessageSegmentAccumulator({ onApprove, onReject });
@@ -50185,14 +50277,14 @@ function processHistoricalMessages(messages, options = {}) {
50185
50277
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
50186
50278
  return;
50187
50279
  }
50188
- const isUserMessage = _optionalChain([msg, 'access', _1286 => _1286.owner, 'optionalAccess', _1287 => _1287.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1288 => _1288.owner, 'optionalAccess', _1289 => _1289.type]) === OWNER_TYPE.ADMIN;
50280
+ const isUserMessage = _optionalChain([msg, 'access', _1291 => _1291.owner, 'optionalAccess', _1292 => _1292.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1293 => _1293.owner, 'optionalAccess', _1294 => _1294.type]) === OWNER_TYPE.ADMIN;
50189
50281
  if (isUserMessage) {
50190
50282
  flushAssistantMessage();
50191
- const userAuthorType = _optionalChain([msg, 'access', _1290 => _1290.owner, 'optionalAccess', _1291 => _1291.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50283
+ const userAuthorType = _optionalChain([msg, 'access', _1295 => _1295.owner, 'optionalAccess', _1296 => _1296.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50192
50284
  messageDataArray.forEach((data) => {
50193
50285
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
50194
50286
  const rawContext = data.contextItems;
50195
- const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1292 => _1292.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1293 => _1293.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50287
+ const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1297 => _1297.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1298 => _1298.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50196
50288
  processedMessages.push({
50197
50289
  id: msg.id,
50198
50290
  role: "user",
@@ -50212,11 +50304,17 @@ function processHistoricalMessages(messages, options = {}) {
50212
50304
  }
50213
50305
  lastAssistantId = msg.id;
50214
50306
  messageDataArray.forEach((data) => {
50215
- processMessageData(data, accumulator, approvalStatuses, { displayApprovalTypes }, escalatedApprovals);
50307
+ processMessageData(
50308
+ data,
50309
+ accumulator,
50310
+ approvalStatuses,
50311
+ { displayApprovalTypes, batchApprovalsEnabled },
50312
+ escalatedApprovals
50313
+ );
50216
50314
  });
50217
50315
  const nextMsg = messages[index + 1];
50218
50316
  const isLastMessage = index === messages.length - 1;
50219
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1294 => _1294.owner, 'optionalAccess', _1295 => _1295.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1296 => _1296.owner, 'optionalAccess', _1297 => _1297.type]) === OWNER_TYPE.ADMIN);
50317
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1299 => _1299.owner, 'optionalAccess', _1300 => _1300.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1301 => _1301.owner, 'optionalAccess', _1302 => _1302.type]) === OWNER_TYPE.ADMIN);
50220
50318
  if (isLastMessage || nextIsFromUser) {
50221
50319
  flushAssistantMessage();
50222
50320
  }
@@ -50326,7 +50424,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50326
50424
  }
50327
50425
  }
50328
50426
  } else {
50329
- _optionalChain([escalatedApprovals, 'optionalAccess', _1298 => _1298.set, 'call', _1299 => _1299(data.approvalRequestId, {
50427
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1303 => _1303.set, 'call', _1304 => _1304(data.approvalRequestId, {
50330
50428
  command: data.command || "",
50331
50429
  explanation: data.explanation,
50332
50430
  approvalType,
@@ -50340,8 +50438,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50340
50438
  const existingStatus = approvalStatuses[data.approvalRequestId];
50341
50439
  const status = existingStatus || (data.approved ? "approved" : "rejected");
50342
50440
  const resolvedByName = "resolvedByName" in data ? data.resolvedByName : void 0;
50343
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1300 => _1300.get, 'call', _1301 => _1301(data.approvalRequestId)]);
50344
- if (_optionalChain([escalatedData, 'optionalAccess', _1302 => _1302.toolCalls]) && escalatedData.toolCalls.length > 0) {
50441
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1305 => _1305.get, 'call', _1306 => _1306(data.approvalRequestId)]);
50442
+ if (_optionalChain([escalatedData, 'optionalAccess', _1307 => _1307.toolCalls]) && escalatedData.toolCalls.length > 0) {
50345
50443
  if (batchApprovalsEnabled) {
50346
50444
  accumulator.addApprovalBatch(
50347
50445
  data.approvalRequestId,
@@ -50363,7 +50461,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50363
50461
  );
50364
50462
  }
50365
50463
  }
50366
- _optionalChain([escalatedApprovals, 'optionalAccess', _1303 => _1303.delete, 'call', _1304 => _1304(data.approvalRequestId)]);
50464
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1308 => _1308.delete, 'call', _1309 => _1309(data.approvalRequestId)]);
50367
50465
  break;
50368
50466
  }
50369
50467
  if (escalatedData) {
@@ -50372,7 +50470,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50372
50470
  explanation: escalatedData.explanation,
50373
50471
  approvalType: escalatedData.approvalType
50374
50472
  });
50375
- _optionalChain([escalatedApprovals, 'optionalAccess', _1305 => _1305.delete, 'call', _1306 => _1306(data.approvalRequestId)]);
50473
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1310 => _1310.delete, 'call', _1311 => _1311(data.approvalRequestId)]);
50376
50474
  }
50377
50475
  const before = accumulator.getSegments();
50378
50476
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status, resolvedByName);
@@ -50388,9 +50486,9 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50388
50486
  case MESSAGE_TYPE.ERROR:
50389
50487
  if ("error" in data) {
50390
50488
  let message2;
50391
- if ("details" in data && _optionalChain([data, 'optionalAccess', _1307 => _1307.details])) {
50489
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _1312 => _1312.details])) {
50392
50490
  try {
50393
- message2 = _optionalChain([JSON, 'access', _1308 => _1308.parse, 'call', _1309 => _1309(data.details), 'optionalAccess', _1310 => _1310.error, 'optionalAccess', _1311 => _1311.message]);
50491
+ message2 = _optionalChain([JSON, 'access', _1313 => _1313.parse, 'call', _1314 => _1314(data.details), 'optionalAccess', _1315 => _1315.error, 'optionalAccess', _1316 => _1316.message]);
50394
50492
  } catch (e67) {
50395
50493
  message2 = data.details;
50396
50494
  }
@@ -50436,7 +50534,7 @@ function extractErrorMessages(messages, options = {}) {
50436
50534
  return errorMessages;
50437
50535
  }
50438
50536
  function processHistoricalMessagesWithErrors(messages, options = {}) {
50439
- const { chatTypeFilter, assistantName = "Fae", assistantType = "fae", assistantAvatar, onApprove, onReject, approvalStatuses = {}, displayApprovalTypes } = options;
50537
+ const { chatTypeFilter, assistantName = "Fae", assistantType = "fae", assistantAvatar, onApprove, onReject, approvalStatuses = {}, displayApprovalTypes, batchApprovalsEnabled } = options;
50440
50538
  const processedMessages = [];
50441
50539
  const accumulator = createMessageSegmentAccumulator({ onApprove, onReject });
50442
50540
  const escalatedApprovals = /* @__PURE__ */ new Map();
@@ -50473,14 +50571,14 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50473
50571
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
50474
50572
  return;
50475
50573
  }
50476
- const isUserMessage = _optionalChain([msg, 'access', _1312 => _1312.owner, 'optionalAccess', _1313 => _1313.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1314 => _1314.owner, 'optionalAccess', _1315 => _1315.type]) === OWNER_TYPE.ADMIN;
50574
+ const isUserMessage = _optionalChain([msg, 'access', _1317 => _1317.owner, 'optionalAccess', _1318 => _1318.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1319 => _1319.owner, 'optionalAccess', _1320 => _1320.type]) === OWNER_TYPE.ADMIN;
50477
50575
  if (isUserMessage) {
50478
50576
  flushAssistantMessage();
50479
- const userAuthorType = _optionalChain([msg, 'access', _1316 => _1316.owner, 'optionalAccess', _1317 => _1317.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50577
+ const userAuthorType = _optionalChain([msg, 'access', _1321 => _1321.owner, 'optionalAccess', _1322 => _1322.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50480
50578
  messageDataArray.forEach((data) => {
50481
50579
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
50482
50580
  const rawContext = data.contextItems;
50483
- const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1318 => _1318.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1319 => _1319.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50581
+ const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1323 => _1323.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1324 => _1324.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50484
50582
  processedMessages.push({
50485
50583
  id: msg.id,
50486
50584
  role: "user",
@@ -50500,11 +50598,17 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50500
50598
  }
50501
50599
  lastAssistantId = msg.id;
50502
50600
  messageDataArray.forEach((data) => {
50503
- processMessageData(data, accumulator, approvalStatuses, { displayApprovalTypes }, escalatedApprovals);
50601
+ processMessageData(
50602
+ data,
50603
+ accumulator,
50604
+ approvalStatuses,
50605
+ { displayApprovalTypes, batchApprovalsEnabled },
50606
+ escalatedApprovals
50607
+ );
50504
50608
  });
50505
50609
  const nextMsg = messages[index + 1];
50506
50610
  const isLastMessage = index === messages.length - 1;
50507
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1320 => _1320.owner, 'optionalAccess', _1321 => _1321.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1322 => _1322.owner, 'optionalAccess', _1323 => _1323.type]) === OWNER_TYPE.ADMIN);
50611
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1325 => _1325.owner, 'optionalAccess', _1326 => _1326.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1327 => _1327.owner, 'optionalAccess', _1328 => _1328.type]) === OWNER_TYPE.ADMIN);
50508
50612
  if (isLastMessage || nextIsFromUser) {
50509
50613
  flushAssistantMessage();
50510
50614
  }
@@ -50529,6 +50633,65 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50529
50633
  };
50530
50634
  }
50531
50635
 
50636
+ // src/components/chat/utils/extract-incomplete-message-state.ts
50637
+ function extractIncompleteMessageState(lastMessage) {
50638
+ if (!lastMessage || lastMessage.role !== "assistant" || typeof lastMessage.content === "string") {
50639
+ return void 0;
50640
+ }
50641
+ const segments = lastMessage.content;
50642
+ const pendingApprovals = /* @__PURE__ */ new Map();
50643
+ const executingTools = /* @__PURE__ */ new Map();
50644
+ let hasIncompleteState = false;
50645
+ segments.forEach((segment) => {
50646
+ switch (segment.type) {
50647
+ case "tool_execution":
50648
+ if (segment.data.type === "EXECUTING_TOOL") {
50649
+ const toolKey = segment.data.toolExecutionRequestId || `${segment.data.integratedToolType}-${segment.data.toolFunction}`;
50650
+ executingTools.set(toolKey, {
50651
+ integratedToolType: segment.data.integratedToolType,
50652
+ toolFunction: segment.data.toolFunction,
50653
+ toolTitle: segment.data.toolTitle,
50654
+ parameters: segment.data.parameters
50655
+ });
50656
+ hasIncompleteState = true;
50657
+ }
50658
+ break;
50659
+ case "approval_request":
50660
+ if (segment.status === "pending" && segment.data.requestId) {
50661
+ pendingApprovals.set(segment.data.requestId, {
50662
+ command: segment.data.command,
50663
+ explanation: segment.data.explanation,
50664
+ approvalType: segment.data.approvalType || "CLIENT"
50665
+ });
50666
+ hasIncompleteState = true;
50667
+ }
50668
+ break;
50669
+ case "approval_batch": {
50670
+ const allDone = !!segment.data.executions && segment.data.toolCalls.every(
50671
+ (c) => _optionalChain([segment, 'access', _1329 => _1329.data, 'access', _1330 => _1330.executions, 'optionalAccess', _1331 => _1331[c.toolExecutionRequestId], 'optionalAccess', _1332 => _1332.status]) === "done"
50672
+ );
50673
+ if (segment.status !== "rejected" && !allDone) {
50674
+ hasIncompleteState = true;
50675
+ }
50676
+ break;
50677
+ }
50678
+ case "context_compaction":
50679
+ if (segment.status === "started") {
50680
+ hasIncompleteState = true;
50681
+ }
50682
+ break;
50683
+ }
50684
+ });
50685
+ if (!hasIncompleteState) {
50686
+ return void 0;
50687
+ }
50688
+ return {
50689
+ existingSegments: segments,
50690
+ pendingApprovals: pendingApprovals.size > 0 ? pendingApprovals : void 0,
50691
+ executingTools: executingTools.size > 0 ? executingTools : void 0
50692
+ };
50693
+ }
50694
+
50532
50695
  // src/components/chat/hooks/use-nats-chat-adapter.ts
50533
50696
  function nextId(role) {
50534
50697
  return `${role}-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
@@ -50551,6 +50714,110 @@ function updateTrailingAssistant(prev, segments) {
50551
50714
  { ...last, segments }
50552
50715
  ];
50553
50716
  }
50717
+ var CONTENT_DEDUP_WINDOW = 4;
50718
+ var SYSTEM_DEDUP_WINDOW = 10;
50719
+ function hasRecentMessage(prev, predicate, window2) {
50720
+ const start = Math.max(0, prev.length - window2);
50721
+ for (let i = prev.length - 1; i >= start; i--) {
50722
+ if (predicate(prev[i])) return true;
50723
+ }
50724
+ return false;
50725
+ }
50726
+ function appendToTrailingAssistant(prev, segments) {
50727
+ if (segments.length === 0) return prev;
50728
+ const last = prev[prev.length - 1];
50729
+ if (!last || last.role !== "assistant") {
50730
+ return [
50731
+ ...prev,
50732
+ { id: nextId("assistant"), role: "assistant", content: "", segments }
50733
+ ];
50734
+ }
50735
+ const merged = [..._nullishCoalesce(last.segments, () => ( []))];
50736
+ for (const seg of segments) {
50737
+ const tail = merged[merged.length - 1];
50738
+ if (seg.type === "text" && _optionalChain([tail, 'optionalAccess', _1333 => _1333.type]) === "text") {
50739
+ merged[merged.length - 1] = { type: "text", text: tail.text + seg.text };
50740
+ } else if (seg.type === "thinking" && _optionalChain([tail, 'optionalAccess', _1334 => _1334.type]) === "thinking") {
50741
+ merged[merged.length - 1] = { type: "thinking", text: tail.text + seg.text };
50742
+ } else if (seg.type === "approval_batch") {
50743
+ const idx = merged.findIndex(
50744
+ (m) => m.type === "approval_batch" && m.data.approvalRequestId === seg.data.approvalRequestId
50745
+ );
50746
+ if (idx !== -1) merged[idx] = seg;
50747
+ else merged.push(seg);
50748
+ } else if (seg.type === "approval_request") {
50749
+ const idx = merged.findIndex(
50750
+ (m) => m.type === "approval_request" && m.data.requestId === seg.data.requestId && m.data.command === seg.data.command
50751
+ );
50752
+ if (idx !== -1) merged[idx] = seg;
50753
+ else merged.push(seg);
50754
+ } else {
50755
+ merged.push(seg);
50756
+ }
50757
+ }
50758
+ return [...prev.slice(0, -1), { ...last, segments: merged }];
50759
+ }
50760
+ function upsertTrailingCompaction(prev, segments) {
50761
+ const compaction = [...segments].reverse().find((s) => s.type === "context_compaction");
50762
+ if (!compaction) return prev;
50763
+ const last = prev[prev.length - 1];
50764
+ if (!last || last.role !== "assistant") {
50765
+ return [
50766
+ ...prev,
50767
+ { id: nextId("assistant"), role: "assistant", content: "", segments: [compaction] }
50768
+ ];
50769
+ }
50770
+ const existing = _nullishCoalesce(last.segments, () => ( []));
50771
+ const startedIdx = existing.map((s) => s.type === "context_compaction" && s.status === "started").lastIndexOf(true);
50772
+ const merged = startedIdx !== -1 ? existing.map((s, i) => i === startedIdx ? compaction : s) : [...existing, compaction];
50773
+ return [...prev.slice(0, -1), { ...last, segments: merged }];
50774
+ }
50775
+ function applyToolExecutionToMessages(prev, segment) {
50776
+ const toolData = segment.data;
50777
+ const execId = toolData.toolExecutionRequestId;
50778
+ for (let i = prev.length - 1; i >= 0; i--) {
50779
+ const message2 = prev[i];
50780
+ if (message2.role !== "assistant" || !message2.segments) continue;
50781
+ for (let j = message2.segments.length - 1; j >= 0; j--) {
50782
+ const seg = message2.segments[j];
50783
+ if (execId && seg.type === "approval_batch" && seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId)) {
50784
+ const prevExec = _optionalChain([seg, 'access', _1335 => _1335.data, 'access', _1336 => _1336.executions, 'optionalAccess', _1337 => _1337[execId]]);
50785
+ if (toolData.type === "EXECUTING_TOOL" && _optionalChain([prevExec, 'optionalAccess', _1338 => _1338.status]) === "done") {
50786
+ return prev;
50787
+ }
50788
+ const nextExec = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prevExec, 'optionalAccess', _1339 => _1339.result]), success: _optionalChain([prevExec, 'optionalAccess', _1340 => _1340.success]) };
50789
+ const nextSegments = [...message2.segments];
50790
+ nextSegments[j] = {
50791
+ ...seg,
50792
+ data: { ...seg.data, executions: { ..._nullishCoalesce(seg.data.executions, () => ( {})), [execId]: nextExec } }
50793
+ };
50794
+ const next = [...prev];
50795
+ next[i] = { ...message2, segments: nextSegments };
50796
+ return next;
50797
+ }
50798
+ if (seg.type === "tool_execution") {
50799
+ const matches = execId ? seg.data.toolExecutionRequestId === execId : seg.data.type === "EXECUTING_TOOL" && seg.data.integratedToolType === toolData.integratedToolType && seg.data.toolFunction === toolData.toolFunction;
50800
+ if (!matches) continue;
50801
+ if (toolData.type === "EXECUTING_TOOL" && seg.data.type === "EXECUTED_TOOL") {
50802
+ return prev;
50803
+ }
50804
+ const nextSegments = [...message2.segments];
50805
+ nextSegments[j] = {
50806
+ type: "tool_execution",
50807
+ data: {
50808
+ ...toolData,
50809
+ toolTitle: _nullishCoalesce(toolData.toolTitle, () => ( seg.data.toolTitle)),
50810
+ parameters: toolData.parameters || seg.data.parameters
50811
+ }
50812
+ };
50813
+ const next = [...prev];
50814
+ next[i] = { ...message2, segments: nextSegments };
50815
+ return next;
50816
+ }
50817
+ }
50818
+ }
50819
+ return appendToTrailingAssistant(prev, [segment]);
50820
+ }
50554
50821
  function mapProcessedToUnified(processed) {
50555
50822
  const out = [];
50556
50823
  for (const m of processed) {
@@ -50590,6 +50857,7 @@ function useNatsChatAdapter(config, options = {}) {
50590
50857
  fetchChunks,
50591
50858
  topics,
50592
50859
  batchApprovalsEnabled,
50860
+ displayApprovalTypes,
50593
50861
  fetchDialogs,
50594
50862
  fetchDialogMessages,
50595
50863
  createDialog: createDialogCallback,
@@ -50609,11 +50877,17 @@ function useNatsChatAdapter(config, options = {}) {
50609
50877
  const isManagedMode = fetchDialogs !== void 0;
50610
50878
  const [internalDialogId, setInternalDialogId] = _react.useState.call(void 0, null);
50611
50879
  const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
50880
+ const currentDialogIdRef = _react.useRef.call(void 0, dialogId);
50881
+ currentDialogIdRef.current = dialogId;
50612
50882
  const [messages, setMessages] = _react.useState.call(void 0, []);
50613
50883
  const [streamingPhase, setStreamingPhase] = _react.useState.call(void 0, "idle");
50614
50884
  const streamingPhaseRef = _react.useRef.call(void 0, streamingPhase);
50615
50885
  streamingPhaseRef.current = streamingPhase;
50616
- const suppressAgentBusyRef = _react.useRef.call(void 0, false);
50886
+ const suppressAgentBusyRef = _react.useRef.call(void 0, 0);
50887
+ const adoptTrailingAssistantRef = _react.useRef.call(void 0, false);
50888
+ const hasConnectedOnceRef = _react.useRef.call(void 0, false);
50889
+ const seenParticipantSeqsRef = _react.useRef.call(void 0, /* @__PURE__ */ new Set());
50890
+ const pendingEchoTextsRef = _react.useRef.call(void 0, []);
50617
50891
  const [approvalStatuses, setApprovalStatuses] = _react.useState.call(void 0, {});
50618
50892
  const [dialogs, setDialogs] = _react.useState.call(void 0, []);
50619
50893
  const [dialogsNextCursor, setDialogsNextCursor] = _react.useState.call(void 0, null);
@@ -50679,17 +50953,39 @@ function useNatsChatAdapter(config, options = {}) {
50679
50953
  return handleRejectRef.current(requestId);
50680
50954
  }, []);
50681
50955
  const callbacksRef = _react.useRef.call(void 0, {
50682
- onSegmentsUpdate: (segments) => {
50956
+ onSegmentsUpdate: (segments, meta) => {
50957
+ if (_optionalChain([meta, 'optionalAccess', _1341 => _1341.append]) && meta.isCompacting) {
50958
+ setMessages((prev) => upsertTrailingCompaction(prev, segments));
50959
+ return;
50960
+ }
50961
+ if (_optionalChain([meta, 'optionalAccess', _1342 => _1342.append])) {
50962
+ setMessages((prev) => appendToTrailingAssistant(prev, segments));
50963
+ return;
50964
+ }
50683
50965
  setMessages((prev) => updateTrailingAssistant(prev, segments));
50684
50966
  },
50685
- onStreamStart: () => setStreamingPhase("streaming"),
50967
+ onStreamStart: () => {
50968
+ setStreamingPhase("streaming");
50969
+ const adoptTail = adoptTrailingAssistantRef.current;
50970
+ adoptTrailingAssistantRef.current = false;
50971
+ setMessages((prev) => {
50972
+ const last = prev[prev.length - 1];
50973
+ if (!last || last.role !== "assistant" || adoptTail) return prev;
50974
+ const hasContent = (_nullishCoalesce(_optionalChain([last, 'access', _1343 => _1343.segments, 'optionalAccess', _1344 => _1344.length]), () => ( 0))) > 0 || last.content !== "";
50975
+ if (!hasContent) return prev;
50976
+ return [
50977
+ ...prev,
50978
+ { id: nextId("assistant"), role: "assistant", content: "", segments: [] }
50979
+ ];
50980
+ });
50981
+ },
50686
50982
  onStreamEnd: () => setStreamingPhase("idle"),
50687
50983
  // Agent is executing (approved) commands outside an open stream — keep
50688
50984
  // the composer locked exactly like the in-stream phases. An open stream
50689
50985
  // keeps ownership: only 'idle' upgrades to 'thinking'. Suppressed during
50690
50986
  // initial catchup so a replayed dead tail can't lock a finished dialog.
50691
50987
  onAgentBusy: () => {
50692
- if (suppressAgentBusyRef.current) return;
50988
+ if (suppressAgentBusyRef.current > 0) return;
50693
50989
  setStreamingPhase((p) => p === "idle" ? "thinking" : p);
50694
50990
  },
50695
50991
  // Terminal turn failures can arrive without a MESSAGE_END; unlock the
@@ -50704,27 +51000,171 @@ function useNatsChatAdapter(config, options = {}) {
50704
51000
  provider: meta.providerName || null,
50705
51001
  modelLabel: meta.modelDisplayName || meta.modelName || null,
50706
51002
  contextWindowMaxTokens: meta.contextWindow || null
50707
- })
51003
+ }),
51004
+ // Post-MESSAGE_END tool chunks (approved commands executing after the
51005
+ // approval bubble, async batch results). Routed through the cross-message
51006
+ // updater — the accumulator was reset at MESSAGE_END, so the old
51007
+ // fallthrough replaced the whole trailing bubble with one tool segment.
51008
+ onToolExecuted: (segment) => {
51009
+ setMessages((prev) => applyToolExecutionToMessages(prev, segment));
51010
+ },
51011
+ // Cross-message approval status flip. Wiring this also makes the
51012
+ // processor skip its cumulative re-emit for resolved approvals — which,
51013
+ // post-MESSAGE_END, was an empty array that blanked the trailing bubble.
51014
+ onApprovalResolved: (requestId, status, _approvalType, resolvedByName) => {
51015
+ setMessages((prev) => {
51016
+ let changed = false;
51017
+ const next = prev.map((m) => {
51018
+ if (m.role !== "assistant" || !m.segments) return m;
51019
+ let msgChanged = false;
51020
+ const segs = m.segments.map((s) => {
51021
+ if (s.type === "approval_request" && s.data.requestId === requestId && s.status !== status) {
51022
+ msgChanged = true;
51023
+ return { ...s, status };
51024
+ }
51025
+ if (s.type === "approval_batch" && s.data.approvalRequestId === requestId) {
51026
+ const nextResolvedBy = _nullishCoalesce(resolvedByName, () => ( s.resolvedByName));
51027
+ if (s.status === status && nextResolvedBy === s.resolvedByName) return s;
51028
+ msgChanged = true;
51029
+ return { ...s, status, resolvedByName: nextResolvedBy };
51030
+ }
51031
+ return s;
51032
+ });
51033
+ if (!msgChanged) return m;
51034
+ changed = true;
51035
+ return { ...m, segments: segs };
51036
+ });
51037
+ return changed ? next : prev;
51038
+ });
51039
+ setApprovalStatuses(
51040
+ (prev) => prev[requestId] === status ? prev : { ...prev, [requestId]: status }
51041
+ );
51042
+ },
51043
+ // MESSAGE_REQUEST echo — a user message from THIS or another session.
51044
+ onUserMessage: (text, meta) => {
51045
+ if (!text) return;
51046
+ const seq = _optionalChain([meta, 'optionalAccess', _1345 => _1345.streamSeq]);
51047
+ if (typeof seq === "number") {
51048
+ if (seenParticipantSeqsRef.current.has(seq)) return;
51049
+ seenParticipantSeqsRef.current.add(seq);
51050
+ }
51051
+ if (_optionalChain([meta, 'optionalAccess', _1346 => _1346.ownerType]) !== "ADMIN") {
51052
+ const echoIdx = pendingEchoTextsRef.current.indexOf(text);
51053
+ if (echoIdx !== -1) {
51054
+ pendingEchoTextsRef.current.splice(echoIdx, 1);
51055
+ return;
51056
+ }
51057
+ }
51058
+ const authorType = _optionalChain([meta, 'optionalAccess', _1347 => _1347.ownerType]) === "ADMIN" ? "admin" : "user";
51059
+ setMessages((prev) => {
51060
+ if (typeof seq !== "number" && hasRecentMessage(
51061
+ prev,
51062
+ (m) => m.role === "user" && (_nullishCoalesce(m.authorType, () => ( "user"))) === authorType && m.content === text,
51063
+ CONTENT_DEDUP_WINDOW
51064
+ )) {
51065
+ return prev;
51066
+ }
51067
+ return [
51068
+ ...prev,
51069
+ {
51070
+ id: nextId("user"),
51071
+ role: "user",
51072
+ content: text,
51073
+ ..._optionalChain([meta, 'optionalAccess', _1348 => _1348.displayName]) ? { name: meta.displayName } : {},
51074
+ authorType,
51075
+ ..._optionalChain([meta, 'optionalAccess', _1349 => _1349.contextItems]) && meta.contextItems.length > 0 ? {
51076
+ contextItems: meta.contextItems.map((ci) => ({
51077
+ type: ci.type,
51078
+ id: ci.id,
51079
+ label: _nullishCoalesce(ci.label, () => ( ci.id))
51080
+ }))
51081
+ } : {}
51082
+ }
51083
+ ];
51084
+ });
51085
+ },
51086
+ // Technician / admin direct message into the dialog.
51087
+ onDirectMessage: (text, meta) => {
51088
+ if (!text) return;
51089
+ const seq = _optionalChain([meta, 'optionalAccess', _1350 => _1350.streamSeq]);
51090
+ if (typeof seq === "number") {
51091
+ if (seenParticipantSeqsRef.current.has(seq)) return;
51092
+ seenParticipantSeqsRef.current.add(seq);
51093
+ }
51094
+ setMessages((prev) => {
51095
+ if (typeof seq !== "number" && hasRecentMessage(
51096
+ prev,
51097
+ (m) => m.role === "user" && m.authorType === "admin" && m.content === text,
51098
+ CONTENT_DEDUP_WINDOW
51099
+ )) {
51100
+ return prev;
51101
+ }
51102
+ return [
51103
+ ...prev,
51104
+ {
51105
+ id: `direct-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,
51106
+ role: "user",
51107
+ content: text,
51108
+ name: _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _1351 => _1351.displayName]), () => ( "Admin")),
51109
+ authorType: "admin"
51110
+ }
51111
+ ];
51112
+ });
51113
+ },
51114
+ // System notice — rendered as a name-only row (same shape the history
51115
+ // processor produces via `pushStandaloneMessages`).
51116
+ onSystemMessage: (text, meta) => {
51117
+ if (!text) return;
51118
+ const seq = _optionalChain([meta, 'optionalAccess', _1352 => _1352.streamSeq]);
51119
+ if (typeof seq === "number") {
51120
+ if (seenParticipantSeqsRef.current.has(seq)) return;
51121
+ seenParticipantSeqsRef.current.add(seq);
51122
+ }
51123
+ setMessages((prev) => {
51124
+ if (typeof seq !== "number" && hasRecentMessage(prev, (m) => m.authorType === "system" && m.name === text, SYSTEM_DEDUP_WINDOW)) {
51125
+ return prev;
51126
+ }
51127
+ return [
51128
+ ...prev,
51129
+ {
51130
+ id: `system-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,
51131
+ role: "user",
51132
+ content: "",
51133
+ name: text,
51134
+ authorType: "system"
51135
+ }
51136
+ ];
51137
+ });
51138
+ }
50708
51139
  });
50709
51140
  const { processChunk, reset: resetAccumulator } = useRealtimeChunkProcessor({
50710
51141
  callbacks: {
50711
- onSegmentsUpdate: (segments) => callbacksRef.current.onSegmentsUpdate(segments),
51142
+ onSegmentsUpdate: (segments, meta) => callbacksRef.current.onSegmentsUpdate(segments, meta),
50712
51143
  onStreamStart: () => callbacksRef.current.onStreamStart(),
50713
51144
  onStreamEnd: () => callbacksRef.current.onStreamEnd(),
50714
51145
  onAgentBusy: () => callbacksRef.current.onAgentBusy(),
50715
51146
  onError: () => callbacksRef.current.onError(),
50716
51147
  onTokenUsage: (data) => callbacksRef.current.onTokenUsage(data),
50717
51148
  onMetadata: (meta) => callbacksRef.current.onMetadata(meta),
51149
+ onToolExecuted: (segment) => callbacksRef.current.onToolExecuted(segment),
51150
+ onApprovalResolved: (requestId, status, approvalType, resolvedByName) => callbacksRef.current.onApprovalResolved(requestId, status, approvalType, resolvedByName),
51151
+ onUserMessage: (text, meta) => callbacksRef.current.onUserMessage(text, meta),
51152
+ onDirectMessage: (text, meta) => callbacksRef.current.onDirectMessage(text, meta),
51153
+ onSystemMessage: (text, meta) => callbacksRef.current.onSystemMessage(text, meta),
50718
51154
  onApprove: accumApprove,
50719
51155
  onReject: accumReject
50720
51156
  },
50721
- batchApprovalsEnabled
51157
+ batchApprovalsEnabled,
51158
+ approvalStatuses,
51159
+ ...displayApprovalTypes ? { displayApprovalTypes } : {}
50722
51160
  });
50723
51161
  const {
50724
51162
  processChunk: catchupProcessChunk,
50725
51163
  catchUpChunks,
50726
51164
  startInitialBuffering,
50727
- resetChunkTracking
51165
+ resetChunkTracking,
51166
+ resetAndCatchUp,
51167
+ isBufferingActive
50728
51168
  } = useChunkCatchup({
50729
51169
  dialogId: active ? dialogId : null,
50730
51170
  onChunkReceived: (chunk) => processChunk(chunk),
@@ -50753,11 +51193,13 @@ function useNatsChatAdapter(config, options = {}) {
50753
51193
  onApprove: accumApprove,
50754
51194
  onReject: accumReject,
50755
51195
  approvalStatuses,
50756
- batchApprovalsEnabled
51196
+ batchApprovalsEnabled,
51197
+ ...displayApprovalTypes ? { displayApprovalTypes } : {}
50757
51198
  }
50758
51199
  );
50759
51200
  const unified = mapProcessedToUnified(rawProcessed);
50760
51201
  if (cursor === void 0) {
51202
+ adoptTrailingAssistantRef.current = isBufferingActive() && extractIncompleteMessageState(rawProcessed[rawProcessed.length - 1]) !== void 0;
50761
51203
  setMessages(unified);
50762
51204
  } else {
50763
51205
  setMessages((prev) => [...unified, ...prev]);
@@ -50781,8 +51223,10 @@ function useNatsChatAdapter(config, options = {}) {
50781
51223
  chatTypeFilter,
50782
51224
  approvalStatuses,
50783
51225
  batchApprovalsEnabled,
51226
+ displayApprovalTypes,
50784
51227
  accumApprove,
50785
- accumReject
51228
+ accumReject,
51229
+ isBufferingActive
50786
51230
  ]
50787
51231
  );
50788
51232
  const prevDialogIdRef = _react.useRef.call(void 0, void 0);
@@ -50791,6 +51235,9 @@ function useNatsChatAdapter(config, options = {}) {
50791
51235
  prevDialogIdRef.current = dialogId;
50792
51236
  historyLoadSeqRef.current += 1;
50793
51237
  resetAccumulator();
51238
+ adoptTrailingAssistantRef.current = false;
51239
+ seenParticipantSeqsRef.current.clear();
51240
+ pendingEchoTextsRef.current = [];
50794
51241
  setMessages([]);
50795
51242
  setMessagesNextCursor(null);
50796
51243
  setDialogTokenUsage(null);
@@ -50802,13 +51249,16 @@ function useNatsChatAdapter(config, options = {}) {
50802
51249
  }, [active, dialogId, loadDialogHistory, resetAccumulator]);
50803
51250
  _react.useEffect.call(void 0, () => {
50804
51251
  if (!active || !dialogId) return;
50805
- suppressAgentBusyRef.current = true;
51252
+ suppressAgentBusyRef.current += 1;
50806
51253
  resetChunkTracking();
50807
51254
  startInitialBuffering();
50808
51255
  catchUpChunks().catch((err) => {
50809
51256
  console.error("[useNatsChatAdapter] initial catchup failed:", err);
50810
51257
  }).finally(() => {
50811
- suppressAgentBusyRef.current = false;
51258
+ suppressAgentBusyRef.current = Math.max(0, suppressAgentBusyRef.current - 1);
51259
+ if (dialogId === currentDialogIdRef.current) {
51260
+ adoptTrailingAssistantRef.current = false;
51261
+ }
50812
51262
  });
50813
51263
  }, [active, dialogId, resetChunkTracking, startInitialBuffering, catchUpChunks]);
50814
51264
  useNatsDialogSubscription({
@@ -50823,6 +51273,30 @@ function useNatsChatAdapter(config, options = {}) {
50823
51273
  onEvent: (payload, messageType) => {
50824
51274
  catchupProcessChunk(payload, messageType);
50825
51275
  setConnectionState("connected");
51276
+ },
51277
+ onConnect: () => {
51278
+ if (!hasConnectedOnceRef.current) {
51279
+ hasConnectedOnceRef.current = true;
51280
+ return;
51281
+ }
51282
+ suppressAgentBusyRef.current += 1;
51283
+ startInitialBuffering();
51284
+ void (async () => {
51285
+ try {
51286
+ if (dialogId && fetchDialogMessages) {
51287
+ await loadDialogHistory(dialogId);
51288
+ }
51289
+ if (dialogId !== currentDialogIdRef.current) return;
51290
+ await resetAndCatchUp();
51291
+ } catch (err) {
51292
+ console.error("[useNatsChatAdapter] reconnect catchup failed:", err);
51293
+ } finally {
51294
+ suppressAgentBusyRef.current = Math.max(0, suppressAgentBusyRef.current - 1);
51295
+ if (dialogId === currentDialogIdRef.current) {
51296
+ adoptTrailingAssistantRef.current = false;
51297
+ }
51298
+ }
51299
+ })();
50826
51300
  }
50827
51301
  });
50828
51302
  _react.useEffect.call(void 0, () => {
@@ -50873,7 +51347,9 @@ function useNatsChatAdapter(config, options = {}) {
50873
51347
  }, [active, fetchDialogs, loadDialogsPage]);
50874
51348
  const sendMessage = _react.useCallback.call(void 0,
50875
51349
  async (text, sendOptions) => {
50876
- const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1324 => _1324.hidden]), () => ( false));
51350
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1353 => _1353.hidden]), () => ( false));
51351
+ pendingEchoTextsRef.current.push(text);
51352
+ if (pendingEchoTextsRef.current.length > 5) pendingEchoTextsRef.current.shift();
50877
51353
  setMessages((prev) => [
50878
51354
  ...prev,
50879
51355
  {
@@ -51037,11 +51513,11 @@ function useNatsChatAdapter(config, options = {}) {
51037
51513
  // Tokens: live `token_usage` frame / dialog snapshot (`dialogTokenUsage`).
51038
51514
  // contextWindow uses the dialog's `contextSize` (the "X / Y" denominator,
51039
51515
  // matching the /mingo page). cacheHitRate/breakdown are SSE-only → null.
51040
- currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1325 => _1325.provider]), () => ( modelProvider)), () => ( null)),
51041
- currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1326 => _1326.modelLabel]), () => ( modelLabel)), () => ( null)),
51042
- currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1327 => _1327.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _1328 => _1328.contextWindowMaxTokens]))), () => ( null)),
51043
- currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1329 => _1329.inputTokensSize]), () => ( null)),
51044
- currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1330 => _1330.outputTokensSize]), () => ( null)),
51516
+ currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1354 => _1354.provider]), () => ( modelProvider)), () => ( null)),
51517
+ currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1355 => _1355.modelLabel]), () => ( modelLabel)), () => ( null)),
51518
+ currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1356 => _1356.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _1357 => _1357.contextWindowMaxTokens]))), () => ( null)),
51519
+ currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1358 => _1358.inputTokensSize]), () => ( null)),
51520
+ currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1359 => _1359.outputTokensSize]), () => ( null)),
51045
51521
  currentCacheHitRatePct: null,
51046
51522
  currentUsageBreakdown: null,
51047
51523
  // Dialog management
@@ -51254,65 +51730,6 @@ function useUnifiedChat(options) {
51254
51730
  );
51255
51731
  }
51256
51732
 
51257
- // src/components/chat/utils/extract-incomplete-message-state.ts
51258
- function extractIncompleteMessageState(lastMessage) {
51259
- if (!lastMessage || lastMessage.role !== "assistant" || typeof lastMessage.content === "string") {
51260
- return void 0;
51261
- }
51262
- const segments = lastMessage.content;
51263
- const pendingApprovals = /* @__PURE__ */ new Map();
51264
- const executingTools = /* @__PURE__ */ new Map();
51265
- let hasIncompleteState = false;
51266
- segments.forEach((segment) => {
51267
- switch (segment.type) {
51268
- case "tool_execution":
51269
- if (segment.data.type === "EXECUTING_TOOL") {
51270
- const toolKey = segment.data.toolExecutionRequestId || `${segment.data.integratedToolType}-${segment.data.toolFunction}`;
51271
- executingTools.set(toolKey, {
51272
- integratedToolType: segment.data.integratedToolType,
51273
- toolFunction: segment.data.toolFunction,
51274
- toolTitle: segment.data.toolTitle,
51275
- parameters: segment.data.parameters
51276
- });
51277
- hasIncompleteState = true;
51278
- }
51279
- break;
51280
- case "approval_request":
51281
- if (segment.status === "pending" && segment.data.requestId) {
51282
- pendingApprovals.set(segment.data.requestId, {
51283
- command: segment.data.command,
51284
- explanation: segment.data.explanation,
51285
- approvalType: segment.data.approvalType || "CLIENT"
51286
- });
51287
- hasIncompleteState = true;
51288
- }
51289
- break;
51290
- case "approval_batch": {
51291
- const allDone = !!segment.data.executions && segment.data.toolCalls.every(
51292
- (c) => _optionalChain([segment, 'access', _1331 => _1331.data, 'access', _1332 => _1332.executions, 'optionalAccess', _1333 => _1333[c.toolExecutionRequestId], 'optionalAccess', _1334 => _1334.status]) === "done"
51293
- );
51294
- if (segment.status !== "rejected" && !allDone) {
51295
- hasIncompleteState = true;
51296
- }
51297
- break;
51298
- }
51299
- case "context_compaction":
51300
- if (segment.status === "started") {
51301
- hasIncompleteState = true;
51302
- }
51303
- break;
51304
- }
51305
- });
51306
- if (!hasIncompleteState) {
51307
- return void 0;
51308
- }
51309
- return {
51310
- existingSegments: segments,
51311
- pendingApprovals: pendingApprovals.size > 0 ? pendingApprovals : void 0,
51312
- executingTools: executingTools.size > 0 ? executingTools : void 0
51313
- };
51314
- }
51315
-
51316
51733
  // src/components/chat/utils/history-merge.ts
51317
51734
  var SYNTHETIC_REALTIME_ID_PREFIXES = ["assistant-", "user-", "direct-", "system-", "error-"];
51318
51735
  function isSyntheticRealtimeId(id) {
@@ -51357,20 +51774,20 @@ function mergeHistoryWithRealtime(input) {
51357
51774
  const seqCoverageKnown = realtimeSeenStreamSeq > 0 && historyMaxStreamSeq > 0;
51358
51775
  const historyCoversRealtime = seqCoverageKnown ? historyMaxStreamSeq >= realtimeSeenStreamSeq : null;
51359
51776
  const trailing = processedHistory[processedHistory.length - 1];
51360
- const historyTrailingAssistant = _optionalChain([trailing, 'optionalAccess', _1335 => _1335.role]) === "assistant" ? trailing : null;
51361
- const historyBatchId = historyTrailingAssistant && Array.isArray(historyTrailingAssistant.content) ? _nullishCoalesce(_optionalChain([historyTrailingAssistant, 'access', _1336 => _1336.content, 'access', _1337 => _1337.find, 'call', _1338 => _1338((s) => s.type === "approval_batch"), 'optionalAccess', _1339 => _1339.data, 'optionalAccess', _1340 => _1340.approvalRequestId]), () => ( null)) : null;
51777
+ const historyTrailingAssistant = _optionalChain([trailing, 'optionalAccess', _1360 => _1360.role]) === "assistant" ? trailing : null;
51778
+ const historyBatchId = historyTrailingAssistant && Array.isArray(historyTrailingAssistant.content) ? _nullishCoalesce(_optionalChain([historyTrailingAssistant, 'access', _1361 => _1361.content, 'access', _1362 => _1362.find, 'call', _1363 => _1363((s) => s.type === "approval_batch"), 'optionalAccess', _1364 => _1364.data, 'optionalAccess', _1365 => _1365.approvalRequestId]), () => ( null)) : null;
51362
51779
  let processedToUse = processedHistory;
51363
51780
  const pinnedSyntheticIds = /* @__PURE__ */ new Set();
51364
51781
  const droppedSyntheticIds = /* @__PURE__ */ new Set();
51365
51782
  if (historyBatchId) {
51366
51783
  const batchTwins = existingMessages.filter(
51367
51784
  (m) => m.role === "assistant" && Array.isArray(m.content) && m.content.some(
51368
- (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1341 => _1341.data, 'optionalAccess', _1342 => _1342.approvalRequestId]) === historyBatchId
51785
+ (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1366 => _1366.data, 'optionalAccess', _1367 => _1367.approvalRequestId]) === historyBatchId
51369
51786
  )
51370
51787
  );
51371
51788
  const existingWithSameBatch = _nullishCoalesce(batchTwins.find((m) => m.id === streamingMessageId), () => ( batchTwins[batchTwins.length - 1]));
51372
51789
  if (existingWithSameBatch && Array.isArray(existingWithSameBatch.content)) {
51373
- const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1343 => _1343.content])) ? historyTrailingAssistant.content.length : 0;
51790
+ const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1368 => _1368.content])) ? historyTrailingAssistant.content.length : 0;
51374
51791
  const realtimeSize = existingWithSameBatch.content.length;
51375
51792
  if (existingWithSameBatch.id === streamingMessageId || realtimeSize > histSize) {
51376
51793
  processedToUse = processedHistory.slice(0, -1);
@@ -51386,16 +51803,16 @@ function mergeHistoryWithRealtime(input) {
51386
51803
  if (pinnedSyntheticIds.has(m.id)) return true;
51387
51804
  if (droppedSyntheticIds.has(m.id)) return false;
51388
51805
  if (processedIds.has(m.id)) return false;
51389
- if (_optionalChain([rawHistoryIds, 'optionalAccess', _1344 => _1344.has, 'call', _1345 => _1345(m.id)])) return false;
51806
+ if (_optionalChain([rawHistoryIds, 'optionalAccess', _1369 => _1369.has, 'call', _1370 => _1370(m.id)])) return false;
51390
51807
  if (m.role === "user" && m.id.startsWith("optimistic-") && typeof m.content === "string") {
51391
- const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1346 => _1346.timestamp, 'optionalAccess', _1347 => _1347.getTime, 'call', _1348 => _1348()]), () => ( 0))) <= historyFetchedAt;
51808
+ const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1371 => _1371.timestamp, 'optionalAccess', _1372 => _1372.getTime, 'call', _1373 => _1373()]), () => ( 0))) <= historyFetchedAt;
51392
51809
  return !(canBeInSnapshot && processedToUse.some((pm) => pm.role === "user" && pm.content === m.content));
51393
51810
  }
51394
51811
  if (isSyntheticRealtimeId(m.id) && m.id !== streamingMessageId) {
51395
51812
  if (m.role === "assistant" && trailingAssistantText && assistantAnswerText(m.content) === trailingAssistantText) {
51396
51813
  return false;
51397
51814
  }
51398
- const covered = typeof m.streamSeq === "number" && historyMaxStreamSeq > 0 ? historyMaxStreamSeq >= m.streamSeq : historyCoversRealtime !== null ? historyCoversRealtime : (_nullishCoalesce(_optionalChain([m, 'access', _1349 => _1349.timestamp, 'optionalAccess', _1350 => _1350.getTime, 'call', _1351 => _1351()]), () => ( 0))) <= historyFetchedAt;
51815
+ const covered = typeof m.streamSeq === "number" && historyMaxStreamSeq > 0 ? historyMaxStreamSeq >= m.streamSeq : historyCoversRealtime !== null ? historyCoversRealtime : (_nullishCoalesce(_optionalChain([m, 'access', _1374 => _1374.timestamp, 'optionalAccess', _1375 => _1375.getTime, 'call', _1376 => _1376()]), () => ( 0))) <= historyFetchedAt;
51399
51816
  if (covered) return false;
51400
51817
  }
51401
51818
  return true;
@@ -51450,7 +51867,7 @@ function normalizeHistoricalMessageData(md) {
51450
51867
  function isHistoricalUserTurn(m) {
51451
51868
  return !!m.owner;
51452
51869
  }
51453
- var isTextSegment = (d) => _optionalChain([d, 'optionalAccess', _1352 => _1352.type]) === "TEXT" && typeof d.text === "string";
51870
+ var isTextSegment = (d) => _optionalChain([d, 'optionalAccess', _1377 => _1377.type]) === "TEXT" && typeof d.text === "string";
51454
51871
  var THINK_MS = 550;
51455
51872
  var TOKEN_MS = 55;
51456
51873
  var USER_MS = 480;
@@ -51691,7 +52108,7 @@ function useChatDialogManager({
51691
52108
  const handleConfirmRestore = _react.useCallback.call(void 0, async () => {
51692
52109
  if (restoreTarget) {
51693
52110
  try {
51694
- await _optionalChain([unarchiveDialog, 'optionalCall', _1353 => _1353(restoreTarget.id)]);
52111
+ await _optionalChain([unarchiveDialog, 'optionalCall', _1378 => _1378(restoreTarget.id)]);
51695
52112
  } catch (err) {
51696
52113
  console.error("[useChatDialogManager] unarchive failed:", err);
51697
52114
  return;
@@ -52164,7 +52581,7 @@ function EmbeddableChatInner({
52164
52581
  }),
52165
52582
  [commandsUrl]
52166
52583
  );
52167
- const headerUserName = _optionalChain([identityUser, 'optionalAccess', _1354 => _1354.name, 'optionalAccess', _1355 => _1355.trim, 'call', _1356 => _1356()]) || [_optionalChain([identityUser, 'optionalAccess', _1357 => _1357.firstName]), _optionalChain([identityUser, 'optionalAccess', _1358 => _1358.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([userDisplayName, 'optionalAccess', _1359 => _1359.trim, 'call', _1360 => _1360()]) || void 0;
52584
+ const headerUserName = _optionalChain([identityUser, 'optionalAccess', _1379 => _1379.name, 'optionalAccess', _1380 => _1380.trim, 'call', _1381 => _1381()]) || [_optionalChain([identityUser, 'optionalAccess', _1382 => _1382.firstName]), _optionalChain([identityUser, 'optionalAccess', _1383 => _1383.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([userDisplayName, 'optionalAccess', _1384 => _1384.trim, 'call', _1385 => _1385()]) || void 0;
52168
52585
  const effectiveModes = _react.useMemo.call(void 0, () => {
52169
52586
  if (modes) return modes;
52170
52587
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
@@ -52173,19 +52590,19 @@ function EmbeddableChatInner({
52173
52590
  const mingoCaps = _react.useMemo.call(void 0, () => {
52174
52591
  if (mingoState) {
52175
52592
  return {
52176
- canRename: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1361 => _1361.canRename]), () => ( false)),
52177
- canArchive: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1362 => _1362.canArchive]), () => ( false)),
52178
- fetchArchivedDialogs: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1363 => _1363.fetchArchivedDialogs]),
52179
- unarchiveDialog: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1364 => _1364.unarchiveDialog]),
52180
- searchQuery: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1365 => _1365.searchQuery]),
52181
- onSearchChange: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1366 => _1366.onSearchChange])
52593
+ canRename: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1386 => _1386.canRename]), () => ( false)),
52594
+ canArchive: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1387 => _1387.canArchive]), () => ( false)),
52595
+ fetchArchivedDialogs: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1388 => _1388.fetchArchivedDialogs]),
52596
+ unarchiveDialog: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1389 => _1389.unarchiveDialog]),
52597
+ searchQuery: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1390 => _1390.searchQuery]),
52598
+ onSearchChange: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1391 => _1391.onSearchChange])
52182
52599
  };
52183
52600
  }
52184
52601
  return {
52185
- canRename: !!_optionalChain([effectiveModes, 'access', _1367 => _1367.mingo, 'optionalAccess', _1368 => _1368.renameDialog]),
52186
- canArchive: !!_optionalChain([effectiveModes, 'access', _1369 => _1369.mingo, 'optionalAccess', _1370 => _1370.archiveDialog]),
52187
- fetchArchivedDialogs: _optionalChain([effectiveModes, 'access', _1371 => _1371.mingo, 'optionalAccess', _1372 => _1372.fetchArchivedDialogs]),
52188
- unarchiveDialog: _optionalChain([effectiveModes, 'access', _1373 => _1373.mingo, 'optionalAccess', _1374 => _1374.unarchiveDialog]),
52602
+ canRename: !!_optionalChain([effectiveModes, 'access', _1392 => _1392.mingo, 'optionalAccess', _1393 => _1393.renameDialog]),
52603
+ canArchive: !!_optionalChain([effectiveModes, 'access', _1394 => _1394.mingo, 'optionalAccess', _1395 => _1395.archiveDialog]),
52604
+ fetchArchivedDialogs: _optionalChain([effectiveModes, 'access', _1396 => _1396.mingo, 'optionalAccess', _1397 => _1397.fetchArchivedDialogs]),
52605
+ unarchiveDialog: _optionalChain([effectiveModes, 'access', _1398 => _1398.mingo, 'optionalAccess', _1399 => _1399.unarchiveDialog]),
52189
52606
  searchQuery: void 0,
52190
52607
  onSearchChange: void 0
52191
52608
  };
@@ -52199,7 +52616,7 @@ function EmbeddableChatInner({
52199
52616
  if (controlledActiveMode === void 0) {
52200
52617
  setUncontrolledActiveMode(next);
52201
52618
  }
52202
- _optionalChain([onActiveModeChange, 'optionalCall', _1375 => _1375(next)]);
52619
+ _optionalChain([onActiveModeChange, 'optionalCall', _1400 => _1400(next)]);
52203
52620
  },
52204
52621
  [controlledActiveMode, onActiveModeChange]
52205
52622
  );
@@ -52221,7 +52638,7 @@ function EmbeddableChatInner({
52221
52638
  const effectiveQuickActions = emptyStateUrl ? emptyStateConfig.quickActions : [];
52222
52639
  const effectiveAssistantName = emptyStateConfig.name;
52223
52640
  const effectiveAssistantIcon = emptyStateConfig.icon;
52224
- const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1376 => _1376.title]) === "string" ? guideWelcome.title : null)));
52641
+ const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1401 => _1401.title]) === "string" ? guideWelcome.title : null)));
52225
52642
  const {
52226
52643
  messages: rawMessages,
52227
52644
  isLoading: chatLoading,
@@ -52261,7 +52678,7 @@ function EmbeddableChatInner({
52261
52678
  if (activeMode !== "guide" || guidePromptSentRef.current) return;
52262
52679
  guidePromptSentRef.current = true;
52263
52680
  void sendMessage(guidePendingPrompt);
52264
- _optionalChain([onGuidePromptConsumed, 'optionalCall', _1377 => _1377()]);
52681
+ _optionalChain([onGuidePromptConsumed, 'optionalCall', _1402 => _1402()]);
52265
52682
  }, [guidePendingPrompt, activeMode, sendMessage, onGuidePromptConsumed]);
52266
52683
  const {
52267
52684
  attachments: stagedAttachments,
@@ -52272,7 +52689,7 @@ function EmbeddableChatInner({
52272
52689
  clear: clearAttachments
52273
52690
  } = useChatAttachments();
52274
52691
  const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
52275
- const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1378 => _1378.maxItems]), () => ( 10));
52692
+ const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1403 => _1403.maxItems]), () => ( 10));
52276
52693
  const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
52277
52694
  const [contextItems, setContextItems] = _react.useState.call(void 0, []);
52278
52695
  const [contextPickerOpen, setContextPickerOpen] = _react.useState.call(void 0, false);
@@ -52289,10 +52706,10 @@ function EmbeddableChatInner({
52289
52706
  }, [activeDialogId, activeMode]);
52290
52707
  const mentionMarkerByType = _react.useMemo.call(void 0, () => {
52291
52708
  const m = /* @__PURE__ */ new Map();
52292
- for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1379 => _1379.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
52709
+ for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1404 => _1404.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
52293
52710
  return m;
52294
- }, [_optionalChain([contextPicker, 'optionalAccess', _1380 => _1380.entityTypes])]);
52295
- const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1381 => _1381.entityTypes]);
52711
+ }, [_optionalChain([contextPicker, 'optionalAccess', _1405 => _1405.entityTypes])]);
52712
+ const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1406 => _1406.entityTypes]);
52296
52713
  const resolveContextIcon = _react.useMemo.call(void 0, () => {
52297
52714
  const byType = /* @__PURE__ */ new Map();
52298
52715
  for (const t of _nullishCoalesce(contextEntityTypes, () => ( []))) byType.set(t.type, t.icon);
@@ -52304,7 +52721,7 @@ function EmbeddableChatInner({
52304
52721
  if (mentionActiveRef.current) {
52305
52722
  if (contextItems.some((p) => `${p.type}:${p.id}` === key)) return;
52306
52723
  if (contextItems.length >= contextMaxItems) return;
52307
- _optionalChain([chatInputRef, 'access', _1382 => _1382.current, 'optionalAccess', _1383 => _1383.commitMention, 'call', _1384 => _1384(mentionTokenOf(key, mentionMarkerByType), {
52724
+ _optionalChain([chatInputRef, 'access', _1407 => _1407.current, 'optionalAccess', _1408 => _1408.commitMention, 'call', _1409 => _1409(mentionTokenOf(key, mentionMarkerByType), {
52308
52725
  label: item.label,
52309
52726
  icon: resolveContextIcon(item)
52310
52727
  })]);
@@ -52326,9 +52743,9 @@ function EmbeddableChatInner({
52326
52743
  setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
52327
52744
  if (mentionKeysRef.current.has(key)) {
52328
52745
  mentionKeysRef.current.delete(key);
52329
- const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1385 => _1385.current, 'optionalAccess', _1386 => _1386.getValue, 'call', _1387 => _1387()]), () => ( ""));
52746
+ const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1410 => _1410.current, 'optionalAccess', _1411 => _1411.getValue, 'call', _1412 => _1412()]), () => ( ""));
52330
52747
  const next = cur.replace(`@${mentionTokenOf(key, mentionMarkerByType)}`, "").replace(/\s{2,}/g, " ").trimStart();
52331
- _optionalChain([chatInputRef, 'access', _1388 => _1388.current, 'optionalAccess', _1389 => _1389.setValue, 'call', _1390 => _1390(next)]);
52748
+ _optionalChain([chatInputRef, 'access', _1413 => _1413.current, 'optionalAccess', _1414 => _1414.setValue, 'call', _1415 => _1415(next)]);
52332
52749
  }
52333
52750
  }, [mentionMarkerByType]);
52334
52751
  const handleContextValueChange = _react.useCallback.call(void 0, (value) => {
@@ -52345,7 +52762,7 @@ function EmbeddableChatInner({
52345
52762
  }, []);
52346
52763
  const closeContextPicker = _react.useCallback.call(void 0, () => {
52347
52764
  if (mentionActiveRef.current) {
52348
- _optionalChain([chatInputRef, 'access', _1391 => _1391.current, 'optionalAccess', _1392 => _1392.removeMentionTrigger, 'call', _1393 => _1393()]);
52765
+ _optionalChain([chatInputRef, 'access', _1416 => _1416.current, 'optionalAccess', _1417 => _1417.removeMentionTrigger, 'call', _1418 => _1418()]);
52349
52766
  }
52350
52767
  setContextPickerOpen(false);
52351
52768
  setMentionQuery(null);
@@ -52379,8 +52796,8 @@ function EmbeddableChatInner({
52379
52796
  [effectiveAssistantIcon]
52380
52797
  );
52381
52798
  const timestampCacheRef = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
52382
- const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _1394 => _1394.firstName]), _optionalChain([identityUser, 'optionalAccess', _1395 => _1395.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _1396 => _1396.name, 'optionalAccess', _1397 => _1397.trim, 'call', _1398 => _1398()]) || void 0 : void 0;
52383
- const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _1399 => _1399.avatarUrl, 'optionalAccess', _1400 => _1400.trim, 'call', _1401 => _1401()]) || void 0 : void 0;
52799
+ const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _1419 => _1419.firstName]), _optionalChain([identityUser, 'optionalAccess', _1420 => _1420.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _1421 => _1421.name, 'optionalAccess', _1422 => _1422.trim, 'call', _1423 => _1423()]) || void 0 : void 0;
52800
+ const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _1424 => _1424.avatarUrl, 'optionalAccess', _1425 => _1425.trim, 'call', _1426 => _1426()]) || void 0 : void 0;
52384
52801
  const messages = _react.useMemo.call(void 0, () => {
52385
52802
  const cache = timestampCacheRef.current;
52386
52803
  const seenIds = /* @__PURE__ */ new Set();
@@ -52560,9 +52977,9 @@ function EmbeddableChatInner({
52560
52977
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
52561
52978
  const lastSources = _react.useMemo.call(void 0, () => {
52562
52979
  if (chatLoading) return void 0;
52563
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1402 => _1402.sources]);
52980
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1427 => _1427.sources]);
52564
52981
  if (!sources || sources.length === 0) return void 0;
52565
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1403 => _1403.content]) || "";
52982
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1428 => _1428.content]) || "";
52566
52983
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
52567
52984
  (m) => parseInt(m[1], 10)
52568
52985
  );
@@ -52581,7 +52998,7 @@ function EmbeddableChatInner({
52581
52998
  const el = panelMeasureRef.current;
52582
52999
  if (!el || typeof ResizeObserver === "undefined") return;
52583
53000
  const ro = new ResizeObserver((entries) => {
52584
- const w = _optionalChain([entries, 'access', _1404 => _1404[0], 'optionalAccess', _1405 => _1405.contentRect, 'optionalAccess', _1406 => _1406.width]);
53001
+ const w = _optionalChain([entries, 'access', _1429 => _1429[0], 'optionalAccess', _1430 => _1430.contentRect, 'optionalAccess', _1431 => _1431.width]);
52585
53002
  if (typeof w === "number") setPanelWidth(w);
52586
53003
  });
52587
53004
  ro.observe(el);
@@ -52620,7 +53037,7 @@ function EmbeddableChatInner({
52620
53037
  const isMingoMode = activeMode === "mingo";
52621
53038
  const stackedListView = isMingoMode && !hasConversation && !archiveOpen && !wideMingo && !composeOpen;
52622
53039
  const headerShowBack = hasConversation || guideCanReturnToMingo;
52623
- const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1407 => _1407.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats";
53040
+ const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1432 => _1432.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats";
52624
53041
  const headerBackAriaLabel = hasConversation ? isViewingArchived ? "Back to archive" : "Back" : "Back to Mingo";
52625
53042
  const headerOnBack = hasConversation ? handleBack : () => handleActiveModeChange("mingo");
52626
53043
  const headerOnRestore = isViewingArchived && unarchiveDialog && activeDialog ? () => setRestoreTarget(activeDialog) : void 0;
@@ -52959,9 +53376,9 @@ function EmbeddableChatInner({
52959
53376
  subtitle: _nullishCoalesce(effectiveGreeting, () => ( void 0)),
52960
53377
  subtitleLoading: emptyStateLoading,
52961
53378
  ...guideWelcome,
52962
- title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1408 => _1408.title]))),
52963
- icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1409 => _1409.icon]))),
52964
- quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _1410 => _1410.quickActions]), () => ( guideSuggestedActions)),
53379
+ title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1433 => _1433.title]))),
53380
+ icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1434 => _1434.icon]))),
53381
+ quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _1435 => _1435.quickActions]), () => ( guideSuggestedActions)),
52965
53382
  onQuickAction: (action) => {
52966
53383
  setQuickActionPreview(null);
52967
53384
  handleSend(_nullishCoalesce(action.prompt, () => ( action.label)));
@@ -54117,5 +54534,8 @@ function EmbeddableChatInner({
54117
54534
 
54118
54535
 
54119
54536
 
54120
- exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.DateFilterPanel = DateFilterPanel; exports.DateFilterMenu = DateFilterMenu; exports.DurationInput = DurationInput; exports.HoneypotField = HoneypotField; exports.ProgressBar = ProgressBar; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.AssigneeDropdown = AssigneeDropdown; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.ColorSwatch = ColorSwatch; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.getContrastRatio = getContrastRatio; exports.pickReadableTextColor = pickReadableTextColor; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.getReadableTextColor = getReadableTextColor; exports.HEX_PATTERN = HEX_PATTERN; exports.hexToRgb = hexToRgb2; exports.rgbToHex = rgbToHex; exports.deriveHoverColor = deriveHoverColor; exports.deriveActiveColor = deriveActiveColor; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.kindToCanonicalStatus = kindToCanonicalStatus; exports.usesCanonicalStatusStyle = usesCanonicalStatusStyle; exports.resolveStatusTagProps = resolveStatusTagProps; exports.TicketStatusTag = TicketStatusTag; exports.InfoSection = InfoSection; exports.InputTrigger = InputTrigger; exports.InteractiveCard = InteractiveCard; exports.MediaTypeSelector = MediaTypeSelector; exports.noDataIconClasses = noDataIconClasses; exports.noDataActionsVariants = noDataActionsVariants; exports.NoDataMessage = NoDataMessage; exports.NoDataAction = NoDataAction; exports.NoDataActions = NoDataActions; exports.NoData = NoData; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.useScrollFade = useScrollFade; exports.ScrollFadeOverlay = ScrollFadeOverlay; exports.Switch = Switch; exports.TagSelectDropdown = TagSelectDropdown; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.Textarea = Textarea; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.ImageGalleryModal = ImageGalleryModal; exports.Modal = Modal2; exports.ModalContent = ModalContent2; exports.ModalHeader = ModalHeader2; exports.ModalTitle = ModalTitle2; exports.ModalFooter = ModalFooter2; exports.Modal2 = Modal; exports.ModalContent2 = ModalContent; exports.ModalHeader2 = ModalHeader; exports.ModalTitle2 = ModalTitle; exports.ModalFooter2 = ModalFooter; exports.Separator = Separator2; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.OVERLAY_BACKDROP_CLASS = OVERLAY_BACKDROP_CLASS; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.CrossfadePanels = CrossfadePanels; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.AIGeneratedBadge = AIGeneratedBadge; exports.FadePreview = FadePreview; exports.Progress = Progress; exports.VideoPlayBadge = VideoPlayBadge; exports.VideoUnmuteGlyph = VideoUnmuteGlyph; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video2; exports.MediaCarousel = MediaCarousel; exports.EMBED_SIZES = EMBED_SIZES; exports.EmbedContainer = EmbedContainer; exports.YouTubeContainer = YouTubeContainer; exports.TwitterContainer = TwitterContainer; exports.RedditContainer = RedditContainer; exports.LinkPreviewContainer = LinkPreviewContainer; exports.LinkedInContainer = LinkedInContainer; exports.RichMarkdownRuntimeProvider = RichMarkdownRuntimeProvider; exports.useRichMarkdownRuntime = useRichMarkdownRuntime; exports.RedditEmbedClient = RedditEmbedClient; exports.TwitterEmbedClient = TwitterEmbedClient; exports.LinkedInEmbedClient = LinkedInEmbedClient; exports.OGLinkErrorBoundary = OGLinkErrorBoundary; exports.OGLinkPreview = OGLinkPreview; exports.toGoogleSheetsEmbedUrl = toGoogleSheetsEmbedUrl; exports.toGoogleSheetsOriginalUrl = toGoogleSheetsOriginalUrl; exports.toFigmaEmbedUrl = toFigmaEmbedUrl; exports.isFigmaSlidesUrl = isFigmaSlidesUrl; exports.toFigmaOriginalUrl = toFigmaOriginalUrl; exports.EmbedIframe = EmbedIframe; exports.FigmaEmbed = FigmaEmbed; exports.MarkdownImage = MarkdownImage; exports.RichMarkdownRenderer = RichMarkdownRenderer; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.StackedRowsPanel = StackedRowsPanel; exports.SlackChannelChip = SlackChannelChip; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadge = StatusBadge; exports.StatusIndicator = StatusIndicator; exports.HoverDropdown = HoverDropdown; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.CommandBlock = CommandBlock; exports.ApprovalStatusTag = ApprovalStatusTag; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.MspOrganizationCardSkeleton = MspOrganizationCardSkeleton; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.ChatTypingIndicator = ChatTypingIndicator; exports.MingoOnboardingCard = MingoOnboardingCard; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.ICON_ALIASES = ICON_ALIASES; exports.resolveIcon = resolveIcon; exports.ICON_OPTIONS = ICON_OPTIONS; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.formatTicketRelativeTime = formatTicketRelativeTime; exports.formatTicketFullTimestamp = formatTicketFullTimestamp; exports.formatRelativeTime = formatRelativeTime; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.BlockCard = BlockCard; exports.CONTEXT_ROW_CLASS = CONTEXT_ROW_CLASS; exports.CONTEXT_ICON_CLASS = CONTEXT_ICON_CLASS; exports.CONTEXT_LABEL_CLASS = CONTEXT_LABEL_CLASS; exports.CONTEXT_BACK_CLASS = CONTEXT_BACK_CLASS; exports.CONTEXT_STATE_CLASS = CONTEXT_STATE_CLASS; exports.ContextMenuRow = ContextMenuRow; exports.ContextItemsSkeleton = ContextItemsSkeleton; exports.ContextItemsList = ContextItemsList; exports.ContextErrorBoundary = ContextErrorBoundary; exports.CHAT_CONTEXT_ITEMS_DEFAULT_MAX = CHAT_CONTEXT_ITEMS_DEFAULT_MAX; exports.ChatComposerPlusMenu = ChatComposerPlusMenu; exports.ChatContextPicker = ChatContextPicker; exports.ChatContextChipStrip = ChatContextChipStrip; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageSkeleton = ChatMessageSkeleton; exports.ChatMessageListSkeleton = ChatMessageListSkeleton; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.ChatMessageList = ChatMessageList; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.useProxiedImageUrl = useProxiedImageUrl; exports.ChatMessageRow = ChatMessageRow; exports.ChatMessageRowSkeleton = ChatMessageRowSkeleton; exports.ChatQuickAction = ChatQuickAction; exports.FAE_AVATAR_DATA_URI = FAE_AVATAR_DATA_URI; exports.AgentMark = AgentMark; exports.EntityIcon = EntityIcon; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipSkeleton = QuickActionChipSkeleton; exports.QuickActionChipButton = QuickActionChipButton; exports.ChatQuickActionRow = ChatQuickActionRow; exports.ChatQuickActionRowSkeleton = ChatQuickActionRowSkeleton; exports.QuickActionMarquee = QuickActionMarquee; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.MingoOnboardingCardSkeleton = MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = MingoOnboardingListSkeleton; exports.MingoChatHistorySkeleton = MingoChatHistorySkeleton; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.GuideModeBanner = GuideModeBanner; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatHeaderIconButton = ChatHeaderIconButton; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.ChatPanelHeader = ChatPanelHeader; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ModelDisplaySkeleton = ModelDisplaySkeleton; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveExternalNavigation = resolveExternalNavigation; exports.executeNavigation = executeNavigation; exports.executeNavigationImperative = executeNavigationImperative; exports.handleChatNavClick = handleChatNavClick; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.FlamingoLogo = FlamingoLogo2; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.getProxiedImageUrl2 = getProxiedImageUrl2; exports.WhatIShippedCard = WhatIShippedCard; exports.WhatIShippedCardSkeleton = WhatIShippedCardSkeleton; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_TO_CSS_ASPECT = RATIO_TO_CSS_ASPECT; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; exports.UserDisplay = UserDisplay; exports.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.resolveReleaseCover = resolveReleaseCover; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.useEntityCardLink = useEntityCardLink; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.getStatusColorScheme = getStatusColorScheme; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.SlackMessageCard = SlackMessageCard; exports.SlackMessageCardSkeleton = SlackMessageCardSkeleton; exports.HubspotTicketCard = HubspotTicketCard; exports.HubspotTicketCardSkeleton = HubspotTicketCardSkeleton; exports.DataRoomDocCard = DataRoomDocCard; exports.DataRoomDocCardSkeleton = DataRoomDocCardSkeleton; exports.programItemToStripProfile = programItemToStripProfile; exports.transformEventToProgram = transformEventToProgram; exports.transformPodcastToProgram = transformPodcastToProgram; exports.transformWebinarToProgram = transformWebinarToProgram; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.GenericEntityCard = GenericEntityCard; exports.GenericEntityCardSkeleton = GenericEntityCardSkeleton; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.useChatCardItem = useChatCardItem; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.APPROVAL_BLOCK_VARIANT = APPROVAL_BLOCK_VARIANT; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.buildChatRefKey = buildChatRefKey; exports.isStructuredContent = isStructuredContent; exports.normalizeContent = normalizeContent2; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; exports.useScriptedStream = useScriptedStream; exports.useJetStreamDialogSubscription = useJetStreamDialogSubscription; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.useSlashCommandRegistry = useSlashCommandRegistry; exports.fetchEmptyStateConfig = fetchEmptyStateConfig; exports.useEmptyStateConfig = useEmptyStateConfig; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.ChatIdentityProvider = ChatIdentityProvider; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useSSE = useSSE; exports.useChat = useChat; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.useSseChatAdapter = useSseChatAdapter; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useUnifiedChat = useUnifiedChat; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.SYNTHETIC_REALTIME_ID_PREFIXES = SYNTHETIC_REALTIME_ID_PREFIXES; exports.flattenMessagePagesChronological = flattenMessagePagesChronological; exports.maxPersistedStreamSeq = maxPersistedStreamSeq; exports.mergeHistoryWithRealtime = mergeHistoryWithRealtime; exports.computeHistoryPrepend = computeHistoryPrepend; exports.CHIP_ACTION_BUTTON_CLASS = CHIP_ACTION_BUTTON_CLASS; exports.chatChipClass = chatChipClass; exports.clickupTaskUrl = clickupTaskUrl; exports.normalizeHistoricalMessageData = normalizeHistoricalMessageData; exports.isHistoricalUserTurn = isHistoricalUserTurn; exports.buildStreamFrames = buildStreamFrames; exports.EmbeddableChat = EmbeddableChat; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.ListPageLayout = ListPageLayout; exports.EntityImage = EntityImage; exports.TITLE_BLOCK_MIN_HEIGHT = TITLE_BLOCK_MIN_HEIGHT; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.serializeJsonLd = serializeJsonLd; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.SEO_TITLE_MAX_LENGTH = SEO_TITLE_MAX_LENGTH; exports.SEO_DESCRIPTION_MAX_LENGTH = SEO_DESCRIPTION_MAX_LENGTH; exports.BRAND_MARK_SVGS = BRAND_MARK_SVGS; exports.brandMarkDataUri = brandMarkDataUri; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS; exports.devSectionAnchorId = devSectionAnchorId; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.BITE_ID_RE = BITE_ID_RE; exports.generateBiteId = generateBiteId; exports.ensureBiteIds = ensureBiteIds; exports.matchBiteElement = matchBiteElement; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.announcementDismissCookieName = announcementDismissCookieName; exports.isDismissedCookieValue = isDismissedCookieValue; exports.dismissAnnouncement = dismissAnnouncement; exports.isAnnouncementDismissed = isAnnouncementDismissed; exports.clearAnnouncementDismissals = clearAnnouncementDismissals; exports.clearLegacyAnnouncementCache = clearLegacyAnnouncementCache; exports.readLeadingDecisionFrame = readLeadingDecisionFrame; exports.ANNOUNCEMENT_CTA_DEFAULTS = ANNOUNCEMENT_CTA_DEFAULTS; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TASK_TYPE_LABELS = TASK_TYPE_LABELS; exports.TASK_TYPE_TEXT_COLORS = TASK_TYPE_TEXT_COLORS; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.ROADMAP_STATUS_OPTIONS = ROADMAP_STATUS_OPTIONS; exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS; exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS; exports.OPENFRAME_DEV_SECTIONS = OPENFRAME_DEV_SECTIONS; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.CONTENT_REF_GROUPS = CONTENT_REF_GROUPS; exports.getContentRefLabel = getContentRefLabel; exports.getContentRefLabelOrTitleCase = getContentRefLabelOrTitleCase; exports.orderContentRefTypes = orderContentRefTypes; exports.buildSuggestionUrl = buildSuggestionUrl; exports.DEFAULT_CONTENT_SUFFIXES = DEFAULT_CONTENT_SUFFIXES; exports.makeComposeContentUrl = makeComposeContentUrl; exports.buildDefaultHref = buildDefaultHref; exports.resolveContentHref = resolveContentHref; exports.DEFAULT_FOLDER_INDEX_FILE = DEFAULT_FOLDER_INDEX_FILE; exports.stripFolderIndexFromPath = stripFolderIndexFromPath; exports.findDocNodeByPath = findDocNodeByPath; exports.getDocAncestorNodeIds = getDocAncestorNodeIds; exports.resolveContentFetchPath = resolveContentFetchPath; exports.getInitialExpandedNodeIds = getInitialExpandedNodeIds; exports.getDocSourceDefaultPath = getDocSourceDefaultPath; exports.toDocSlug = toDocSlug; exports.pathToNodeId = pathToNodeId; exports.normalizeDocPath = normalizeDocPath; exports.formatDocName = formatDocName; exports.sortTreeChildren = sortTreeChildren; exports.buildDocumentTree = buildDocumentTree; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.extractSections = extractSections; exports.SECTION_HERO_ICON_CLASS = SECTION_HERO_ICON_CLASS; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.ChevronButton = ChevronButton; exports.CircularProgress = CircularProgress; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon2; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon2; exports.XCircleIcon = XCircleIcon; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.InfoCardRow = InfoCardRow; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.TruncateText = TruncateText; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.DropdownButton = DropdownButton; exports.MoreActionsMenu = MoreActionsMenu; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.Slider = Slider; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.init_pagination = init_pagination; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.AuthBenefitsPanel = AuthBenefitsPanel; exports.OpenFrameWordmark = OpenFrameWordmark; exports.PoweredByFlamingo = PoweredByFlamingo; exports.AuthShell = AuthShell; exports.BackToLoginLink = BackToLoginLink; exports.PasswordInput = PasswordInput; exports.PROVIDER_META = PROVIDER_META; exports.SsoProviderButtons = SsoProviderButtons; exports.CompleteAccountForm = CompleteAccountForm; exports.TermsAgreementLabel = TermsAgreementLabel; exports.CreateOrganizationForm = CreateOrganizationForm; exports.InviteLinkInvalidModal = InviteLinkInvalidModal; exports.LoginForm = LoginForm; exports.OpenFrameSsoLoginForm = OpenFrameSsoLoginForm; exports.OpenFrameSsoSignUpForm = OpenFrameSsoSignUpForm; exports.PasswordResetForm = PasswordResetForm; exports.SsoAuthShell = SsoAuthShell; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.ErrorBoundary = ErrorBoundary; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.OPENFRAME_DOCTOR_COMMANDS = OPENFRAME_DOCTOR_COMMANDS; exports.getOpenFrameDoctorCommand = getOpenFrameDoctorCommand; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.WarningBlock = WarningBlock; exports.VideoBitesDisplay = VideoBitesDisplay; exports.getCaptionsUrl = getCaptionsUrl; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.useAppLayoutDrawerContainer = useAppLayoutDrawerContainer; exports.AppLayoutDrawerRoot = AppLayoutDrawerRoot; exports.AppLayoutDrawerTrigger = AppLayoutDrawerTrigger; exports.AppLayoutDrawerClose = AppLayoutDrawerClose; exports.AppLayoutDrawerContent = AppLayoutDrawerContent; exports.AppLayoutDrawerHeader = AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = AppLayoutDrawerTitle; exports.AppLayoutDrawerDescription = AppLayoutDrawerDescription; exports.AppLayoutDrawerBody = AppLayoutDrawerBody; exports.AppLayoutDrawerFooter = AppLayoutDrawerFooter; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.NotificationPopups = NotificationPopups; exports.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE = ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE; exports.isApprovalNotification = isApprovalNotification; exports.getApprovalMeta = getApprovalMeta; exports.resolutionToStatus = resolutionToStatus; exports.approvalMetaToBatchData = approvalMetaToBatchData; exports.ApprovalRequestNotificationTile = ApprovalRequestNotificationTile; exports.TimeTrackerProvider = TimeTrackerProvider; exports.useTimeTracker = useTimeTracker; exports.useOptionalTimeTracker = useOptionalTimeTracker; exports.useTrackerClock = useTrackerClock; exports.TimeTrackerPanel = TimeTrackerPanel; exports.HeaderButton = HeaderButton; exports.TimeTrackerHeaderButton = TimeTrackerHeaderButton; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.BoardTicketApproval = BoardTicketApproval; exports.TicketCardBody = TicketCardBody; exports.TicketCardView = TicketCardView; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.TicketStatusConfigList = TicketStatusConfigList; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.TICKET_STATUS_COLOR_PRESETS = TICKET_STATUS_COLOR_PRESETS; exports.CUSTOM_PRESET_KEY = CUSTOM_PRESET_KEY; exports.DEFAULT_CUSTOM_STATUS_COLOR = DEFAULT_CUSTOM_STATUS_COLOR; exports.ColorPresetSelect = ColorPresetSelect; exports.ColorPickerInput = ColorPickerInput; exports.TicketStatusConfigRow = TicketStatusConfigRow; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.FilterPillRow = FilterPillRow; exports.MOBILE_NAV_PANEL_ID = MOBILE_NAV_PANEL_ID; exports.MobileNavPanel = MobileNavPanel; exports.MingoAiButton = MingoAiButton; exports.Header = Header2; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderMingoButton = HeaderMingoButton; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.MultiLevelNavigation = MultiLevelNavigation; exports.MobileNavigationDropdown = MobileNavigationDropdown; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.assets = assets;
54121
- //# sourceMappingURL=chunk-4R3SVOKH.cjs.map
54537
+
54538
+
54539
+
54540
+ exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.DateFilterPanel = DateFilterPanel; exports.DateFilterMenu = DateFilterMenu; exports.DurationInput = DurationInput; exports.HoneypotField = HoneypotField; exports.ProgressBar = ProgressBar; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.AssigneeDropdown = AssigneeDropdown; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.ColorSwatch = ColorSwatch; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.getContrastRatio = getContrastRatio; exports.pickReadableTextColor = pickReadableTextColor; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.getReadableTextColor = getReadableTextColor; exports.HEX_PATTERN = HEX_PATTERN; exports.hexToRgb = hexToRgb2; exports.rgbToHex = rgbToHex; exports.deriveHoverColor = deriveHoverColor; exports.deriveActiveColor = deriveActiveColor; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.kindToCanonicalStatus = kindToCanonicalStatus; exports.usesCanonicalStatusStyle = usesCanonicalStatusStyle; exports.resolveStatusTagProps = resolveStatusTagProps; exports.TicketStatusTag = TicketStatusTag; exports.InfoSection = InfoSection; exports.InputTrigger = InputTrigger; exports.InteractiveCard = InteractiveCard; exports.MediaTypeSelector = MediaTypeSelector; exports.noDataIconClasses = noDataIconClasses; exports.noDataActionsVariants = noDataActionsVariants; exports.NoDataMessage = NoDataMessage; exports.NoDataAction = NoDataAction; exports.NoDataActions = NoDataActions; exports.NoData = NoData; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.useScrollFade = useScrollFade; exports.ScrollFadeOverlay = ScrollFadeOverlay; exports.Switch = Switch; exports.TagSelectDropdown = TagSelectDropdown; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.Textarea = Textarea; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.ImageGalleryModal = ImageGalleryModal; exports.Modal = Modal2; exports.ModalContent = ModalContent2; exports.ModalHeader = ModalHeader2; exports.ModalTitle = ModalTitle2; exports.ModalFooter = ModalFooter2; exports.Modal2 = Modal; exports.ModalContent2 = ModalContent; exports.ModalHeader2 = ModalHeader; exports.ModalTitle2 = ModalTitle; exports.ModalFooter2 = ModalFooter; exports.Separator = Separator2; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.OVERLAY_BACKDROP_CLASS = OVERLAY_BACKDROP_CLASS; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.CrossfadePanels = CrossfadePanels; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.AIGeneratedBadge = AIGeneratedBadge; exports.FadePreview = FadePreview; exports.Progress = Progress; exports.VideoPlayBadge = VideoPlayBadge; exports.VideoUnmuteGlyph = VideoUnmuteGlyph; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video2; exports.MediaCarousel = MediaCarousel; exports.EMBED_SIZES = EMBED_SIZES; exports.EmbedContainer = EmbedContainer; exports.YouTubeContainer = YouTubeContainer; exports.TwitterContainer = TwitterContainer; exports.RedditContainer = RedditContainer; exports.LinkPreviewContainer = LinkPreviewContainer; exports.LinkedInContainer = LinkedInContainer; exports.RichMarkdownRuntimeProvider = RichMarkdownRuntimeProvider; exports.useRichMarkdownRuntime = useRichMarkdownRuntime; exports.RedditEmbedClient = RedditEmbedClient; exports.TwitterEmbedClient = TwitterEmbedClient; exports.LinkedInEmbedClient = LinkedInEmbedClient; exports.OGLinkErrorBoundary = OGLinkErrorBoundary; exports.OGLinkPreview = OGLinkPreview; exports.toGoogleSheetsEmbedUrl = toGoogleSheetsEmbedUrl; exports.toGoogleSheetsOriginalUrl = toGoogleSheetsOriginalUrl; exports.toFigmaEmbedUrl = toFigmaEmbedUrl; exports.isFigmaSlidesUrl = isFigmaSlidesUrl; exports.toFigmaOriginalUrl = toFigmaOriginalUrl; exports.EmbedIframe = EmbedIframe; exports.FigmaEmbed = FigmaEmbed; exports.MarkdownImage = MarkdownImage; exports.RichMarkdownRenderer = RichMarkdownRenderer; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.StackedRowsPanel = StackedRowsPanel; exports.SlackChannelChip = SlackChannelChip; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadge = StatusBadge; exports.StatusIndicator = StatusIndicator; exports.HoverDropdown = HoverDropdown; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.CommandBlock = CommandBlock; exports.ApprovalStatusTag = ApprovalStatusTag; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.MspOrganizationCardSkeleton = MspOrganizationCardSkeleton; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.ChatTypingIndicator = ChatTypingIndicator; exports.MingoOnboardingCard = MingoOnboardingCard; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.ICON_ALIASES = ICON_ALIASES; exports.resolveIcon = resolveIcon; exports.ICON_OPTIONS = ICON_OPTIONS; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.formatTicketRelativeTime = formatTicketRelativeTime; exports.formatTicketFullTimestamp = formatTicketFullTimestamp; exports.formatRelativeTime = formatRelativeTime; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.BlockCard = BlockCard; exports.CONTEXT_ROW_CLASS = CONTEXT_ROW_CLASS; exports.CONTEXT_ICON_CLASS = CONTEXT_ICON_CLASS; exports.CONTEXT_LABEL_CLASS = CONTEXT_LABEL_CLASS; exports.CONTEXT_BACK_CLASS = CONTEXT_BACK_CLASS; exports.CONTEXT_STATE_CLASS = CONTEXT_STATE_CLASS; exports.ContextMenuRow = ContextMenuRow; exports.ContextItemsSkeleton = ContextItemsSkeleton; exports.ContextItemsList = ContextItemsList; exports.ContextErrorBoundary = ContextErrorBoundary; exports.CHAT_CONTEXT_ITEMS_DEFAULT_MAX = CHAT_CONTEXT_ITEMS_DEFAULT_MAX; exports.ChatComposerPlusMenu = ChatComposerPlusMenu; exports.ChatContextPicker = ChatContextPicker; exports.ChatContextChipStrip = ChatContextChipStrip; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageSkeleton = ChatMessageSkeleton; exports.ChatMessageListSkeleton = ChatMessageListSkeleton; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.ChatMessageList = ChatMessageList; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.useProxiedImageUrl = useProxiedImageUrl; exports.ChatMessageRow = ChatMessageRow; exports.ChatMessageRowSkeleton = ChatMessageRowSkeleton; exports.ChatQuickAction = ChatQuickAction; exports.FAE_AVATAR_DATA_URI = FAE_AVATAR_DATA_URI; exports.AgentMark = AgentMark; exports.EntityIcon = EntityIcon; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipSkeleton = QuickActionChipSkeleton; exports.QuickActionChipButton = QuickActionChipButton; exports.ChatQuickActionRow = ChatQuickActionRow; exports.ChatQuickActionRowSkeleton = ChatQuickActionRowSkeleton; exports.QuickActionMarquee = QuickActionMarquee; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.MingoOnboardingCardSkeleton = MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = MingoOnboardingListSkeleton; exports.MingoChatHistorySkeleton = MingoChatHistorySkeleton; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.GuideModeBanner = GuideModeBanner; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatHeaderIconButton = ChatHeaderIconButton; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.ChatPanelHeader = ChatPanelHeader; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ModelDisplaySkeleton = ModelDisplaySkeleton; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveExternalNavigation = resolveExternalNavigation; exports.executeNavigation = executeNavigation; exports.executeNavigationImperative = executeNavigationImperative; exports.handleChatNavClick = handleChatNavClick; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.FlamingoLogo = FlamingoLogo2; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.getProxiedImageUrl2 = getProxiedImageUrl2; exports.WhatIShippedCard = WhatIShippedCard; exports.WhatIShippedCardSkeleton = WhatIShippedCardSkeleton; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_TO_CSS_ASPECT = RATIO_TO_CSS_ASPECT; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; exports.UserDisplay = UserDisplay; exports.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.resolveReleaseCover = resolveReleaseCover; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.useEntityCardLink = useEntityCardLink; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.getStatusColorScheme = getStatusColorScheme; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.SlackMessageCard = SlackMessageCard; exports.SlackMessageCardSkeleton = SlackMessageCardSkeleton; exports.HubspotTicketCard = HubspotTicketCard; exports.HubspotTicketCardSkeleton = HubspotTicketCardSkeleton; exports.DataRoomDocCard = DataRoomDocCard; exports.DataRoomDocCardSkeleton = DataRoomDocCardSkeleton; exports.programItemToStripProfile = programItemToStripProfile; exports.transformEventToProgram = transformEventToProgram; exports.transformPodcastToProgram = transformPodcastToProgram; exports.transformWebinarToProgram = transformWebinarToProgram; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.GenericEntityCard = GenericEntityCard; exports.GenericEntityCardSkeleton = GenericEntityCardSkeleton; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.useChatCardItem = useChatCardItem; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.APPROVAL_BLOCK_VARIANT = APPROVAL_BLOCK_VARIANT; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.buildChatRefKey = buildChatRefKey; exports.isStructuredContent = isStructuredContent; exports.normalizeContent = normalizeContent2; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; exports.useScriptedStream = useScriptedStream; exports.useJetStreamDialogSubscription = useJetStreamDialogSubscription; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.useSlashCommandRegistry = useSlashCommandRegistry; exports.fetchEmptyStateConfig = fetchEmptyStateConfig; exports.useEmptyStateConfig = useEmptyStateConfig; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.ChatIdentityProvider = ChatIdentityProvider; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useSSE = useSSE; exports.useChat = useChat; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.useSseChatAdapter = useSseChatAdapter; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.appendToTrailingAssistant = appendToTrailingAssistant; exports.upsertTrailingCompaction = upsertTrailingCompaction; exports.applyToolExecutionToMessages = applyToolExecutionToMessages; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useUnifiedChat = useUnifiedChat; exports.SYNTHETIC_REALTIME_ID_PREFIXES = SYNTHETIC_REALTIME_ID_PREFIXES; exports.flattenMessagePagesChronological = flattenMessagePagesChronological; exports.maxPersistedStreamSeq = maxPersistedStreamSeq; exports.mergeHistoryWithRealtime = mergeHistoryWithRealtime; exports.computeHistoryPrepend = computeHistoryPrepend; exports.CHIP_ACTION_BUTTON_CLASS = CHIP_ACTION_BUTTON_CLASS; exports.chatChipClass = chatChipClass; exports.clickupTaskUrl = clickupTaskUrl; exports.normalizeHistoricalMessageData = normalizeHistoricalMessageData; exports.isHistoricalUserTurn = isHistoricalUserTurn; exports.buildStreamFrames = buildStreamFrames; exports.EmbeddableChat = EmbeddableChat; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.ListPageLayout = ListPageLayout; exports.EntityImage = EntityImage; exports.TITLE_BLOCK_MIN_HEIGHT = TITLE_BLOCK_MIN_HEIGHT; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.serializeJsonLd = serializeJsonLd; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.SEO_TITLE_MAX_LENGTH = SEO_TITLE_MAX_LENGTH; exports.SEO_DESCRIPTION_MAX_LENGTH = SEO_DESCRIPTION_MAX_LENGTH; exports.BRAND_MARK_SVGS = BRAND_MARK_SVGS; exports.brandMarkDataUri = brandMarkDataUri; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS; exports.devSectionAnchorId = devSectionAnchorId; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.BITE_ID_RE = BITE_ID_RE; exports.generateBiteId = generateBiteId; exports.ensureBiteIds = ensureBiteIds; exports.matchBiteElement = matchBiteElement; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.announcementDismissCookieName = announcementDismissCookieName; exports.isDismissedCookieValue = isDismissedCookieValue; exports.dismissAnnouncement = dismissAnnouncement; exports.isAnnouncementDismissed = isAnnouncementDismissed; exports.clearAnnouncementDismissals = clearAnnouncementDismissals; exports.clearLegacyAnnouncementCache = clearLegacyAnnouncementCache; exports.readLeadingDecisionFrame = readLeadingDecisionFrame; exports.ANNOUNCEMENT_CTA_DEFAULTS = ANNOUNCEMENT_CTA_DEFAULTS; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TASK_TYPE_LABELS = TASK_TYPE_LABELS; exports.TASK_TYPE_TEXT_COLORS = TASK_TYPE_TEXT_COLORS; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.ROADMAP_STATUS_OPTIONS = ROADMAP_STATUS_OPTIONS; exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS; exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS; exports.OPENFRAME_DEV_SECTIONS = OPENFRAME_DEV_SECTIONS; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.CONTENT_REF_GROUPS = CONTENT_REF_GROUPS; exports.getContentRefLabel = getContentRefLabel; exports.getContentRefLabelOrTitleCase = getContentRefLabelOrTitleCase; exports.orderContentRefTypes = orderContentRefTypes; exports.buildSuggestionUrl = buildSuggestionUrl; exports.DEFAULT_CONTENT_SUFFIXES = DEFAULT_CONTENT_SUFFIXES; exports.makeComposeContentUrl = makeComposeContentUrl; exports.buildDefaultHref = buildDefaultHref; exports.resolveContentHref = resolveContentHref; exports.DEFAULT_FOLDER_INDEX_FILE = DEFAULT_FOLDER_INDEX_FILE; exports.stripFolderIndexFromPath = stripFolderIndexFromPath; exports.findDocNodeByPath = findDocNodeByPath; exports.getDocAncestorNodeIds = getDocAncestorNodeIds; exports.resolveContentFetchPath = resolveContentFetchPath; exports.getInitialExpandedNodeIds = getInitialExpandedNodeIds; exports.getDocSourceDefaultPath = getDocSourceDefaultPath; exports.toDocSlug = toDocSlug; exports.pathToNodeId = pathToNodeId; exports.normalizeDocPath = normalizeDocPath; exports.formatDocName = formatDocName; exports.sortTreeChildren = sortTreeChildren; exports.buildDocumentTree = buildDocumentTree; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.extractSections = extractSections; exports.SECTION_HERO_ICON_CLASS = SECTION_HERO_ICON_CLASS; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.ChevronButton = ChevronButton; exports.CircularProgress = CircularProgress; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon2; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon2; exports.XCircleIcon = XCircleIcon; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.InfoCardRow = InfoCardRow; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.TruncateText = TruncateText; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.DropdownButton = DropdownButton; exports.MoreActionsMenu = MoreActionsMenu; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.Slider = Slider; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.init_pagination = init_pagination; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.AuthBenefitsPanel = AuthBenefitsPanel; exports.OpenFrameWordmark = OpenFrameWordmark; exports.PoweredByFlamingo = PoweredByFlamingo; exports.AuthShell = AuthShell; exports.BackToLoginLink = BackToLoginLink; exports.PasswordInput = PasswordInput; exports.PROVIDER_META = PROVIDER_META; exports.SsoProviderButtons = SsoProviderButtons; exports.CompleteAccountForm = CompleteAccountForm; exports.TermsAgreementLabel = TermsAgreementLabel; exports.CreateOrganizationForm = CreateOrganizationForm; exports.InviteLinkInvalidModal = InviteLinkInvalidModal; exports.LoginForm = LoginForm; exports.OpenFrameSsoLoginForm = OpenFrameSsoLoginForm; exports.OpenFrameSsoSignUpForm = OpenFrameSsoSignUpForm; exports.PasswordResetForm = PasswordResetForm; exports.SsoAuthShell = SsoAuthShell; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.ErrorBoundary = ErrorBoundary; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.OPENFRAME_DOCTOR_COMMANDS = OPENFRAME_DOCTOR_COMMANDS; exports.getOpenFrameDoctorCommand = getOpenFrameDoctorCommand; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.WarningBlock = WarningBlock; exports.VideoBitesDisplay = VideoBitesDisplay; exports.getCaptionsUrl = getCaptionsUrl; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.useAppLayoutDrawerContainer = useAppLayoutDrawerContainer; exports.AppLayoutDrawerRoot = AppLayoutDrawerRoot; exports.AppLayoutDrawerTrigger = AppLayoutDrawerTrigger; exports.AppLayoutDrawerClose = AppLayoutDrawerClose; exports.AppLayoutDrawerContent = AppLayoutDrawerContent; exports.AppLayoutDrawerHeader = AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = AppLayoutDrawerTitle; exports.AppLayoutDrawerDescription = AppLayoutDrawerDescription; exports.AppLayoutDrawerBody = AppLayoutDrawerBody; exports.AppLayoutDrawerFooter = AppLayoutDrawerFooter; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.NotificationPopups = NotificationPopups; exports.ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE = ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE; exports.isApprovalNotification = isApprovalNotification; exports.getApprovalMeta = getApprovalMeta; exports.resolutionToStatus = resolutionToStatus; exports.approvalMetaToBatchData = approvalMetaToBatchData; exports.ApprovalRequestNotificationTile = ApprovalRequestNotificationTile; exports.TimeTrackerProvider = TimeTrackerProvider; exports.useTimeTracker = useTimeTracker; exports.useOptionalTimeTracker = useOptionalTimeTracker; exports.useTrackerClock = useTrackerClock; exports.TimeTrackerPanel = TimeTrackerPanel; exports.HeaderButton = HeaderButton; exports.TimeTrackerHeaderButton = TimeTrackerHeaderButton; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.BoardTicketApproval = BoardTicketApproval; exports.TicketCardBody = TicketCardBody; exports.TicketCardView = TicketCardView; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.TicketStatusConfigList = TicketStatusConfigList; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.TICKET_STATUS_COLOR_PRESETS = TICKET_STATUS_COLOR_PRESETS; exports.CUSTOM_PRESET_KEY = CUSTOM_PRESET_KEY; exports.DEFAULT_CUSTOM_STATUS_COLOR = DEFAULT_CUSTOM_STATUS_COLOR; exports.ColorPresetSelect = ColorPresetSelect; exports.ColorPickerInput = ColorPickerInput; exports.TicketStatusConfigRow = TicketStatusConfigRow; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.FilterPillRow = FilterPillRow; exports.MOBILE_NAV_PANEL_ID = MOBILE_NAV_PANEL_ID; exports.MobileNavPanel = MobileNavPanel; exports.MingoAiButton = MingoAiButton; exports.Header = Header2; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderMingoButton = HeaderMingoButton; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.MultiLevelNavigation = MultiLevelNavigation; exports.MobileNavigationDropdown = MobileNavigationDropdown; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.assets = assets;
54541
+ //# sourceMappingURL=chunk-QL2EI56X.cjs.map