@flamingo-stack/openframe-frontend-core 0.0.444-snapshot.20260717182533 → 0.0.444

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-PTT4J5GF.cjs → chunk-2CJ734N2.cjs} +3 -3
  2. package/dist/{chunk-PTT4J5GF.cjs.map → chunk-2CJ734N2.cjs.map} +1 -1
  3. package/dist/{chunk-DTLNCOSG.cjs → chunk-2PLNDTRG.cjs} +32 -32
  4. package/dist/{chunk-DTLNCOSG.cjs.map → chunk-2PLNDTRG.cjs.map} +1 -1
  5. package/dist/{chunk-XPZLIONZ.js → chunk-37ZZQXHK.js} +4 -4
  6. package/dist/{chunk-FIAXFNAA.js → chunk-3SCNEGL2.js} +5 -5
  7. package/dist/{chunk-QL2EI56X.cjs → chunk-4R3SVOKH.cjs} +377 -797
  8. package/dist/chunk-4R3SVOKH.cjs.map +1 -0
  9. package/dist/{chunk-VIJARDBM.cjs → chunk-7CZ4MJSI.cjs} +3 -3
  10. package/dist/{chunk-VIJARDBM.cjs.map → chunk-7CZ4MJSI.cjs.map} +1 -1
  11. package/dist/{chunk-MQUS6BFR.js → chunk-ABIRMYG5.js} +6 -6
  12. package/dist/{chunk-MPSA6YAM.cjs → chunk-BYTJNRJW.cjs} +40 -40
  13. package/dist/{chunk-MPSA6YAM.cjs.map → chunk-BYTJNRJW.cjs.map} +1 -1
  14. package/dist/{chunk-H352AZJN.js → chunk-CE3AITV2.js} +6 -6
  15. package/dist/{chunk-K4RASNQM.js → chunk-DCDB3SM4.js} +3 -3
  16. package/dist/{chunk-N64VTHZ5.cjs → chunk-DSW6FIEF.cjs} +7 -7
  17. package/dist/{chunk-N64VTHZ5.cjs.map → chunk-DSW6FIEF.cjs.map} +1 -1
  18. package/dist/{chunk-22NSWMI6.js → chunk-DTMJWBDQ.js} +3 -3
  19. package/dist/{chunk-TCEBFMLQ.js → chunk-F2XHBAHT.js} +2 -2
  20. package/dist/{chunk-P3FN4NAE.cjs → chunk-F6NMMPDL.cjs} +29 -29
  21. package/dist/{chunk-P3FN4NAE.cjs.map → chunk-F6NMMPDL.cjs.map} +1 -1
  22. package/dist/{chunk-YCLSV2H6.cjs → chunk-FO4CI4R5.cjs} +5 -5
  23. package/dist/{chunk-YCLSV2H6.cjs.map → chunk-FO4CI4R5.cjs.map} +1 -1
  24. package/dist/{chunk-G2KXNMFQ.js → chunk-FQASXKBK.js} +2 -2
  25. package/dist/{chunk-H2DYCT6M.js → chunk-H7H3AFLF.js} +2 -2
  26. package/dist/{chunk-7R256DKK.js → chunk-LCJGOV6P.js} +2 -2
  27. package/dist/{chunk-5NYXGWBN.js → chunk-MG4AMIFX.js} +2 -2
  28. package/dist/{chunk-3BHV2QAH.js → chunk-NDWIFCLS.js} +135 -555
  29. package/dist/{chunk-3BHV2QAH.js.map → chunk-NDWIFCLS.js.map} +1 -1
  30. package/dist/{chunk-5FUQTSTT.cjs → chunk-OXZLBIR7.cjs} +18 -18
  31. package/dist/{chunk-5FUQTSTT.cjs.map → chunk-OXZLBIR7.cjs.map} +1 -1
  32. package/dist/{chunk-P47NN7RY.js → chunk-PHWQLKVE.js} +31 -29
  33. package/dist/chunk-PHWQLKVE.js.map +1 -0
  34. package/dist/{chunk-3DQ5BFPM.js → chunk-PMTR5W5G.js} +5 -5
  35. package/dist/{chunk-W24U7ZUV.cjs → chunk-PXXS27EE.cjs} +42 -40
  36. package/dist/chunk-PXXS27EE.cjs.map +1 -0
  37. package/dist/{chunk-RXLMN6B5.cjs → chunk-Q6XOEVPH.cjs} +12 -12
  38. package/dist/{chunk-RXLMN6B5.cjs.map → chunk-Q6XOEVPH.cjs.map} +1 -1
  39. package/dist/{chunk-3HYSD7NR.cjs → chunk-RALJEQWM.cjs} +15 -15
  40. package/dist/{chunk-3HYSD7NR.cjs.map → chunk-RALJEQWM.cjs.map} +1 -1
  41. package/dist/{chunk-Z4N7XLFG.js → chunk-U7U2CZBZ.js} +3 -3
  42. package/dist/{chunk-R6WGCJBB.cjs → chunk-VI2QQIGR.cjs} +73 -73
  43. package/dist/{chunk-R6WGCJBB.cjs.map → chunk-VI2QQIGR.cjs.map} +1 -1
  44. package/dist/{chunk-KISQUH33.cjs → chunk-WXU6A6CA.cjs} +73 -73
  45. package/dist/{chunk-KISQUH33.cjs.map → chunk-WXU6A6CA.cjs.map} +1 -1
  46. package/dist/{chunk-5DWPXK37.cjs → chunk-YP7VJPCJ.cjs} +40 -40
  47. package/dist/{chunk-5DWPXK37.cjs.map → chunk-YP7VJPCJ.cjs.map} +1 -1
  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 +1 -44
  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 +4 -10
  57. package/dist/components/chat/index.cjs.map +1 -1
  58. package/dist/components/chat/index.js +3 -9
  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 +136 -142
  74. package/dist/components/index.cjs.map +1 -1
  75. package/dist/components/index.js +12 -18
  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 +4 -10
  86. package/dist/components/ui/index.cjs.map +1 -1
  87. package/dist/components/ui/index.js +3 -9
  88. package/dist/hooks/index.cjs +3 -3
  89. package/dist/hooks/index.js +2 -2
  90. package/dist/index.cjs +4 -10
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.js +3 -9
  93. package/dist/nats/index.cjs +2 -2
  94. package/dist/nats/index.js +1 -1
  95. package/dist/nats/shared-connection.d.ts +0 -6
  96. package/dist/nats/shared-connection.d.ts.map +1 -1
  97. package/package.json +1 -1
  98. package/src/components/chat/hooks/use-chunk-catchup.ts +57 -212
  99. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +8 -12
  100. package/src/components/chat/hooks/use-nats-chat-adapter.ts +9 -574
  101. package/src/components/chat/hooks/use-nats-dialog-subscription.ts +6 -12
  102. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +3 -40
  103. package/src/components/chat/utils/message-segment-accumulator.ts +0 -6
  104. package/src/components/chat/utils/process-historical-messages.ts +3 -25
  105. package/src/nats/shared-connection.ts +29 -42
  106. package/dist/chunk-P47NN7RY.js.map +0 -1
  107. package/dist/chunk-QL2EI56X.cjs.map +0 -1
  108. package/dist/chunk-W24U7ZUV.cjs.map +0 -1
  109. package/src/components/chat/hooks/__tests__/nats-adapter-message-updaters.test.ts +0 -270
  110. package/src/components/chat/utils/__tests__/process-historical-messages-approvals.test.ts +0 -62
  111. /package/dist/{chunk-XPZLIONZ.js.map → chunk-37ZZQXHK.js.map} +0 -0
  112. /package/dist/{chunk-FIAXFNAA.js.map → chunk-3SCNEGL2.js.map} +0 -0
  113. /package/dist/{chunk-MQUS6BFR.js.map → chunk-ABIRMYG5.js.map} +0 -0
  114. /package/dist/{chunk-H352AZJN.js.map → chunk-CE3AITV2.js.map} +0 -0
  115. /package/dist/{chunk-K4RASNQM.js.map → chunk-DCDB3SM4.js.map} +0 -0
  116. /package/dist/{chunk-22NSWMI6.js.map → chunk-DTMJWBDQ.js.map} +0 -0
  117. /package/dist/{chunk-TCEBFMLQ.js.map → chunk-F2XHBAHT.js.map} +0 -0
  118. /package/dist/{chunk-G2KXNMFQ.js.map → chunk-FQASXKBK.js.map} +0 -0
  119. /package/dist/{chunk-H2DYCT6M.js.map → chunk-H7H3AFLF.js.map} +0 -0
  120. /package/dist/{chunk-7R256DKK.js.map → chunk-LCJGOV6P.js.map} +0 -0
  121. /package/dist/{chunk-5NYXGWBN.js.map → chunk-MG4AMIFX.js.map} +0 -0
  122. /package/dist/{chunk-3DQ5BFPM.js.map → chunk-PMTR5W5G.js.map} +0 -0
  123. /package/dist/{chunk-Z4N7XLFG.js.map → chunk-U7U2CZBZ.js.map} +0 -0
@@ -27,7 +27,7 @@
27
27
 
28
28
 
29
29
 
30
- var _chunkVIJARDBMcjs = require('./chunk-VIJARDBM.cjs');
30
+ var _chunk7CZ4MJSIcjs = require('./chunk-7CZ4MJSI.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 _chunkW24U7ZUVcjs = require('./chunk-W24U7ZUV.cjs');
252
+ var _chunkPXXS27EEcjs = require('./chunk-PXXS27EE.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, _chunkVIJARDBMcjs.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, _chunk7CZ4MJSIcjs.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, _chunkVIJARDBMcjs.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, _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
6627
+ const auto = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useDebounce.call(void 0, value, 300);
8030
+ const debounced = _chunk7CZ4MJSIcjs.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("#") && _chunkVIJARDBMcjs.navigateSamePageHash.call(void 0, target, { headerOffset: _chunkVIJARDBMcjs.STICKY_HEADER_OFFSET_PX })) {
9234
+ if (target.includes("#") && _chunk7CZ4MJSIcjs.navigateSamePageHash.call(void 0, target, { headerOffset: _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
9694
+ const edgeColor = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
10001
+ const imageBgColor = _chunk7CZ4MJSIcjs.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 } = _chunkVIJARDBMcjs.useNearViewport.call(void 0, nearMargin);
10721
+ const { ref, isNear } = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
12295
+ const derived = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
13563
+ const autoLimitTags = _chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( true));
14307
+ const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( true));
15331
+ const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.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 } = _chunkVIJARDBMcjs.useCopyToClipboard.call(void 0, );
15458
+ const { copy, copied } = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, );
17748
+ const headerHeight = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useImageEdgeColor.call(void 0, _nullishCoalesce(resolvedImageUrl, () => ( null)), "var(--color-bg-surface)");
19970
+ const bgColor = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useDebounce.call(void 0, localSearchValue, 500);
22421
+ const debouncedSearchValue = _chunk7CZ4MJSIcjs.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 _chunkVIJARDBMcjs.toolLabels[toolType];
23087
+ return _chunk7CZ4MJSIcjs.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 _chunkVIJARDBMcjs.toolLabels[toolType] || toolType;
23098
+ return _chunk7CZ4MJSIcjs.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 = _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);
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);
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 = _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);
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);
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 = _chunkVIJARDBMcjs.useDeferredError.call(void 0, _optionalChain([errors, 'optionalAccess', _533 => _533.email]), email);
26601
+ const emailErr = _chunk7CZ4MJSIcjs.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 = _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);
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);
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 = _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);
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);
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 = _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);
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);
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 ? _chunkVIJARDBMcjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
29220
+ leftIcon: showIcons ? _chunk7CZ4MJSIcjs.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, _chunkVIJARDBMcjs.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, _chunk7CZ4MJSIcjs.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 } = _chunkVIJARDBMcjs.useToast.call(void 0, );
32304
- const { honeypotInputProps, getSignals, resetSignals } = _chunkVIJARDBMcjs.useHumanitySignals.call(void 0, );
32303
+ const { toast } = _chunk7CZ4MJSIcjs.useToast.call(void 0, );
32304
+ const { honeypotInputProps, getSignals, resetSignals } = _chunk7CZ4MJSIcjs.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", _chunkVIJARDBMcjs.dotColorByVariant[accentVariant]) })))
33286
+ ) : _nullishCoalesce(icon, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "size-1.5 rounded-full", _chunk7CZ4MJSIcjs.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
- _chunkVIJARDBMcjs.progressColorByVariant[accentVariant]
33334
+ _chunk7CZ4MJSIcjs.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 } = _chunkVIJARDBMcjs.useNotificationPermission.call(void 0, );
33557
+ const { supported, permission, request } = _chunk7CZ4MJSIcjs.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] = _chunkVIJARDBMcjs.useLocalStorage.call(void 0,
35015
+ const [persisted, setPersisted] = _chunk7CZ4MJSIcjs.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
- } = _chunkVIJARDBMcjs.useHorizontalScrollbar.call(void 0, );
35065
+ } = _chunk7CZ4MJSIcjs.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
- _chunkVIJARDBMcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: config.onClose });
35424
- const headerHeight = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, 64, { enabled: isOpen });
35423
+ _chunk7CZ4MJSIcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: config.onClose });
35424
+ const headerHeight = _chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useHeaderHeight.call(void 0, );
35917
+ const headerHeight = _chunk7CZ4MJSIcjs.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
- _chunkVIJARDBMcjs.useFocusTrap.call(void 0, asideRef, config.isOpen, { onEscape: config.onClose, contain: false });
35921
+ _chunk7CZ4MJSIcjs.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
- _chunkVIJARDBMcjs.scrollElementIntoView.call(void 0, targetElement, { headerOffset: offset2 });
36159
+ _chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( false));
36346
- const isLgUp = _nullishCoalesce(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
36345
+ const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useMdUp.call(void 0, ), () => ( false));
36346
+ const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.useLgUp.call(void 0, ), () => ( false));
36347
36347
  const isTablet = isMdUp && !isLgUp;
36348
- const [desktopMinimized, setDesktopMinimized] = _chunkVIJARDBMcjs.useLocalStorage.call(void 0,
36348
+ const [desktopMinimized, setDesktopMinimized] = _chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useMdUp.call(void 0, ), () => ( false));
36672
+ const isMdUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.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
- _chunkVIJARDBMcjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: onClose });
36871
+ _chunk7CZ4MJSIcjs.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, _chunkVIJARDBMcjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
37434
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.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
- } = _chunkVIJARDBMcjs.useOnboardingState.call(void 0, storageKey);
37806
+ } = _chunk7CZ4MJSIcjs.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, _chunkVIJARDBMcjs.ToolIcon, { toolType: log.toolType, size: 16 })
38013
+ log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7CZ4MJSIcjs.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 } = _chunkVIJARDBMcjs.useCopyToClipboard.call(void 0, );
38150
+ const { copy, copied } = _chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
38812
+ const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.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
- } = _chunkVIJARDBMcjs.useHorizontalScrollbar.call(void 0, );
39735
+ } = _chunk7CZ4MJSIcjs.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(_chunkVIJARDBMcjs.useLgUp.call(void 0, ), () => ( false));
39966
+ const isLgUp = _nullishCoalesce(_chunk7CZ4MJSIcjs.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 = _chunkVIJARDBMcjs.useDebounce.call(void 0, currentValue, debounceMs);
40537
+ const debouncedValue = _chunk7CZ4MJSIcjs.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
- } = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
40549
+ } = _chunk7CZ4MJSIcjs.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
- } = _chunkVIJARDBMcjs.useAutoLimitTags.call(void 0, {
41016
+ } = _chunk7CZ4MJSIcjs.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 _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url);
45714
+ const res = await _chunk7CZ4MJSIcjs.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,10 +46956,8 @@ 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());
46960
46959
  const fetchingInProgress = _react.useRef.call(void 0, false);
46961
46960
  const lastFetchParams = _react.useRef.call(void 0, null);
46962
- const pendingCatchupRef = _react.useRef.call(void 0, null);
46963
46961
  const chunkBuffer = _react.useRef.call(void 0, []);
46964
46962
  const bufferUntilInitialCatchupComplete = _react.useRef.call(void 0, false);
46965
46963
  const hasCompletedInitialCatchup = _react.useRef.call(void 0, false);
@@ -46978,14 +46976,8 @@ function useChunkCatchup({
46978
46976
  }
46979
46977
  if (chunk.sequenceId !== void 0 && chunk.sequenceId !== null) {
46980
46978
  const chunkType = typeof chunk.type === "string" ? chunk.type : "";
46981
- const key = makeSeqKey(messageType, chunkType, chunk.sequenceId);
46982
- if (processedSequenceKeys.current.has(key)) return true;
46983
- processedSequenceKeys.current.add(key);
46979
+ processedSequenceKeys.current.add(makeSeqKey(messageType, chunkType, chunk.sequenceId));
46984
46980
  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
- }
46989
46981
  }
46990
46982
  onChunkReceivedRef.current(chunk, messageType);
46991
46983
  return true;
@@ -46995,8 +46987,8 @@ function useChunkCatchup({
46995
46987
  const buffered = [...chunkBuffer.current];
46996
46988
  chunkBuffer.current = [];
46997
46989
  buffered.sort((a, b) => {
46998
- const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
46999
- const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
46990
+ const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( 0));
46991
+ const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( 0));
47000
46992
  return seqA - seqB;
47001
46993
  });
47002
46994
  buffered.forEach(({ chunk, messageType }) => {
@@ -47011,14 +47003,9 @@ function useChunkCatchup({
47011
47003
  return;
47012
47004
  }
47013
47005
  if (hasCompletedInitialCatchup.current) {
47014
- if (bufferUntilInitialCatchupComplete.current) {
47015
- bufferUntilInitialCatchupComplete.current = false;
47016
- flushBufferedRealtimeChunks();
47017
- }
47018
47006
  return;
47019
47007
  }
47020
47008
  if (fetchingInProgress.current) {
47021
- pendingCatchupRef.current = { dialogId: dialogId2, fromSequenceId: _nullishCoalesce(fromSequenceId, () => ( lastSequenceId.current)) };
47022
47009
  return;
47023
47010
  }
47024
47011
  if (lastFetchParams.current && lastFetchParams.current.dialogId === dialogId2 && lastFetchParams.current.fromSequenceId === fromSequenceId) {
@@ -47035,8 +47022,7 @@ function useChunkCatchup({
47035
47022
  try {
47036
47023
  const chunkPromises = chatTypes2.map(async (chatType) => {
47037
47024
  try {
47038
- const typeFromSequenceId = fromSequenceId === void 0 ? void 0 : _nullishCoalesce(lastSequenceIdByType.current.get(getChatTypeMessageType(chatType)), () => ( null));
47039
- const chunks = await fetchChunks2(dialogId2, chatType, typeFromSequenceId);
47025
+ const chunks = await fetchChunks2(dialogId2, chatType, fromSequenceId);
47040
47026
  const messageType = getChatTypeMessageType(chatType);
47041
47027
  return chunks.map((chunk) => ({ chunk, messageType }));
47042
47028
  } catch (error) {
@@ -47056,66 +47042,49 @@ function useChunkCatchup({
47056
47042
  chunkBuffer.current = [];
47057
47043
  const allChunks = [...allCatchupChunks, ...bufferedNatsChunks];
47058
47044
  allChunks.sort((a, b) => {
47059
- const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47060
- const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( Number.MAX_SAFE_INTEGER));
47045
+ const seqA = _nullishCoalesce(a.chunk.sequenceId, () => ( 0));
47046
+ const seqB = _nullishCoalesce(b.chunk.sequenceId, () => ( 0));
47061
47047
  return seqA - seqB;
47062
47048
  });
47063
47049
  const uniqueAllChunks = [];
47064
47050
  const seenInBatch = /* @__PURE__ */ new Set();
47065
47051
  for (const item of allChunks) {
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);
47071
- }
47052
+ const k = makeBatchDedupKey(item);
47053
+ if (seenInBatch.has(k)) continue;
47054
+ seenInBatch.add(k);
47072
47055
  uniqueAllChunks.push(item);
47073
47056
  }
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;
47089
- break;
47090
- }
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;
47091
47064
  }
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
- }
47065
+ }
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;
47072
+ break;
47100
47073
  }
47101
47074
  }
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
- }
47113
47075
  }
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
- });
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
+ }
47119
47088
  chunksToProcess.forEach(({ chunk, messageType }) => {
47120
47089
  if (chunk.sequenceId !== void 0 && chunk.sequenceId !== null) {
47121
47090
  const chunkType = typeof chunk.type === "string" ? chunk.type : "";
@@ -47123,10 +47092,6 @@ function useChunkCatchup({
47123
47092
  if (processedSequenceKeys.current.has(key)) return;
47124
47093
  processedSequenceKeys.current.add(key);
47125
47094
  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
- }
47130
47095
  }
47131
47096
  onChunkReceivedRef.current(chunk, messageType);
47132
47097
  });
@@ -47135,55 +47100,26 @@ function useChunkCatchup({
47135
47100
  } catch (error) {
47136
47101
  console.error("Error during chunk catchup:", error);
47137
47102
  } finally {
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
- }
47103
+ fetchingInProgress.current = false;
47104
+ if (bufferUntilInitialCatchupComplete.current) {
47105
+ bufferUntilInitialCatchupComplete.current = false;
47106
+ hasCompletedInitialCatchup.current = true;
47107
+ flushBufferedRealtimeChunks();
47166
47108
  }
47167
47109
  }
47168
47110
  }, [flushBufferedRealtimeChunks]);
47169
- const catchUpChunksRef = _react.useRef.call(void 0, null);
47170
- catchUpChunksRef.current = catchUpChunks;
47171
47111
  const resetChunkTracking = _react.useCallback.call(void 0, () => {
47172
47112
  processedSequenceKeys.current.clear();
47173
47113
  lastSequenceId.current = null;
47174
- lastSequenceIdByType.current.clear();
47175
47114
  fetchingInProgress.current = false;
47176
47115
  lastFetchParams.current = null;
47177
- pendingCatchupRef.current = null;
47178
47116
  chunkBuffer.current = [];
47179
47117
  bufferUntilInitialCatchupComplete.current = false;
47180
47118
  hasCompletedInitialCatchup.current = false;
47181
47119
  }, []);
47182
47120
  const startInitialBuffering = _react.useCallback.call(void 0, () => {
47183
- if (!bufferUntilInitialCatchupComplete.current) {
47184
- chunkBuffer.current = [];
47185
- bufferUntilInitialCatchupComplete.current = true;
47186
- }
47121
+ chunkBuffer.current = [];
47122
+ bufferUntilInitialCatchupComplete.current = true;
47187
47123
  hasCompletedInitialCatchup.current = false;
47188
47124
  }, []);
47189
47125
  const isBufferingActive = _react.useCallback.call(void 0, () => bufferUntilInitialCatchupComplete.current, []);
@@ -47192,10 +47128,8 @@ function useChunkCatchup({
47192
47128
  const fromSeq = lastSequenceId.current;
47193
47129
  hasCompletedInitialCatchup.current = false;
47194
47130
  lastFetchParams.current = null;
47195
- if (!bufferUntilInitialCatchupComplete.current) {
47196
- chunkBuffer.current = [];
47197
- bufferUntilInitialCatchupComplete.current = true;
47198
- }
47131
+ bufferUntilInitialCatchupComplete.current = true;
47132
+ chunkBuffer.current = [];
47199
47133
  await catchUpChunks(fromSeq);
47200
47134
  }, [catchUpChunks]);
47201
47135
  return {
@@ -47213,7 +47147,7 @@ function useChunkCatchup({
47213
47147
 
47214
47148
  var EMPTY_FRAME = { messages: [], phase: "idle", typing: false, delayMs: 0 };
47215
47149
  function prefersReducedMotion() {
47216
- return typeof window !== "undefined" && _optionalChain([window, 'access', _1119 => _1119.matchMedia, 'optionalCall', _1120 => _1120("(prefers-reduced-motion: reduce)"), 'access', _1121 => _1121.matches]) === true;
47150
+ return typeof window !== "undefined" && _optionalChain([window, 'access', _1115 => _1115.matchMedia, 'optionalCall', _1116 => _1116("(prefers-reduced-motion: reduce)"), 'access', _1117 => _1117.matches]) === true;
47217
47151
  }
47218
47152
  function useScriptedStream(frames, resetKey, enabled = true) {
47219
47153
  const [index, setIndex] = _react.useState.call(void 0, 0);
@@ -47225,7 +47159,7 @@ function useScriptedStream(frames, resetKey, enabled = true) {
47225
47159
  }
47226
47160
  _react.useEffect.call(void 0, () => {
47227
47161
  setReducedMotion(prefersReducedMotion());
47228
- const mq = _optionalChain([window, 'access', _1122 => _1122.matchMedia, 'optionalCall', _1123 => _1123("(prefers-reduced-motion: reduce)")]);
47162
+ const mq = _optionalChain([window, 'access', _1118 => _1118.matchMedia, 'optionalCall', _1119 => _1119("(prefers-reduced-motion: reduce)")]);
47229
47163
  if (!mq) return;
47230
47164
  const onChange = () => setReducedMotion(mq.matches);
47231
47165
  mq.addEventListener("change", onChange);
@@ -47317,7 +47251,7 @@ function useJetStreamDialogSubscription({
47317
47251
  _react.useEffect.call(void 0, () => {
47318
47252
  if (!enabled || !wsUrl) {
47319
47253
  if (currentWsUrlRef.current && clientRef.current) {
47320
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47254
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47321
47255
  clientRef.current = null;
47322
47256
  currentWsUrlRef.current = "";
47323
47257
  setIsConnected(false);
@@ -47328,13 +47262,13 @@ function useJetStreamDialogSubscription({
47328
47262
  return;
47329
47263
  }
47330
47264
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
47331
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47265
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47332
47266
  clientRef.current = null;
47333
47267
  setIsConnected(false);
47334
47268
  }
47335
47269
  currentWsUrlRef.current = wsUrl;
47336
47270
  const cfg = clientConfigRef.current;
47337
- const sharedConn = _chunkW24U7ZUVcjs.acquireClient.call(void 0, wsUrl, {
47271
+ const sharedConn = _chunkPXXS27EEcjs.acquireClient.call(void 0, wsUrl, {
47338
47272
  name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend-jetstream")),
47339
47273
  user: _nullishCoalesce(cfg.user, () => ( "machine")),
47340
47274
  pass: _nullishCoalesce(cfg.pass, () => ( ""))
@@ -47351,10 +47285,10 @@ function useJetStreamDialogSubscription({
47351
47285
  subscriptionRef.current = null;
47352
47286
  }
47353
47287
  };
47354
- const lifecycle = _chunkW24U7ZUVcjs.startConnectionLifecycle.call(void 0, {
47288
+ const lifecycle = _chunkPXXS27EEcjs.startConnectionLifecycle.call(void 0, {
47355
47289
  conn: sharedConn,
47356
47290
  wsUrl,
47357
- onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1124 => _1124.current, 'optionalCall', _1125 => _1125()]),
47291
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1120 => _1120.current, 'optionalCall', _1121 => _1121()]),
47358
47292
  backoff: reconnectionBackoffRef.current,
47359
47293
  getFreshUrl: () => getNatsWsUrlRef.current(),
47360
47294
  // JetStream emits 'error' for protocol-level failures (e.g. -ERR Permissions
@@ -47369,7 +47303,7 @@ function useJetStreamDialogSubscription({
47369
47303
  setReconnectionCount((c) => c + 1);
47370
47304
  }
47371
47305
  hadConnectionBeforeRef.current = true;
47372
- _optionalChain([onConnectRef, 'access', _1126 => _1126.current, 'optionalCall', _1127 => _1127()]);
47306
+ _optionalChain([onConnectRef, 'access', _1122 => _1122.current, 'optionalCall', _1123 => _1123()]);
47373
47307
  }
47374
47308
  if (status === "error") {
47375
47309
  console.warn("[JetStream] NATS protocol error:", evt.data);
@@ -47379,7 +47313,7 @@ function useJetStreamDialogSubscription({
47379
47313
  setIsConnected(false);
47380
47314
  setIsSubscribed(false);
47381
47315
  tearDownSubscription();
47382
- _optionalChain([onDisconnectRef, 'access', _1128 => _1128.current, 'optionalCall', _1129 => _1129()]);
47316
+ _optionalChain([onDisconnectRef, 'access', _1124 => _1124.current, 'optionalCall', _1125 => _1125()]);
47383
47317
  }
47384
47318
  }
47385
47319
  });
@@ -47389,16 +47323,12 @@ function useJetStreamDialogSubscription({
47389
47323
  setIsSubscribed(false);
47390
47324
  tearDownSubscription();
47391
47325
  if (clientRef.current && currentWsUrlRef.current) {
47392
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47326
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47393
47327
  clientRef.current = null;
47394
47328
  currentWsUrlRef.current = "";
47395
47329
  }
47396
47330
  };
47397
47331
  }, [enabled, wsUrl]);
47398
- _react.useEffect.call(void 0, () => {
47399
- highestStreamSeqRef.current = null;
47400
- setCurrentStreamSeq(null);
47401
- }, [dialogId]);
47402
47332
  _react.useEffect.call(void 0, () => {
47403
47333
  if (!enabled || !dialogId || !isConnected) {
47404
47334
  if (subscriptionRef.current) {
@@ -47462,7 +47392,7 @@ function useJetStreamDialogSubscription({
47462
47392
  }
47463
47393
  subscriptionRef.current = handle;
47464
47394
  setIsSubscribed(true);
47465
- _optionalChain([onSubscribedRef, 'access', _1130 => _1130.current, 'optionalCall', _1131 => _1131()]);
47395
+ _optionalChain([onSubscribedRef, 'access', _1126 => _1126.current, 'optionalCall', _1127 => _1127()]);
47466
47396
  } catch (e52) {
47467
47397
  if (!cancelled) {
47468
47398
  setIsSubscribed(false);
@@ -47482,6 +47412,10 @@ function useJetStreamDialogSubscription({
47482
47412
  setIsSubscribed(false);
47483
47413
  };
47484
47414
  }, [enabled, dialogId, isConnected, streamName, topic, reconnectionCount]);
47415
+ _react.useEffect.call(void 0, () => {
47416
+ highestStreamSeqRef.current = null;
47417
+ setCurrentStreamSeq(null);
47418
+ }, [dialogId]);
47485
47419
  return { isConnected, isSubscribed, reconnectionCount, currentStreamSeq };
47486
47420
  }
47487
47421
 
@@ -47543,7 +47477,7 @@ function useNatsDialogSubscription({
47543
47477
  _react.useEffect.call(void 0, () => {
47544
47478
  if (!enabled || !wsUrl) {
47545
47479
  if (currentWsUrlRef.current && clientRef.current) {
47546
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47480
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47547
47481
  clientRef.current = null;
47548
47482
  currentWsUrlRef.current = "";
47549
47483
  setIsConnected(false);
@@ -47554,13 +47488,13 @@ function useNatsDialogSubscription({
47554
47488
  return;
47555
47489
  }
47556
47490
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
47557
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47491
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47558
47492
  clientRef.current = null;
47559
47493
  setIsConnected(false);
47560
47494
  }
47561
47495
  currentWsUrlRef.current = wsUrl;
47562
47496
  const cfg = clientConfigRef.current;
47563
- const sharedConn = _chunkW24U7ZUVcjs.acquireClient.call(void 0, wsUrl, {
47497
+ const sharedConn = _chunkPXXS27EEcjs.acquireClient.call(void 0, wsUrl, {
47564
47498
  name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend")),
47565
47499
  user: _nullishCoalesce(cfg.user, () => ( "machine")),
47566
47500
  pass: _nullishCoalesce(cfg.pass, () => ( ""))
@@ -47571,20 +47505,20 @@ function useNatsDialogSubscription({
47571
47505
  const tearDownSubscriptions = () => {
47572
47506
  subscriptionRefs.current.forEach((sub) => {
47573
47507
  try {
47574
- _optionalChain([sub, 'optionalAccess', _1132 => _1132.unsubscribe, 'call', _1133 => _1133()]);
47508
+ _optionalChain([sub, 'optionalAccess', _1128 => _1128.unsubscribe, 'call', _1129 => _1129()]);
47575
47509
  } catch (e54) {
47576
47510
  }
47577
47511
  });
47578
47512
  subscriptionRefs.current.clear();
47579
47513
  lastSubscribedDialogIdRef.current = null;
47580
- _optionalChain([abortControllerRef, 'access', _1134 => _1134.current, 'optionalAccess', _1135 => _1135.abort, 'call', _1136 => _1136()]);
47514
+ _optionalChain([abortControllerRef, 'access', _1130 => _1130.current, 'optionalAccess', _1131 => _1131.abort, 'call', _1132 => _1132()]);
47581
47515
  abortControllerRef.current = null;
47582
47516
  };
47583
47517
  const isDisconnectStatus = (status) => status === "closed" || status === "disconnected";
47584
- const lifecycle = _chunkW24U7ZUVcjs.startConnectionLifecycle.call(void 0, {
47518
+ const lifecycle = _chunkPXXS27EEcjs.startConnectionLifecycle.call(void 0, {
47585
47519
  conn: sharedConn,
47586
47520
  wsUrl,
47587
- onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1137 => _1137.current, 'optionalCall', _1138 => _1138()]),
47521
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _1133 => _1133.current, 'optionalCall', _1134 => _1134()]),
47588
47522
  backoff: reconnectionBackoffRef.current,
47589
47523
  getFreshUrl: () => getNatsWsUrlRef.current(),
47590
47524
  shouldRetryOn: isDisconnectStatus,
@@ -47595,7 +47529,7 @@ function useNatsDialogSubscription({
47595
47529
  setReconnectionCount((c) => c + 1);
47596
47530
  }
47597
47531
  hadConnectionBeforeRef.current = true;
47598
- _optionalChain([onConnectRef, 'access', _1139 => _1139.current, 'optionalCall', _1140 => _1140()]);
47532
+ _optionalChain([onConnectRef, 'access', _1135 => _1135.current, 'optionalCall', _1136 => _1136()]);
47599
47533
  }
47600
47534
  if (status === "error") {
47601
47535
  console.warn("[NATS] protocol error:", evt.data);
@@ -47605,7 +47539,7 @@ function useNatsDialogSubscription({
47605
47539
  setIsConnected(false);
47606
47540
  setIsSubscribed(false);
47607
47541
  tearDownSubscriptions();
47608
- _optionalChain([onDisconnectRef, 'access', _1141 => _1141.current, 'optionalCall', _1142 => _1142()]);
47542
+ _optionalChain([onDisconnectRef, 'access', _1137 => _1137.current, 'optionalCall', _1138 => _1138()]);
47609
47543
  }
47610
47544
  }
47611
47545
  });
@@ -47615,15 +47549,13 @@ function useNatsDialogSubscription({
47615
47549
  setIsSubscribed(false);
47616
47550
  tearDownSubscriptions();
47617
47551
  if (clientRef.current && currentWsUrlRef.current) {
47618
- _chunkW24U7ZUVcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47552
+ _chunkPXXS27EEcjs.releaseClient.call(void 0, currentWsUrlRef.current);
47619
47553
  clientRef.current = null;
47620
47554
  currentWsUrlRef.current = "";
47621
47555
  }
47622
47556
  };
47623
47557
  }, [enabled, wsUrl]);
47624
47558
  const topicsKey = topics.join(",");
47625
- const topicsRef = _react.useRef.call(void 0, topics);
47626
- topicsRef.current = topics;
47627
47559
  const lastSubscribedDialogIdRef = _react.useRef.call(void 0, null);
47628
47560
  const isConnectedRef = _react.useRef.call(void 0, isConnected);
47629
47561
  _react.useEffect.call(void 0, () => {
@@ -47638,13 +47570,13 @@ function useNatsDialogSubscription({
47638
47570
  setIsSubscribed(false);
47639
47571
  subscriptionRefs.current.forEach((sub) => {
47640
47572
  try {
47641
- _optionalChain([sub, 'optionalAccess', _1143 => _1143.unsubscribe, 'call', _1144 => _1144()]);
47573
+ _optionalChain([sub, 'optionalAccess', _1139 => _1139.unsubscribe, 'call', _1140 => _1140()]);
47642
47574
  } catch (e55) {
47643
47575
  }
47644
47576
  });
47645
47577
  subscriptionRefs.current.clear();
47646
47578
  lastSubscribedDialogIdRef.current = null;
47647
- _optionalChain([abortControllerRef, 'access', _1145 => _1145.current, 'optionalAccess', _1146 => _1146.abort, 'call', _1147 => _1147()]);
47579
+ _optionalChain([abortControllerRef, 'access', _1141 => _1141.current, 'optionalAccess', _1142 => _1142.abort, 'call', _1143 => _1143()]);
47648
47580
  abortControllerRef.current = null;
47649
47581
  }
47650
47582
  return;
@@ -47656,12 +47588,12 @@ function useNatsDialogSubscription({
47656
47588
  if (subscriptionRefs.current.size > 0) {
47657
47589
  subscriptionRefs.current.forEach((sub) => {
47658
47590
  try {
47659
- _optionalChain([sub, 'optionalAccess', _1148 => _1148.unsubscribe, 'call', _1149 => _1149()]);
47591
+ _optionalChain([sub, 'optionalAccess', _1144 => _1144.unsubscribe, 'call', _1145 => _1145()]);
47660
47592
  } catch (e56) {
47661
47593
  }
47662
47594
  });
47663
47595
  subscriptionRefs.current.clear();
47664
- _optionalChain([abortControllerRef, 'access', _1150 => _1150.current, 'optionalAccess', _1151 => _1151.abort, 'call', _1152 => _1152()]);
47596
+ _optionalChain([abortControllerRef, 'access', _1146 => _1146.current, 'optionalAccess', _1147 => _1147.abort, 'call', _1148 => _1148()]);
47665
47597
  }
47666
47598
  abortControllerRef.current = new AbortController();
47667
47599
  const abort = abortControllerRef.current;
@@ -47683,7 +47615,7 @@ function useNatsDialogSubscription({
47683
47615
  } catch (e57) {
47684
47616
  }
47685
47617
  };
47686
- topicsRef.current.forEach((topic) => {
47618
+ topics.forEach((topic) => {
47687
47619
  const subscription = client.subscribeBytes(
47688
47620
  `chat.${dialogId}.${topic}`,
47689
47621
  handleMessage(topic),
@@ -47693,7 +47625,7 @@ function useNatsDialogSubscription({
47693
47625
  });
47694
47626
  lastSubscribedDialogIdRef.current = dialogId;
47695
47627
  setIsSubscribed(true);
47696
- _optionalChain([onSubscribedRef, 'access', _1153 => _1153.current, 'optionalCall', _1154 => _1154()]);
47628
+ _optionalChain([onSubscribedRef, 'access', _1149 => _1149.current, 'optionalCall', _1150 => _1150()]);
47697
47629
  };
47698
47630
  if (isConnectedRef.current) {
47699
47631
  createSubscriptions();
@@ -47703,7 +47635,7 @@ function useNatsDialogSubscription({
47703
47635
  abort.abort();
47704
47636
  subscriptionRefs.current.forEach((sub) => {
47705
47637
  try {
47706
- _optionalChain([sub, 'optionalAccess', _1155 => _1155.unsubscribe, 'call', _1156 => _1156()]);
47638
+ _optionalChain([sub, 'optionalAccess', _1151 => _1151.unsubscribe, 'call', _1152 => _1152()]);
47707
47639
  } catch (e58) {
47708
47640
  }
47709
47641
  });
@@ -47711,7 +47643,7 @@ function useNatsDialogSubscription({
47711
47643
  lastSubscribedDialogIdRef.current = null;
47712
47644
  abortControllerRef.current = null;
47713
47645
  };
47714
- }, [enabled, dialogId, topicsKey]);
47646
+ }, [enabled, dialogId, topicsKey, topics]);
47715
47647
  _react.useEffect.call(void 0, () => {
47716
47648
  if (!enabled || !currentDialogIdRef.current || !isConnected) {
47717
47649
  return;
@@ -47734,7 +47666,7 @@ function useNatsDialogSubscription({
47734
47666
  } catch (e59) {
47735
47667
  }
47736
47668
  };
47737
- topicsRef.current.forEach((topic) => {
47669
+ topics.forEach((topic) => {
47738
47670
  const subscription = client.subscribeBytes(
47739
47671
  `chat.${dialogId2}.${topic}`,
47740
47672
  handleMessage(topic),
@@ -47744,18 +47676,18 @@ function useNatsDialogSubscription({
47744
47676
  });
47745
47677
  lastSubscribedDialogIdRef.current = dialogId2;
47746
47678
  setIsSubscribed(true);
47747
- _optionalChain([onSubscribedRef, 'access', _1157 => _1157.current, 'optionalCall', _1158 => _1158()]);
47679
+ _optionalChain([onSubscribedRef, 'access', _1153 => _1153.current, 'optionalCall', _1154 => _1154()]);
47748
47680
  } else if (subscriptionRefs.current.size > 0) {
47749
47681
  setIsSubscribed(true);
47750
47682
  }
47751
- }, [isConnected, enabled, topicsKey]);
47683
+ }, [isConnected, enabled, topics, topicsKey]);
47752
47684
  return { isConnected, isSubscribed, reconnectionCount };
47753
47685
  }
47754
47686
  function buildNatsWsUrl(apiBaseUrl, options) {
47755
- const path = _optionalChain([options, 'optionalAccess', _1159 => _1159.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
47687
+ const path = _optionalChain([options, 'optionalAccess', _1155 => _1155.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
47756
47688
  const u = new URL(path, apiBaseUrl);
47757
47689
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
47758
- if (_optionalChain([options, 'optionalAccess', _1160 => _1160.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _1161 => _1161.token])) {
47690
+ if (_optionalChain([options, 'optionalAccess', _1156 => _1156.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _1157 => _1157.token])) {
47759
47691
  u.searchParams.set("authorization", options.token);
47760
47692
  }
47761
47693
  return u.toString();
@@ -47891,7 +47823,7 @@ function parseChunkToAction(chunk) {
47891
47823
  // is REQUIRED on `ChatContextItem`, so fall back to the id (same as the
47892
47824
  // historical path in `process-historical-messages.ts`) — keeps both
47893
47825
  // message sources producing an identical shape.
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
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
47895
47827
  };
47896
47828
  case MESSAGE_TYPE.TOKEN_USAGE:
47897
47829
  return {
@@ -48083,8 +48015,8 @@ var MessageSegmentAccumulator = class {
48083
48015
  type: "tool_execution",
48084
48016
  data: {
48085
48017
  ...toolData,
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])
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])
48088
48020
  }
48089
48021
  };
48090
48022
  if (existingIndex !== -1) {
@@ -48108,12 +48040,8 @@ var MessageSegmentAccumulator = class {
48108
48040
  if (seg.type !== "approval_batch") return seg;
48109
48041
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
48110
48042
  if (!hasCall) return seg;
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]) };
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]) };
48117
48045
  matched = true;
48118
48046
  return {
48119
48047
  ...seg,
@@ -48235,10 +48163,10 @@ var MessageSegmentAccumulator = class {
48235
48163
  const segment = {
48236
48164
  type: "approval_request",
48237
48165
  data: {
48238
- command: _optionalChain([pendingApproval, 'optionalAccess', _1174 => _1174.command]) || "",
48239
- explanation: _optionalChain([pendingApproval, 'optionalAccess', _1175 => _1175.explanation]),
48166
+ command: _optionalChain([pendingApproval, 'optionalAccess', _1169 => _1169.command]) || "",
48167
+ explanation: _optionalChain([pendingApproval, 'optionalAccess', _1170 => _1170.explanation]),
48240
48168
  requestId,
48241
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _1176 => _1176.approvalType]) || approvalType
48169
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _1171 => _1171.approvalType]) || approvalType
48242
48170
  },
48243
48171
  status,
48244
48172
  onApprove: this.callbacks.onApprove,
@@ -48430,7 +48358,7 @@ function useRealtimeChunkProcessor(options) {
48430
48358
  if (initialState.escalatedApprovals) {
48431
48359
  pendingEscalatedRef.current = new Map(initialState.escalatedApprovals);
48432
48360
  initialState.escalatedApprovals.forEach((data, requestId) => {
48433
- _optionalChain([callbacks, 'access', _1177 => _1177.onEscalatedApproval, 'optionalCall', _1178 => _1178(requestId, data)]);
48361
+ _optionalChain([callbacks, 'access', _1172 => _1172.onEscalatedApproval, 'optionalCall', _1173 => _1173(requestId, data)]);
48434
48362
  });
48435
48363
  }
48436
48364
  hasEverStreamedRef.current = true;
@@ -48452,13 +48380,13 @@ function useRealtimeChunkProcessor(options) {
48452
48380
  if (!action) return;
48453
48381
  const accumulator = accumulatorRef.current;
48454
48382
  const streamSeq = chunk && typeof chunk === "object" && typeof chunk.streamSeq === "number" ? chunk.streamSeq : void 0;
48455
- const emitSegments = (s, meta) => _optionalChain([callbacks, 'access', _1179 => _1179.onSegmentsUpdate, 'optionalCall', _1180 => _1180(s, streamSeq != null ? { ...meta, streamSeq } : meta)]);
48383
+ const emitSegments = (s, meta) => _optionalChain([callbacks, 'access', _1174 => _1174.onSegmentsUpdate, 'optionalCall', _1175 => _1175(s, streamSeq != null ? { ...meta, streamSeq } : meta)]);
48456
48384
  if (action.action === "direct_message") sawDirectMessageRef.current = true;
48457
48385
  if ((directModeFlagRef.current || sawDirectMessageRef.current) && !DIRECT_MODE_ALLOWED.has(action.action)) {
48458
48386
  if (isInStreamRef.current || !directTeardownFiredRef.current) {
48459
48387
  isInStreamRef.current = false;
48460
48388
  directTeardownFiredRef.current = true;
48461
- _optionalChain([callbacks, 'access', _1181 => _1181.onStreamEnd, 'optionalCall', _1182 => _1182()]);
48389
+ _optionalChain([callbacks, 'access', _1176 => _1176.onStreamEnd, 'optionalCall', _1177 => _1177()]);
48462
48390
  accumulator.resetSegments();
48463
48391
  }
48464
48392
  return;
@@ -48467,16 +48395,16 @@ function useRealtimeChunkProcessor(options) {
48467
48395
  case "message_start":
48468
48396
  isInStreamRef.current = true;
48469
48397
  hasEverStreamedRef.current = true;
48470
- _optionalChain([callbacks, 'access', _1183 => _1183.onStreamStart, 'optionalCall', _1184 => _1184()]);
48398
+ _optionalChain([callbacks, 'access', _1178 => _1178.onStreamStart, 'optionalCall', _1179 => _1179()]);
48471
48399
  accumulator.resetSegments();
48472
48400
  break;
48473
48401
  case "message_end":
48474
48402
  isInStreamRef.current = false;
48475
- _optionalChain([callbacks, 'access', _1185 => _1185.onStreamEnd, 'optionalCall', _1186 => _1186()]);
48403
+ _optionalChain([callbacks, 'access', _1180 => _1180.onStreamEnd, 'optionalCall', _1181 => _1181()]);
48476
48404
  accumulator.resetSegments();
48477
48405
  break;
48478
48406
  case "metadata":
48479
- _optionalChain([callbacks, 'access', _1187 => _1187.onMetadata, 'optionalCall', _1188 => _1188(action)]);
48407
+ _optionalChain([callbacks, 'access', _1182 => _1182.onMetadata, 'optionalCall', _1183 => _1183(action)]);
48480
48408
  break;
48481
48409
  case "text": {
48482
48410
  const segments = accumulator.appendText(action.text);
@@ -48498,7 +48426,7 @@ function useRealtimeChunkProcessor(options) {
48498
48426
  }
48499
48427
  case "tool_execution": {
48500
48428
  if (action.segment.data.type === "EXECUTING_TOOL") {
48501
- _optionalChain([callbacks, 'access', _1189 => _1189.onAgentBusy, 'optionalCall', _1190 => _1190()]);
48429
+ _optionalChain([callbacks, 'access', _1184 => _1184.onAgentBusy, 'optionalCall', _1185 => _1185()]);
48502
48430
  }
48503
48431
  if (!isInStreamRef.current && callbacks.onToolExecuted) {
48504
48432
  callbacks.onToolExecuted(action.segment);
@@ -48522,7 +48450,7 @@ function useRealtimeChunkProcessor(options) {
48522
48450
  emitSegments(segments);
48523
48451
  } else {
48524
48452
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
48525
- _optionalChain([callbacks, 'access', _1191 => _1191.onEscalatedApproval, 'optionalCall', _1192 => _1192(requestId, { command, explanation, approvalType })]);
48453
+ _optionalChain([callbacks, 'access', _1186 => _1186.onEscalatedApproval, 'optionalCall', _1187 => _1187(requestId, { command, explanation, approvalType })]);
48526
48454
  }
48527
48455
  break;
48528
48456
  }
@@ -48534,13 +48462,13 @@ function useRealtimeChunkProcessor(options) {
48534
48462
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
48535
48463
  pendingEscalatedRef.current.set(requestId, {
48536
48464
  command: summary,
48537
- explanation: _optionalChain([required, 'optionalAccess', _1193 => _1193.toolExplanation]),
48465
+ explanation: _optionalChain([required, 'optionalAccess', _1188 => _1188.toolExplanation]),
48538
48466
  approvalType,
48539
48467
  toolCalls
48540
48468
  });
48541
- _optionalChain([callbacks, 'access', _1194 => _1194.onEscalatedApproval, 'optionalCall', _1195 => _1195(requestId, {
48469
+ _optionalChain([callbacks, 'access', _1189 => _1189.onEscalatedApproval, 'optionalCall', _1190 => _1190(requestId, {
48542
48470
  command: summary,
48543
- explanation: _optionalChain([required, 'optionalAccess', _1196 => _1196.toolExplanation]),
48471
+ explanation: _optionalChain([required, 'optionalAccess', _1191 => _1191.toolExplanation]),
48544
48472
  approvalType
48545
48473
  })]);
48546
48474
  break;
@@ -48566,26 +48494,16 @@ function useRealtimeChunkProcessor(options) {
48566
48494
  }
48567
48495
  case "approval_result": {
48568
48496
  const { requestId, approved, approvalType, resolvedByName } = action;
48569
- if (approved) _optionalChain([callbacks, 'access', _1197 => _1197.onAgentBusy, 'optionalCall', _1198 => _1198()]);
48497
+ if (approved) _optionalChain([callbacks, 'access', _1192 => _1192.onAgentBusy, 'optionalCall', _1193 => _1193()]);
48570
48498
  const escalatedData = pendingEscalatedRef.current.get(requestId);
48571
48499
  const status = approved ? "approved" : "rejected";
48572
48500
  if (escalatedData) {
48573
48501
  pendingEscalatedRef.current.delete(requestId);
48574
- _optionalChain([callbacks, 'access', _1199 => _1199.onEscalatedApprovalResult, 'optionalCall', _1200 => _1200(requestId, approved, {
48502
+ _optionalChain([callbacks, 'access', _1194 => _1194.onEscalatedApprovalResult, 'optionalCall', _1195 => _1195(requestId, approved, {
48575
48503
  command: escalatedData.command,
48576
48504
  explanation: escalatedData.explanation,
48577
48505
  approvalType: escalatedData.approvalType
48578
48506
  })]);
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
- };
48589
48507
  if (escalatedData.toolCalls && escalatedData.toolCalls.length > 0) {
48590
48508
  if (batchApprovalsEnabled) {
48591
48509
  const segments = accumulator.addApprovalBatch(
@@ -48596,7 +48514,7 @@ function useRealtimeChunkProcessor(options) {
48596
48514
  void 0,
48597
48515
  resolvedByName
48598
48516
  );
48599
- emitResolved(segments);
48517
+ emitSegments(segments);
48600
48518
  } else {
48601
48519
  let segments = accumulator.getSegments();
48602
48520
  for (const call of escalatedData.toolCalls) {
@@ -48609,7 +48527,7 @@ function useRealtimeChunkProcessor(options) {
48609
48527
  status
48610
48528
  );
48611
48529
  }
48612
- emitResolved(segments);
48530
+ emitSegments(segments);
48613
48531
  }
48614
48532
  } else {
48615
48533
  const segments = accumulator.addApprovalRequest(
@@ -48619,7 +48537,7 @@ function useRealtimeChunkProcessor(options) {
48619
48537
  escalatedData.approvalType,
48620
48538
  status
48621
48539
  );
48622
- emitResolved(segments);
48540
+ emitSegments(segments);
48623
48541
  }
48624
48542
  } else {
48625
48543
  accumulator.updateApprovalStatus(requestId, status, resolvedByName);
@@ -48627,29 +48545,29 @@ function useRealtimeChunkProcessor(options) {
48627
48545
  emitSegments(accumulator.getSegments());
48628
48546
  }
48629
48547
  }
48630
- _optionalChain([callbacks, 'access', _1201 => _1201.onApprovalResolved, 'optionalCall', _1202 => _1202(requestId, status, approvalType, resolvedByName)]);
48548
+ _optionalChain([callbacks, 'access', _1196 => _1196.onApprovalResolved, 'optionalCall', _1197 => _1197(requestId, status, approvalType, resolvedByName)]);
48631
48549
  break;
48632
48550
  }
48633
48551
  case "error": {
48634
48552
  let message2;
48635
- if ("details" in action && _optionalChain([action, 'optionalAccess', _1203 => _1203.details])) {
48553
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _1198 => _1198.details])) {
48636
48554
  try {
48637
- message2 = _optionalChain([JSON, 'access', _1204 => _1204.parse, 'call', _1205 => _1205(action.details), 'optionalAccess', _1206 => _1206.error, 'optionalAccess', _1207 => _1207.message]);
48555
+ message2 = _optionalChain([JSON, 'access', _1199 => _1199.parse, 'call', _1200 => _1200(action.details), 'optionalAccess', _1201 => _1201.error, 'optionalAccess', _1202 => _1202.message]);
48638
48556
  } catch (e60) {
48639
48557
  message2 = action.details;
48640
48558
  }
48641
48559
  }
48642
48560
  const segments = accumulator.addError(action.error, message2);
48643
48561
  emitSegments(segments);
48644
- _optionalChain([callbacks, 'access', _1208 => _1208.onError, 'optionalCall', _1209 => _1209(action.error, message2)]);
48562
+ _optionalChain([callbacks, 'access', _1203 => _1203.onError, 'optionalCall', _1204 => _1204(action.error, message2)]);
48645
48563
  break;
48646
48564
  }
48647
48565
  case "system": {
48648
- _optionalChain([callbacks, 'access', _1210 => _1210.onSystemMessage, 'optionalCall', _1211 => _1211(action.text, { streamSeq })]);
48566
+ _optionalChain([callbacks, 'access', _1205 => _1205.onSystemMessage, 'optionalCall', _1206 => _1206(action.text, { streamSeq })]);
48649
48567
  break;
48650
48568
  }
48651
48569
  case "direct_message": {
48652
- _optionalChain([callbacks, 'access', _1212 => _1212.onDirectMessage, 'optionalCall', _1213 => _1213(action.text, {
48570
+ _optionalChain([callbacks, 'access', _1207 => _1207.onDirectMessage, 'optionalCall', _1208 => _1208(action.text, {
48653
48571
  ownerType: action.ownerType,
48654
48572
  displayName: action.displayName,
48655
48573
  userId: action.userId,
@@ -48658,7 +48576,7 @@ function useRealtimeChunkProcessor(options) {
48658
48576
  break;
48659
48577
  }
48660
48578
  case "message_request":
48661
- _optionalChain([callbacks, 'access', _1214 => _1214.onUserMessage, 'optionalCall', _1215 => _1215(action.text, {
48579
+ _optionalChain([callbacks, 'access', _1209 => _1209.onUserMessage, 'optionalCall', _1210 => _1210(action.text, {
48662
48580
  ownerType: action.ownerType,
48663
48581
  displayName: action.displayName,
48664
48582
  userId: action.userId,
@@ -48667,7 +48585,7 @@ function useRealtimeChunkProcessor(options) {
48667
48585
  })]);
48668
48586
  break;
48669
48587
  case "token_usage":
48670
- _optionalChain([callbacks, 'access', _1216 => _1216.onTokenUsage, 'optionalCall', _1217 => _1217(action.data)]);
48588
+ _optionalChain([callbacks, 'access', _1211 => _1211.onTokenUsage, 'optionalCall', _1212 => _1212(action.data)]);
48671
48589
  break;
48672
48590
  case "context_compaction_start": {
48673
48591
  const standalone = !isInStreamRef.current;
@@ -48682,7 +48600,7 @@ function useRealtimeChunkProcessor(options) {
48682
48600
  break;
48683
48601
  }
48684
48602
  case "dialog_closed":
48685
- _optionalChain([callbacks, 'access', _1218 => _1218.onDialogClosed, 'optionalCall', _1219 => _1219()]);
48603
+ _optionalChain([callbacks, 'access', _1213 => _1213.onDialogClosed, 'optionalCall', _1214 => _1214()]);
48686
48604
  break;
48687
48605
  default:
48688
48606
  break;
@@ -48699,8 +48617,6 @@ function useRealtimeChunkProcessor(options) {
48699
48617
  hasInitializedWithData.current = false;
48700
48618
  sawDirectMessageRef.current = false;
48701
48619
  directTeardownFiredRef.current = false;
48702
- isInStreamRef.current = false;
48703
- hasEverStreamedRef.current = false;
48704
48620
  }, []);
48705
48621
  const updateApprovalStatus = _react.useCallback.call(void 0,
48706
48622
  (requestId, status, resolvedByName) => {
@@ -48727,12 +48643,12 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
48727
48643
  try {
48728
48644
  const url = new URL(commandsUrl, window.location.origin);
48729
48645
  if (prefix) url.searchParams.set("q", prefix);
48730
- const res = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48646
+ const res = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48731
48647
  if (!res.ok) return [];
48732
48648
  const data = await res.json();
48733
48649
  return _nullishCoalesce(data.commands, () => ( []));
48734
48650
  } catch (err) {
48735
- if (_optionalChain([err, 'optionalAccess', _1220 => _1220.name]) === "AbortError") throw err;
48651
+ if (_optionalChain([err, 'optionalAccess', _1215 => _1215.name]) === "AbortError") throw err;
48736
48652
  console.warn("[chat] slash-commands fetch failed, showing none:", err);
48737
48653
  return [];
48738
48654
  }
@@ -48753,7 +48669,7 @@ function useSlashCommands(prefix, commandsUrl) {
48753
48669
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
48754
48670
  if (!cancelled) setCommands(next);
48755
48671
  } catch (err) {
48756
- if (!cancelled && _optionalChain([err, 'optionalAccess', _1221 => _1221.name]) !== "AbortError") {
48672
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1216 => _1216.name]) !== "AbortError") {
48757
48673
  console.warn("[use-slash-commands] fetch failed:", err);
48758
48674
  }
48759
48675
  } finally {
@@ -48772,7 +48688,7 @@ function useSlashCommandRegistry(commandsUrl, options) {
48772
48688
  const query = _reactquery.useQuery.call(void 0, {
48773
48689
  queryKey: ["chat-slash-commands", commandsUrl],
48774
48690
  queryFn: ({ signal }) => fetchSlashCommands("", signal, commandsUrl),
48775
- enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1222 => _1222.enabled]), () => ( true)),
48691
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1217 => _1217.enabled]), () => ( true)),
48776
48692
  staleTime: Infinity,
48777
48693
  gcTime: Infinity,
48778
48694
  // The commands registry is non-critical chrome — a failure degrades to an
@@ -48802,7 +48718,7 @@ var EMPTY_STATE_FALLBACK = {
48802
48718
  async function fetchEmptyStateConfig(signal, emptyStateUrl) {
48803
48719
  try {
48804
48720
  const url = new URL(emptyStateUrl, window.location.origin);
48805
- const res = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48721
+ const res = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url.toString(), { signal, headers: {} });
48806
48722
  if (!res.ok) {
48807
48723
  if (res.status >= 500) {
48808
48724
  console.error(`[chat] empty-state config fetch failed (${res.status}): ${url.pathname}`);
@@ -48811,21 +48727,21 @@ async function fetchEmptyStateConfig(signal, emptyStateUrl) {
48811
48727
  }
48812
48728
  const data = await res.json();
48813
48729
  return {
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]), () => ( []))
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]), () => ( []))
48820
48736
  };
48821
48737
  } catch (err) {
48822
- if (_optionalChain([err, 'optionalAccess', _1229 => _1229.name]) === "AbortError") throw err;
48738
+ if (_optionalChain([err, 'optionalAccess', _1224 => _1224.name]) === "AbortError") throw err;
48823
48739
  console.warn("[chat] empty-state config fetch failed, using neutral defaults:", err);
48824
48740
  return EMPTY_STATE_FALLBACK;
48825
48741
  }
48826
48742
  }
48827
48743
  function useEmptyStateConfig(emptyStateUrl, options) {
48828
- const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1230 => _1230.enabled]), () => ( true))) && !!emptyStateUrl;
48744
+ const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1225 => _1225.enabled]), () => ( true))) && !!emptyStateUrl;
48829
48745
  const query = _reactquery.useQuery.call(void 0, {
48830
48746
  queryKey: ["chat-empty-state", emptyStateUrl],
48831
48747
  queryFn: ({ signal }) => fetchEmptyStateConfig(signal, emptyStateUrl),
@@ -48854,7 +48770,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
48854
48770
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
48855
48771
  function uploadWithProgress(url, file, token, onProgress, signal) {
48856
48772
  return new Promise((resolve, reject) => {
48857
- if (_optionalChain([signal, 'optionalAccess', _1231 => _1231.aborted])) {
48773
+ if (_optionalChain([signal, 'optionalAccess', _1226 => _1226.aborted])) {
48858
48774
  reject(new Error("Upload cancelled"));
48859
48775
  return;
48860
48776
  }
@@ -48868,7 +48784,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48868
48784
  xhr.removeEventListener("error", handleError);
48869
48785
  xhr.removeEventListener("abort", handleAbort);
48870
48786
  xhr.removeEventListener("timeout", handleTimeout);
48871
- _optionalChain([signal, 'optionalAccess', _1232 => _1232.removeEventListener, 'call', _1233 => _1233("abort", handleSignalAbort)]);
48787
+ _optionalChain([signal, 'optionalAccess', _1227 => _1227.removeEventListener, 'call', _1228 => _1228("abort", handleSignalAbort)]);
48872
48788
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
48873
48789
  };
48874
48790
  const handleProgress = (event) => {
@@ -48904,7 +48820,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48904
48820
  const handleSignalAbort = () => {
48905
48821
  xhr.abort();
48906
48822
  };
48907
- _optionalChain([signal, 'optionalAccess', _1234 => _1234.addEventListener, 'call', _1235 => _1235("abort", handleSignalAbort, { once: true })]);
48823
+ _optionalChain([signal, 'optionalAccess', _1229 => _1229.addEventListener, 'call', _1230 => _1230("abort", handleSignalAbort, { once: true })]);
48908
48824
  xhr.upload.addEventListener("progress", handleProgress);
48909
48825
  xhr.addEventListener("load", handleLoad);
48910
48826
  xhr.addEventListener("error", handleError);
@@ -48948,12 +48864,12 @@ function useChatAttachments() {
48948
48864
  try {
48949
48865
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
48950
48866
  } catch (err) {
48951
- if (_optionalChain([ctrl, 'optionalAccess', _1236 => _1236.signal, 'access', _1237 => _1237.aborted])) return;
48867
+ if (_optionalChain([ctrl, 'optionalAccess', _1231 => _1231.signal, 'access', _1232 => _1232.aborted])) return;
48952
48868
  throw new Error(
48953
48869
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
48954
48870
  );
48955
48871
  }
48956
- if (_optionalChain([ctrl, 'optionalAccess', _1238 => _1238.signal, 'access', _1239 => _1239.aborted])) return;
48872
+ if (_optionalChain([ctrl, 'optionalAccess', _1233 => _1233.signal, 'access', _1234 => _1234.aborted])) return;
48957
48873
  if (!sniffed) {
48958
48874
  throw new Error("Unrecognized file format");
48959
48875
  }
@@ -48964,10 +48880,10 @@ function useChatAttachments() {
48964
48880
  );
48965
48881
  }
48966
48882
  updateOne(att.id, { status: "uploading", progress: 5 });
48967
- const urlResp = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
48883
+ const urlResp = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
48968
48884
  method: "POST",
48969
48885
  headers: { "Content-Type": "application/json" },
48970
- signal: _optionalChain([ctrl, 'optionalAccess', _1240 => _1240.signal]),
48886
+ signal: _optionalChain([ctrl, 'optionalAccess', _1235 => _1235.signal]),
48971
48887
  body: JSON.stringify({
48972
48888
  fileName: att.file.name,
48973
48889
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -48993,9 +48909,9 @@ function useChatAttachments() {
48993
48909
  (pct) => {
48994
48910
  updateOne(att.id, { progress: pct });
48995
48911
  },
48996
- _optionalChain([ctrl, 'optionalAccess', _1241 => _1241.signal])
48912
+ _optionalChain([ctrl, 'optionalAccess', _1236 => _1236.signal])
48997
48913
  );
48998
- if (_optionalChain([ctrl, 'optionalAccess', _1242 => _1242.signal, 'access', _1243 => _1243.aborted])) return;
48914
+ if (_optionalChain([ctrl, 'optionalAccess', _1237 => _1237.signal, 'access', _1238 => _1238.aborted])) return;
48999
48915
  updateOne(att.id, {
49000
48916
  status: "ready",
49001
48917
  progress: 100,
@@ -49003,7 +48919,7 @@ function useChatAttachments() {
49003
48919
  viewToken: mintData.viewToken
49004
48920
  });
49005
48921
  } catch (err) {
49006
- if (_optionalChain([ctrl, 'optionalAccess', _1244 => _1244.signal, 'access', _1245 => _1245.aborted])) return;
48922
+ if (_optionalChain([ctrl, 'optionalAccess', _1239 => _1239.signal, 'access', _1240 => _1240.aborted])) return;
49007
48923
  const message2 = err instanceof Error ? err.message : String(err);
49008
48924
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
49009
48925
  } finally {
@@ -49154,7 +49070,7 @@ var ANON_DEFAULTS = {
49154
49070
  function useResolveChatIdentity(enabled) {
49155
49071
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
49156
49072
  const url = runtime.endpoints.identityUrl;
49157
- const proxyEmail = _nullishCoalesce(_optionalChain([_chunkVIJARDBMcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1246 => _1246.email]), () => ( null));
49073
+ const proxyEmail = _nullishCoalesce(_optionalChain([_chunk7CZ4MJSIcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1241 => _1241.email]), () => ( null));
49158
49074
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
49159
49075
  const [isLoading, setIsLoading] = _react.useState.call(void 0, enabled);
49160
49076
  _react.useEffect.call(void 0, () => {
@@ -49162,7 +49078,7 @@ function useResolveChatIdentity(enabled) {
49162
49078
  let cancelled = false;
49163
49079
  const ctrl = new AbortController();
49164
49080
  setIsLoading(true);
49165
- _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, url, { signal: ctrl.signal }).then(async (resp) => {
49081
+ _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, url, { signal: ctrl.signal }).then(async (resp) => {
49166
49082
  if (!resp.ok) return ANON_DEFAULTS;
49167
49083
  return await resp.json();
49168
49084
  }).then((next) => {
@@ -49245,7 +49161,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
49245
49161
  yield chunk;
49246
49162
  }
49247
49163
  } catch (err) {
49248
- if (_optionalChain([err, 'optionalAccess', _1247 => _1247.name]) === "AbortError" || ctrl.signal.aborted) {
49164
+ if (_optionalChain([err, 'optionalAccess', _1242 => _1242.name]) === "AbortError" || ctrl.signal.aborted) {
49249
49165
  return;
49250
49166
  }
49251
49167
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -49296,7 +49212,7 @@ function useChat({
49296
49212
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
49297
49213
  onMessagesChangeRef.current = onMessagesChange;
49298
49214
  _react.useEffect.call(void 0, () => {
49299
- _optionalChain([onMessagesChangeRef, 'access', _1248 => _1248.current, 'optionalCall', _1249 => _1249(messages)]);
49215
+ _optionalChain([onMessagesChangeRef, 'access', _1243 => _1243.current, 'optionalCall', _1244 => _1244(messages)]);
49300
49216
  }, [messages]);
49301
49217
  const {
49302
49218
  streamMessage,
@@ -49333,7 +49249,7 @@ function useChat({
49333
49249
  name: "You",
49334
49250
  content: text,
49335
49251
  timestamp: /* @__PURE__ */ new Date(),
49336
- ..._optionalChain([options, 'optionalAccess', _1250 => _1250.hidden]) ? { hidden: true } : {}
49252
+ ..._optionalChain([options, 'optionalAccess', _1245 => _1245.hidden]) ? { hidden: true } : {}
49337
49253
  };
49338
49254
  addMessage(userMessage);
49339
49255
  setIsTyping(true);
@@ -49395,7 +49311,7 @@ function useChat({
49395
49311
  currentTextSegment = "";
49396
49312
  }
49397
49313
  const seg = segment;
49398
- const proposalId = _optionalChain([seg, 'access', _1251 => _1251.data, 'optionalAccess', _1252 => _1252.requestId]);
49314
+ const proposalId = _optionalChain([seg, 'access', _1246 => _1246.data, 'optionalAccess', _1247 => _1247.requestId]);
49399
49315
  const updateApprovalMessage = (transform) => {
49400
49316
  setMessages((prev) => {
49401
49317
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -49404,7 +49320,7 @@ function useChat({
49404
49320
  if (!Array.isArray(m.content)) continue;
49405
49321
  const segments = m.content;
49406
49322
  const hasMatch = segments.some(
49407
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1253 => _1253.data, 'optionalAccess', _1254 => _1254.requestId]) === proposalId
49323
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1248 => _1248.data, 'optionalAccess', _1249 => _1249.requestId]) === proposalId
49408
49324
  );
49409
49325
  if (!hasMatch) continue;
49410
49326
  const next = [...prev];
@@ -49446,11 +49362,11 @@ function useChat({
49446
49362
  if (!Array.isArray(m.content)) continue;
49447
49363
  const segments = m.content;
49448
49364
  const hasMatch = segments.some(
49449
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1255 => _1255.data, 'optionalAccess', _1256 => _1256.requestId]) === decision.proposalId
49365
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1250 => _1250.data, 'optionalAccess', _1251 => _1251.requestId]) === decision.proposalId
49450
49366
  );
49451
49367
  if (!hasMatch) continue;
49452
49368
  const flipped = segments.map(
49453
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1257 => _1257.data, 'optionalAccess', _1258 => _1258.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49369
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1252 => _1252.data, 'optionalAccess', _1253 => _1253.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49454
49370
  );
49455
49371
  const next = [...prev];
49456
49372
  next[i] = { ...m, content: flipped };
@@ -49612,8 +49528,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49612
49528
  })),
49613
49529
  { role: "user", content: message2 }
49614
49530
  ];
49615
- const targetPath = _optionalChain([extra, 'optionalAccess', _1259 => _1259.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49616
- const requestBody = _optionalChain([extra, 'optionalAccess', _1260 => _1260.approvalAction]) ? {
49531
+ const targetPath = _optionalChain([extra, 'optionalAccess', _1254 => _1254.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49532
+ const requestBody = _optionalChain([extra, 'optionalAccess', _1255 => _1255.approvalAction]) ? {
49617
49533
  proposal_id: extra.approvalAction.proposalId,
49618
49534
  action: extra.approvalAction.action,
49619
49535
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -49622,10 +49538,10 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49622
49538
  }))
49623
49539
  } : {
49624
49540
  messages: apiMessages,
49625
- ..._optionalChain([extra, 'optionalAccess', _1261 => _1261.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49626
- ..._optionalChain([extra, 'optionalAccess', _1262 => _1262.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49541
+ ..._optionalChain([extra, 'optionalAccess', _1256 => _1256.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49542
+ ..._optionalChain([extra, 'optionalAccess', _1257 => _1257.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49627
49543
  };
49628
- const response = await _chunkVIJARDBMcjs.embedAuthedFetch.call(void 0, targetPath, {
49544
+ const response = await _chunk7CZ4MJSIcjs.embedAuthedFetch.call(void 0, targetPath, {
49629
49545
  method: "POST",
49630
49546
  body: JSON.stringify(requestBody),
49631
49547
  signal
@@ -49633,7 +49549,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49633
49549
  if (!response.ok) {
49634
49550
  throw new Error(`Chat request failed: ${response.status}`);
49635
49551
  }
49636
- const reader = _optionalChain([response, 'access', _1263 => _1263.body, 'optionalAccess', _1264 => _1264.getReader, 'call', _1265 => _1265()]);
49552
+ const reader = _optionalChain([response, 'access', _1258 => _1258.body, 'optionalAccess', _1259 => _1259.getReader, 'call', _1260 => _1260()]);
49637
49553
  if (!reader) throw new Error("No response body");
49638
49554
  const decoder = new TextDecoder();
49639
49555
  let buffer = "";
@@ -49716,7 +49632,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49716
49632
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
49717
49633
  const result = _nullishCoalesce(meta.result, () => ( null));
49718
49634
  const card = _nullishCoalesce(meta.card, () => ( null));
49719
- if (_optionalChain([card, 'optionalAccess', _1266 => _1266.ref, 'optionalAccess', _1267 => _1267.id]) && _optionalChain([card, 'optionalAccess', _1268 => _1268.type])) {
49635
+ if (_optionalChain([card, 'optionalAccess', _1261 => _1261.ref, 'optionalAccess', _1262 => _1262.id]) && _optionalChain([card, 'optionalAccess', _1263 => _1263.type])) {
49720
49636
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
49721
49637
  const key = buildChatRefKey(card.type, card.ref.id);
49722
49638
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -49729,8 +49645,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49729
49645
  willAutoContinue: meta.willAutoContinue === true,
49730
49646
  ...toolName ? { toolName } : {},
49731
49647
  ...result ? { result } : {},
49732
- ..._optionalChain([card, 'optionalAccess', _1269 => _1269.marker]) ? { marker: card.marker } : {},
49733
- ..._optionalChain([card, 'optionalAccess', _1270 => _1270.ref]) ? { cardRef: card.ref } : {},
49648
+ ..._optionalChain([card, 'optionalAccess', _1264 => _1264.marker]) ? { marker: card.marker } : {},
49649
+ ..._optionalChain([card, 'optionalAccess', _1265 => _1265.ref]) ? { cardRef: card.ref } : {},
49734
49650
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
49735
49651
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
49736
49652
  };
@@ -49848,8 +49764,8 @@ var CHAT_STORAGE_VERSION = 1;
49848
49764
  var DEFAULT_CHAT_SOURCE = "embed";
49849
49765
  var chatStorageKey = (source) => {
49850
49766
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
49851
- const auth = _chunkVIJARDBMcjs.getEmbedProxyAuth.call(void 0, );
49852
- if (_optionalChain([auth, 'optionalAccess', _1271 => _1271.email])) {
49767
+ const auth = _chunk7CZ4MJSIcjs.getEmbedProxyAuth.call(void 0, );
49768
+ if (_optionalChain([auth, 'optionalAccess', _1266 => _1266.email])) {
49853
49769
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
49854
49770
  }
49855
49771
  return base;
@@ -49904,7 +49820,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49904
49820
  const { active = true } = runtimeOptions;
49905
49821
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
49906
49822
  const source = runtime.source || DEFAULT_CHAT_SOURCE;
49907
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1272 => _1272.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49823
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1267 => _1267.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49908
49824
  const persistedRef = _react.useRef.call(void 0, null);
49909
49825
  if (persistedRef.current === null) {
49910
49826
  pruneStaleChatStorage(source);
@@ -50009,7 +49925,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
50009
49925
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
50010
49926
  sources = sourcesMapRef.current.get(lookupIdx);
50011
49927
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
50012
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1273 => _1273.current, 'access', _1274 => _1274.get, 'call', _1275 => _1275(lookupIdx), 'optionalAccess', _1276 => _1276.scrollAnchor]), () => ( void 0));
49928
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1268 => _1268.current, 'access', _1269 => _1269.get, 'call', _1270 => _1270(lookupIdx), 'optionalAccess', _1271 => _1271.scrollAnchor]), () => ( void 0));
50013
49929
  }
50014
49930
  return {
50015
49931
  id: m.id,
@@ -50057,7 +49973,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
50057
49973
  );
50058
49974
  return;
50059
49975
  }
50060
- const refSlug = typeof _optionalChain([reference, 'access', _1277 => _1277.metadata, 'optionalAccess', _1278 => _1278.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
49976
+ const refSlug = typeof _optionalChain([reference, 'access', _1272 => _1272.metadata, 'optionalAccess', _1273 => _1273.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
50061
49977
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
50062
49978
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
50063
49979
  const text = `/${cmdId} display "${escaped}"`;
@@ -50129,18 +50045,18 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
50129
50045
  clearMessages,
50130
50046
  streamingPhase,
50131
50047
  /** Provider key for the lib's `<ModelDisplay>` icon. */
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)),
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)),
50135
50051
  /** Input tokens (known after server's message_start frame; null until). */
50136
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1282 => _1282.inputTokens]), () => ( null)),
50052
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1277 => _1277.inputTokens]), () => ( null)),
50137
50053
  /** Output tokens (known only after server's trailing usage frame). */
50138
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1283 => _1283.outputTokens]), () => ( null)),
50054
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1278 => _1278.outputTokens]), () => ( null)),
50139
50055
  /** Cache hit % (read / total-input × 100). null during streaming. */
50140
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1284 => _1284.cacheHitRatePct]), () => ( null)),
50056
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1279 => _1279.cacheHitRatePct]), () => ( null)),
50141
50057
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
50142
50058
  * token counts). null until the trailing usage frame lands. */
50143
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1285 => _1285.breakdown]), () => ( null)),
50059
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1280 => _1280.breakdown]), () => ( null)),
50144
50060
  // ─── Dialog management — stubs for v1 ────────────────────────────────
50145
50061
  // Guide mode currently keeps its history in `localStorage` opaquely
50146
50062
  // under the hood (`runtime.source` namespaced key). Surfacing that
@@ -50198,15 +50114,15 @@ var noopRejectRequest = async (_id, _reason) => {
50198
50114
 
50199
50115
  // src/components/chat/utils/process-historical-messages.ts
50200
50116
  function getOwnerDisplayName(owner) {
50201
- if (_optionalChain([owner, 'optionalAccess', _1286 => _1286.type]) === OWNER_TYPE.ADMIN && owner.user) {
50117
+ if (_optionalChain([owner, 'optionalAccess', _1281 => _1281.type]) === OWNER_TYPE.ADMIN && owner.user) {
50202
50118
  const { firstName, lastName } = owner.user;
50203
50119
  const name = [firstName, lastName].filter(Boolean).join(" ");
50204
50120
  if (name) return name;
50205
50121
  }
50206
- return _optionalChain([owner, 'optionalAccess', _1287 => _1287.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
50122
+ return _optionalChain([owner, 'optionalAccess', _1282 => _1282.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
50207
50123
  }
50208
50124
  function getOwnerAvatar(owner) {
50209
- return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1288 => _1288.user, 'optionalAccess', _1289 => _1289.image, 'optionalAccess', _1290 => _1290.imageUrl]), () => ( void 0));
50125
+ return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1283 => _1283.user, 'optionalAccess', _1284 => _1284.image, 'optionalAccess', _1285 => _1285.imageUrl]), () => ( void 0));
50210
50126
  }
50211
50127
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
50212
50128
  messageDataArray.forEach((data) => {
@@ -50231,15 +50147,7 @@ function processHistoricalMessages(messages, options = {}) {
50231
50147
  onReject,
50232
50148
  chatTypeFilter,
50233
50149
  approvalStatuses = {},
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
50150
+ displayApprovalTypes
50243
50151
  } = options;
50244
50152
  const processedMessages = [];
50245
50153
  const accumulator = createMessageSegmentAccumulator({ onApprove, onReject });
@@ -50277,14 +50185,14 @@ function processHistoricalMessages(messages, options = {}) {
50277
50185
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
50278
50186
  return;
50279
50187
  }
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;
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;
50281
50189
  if (isUserMessage) {
50282
50190
  flushAssistantMessage();
50283
- const userAuthorType = _optionalChain([msg, 'access', _1295 => _1295.owner, 'optionalAccess', _1296 => _1296.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50191
+ const userAuthorType = _optionalChain([msg, 'access', _1290 => _1290.owner, 'optionalAccess', _1291 => _1291.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50284
50192
  messageDataArray.forEach((data) => {
50285
50193
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
50286
50194
  const rawContext = data.contextItems;
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;
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;
50288
50196
  processedMessages.push({
50289
50197
  id: msg.id,
50290
50198
  role: "user",
@@ -50304,17 +50212,11 @@ function processHistoricalMessages(messages, options = {}) {
50304
50212
  }
50305
50213
  lastAssistantId = msg.id;
50306
50214
  messageDataArray.forEach((data) => {
50307
- processMessageData(
50308
- data,
50309
- accumulator,
50310
- approvalStatuses,
50311
- { displayApprovalTypes, batchApprovalsEnabled },
50312
- escalatedApprovals
50313
- );
50215
+ processMessageData(data, accumulator, approvalStatuses, { displayApprovalTypes }, escalatedApprovals);
50314
50216
  });
50315
50217
  const nextMsg = messages[index + 1];
50316
50218
  const isLastMessage = index === messages.length - 1;
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);
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);
50318
50220
  if (isLastMessage || nextIsFromUser) {
50319
50221
  flushAssistantMessage();
50320
50222
  }
@@ -50424,7 +50326,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50424
50326
  }
50425
50327
  }
50426
50328
  } else {
50427
- _optionalChain([escalatedApprovals, 'optionalAccess', _1303 => _1303.set, 'call', _1304 => _1304(data.approvalRequestId, {
50329
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1298 => _1298.set, 'call', _1299 => _1299(data.approvalRequestId, {
50428
50330
  command: data.command || "",
50429
50331
  explanation: data.explanation,
50430
50332
  approvalType,
@@ -50438,8 +50340,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50438
50340
  const existingStatus = approvalStatuses[data.approvalRequestId];
50439
50341
  const status = existingStatus || (data.approved ? "approved" : "rejected");
50440
50342
  const resolvedByName = "resolvedByName" in data ? data.resolvedByName : void 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) {
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) {
50443
50345
  if (batchApprovalsEnabled) {
50444
50346
  accumulator.addApprovalBatch(
50445
50347
  data.approvalRequestId,
@@ -50461,7 +50363,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50461
50363
  );
50462
50364
  }
50463
50365
  }
50464
- _optionalChain([escalatedApprovals, 'optionalAccess', _1308 => _1308.delete, 'call', _1309 => _1309(data.approvalRequestId)]);
50366
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1303 => _1303.delete, 'call', _1304 => _1304(data.approvalRequestId)]);
50465
50367
  break;
50466
50368
  }
50467
50369
  if (escalatedData) {
@@ -50470,7 +50372,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50470
50372
  explanation: escalatedData.explanation,
50471
50373
  approvalType: escalatedData.approvalType
50472
50374
  });
50473
- _optionalChain([escalatedApprovals, 'optionalAccess', _1310 => _1310.delete, 'call', _1311 => _1311(data.approvalRequestId)]);
50375
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1305 => _1305.delete, 'call', _1306 => _1306(data.approvalRequestId)]);
50474
50376
  }
50475
50377
  const before = accumulator.getSegments();
50476
50378
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status, resolvedByName);
@@ -50486,9 +50388,9 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50486
50388
  case MESSAGE_TYPE.ERROR:
50487
50389
  if ("error" in data) {
50488
50390
  let message2;
50489
- if ("details" in data && _optionalChain([data, 'optionalAccess', _1312 => _1312.details])) {
50391
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _1307 => _1307.details])) {
50490
50392
  try {
50491
- message2 = _optionalChain([JSON, 'access', _1313 => _1313.parse, 'call', _1314 => _1314(data.details), 'optionalAccess', _1315 => _1315.error, 'optionalAccess', _1316 => _1316.message]);
50393
+ message2 = _optionalChain([JSON, 'access', _1308 => _1308.parse, 'call', _1309 => _1309(data.details), 'optionalAccess', _1310 => _1310.error, 'optionalAccess', _1311 => _1311.message]);
50492
50394
  } catch (e67) {
50493
50395
  message2 = data.details;
50494
50396
  }
@@ -50534,7 +50436,7 @@ function extractErrorMessages(messages, options = {}) {
50534
50436
  return errorMessages;
50535
50437
  }
50536
50438
  function processHistoricalMessagesWithErrors(messages, options = {}) {
50537
- const { chatTypeFilter, assistantName = "Fae", assistantType = "fae", assistantAvatar, onApprove, onReject, approvalStatuses = {}, displayApprovalTypes, batchApprovalsEnabled } = options;
50439
+ const { chatTypeFilter, assistantName = "Fae", assistantType = "fae", assistantAvatar, onApprove, onReject, approvalStatuses = {}, displayApprovalTypes } = options;
50538
50440
  const processedMessages = [];
50539
50441
  const accumulator = createMessageSegmentAccumulator({ onApprove, onReject });
50540
50442
  const escalatedApprovals = /* @__PURE__ */ new Map();
@@ -50571,14 +50473,14 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50571
50473
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
50572
50474
  return;
50573
50475
  }
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;
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;
50575
50477
  if (isUserMessage) {
50576
50478
  flushAssistantMessage();
50577
- const userAuthorType = _optionalChain([msg, 'access', _1321 => _1321.owner, 'optionalAccess', _1322 => _1322.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50479
+ const userAuthorType = _optionalChain([msg, 'access', _1316 => _1316.owner, 'optionalAccess', _1317 => _1317.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50578
50480
  messageDataArray.forEach((data) => {
50579
50481
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
50580
50482
  const rawContext = data.contextItems;
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;
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;
50582
50484
  processedMessages.push({
50583
50485
  id: msg.id,
50584
50486
  role: "user",
@@ -50598,17 +50500,11 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50598
50500
  }
50599
50501
  lastAssistantId = msg.id;
50600
50502
  messageDataArray.forEach((data) => {
50601
- processMessageData(
50602
- data,
50603
- accumulator,
50604
- approvalStatuses,
50605
- { displayApprovalTypes, batchApprovalsEnabled },
50606
- escalatedApprovals
50607
- );
50503
+ processMessageData(data, accumulator, approvalStatuses, { displayApprovalTypes }, escalatedApprovals);
50608
50504
  });
50609
50505
  const nextMsg = messages[index + 1];
50610
50506
  const isLastMessage = index === messages.length - 1;
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);
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);
50612
50508
  if (isLastMessage || nextIsFromUser) {
50613
50509
  flushAssistantMessage();
50614
50510
  }
@@ -50633,65 +50529,6 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50633
50529
  };
50634
50530
  }
50635
50531
 
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
-
50695
50532
  // src/components/chat/hooks/use-nats-chat-adapter.ts
50696
50533
  function nextId(role) {
50697
50534
  return `${role}-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
@@ -50714,110 +50551,6 @@ function updateTrailingAssistant(prev, segments) {
50714
50551
  { ...last, segments }
50715
50552
  ];
50716
50553
  }
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
- }
50821
50554
  function mapProcessedToUnified(processed) {
50822
50555
  const out = [];
50823
50556
  for (const m of processed) {
@@ -50857,7 +50590,6 @@ function useNatsChatAdapter(config, options = {}) {
50857
50590
  fetchChunks,
50858
50591
  topics,
50859
50592
  batchApprovalsEnabled,
50860
- displayApprovalTypes,
50861
50593
  fetchDialogs,
50862
50594
  fetchDialogMessages,
50863
50595
  createDialog: createDialogCallback,
@@ -50877,17 +50609,11 @@ function useNatsChatAdapter(config, options = {}) {
50877
50609
  const isManagedMode = fetchDialogs !== void 0;
50878
50610
  const [internalDialogId, setInternalDialogId] = _react.useState.call(void 0, null);
50879
50611
  const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
50880
- const currentDialogIdRef = _react.useRef.call(void 0, dialogId);
50881
- currentDialogIdRef.current = dialogId;
50882
50612
  const [messages, setMessages] = _react.useState.call(void 0, []);
50883
50613
  const [streamingPhase, setStreamingPhase] = _react.useState.call(void 0, "idle");
50884
50614
  const streamingPhaseRef = _react.useRef.call(void 0, streamingPhase);
50885
50615
  streamingPhaseRef.current = streamingPhase;
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, []);
50616
+ const suppressAgentBusyRef = _react.useRef.call(void 0, false);
50891
50617
  const [approvalStatuses, setApprovalStatuses] = _react.useState.call(void 0, {});
50892
50618
  const [dialogs, setDialogs] = _react.useState.call(void 0, []);
50893
50619
  const [dialogsNextCursor, setDialogsNextCursor] = _react.useState.call(void 0, null);
@@ -50953,39 +50679,17 @@ function useNatsChatAdapter(config, options = {}) {
50953
50679
  return handleRejectRef.current(requestId);
50954
50680
  }, []);
50955
50681
  const callbacksRef = _react.useRef.call(void 0, {
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
- }
50682
+ onSegmentsUpdate: (segments) => {
50965
50683
  setMessages((prev) => updateTrailingAssistant(prev, segments));
50966
50684
  },
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
- },
50685
+ onStreamStart: () => setStreamingPhase("streaming"),
50982
50686
  onStreamEnd: () => setStreamingPhase("idle"),
50983
50687
  // Agent is executing (approved) commands outside an open stream — keep
50984
50688
  // the composer locked exactly like the in-stream phases. An open stream
50985
50689
  // keeps ownership: only 'idle' upgrades to 'thinking'. Suppressed during
50986
50690
  // initial catchup so a replayed dead tail can't lock a finished dialog.
50987
50691
  onAgentBusy: () => {
50988
- if (suppressAgentBusyRef.current > 0) return;
50692
+ if (suppressAgentBusyRef.current) return;
50989
50693
  setStreamingPhase((p) => p === "idle" ? "thinking" : p);
50990
50694
  },
50991
50695
  // Terminal turn failures can arrive without a MESSAGE_END; unlock the
@@ -51000,171 +50704,27 @@ function useNatsChatAdapter(config, options = {}) {
51000
50704
  provider: meta.providerName || null,
51001
50705
  modelLabel: meta.modelDisplayName || meta.modelName || null,
51002
50706
  contextWindowMaxTokens: meta.contextWindow || null
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
- }
50707
+ })
51139
50708
  });
51140
50709
  const { processChunk, reset: resetAccumulator } = useRealtimeChunkProcessor({
51141
50710
  callbacks: {
51142
- onSegmentsUpdate: (segments, meta) => callbacksRef.current.onSegmentsUpdate(segments, meta),
50711
+ onSegmentsUpdate: (segments) => callbacksRef.current.onSegmentsUpdate(segments),
51143
50712
  onStreamStart: () => callbacksRef.current.onStreamStart(),
51144
50713
  onStreamEnd: () => callbacksRef.current.onStreamEnd(),
51145
50714
  onAgentBusy: () => callbacksRef.current.onAgentBusy(),
51146
50715
  onError: () => callbacksRef.current.onError(),
51147
50716
  onTokenUsage: (data) => callbacksRef.current.onTokenUsage(data),
51148
50717
  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),
51154
50718
  onApprove: accumApprove,
51155
50719
  onReject: accumReject
51156
50720
  },
51157
- batchApprovalsEnabled,
51158
- approvalStatuses,
51159
- ...displayApprovalTypes ? { displayApprovalTypes } : {}
50721
+ batchApprovalsEnabled
51160
50722
  });
51161
50723
  const {
51162
50724
  processChunk: catchupProcessChunk,
51163
50725
  catchUpChunks,
51164
50726
  startInitialBuffering,
51165
- resetChunkTracking,
51166
- resetAndCatchUp,
51167
- isBufferingActive
50727
+ resetChunkTracking
51168
50728
  } = useChunkCatchup({
51169
50729
  dialogId: active ? dialogId : null,
51170
50730
  onChunkReceived: (chunk) => processChunk(chunk),
@@ -51193,13 +50753,11 @@ function useNatsChatAdapter(config, options = {}) {
51193
50753
  onApprove: accumApprove,
51194
50754
  onReject: accumReject,
51195
50755
  approvalStatuses,
51196
- batchApprovalsEnabled,
51197
- ...displayApprovalTypes ? { displayApprovalTypes } : {}
50756
+ batchApprovalsEnabled
51198
50757
  }
51199
50758
  );
51200
50759
  const unified = mapProcessedToUnified(rawProcessed);
51201
50760
  if (cursor === void 0) {
51202
- adoptTrailingAssistantRef.current = isBufferingActive() && extractIncompleteMessageState(rawProcessed[rawProcessed.length - 1]) !== void 0;
51203
50761
  setMessages(unified);
51204
50762
  } else {
51205
50763
  setMessages((prev) => [...unified, ...prev]);
@@ -51223,10 +50781,8 @@ function useNatsChatAdapter(config, options = {}) {
51223
50781
  chatTypeFilter,
51224
50782
  approvalStatuses,
51225
50783
  batchApprovalsEnabled,
51226
- displayApprovalTypes,
51227
50784
  accumApprove,
51228
- accumReject,
51229
- isBufferingActive
50785
+ accumReject
51230
50786
  ]
51231
50787
  );
51232
50788
  const prevDialogIdRef = _react.useRef.call(void 0, void 0);
@@ -51235,9 +50791,6 @@ function useNatsChatAdapter(config, options = {}) {
51235
50791
  prevDialogIdRef.current = dialogId;
51236
50792
  historyLoadSeqRef.current += 1;
51237
50793
  resetAccumulator();
51238
- adoptTrailingAssistantRef.current = false;
51239
- seenParticipantSeqsRef.current.clear();
51240
- pendingEchoTextsRef.current = [];
51241
50794
  setMessages([]);
51242
50795
  setMessagesNextCursor(null);
51243
50796
  setDialogTokenUsage(null);
@@ -51249,16 +50802,13 @@ function useNatsChatAdapter(config, options = {}) {
51249
50802
  }, [active, dialogId, loadDialogHistory, resetAccumulator]);
51250
50803
  _react.useEffect.call(void 0, () => {
51251
50804
  if (!active || !dialogId) return;
51252
- suppressAgentBusyRef.current += 1;
50805
+ suppressAgentBusyRef.current = true;
51253
50806
  resetChunkTracking();
51254
50807
  startInitialBuffering();
51255
50808
  catchUpChunks().catch((err) => {
51256
50809
  console.error("[useNatsChatAdapter] initial catchup failed:", err);
51257
50810
  }).finally(() => {
51258
- suppressAgentBusyRef.current = Math.max(0, suppressAgentBusyRef.current - 1);
51259
- if (dialogId === currentDialogIdRef.current) {
51260
- adoptTrailingAssistantRef.current = false;
51261
- }
50811
+ suppressAgentBusyRef.current = false;
51262
50812
  });
51263
50813
  }, [active, dialogId, resetChunkTracking, startInitialBuffering, catchUpChunks]);
51264
50814
  useNatsDialogSubscription({
@@ -51273,30 +50823,6 @@ function useNatsChatAdapter(config, options = {}) {
51273
50823
  onEvent: (payload, messageType) => {
51274
50824
  catchupProcessChunk(payload, messageType);
51275
50825
  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
- })();
51300
50826
  }
51301
50827
  });
51302
50828
  _react.useEffect.call(void 0, () => {
@@ -51347,9 +50873,7 @@ function useNatsChatAdapter(config, options = {}) {
51347
50873
  }, [active, fetchDialogs, loadDialogsPage]);
51348
50874
  const sendMessage = _react.useCallback.call(void 0,
51349
50875
  async (text, sendOptions) => {
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();
50876
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1324 => _1324.hidden]), () => ( false));
51353
50877
  setMessages((prev) => [
51354
50878
  ...prev,
51355
50879
  {
@@ -51513,11 +51037,11 @@ function useNatsChatAdapter(config, options = {}) {
51513
51037
  // Tokens: live `token_usage` frame / dialog snapshot (`dialogTokenUsage`).
51514
51038
  // contextWindow uses the dialog's `contextSize` (the "X / Y" denominator,
51515
51039
  // matching the /mingo page). cacheHitRate/breakdown are SSE-only → 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)),
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)),
51521
51045
  currentCacheHitRatePct: null,
51522
51046
  currentUsageBreakdown: null,
51523
51047
  // Dialog management
@@ -51730,6 +51254,65 @@ function useUnifiedChat(options) {
51730
51254
  );
51731
51255
  }
51732
51256
 
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
+
51733
51316
  // src/components/chat/utils/history-merge.ts
51734
51317
  var SYNTHETIC_REALTIME_ID_PREFIXES = ["assistant-", "user-", "direct-", "system-", "error-"];
51735
51318
  function isSyntheticRealtimeId(id) {
@@ -51774,20 +51357,20 @@ function mergeHistoryWithRealtime(input) {
51774
51357
  const seqCoverageKnown = realtimeSeenStreamSeq > 0 && historyMaxStreamSeq > 0;
51775
51358
  const historyCoversRealtime = seqCoverageKnown ? historyMaxStreamSeq >= realtimeSeenStreamSeq : null;
51776
51359
  const trailing = processedHistory[processedHistory.length - 1];
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;
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;
51779
51362
  let processedToUse = processedHistory;
51780
51363
  const pinnedSyntheticIds = /* @__PURE__ */ new Set();
51781
51364
  const droppedSyntheticIds = /* @__PURE__ */ new Set();
51782
51365
  if (historyBatchId) {
51783
51366
  const batchTwins = existingMessages.filter(
51784
51367
  (m) => m.role === "assistant" && Array.isArray(m.content) && m.content.some(
51785
- (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1366 => _1366.data, 'optionalAccess', _1367 => _1367.approvalRequestId]) === historyBatchId
51368
+ (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1341 => _1341.data, 'optionalAccess', _1342 => _1342.approvalRequestId]) === historyBatchId
51786
51369
  )
51787
51370
  );
51788
51371
  const existingWithSameBatch = _nullishCoalesce(batchTwins.find((m) => m.id === streamingMessageId), () => ( batchTwins[batchTwins.length - 1]));
51789
51372
  if (existingWithSameBatch && Array.isArray(existingWithSameBatch.content)) {
51790
- const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1368 => _1368.content])) ? historyTrailingAssistant.content.length : 0;
51373
+ const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1343 => _1343.content])) ? historyTrailingAssistant.content.length : 0;
51791
51374
  const realtimeSize = existingWithSameBatch.content.length;
51792
51375
  if (existingWithSameBatch.id === streamingMessageId || realtimeSize > histSize) {
51793
51376
  processedToUse = processedHistory.slice(0, -1);
@@ -51803,16 +51386,16 @@ function mergeHistoryWithRealtime(input) {
51803
51386
  if (pinnedSyntheticIds.has(m.id)) return true;
51804
51387
  if (droppedSyntheticIds.has(m.id)) return false;
51805
51388
  if (processedIds.has(m.id)) return false;
51806
- if (_optionalChain([rawHistoryIds, 'optionalAccess', _1369 => _1369.has, 'call', _1370 => _1370(m.id)])) return false;
51389
+ if (_optionalChain([rawHistoryIds, 'optionalAccess', _1344 => _1344.has, 'call', _1345 => _1345(m.id)])) return false;
51807
51390
  if (m.role === "user" && m.id.startsWith("optimistic-") && typeof m.content === "string") {
51808
- const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1371 => _1371.timestamp, 'optionalAccess', _1372 => _1372.getTime, 'call', _1373 => _1373()]), () => ( 0))) <= historyFetchedAt;
51391
+ const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1346 => _1346.timestamp, 'optionalAccess', _1347 => _1347.getTime, 'call', _1348 => _1348()]), () => ( 0))) <= historyFetchedAt;
51809
51392
  return !(canBeInSnapshot && processedToUse.some((pm) => pm.role === "user" && pm.content === m.content));
51810
51393
  }
51811
51394
  if (isSyntheticRealtimeId(m.id) && m.id !== streamingMessageId) {
51812
51395
  if (m.role === "assistant" && trailingAssistantText && assistantAnswerText(m.content) === trailingAssistantText) {
51813
51396
  return false;
51814
51397
  }
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;
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;
51816
51399
  if (covered) return false;
51817
51400
  }
51818
51401
  return true;
@@ -51867,7 +51450,7 @@ function normalizeHistoricalMessageData(md) {
51867
51450
  function isHistoricalUserTurn(m) {
51868
51451
  return !!m.owner;
51869
51452
  }
51870
- var isTextSegment = (d) => _optionalChain([d, 'optionalAccess', _1377 => _1377.type]) === "TEXT" && typeof d.text === "string";
51453
+ var isTextSegment = (d) => _optionalChain([d, 'optionalAccess', _1352 => _1352.type]) === "TEXT" && typeof d.text === "string";
51871
51454
  var THINK_MS = 550;
51872
51455
  var TOKEN_MS = 55;
51873
51456
  var USER_MS = 480;
@@ -52108,7 +51691,7 @@ function useChatDialogManager({
52108
51691
  const handleConfirmRestore = _react.useCallback.call(void 0, async () => {
52109
51692
  if (restoreTarget) {
52110
51693
  try {
52111
- await _optionalChain([unarchiveDialog, 'optionalCall', _1378 => _1378(restoreTarget.id)]);
51694
+ await _optionalChain([unarchiveDialog, 'optionalCall', _1353 => _1353(restoreTarget.id)]);
52112
51695
  } catch (err) {
52113
51696
  console.error("[useChatDialogManager] unarchive failed:", err);
52114
51697
  return;
@@ -52581,7 +52164,7 @@ function EmbeddableChatInner({
52581
52164
  }),
52582
52165
  [commandsUrl]
52583
52166
  );
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;
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;
52585
52168
  const effectiveModes = _react.useMemo.call(void 0, () => {
52586
52169
  if (modes) return modes;
52587
52170
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
@@ -52590,19 +52173,19 @@ function EmbeddableChatInner({
52590
52173
  const mingoCaps = _react.useMemo.call(void 0, () => {
52591
52174
  if (mingoState) {
52592
52175
  return {
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])
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])
52599
52182
  };
52600
52183
  }
52601
52184
  return {
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]),
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]),
52606
52189
  searchQuery: void 0,
52607
52190
  onSearchChange: void 0
52608
52191
  };
@@ -52616,7 +52199,7 @@ function EmbeddableChatInner({
52616
52199
  if (controlledActiveMode === void 0) {
52617
52200
  setUncontrolledActiveMode(next);
52618
52201
  }
52619
- _optionalChain([onActiveModeChange, 'optionalCall', _1400 => _1400(next)]);
52202
+ _optionalChain([onActiveModeChange, 'optionalCall', _1375 => _1375(next)]);
52620
52203
  },
52621
52204
  [controlledActiveMode, onActiveModeChange]
52622
52205
  );
@@ -52638,7 +52221,7 @@ function EmbeddableChatInner({
52638
52221
  const effectiveQuickActions = emptyStateUrl ? emptyStateConfig.quickActions : [];
52639
52222
  const effectiveAssistantName = emptyStateConfig.name;
52640
52223
  const effectiveAssistantIcon = emptyStateConfig.icon;
52641
- const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1401 => _1401.title]) === "string" ? guideWelcome.title : null)));
52224
+ const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1376 => _1376.title]) === "string" ? guideWelcome.title : null)));
52642
52225
  const {
52643
52226
  messages: rawMessages,
52644
52227
  isLoading: chatLoading,
@@ -52678,7 +52261,7 @@ function EmbeddableChatInner({
52678
52261
  if (activeMode !== "guide" || guidePromptSentRef.current) return;
52679
52262
  guidePromptSentRef.current = true;
52680
52263
  void sendMessage(guidePendingPrompt);
52681
- _optionalChain([onGuidePromptConsumed, 'optionalCall', _1402 => _1402()]);
52264
+ _optionalChain([onGuidePromptConsumed, 'optionalCall', _1377 => _1377()]);
52682
52265
  }, [guidePendingPrompt, activeMode, sendMessage, onGuidePromptConsumed]);
52683
52266
  const {
52684
52267
  attachments: stagedAttachments,
@@ -52689,7 +52272,7 @@ function EmbeddableChatInner({
52689
52272
  clear: clearAttachments
52690
52273
  } = useChatAttachments();
52691
52274
  const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
52692
- const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1403 => _1403.maxItems]), () => ( 10));
52275
+ const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1378 => _1378.maxItems]), () => ( 10));
52693
52276
  const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
52694
52277
  const [contextItems, setContextItems] = _react.useState.call(void 0, []);
52695
52278
  const [contextPickerOpen, setContextPickerOpen] = _react.useState.call(void 0, false);
@@ -52706,10 +52289,10 @@ function EmbeddableChatInner({
52706
52289
  }, [activeDialogId, activeMode]);
52707
52290
  const mentionMarkerByType = _react.useMemo.call(void 0, () => {
52708
52291
  const m = /* @__PURE__ */ new Map();
52709
- for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1404 => _1404.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
52292
+ for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1379 => _1379.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
52710
52293
  return m;
52711
- }, [_optionalChain([contextPicker, 'optionalAccess', _1405 => _1405.entityTypes])]);
52712
- const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1406 => _1406.entityTypes]);
52294
+ }, [_optionalChain([contextPicker, 'optionalAccess', _1380 => _1380.entityTypes])]);
52295
+ const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1381 => _1381.entityTypes]);
52713
52296
  const resolveContextIcon = _react.useMemo.call(void 0, () => {
52714
52297
  const byType = /* @__PURE__ */ new Map();
52715
52298
  for (const t of _nullishCoalesce(contextEntityTypes, () => ( []))) byType.set(t.type, t.icon);
@@ -52721,7 +52304,7 @@ function EmbeddableChatInner({
52721
52304
  if (mentionActiveRef.current) {
52722
52305
  if (contextItems.some((p) => `${p.type}:${p.id}` === key)) return;
52723
52306
  if (contextItems.length >= contextMaxItems) return;
52724
- _optionalChain([chatInputRef, 'access', _1407 => _1407.current, 'optionalAccess', _1408 => _1408.commitMention, 'call', _1409 => _1409(mentionTokenOf(key, mentionMarkerByType), {
52307
+ _optionalChain([chatInputRef, 'access', _1382 => _1382.current, 'optionalAccess', _1383 => _1383.commitMention, 'call', _1384 => _1384(mentionTokenOf(key, mentionMarkerByType), {
52725
52308
  label: item.label,
52726
52309
  icon: resolveContextIcon(item)
52727
52310
  })]);
@@ -52743,9 +52326,9 @@ function EmbeddableChatInner({
52743
52326
  setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
52744
52327
  if (mentionKeysRef.current.has(key)) {
52745
52328
  mentionKeysRef.current.delete(key);
52746
- const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1410 => _1410.current, 'optionalAccess', _1411 => _1411.getValue, 'call', _1412 => _1412()]), () => ( ""));
52329
+ const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1385 => _1385.current, 'optionalAccess', _1386 => _1386.getValue, 'call', _1387 => _1387()]), () => ( ""));
52747
52330
  const next = cur.replace(`@${mentionTokenOf(key, mentionMarkerByType)}`, "").replace(/\s{2,}/g, " ").trimStart();
52748
- _optionalChain([chatInputRef, 'access', _1413 => _1413.current, 'optionalAccess', _1414 => _1414.setValue, 'call', _1415 => _1415(next)]);
52331
+ _optionalChain([chatInputRef, 'access', _1388 => _1388.current, 'optionalAccess', _1389 => _1389.setValue, 'call', _1390 => _1390(next)]);
52749
52332
  }
52750
52333
  }, [mentionMarkerByType]);
52751
52334
  const handleContextValueChange = _react.useCallback.call(void 0, (value) => {
@@ -52762,7 +52345,7 @@ function EmbeddableChatInner({
52762
52345
  }, []);
52763
52346
  const closeContextPicker = _react.useCallback.call(void 0, () => {
52764
52347
  if (mentionActiveRef.current) {
52765
- _optionalChain([chatInputRef, 'access', _1416 => _1416.current, 'optionalAccess', _1417 => _1417.removeMentionTrigger, 'call', _1418 => _1418()]);
52348
+ _optionalChain([chatInputRef, 'access', _1391 => _1391.current, 'optionalAccess', _1392 => _1392.removeMentionTrigger, 'call', _1393 => _1393()]);
52766
52349
  }
52767
52350
  setContextPickerOpen(false);
52768
52351
  setMentionQuery(null);
@@ -52796,8 +52379,8 @@ function EmbeddableChatInner({
52796
52379
  [effectiveAssistantIcon]
52797
52380
  );
52798
52381
  const timestampCacheRef = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
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;
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;
52801
52384
  const messages = _react.useMemo.call(void 0, () => {
52802
52385
  const cache = timestampCacheRef.current;
52803
52386
  const seenIds = /* @__PURE__ */ new Set();
@@ -52977,9 +52560,9 @@ function EmbeddableChatInner({
52977
52560
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
52978
52561
  const lastSources = _react.useMemo.call(void 0, () => {
52979
52562
  if (chatLoading) return void 0;
52980
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1427 => _1427.sources]);
52563
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1402 => _1402.sources]);
52981
52564
  if (!sources || sources.length === 0) return void 0;
52982
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1428 => _1428.content]) || "";
52565
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1403 => _1403.content]) || "";
52983
52566
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
52984
52567
  (m) => parseInt(m[1], 10)
52985
52568
  );
@@ -52998,7 +52581,7 @@ function EmbeddableChatInner({
52998
52581
  const el = panelMeasureRef.current;
52999
52582
  if (!el || typeof ResizeObserver === "undefined") return;
53000
52583
  const ro = new ResizeObserver((entries) => {
53001
- const w = _optionalChain([entries, 'access', _1429 => _1429[0], 'optionalAccess', _1430 => _1430.contentRect, 'optionalAccess', _1431 => _1431.width]);
52584
+ const w = _optionalChain([entries, 'access', _1404 => _1404[0], 'optionalAccess', _1405 => _1405.contentRect, 'optionalAccess', _1406 => _1406.width]);
53002
52585
  if (typeof w === "number") setPanelWidth(w);
53003
52586
  });
53004
52587
  ro.observe(el);
@@ -53037,7 +52620,7 @@ function EmbeddableChatInner({
53037
52620
  const isMingoMode = activeMode === "mingo";
53038
52621
  const stackedListView = isMingoMode && !hasConversation && !archiveOpen && !wideMingo && !composeOpen;
53039
52622
  const headerShowBack = hasConversation || guideCanReturnToMingo;
53040
- const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1432 => _1432.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats";
52623
+ const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1407 => _1407.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats";
53041
52624
  const headerBackAriaLabel = hasConversation ? isViewingArchived ? "Back to archive" : "Back" : "Back to Mingo";
53042
52625
  const headerOnBack = hasConversation ? handleBack : () => handleActiveModeChange("mingo");
53043
52626
  const headerOnRestore = isViewingArchived && unarchiveDialog && activeDialog ? () => setRestoreTarget(activeDialog) : void 0;
@@ -53376,9 +52959,9 @@ function EmbeddableChatInner({
53376
52959
  subtitle: _nullishCoalesce(effectiveGreeting, () => ( void 0)),
53377
52960
  subtitleLoading: emptyStateLoading,
53378
52961
  ...guideWelcome,
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)),
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)),
53382
52965
  onQuickAction: (action) => {
53383
52966
  setQuickActionPreview(null);
53384
52967
  handleSend(_nullishCoalesce(action.prompt, () => ( action.label)));
@@ -54534,8 +54117,5 @@ function EmbeddableChatInner({
54534
54117
 
54535
54118
 
54536
54119
 
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
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