@flamingo-stack/openframe-frontend-core 0.0.420 → 0.0.421-snapshot.20260713170448

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 (113) hide show
  1. package/dist/{chunk-WBLTGO7G.cjs → chunk-2JNFQEVX.cjs} +26 -26
  2. package/dist/{chunk-WBLTGO7G.cjs.map → chunk-2JNFQEVX.cjs.map} +1 -1
  3. package/dist/{chunk-T55A3BQD.js → chunk-3BGWK5QI.js} +4 -4
  4. package/dist/{chunk-ZZFLE5LG.js → chunk-4BWQYGIY.js} +2 -2
  5. package/dist/{chunk-KEWTMPHB.js → chunk-4TMMYZTY.js} +2 -2
  6. package/dist/{chunk-U7EUN5FZ.js → chunk-6F5OKJTW.js} +4 -4
  7. package/dist/{chunk-KLMLQ35Y.cjs → chunk-A2IRUIUJ.cjs} +37 -37
  8. package/dist/{chunk-KLMLQ35Y.cjs.map → chunk-A2IRUIUJ.cjs.map} +1 -1
  9. package/dist/{chunk-KPLRIPEH.cjs → chunk-B62DI2SC.cjs} +15 -15
  10. package/dist/{chunk-KPLRIPEH.cjs.map → chunk-B62DI2SC.cjs.map} +1 -1
  11. package/dist/{chunk-PUXTMLKC.cjs → chunk-BF5BXKM7.cjs} +62 -62
  12. package/dist/{chunk-PUXTMLKC.cjs.map → chunk-BF5BXKM7.cjs.map} +1 -1
  13. package/dist/{chunk-PAF4EFRR.js → chunk-DUHM44CQ.js} +2 -2
  14. package/dist/{chunk-YYF2AYM3.js → chunk-HFK33T6A.js} +4 -4
  15. package/dist/{chunk-J7WFE7WL.js → chunk-JSL3VXGJ.js} +2 -2
  16. package/dist/{chunk-BXXXBZYY.cjs → chunk-KUDLV25M.cjs} +190 -154
  17. package/dist/chunk-KUDLV25M.cjs.map +1 -0
  18. package/dist/{chunk-OBMYKFBO.js → chunk-LHM2VUTO.js} +2 -2
  19. package/dist/{chunk-AMUTZJZX.cjs → chunk-LWC2U5OC.cjs} +9 -9
  20. package/dist/{chunk-AMUTZJZX.cjs.map → chunk-LWC2U5OC.cjs.map} +1 -1
  21. package/dist/{chunk-2AN4EHN6.cjs → chunk-O3FSSWV4.cjs} +7 -7
  22. package/dist/{chunk-2AN4EHN6.cjs.map → chunk-O3FSSWV4.cjs.map} +1 -1
  23. package/dist/{chunk-PHJ6335O.cjs → chunk-PO4PXWZN.cjs} +5 -5
  24. package/dist/{chunk-PHJ6335O.cjs.map → chunk-PO4PXWZN.cjs.map} +1 -1
  25. package/dist/{chunk-ORDDVXDS.cjs → chunk-RGKGRS2T.cjs} +59 -59
  26. package/dist/{chunk-ORDDVXDS.cjs.map → chunk-RGKGRS2T.cjs.map} +1 -1
  27. package/dist/{chunk-5DTE27A4.cjs → chunk-ULUH2X53.cjs} +11 -11
  28. package/dist/{chunk-5DTE27A4.cjs.map → chunk-ULUH2X53.cjs.map} +1 -1
  29. package/dist/{chunk-NIS5VXZJ.cjs → chunk-WAQH35VG.cjs} +26 -26
  30. package/dist/{chunk-NIS5VXZJ.cjs.map → chunk-WAQH35VG.cjs.map} +1 -1
  31. package/dist/{chunk-G4W5D7L4.js → chunk-WQEEGFDM.js} +2 -2
  32. package/dist/{chunk-GC4355MW.js → chunk-XFYQV2K2.js} +2 -2
  33. package/dist/{chunk-3AJOKFJ4.js → chunk-YJDVAT7J.js} +66 -30
  34. package/dist/chunk-YJDVAT7J.js.map +1 -0
  35. package/dist/{chunk-4OZLRBOH.js → chunk-YUMFRC3D.js} +4 -4
  36. package/dist/{chunk-NDYJ37LY.cjs → chunk-YZQNKMFQ.cjs} +31 -31
  37. package/dist/{chunk-NDYJ37LY.cjs.map → chunk-YZQNKMFQ.cjs.map} +1 -1
  38. package/dist/components/case-studies/index.cjs +8 -8
  39. package/dist/components/case-studies/index.js +2 -2
  40. package/dist/components/chat/chat-input.d.ts.map +1 -1
  41. package/dist/components/chat/embeddable-chat.d.ts +9 -0
  42. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  43. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  44. package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -1
  45. package/dist/components/chat/index.cjs +2 -2
  46. package/dist/components/chat/index.js +1 -1
  47. package/dist/components/chat/types/api.types.d.ts +10 -0
  48. package/dist/components/chat/types/api.types.d.ts.map +1 -1
  49. package/dist/components/contact/index.cjs +3 -3
  50. package/dist/components/contact/index.js +2 -2
  51. package/dist/components/docs/index.cjs +5 -5
  52. package/dist/components/docs/index.js +4 -4
  53. package/dist/components/embeds/index.cjs +3 -3
  54. package/dist/components/embeds/index.js +2 -2
  55. package/dist/components/faq/index.cjs +3 -3
  56. package/dist/components/faq/index.js +2 -2
  57. package/dist/components/features/index.cjs +2 -2
  58. package/dist/components/features/index.js +1 -1
  59. package/dist/components/help-center-pages/index.cjs +20 -20
  60. package/dist/components/help-center-pages/index.js +11 -11
  61. package/dist/components/index.cjs +128 -128
  62. package/dist/components/index.js +9 -9
  63. package/dist/components/navigation/index.cjs +2 -2
  64. package/dist/components/navigation/index.js +1 -1
  65. package/dist/components/onboarding-guides/index.cjs +5 -5
  66. package/dist/components/onboarding-guides/index.js +4 -4
  67. package/dist/components/related-content/index.cjs +3 -3
  68. package/dist/components/related-content/index.js +2 -2
  69. package/dist/components/tabs.d.ts +10 -0
  70. package/dist/components/tabs.d.ts.map +1 -1
  71. package/dist/components/tickets/index.cjs +5 -5
  72. package/dist/components/tickets/index.js +4 -4
  73. package/dist/components/ui/dashboard-info-card.d.ts +26 -12
  74. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  75. package/dist/components/ui/index.cjs +2 -2
  76. package/dist/components/ui/index.js +1 -1
  77. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  78. package/dist/components/ui/tabs.d.ts +11 -0
  79. package/dist/components/ui/tabs.d.ts.map +1 -1
  80. package/dist/index.cjs +2 -2
  81. package/dist/index.js +1 -1
  82. package/package.json +1 -1
  83. package/src/components/chat/chat-input.tsx +5 -1
  84. package/src/components/chat/embeddable-chat.tsx +17 -3
  85. package/src/components/chat/hooks/use-nats-chat-adapter.ts +52 -3
  86. package/src/components/chat/hooks/use-realtime-chunk-processor.ts +25 -3
  87. package/src/components/chat/types/api.types.ts +10 -0
  88. package/src/components/tabs.tsx +10 -0
  89. package/src/components/ui/dashboard-info-card.tsx +70 -45
  90. package/src/components/ui/tab-navigation.tsx +5 -2
  91. package/src/components/ui/tabs.tsx +11 -0
  92. package/src/stories/ApprovalRequestMessageClient.stories.tsx +89 -0
  93. package/src/stories/ChatMessageEnhanced.stories.tsx +219 -0
  94. package/src/stories/ChatTypingIndicator.stories.tsx +51 -0
  95. package/src/stories/ContextCompactionDisplay.stories.tsx +44 -0
  96. package/src/stories/DashboardInfoCard.stories.tsx +94 -9
  97. package/src/stories/EmbeddableChat.stories.tsx +159 -0
  98. package/src/stories/ErrorMessageDisplay.stories.tsx +66 -0
  99. package/src/stories/ThinkingDisplay.stories.tsx +63 -0
  100. package/src/stories/TicketCard.stories.tsx +245 -0
  101. package/dist/chunk-3AJOKFJ4.js.map +0 -1
  102. package/dist/chunk-BXXXBZYY.cjs.map +0 -1
  103. /package/dist/{chunk-T55A3BQD.js.map → chunk-3BGWK5QI.js.map} +0 -0
  104. /package/dist/{chunk-ZZFLE5LG.js.map → chunk-4BWQYGIY.js.map} +0 -0
  105. /package/dist/{chunk-KEWTMPHB.js.map → chunk-4TMMYZTY.js.map} +0 -0
  106. /package/dist/{chunk-U7EUN5FZ.js.map → chunk-6F5OKJTW.js.map} +0 -0
  107. /package/dist/{chunk-PAF4EFRR.js.map → chunk-DUHM44CQ.js.map} +0 -0
  108. /package/dist/{chunk-YYF2AYM3.js.map → chunk-HFK33T6A.js.map} +0 -0
  109. /package/dist/{chunk-J7WFE7WL.js.map → chunk-JSL3VXGJ.js.map} +0 -0
  110. /package/dist/{chunk-OBMYKFBO.js.map → chunk-LHM2VUTO.js.map} +0 -0
  111. /package/dist/{chunk-G4W5D7L4.js.map → chunk-WQEEGFDM.js.map} +0 -0
  112. /package/dist/{chunk-GC4355MW.js.map → chunk-XFYQV2K2.js.map} +0 -0
  113. /package/dist/{chunk-4OZLRBOH.js.map → chunk-YUMFRC3D.js.map} +0 -0
@@ -4657,7 +4657,11 @@ var ChatInput = _react.forwardRef.call(void 0, (allProps, ref) => {
4657
4657
  disabled: isStopMode ? isStopping : sendDisabled,
4658
4658
  className: _chunkFIG2RKZFcjs.cn.call(void 0,
4659
4659
  "flex h-6 shrink-0 items-center text-ods-text-secondary transition-colors duration-200",
4660
- focused && "text-ods-accent",
4660
+ // Focus accent applies to the SEND icon only. Stop stays neutral
4661
+ // regardless of where focus sits — otherwise it reads yellow after
4662
+ // an Enter-send (editor keeps focus) but gray after an approve
4663
+ // click (focus moved to the card button).
4664
+ focused && !isStopMode && "text-ods-accent",
4661
4665
  "[&_svg]:size-4 md:[&_svg]:size-6",
4662
4666
  "cursor-pointer hover:text-ods-text-primary",
4663
4667
  "focus-visible:outline-none focus-visible:text-ods-accent",
@@ -18259,7 +18263,10 @@ function TabNavigation({
18259
18263
  "flex gap-[var(--spacing-system-xxs)] items-center justify-center p-[var(--spacing-system-m)] relative shrink-0 cursor-pointer",
18260
18264
  "transition-all duration-200 bg-transparent border-none outline-none",
18261
18265
  stretchTabs && "flex-1",
18262
- isActive ? "bg-gradient-to-b from-[rgba(255,255,255,0)] to-[rgba(255,255,255,0.1)]" : "hover:bg-gradient-to-b hover:from-[rgba(255,255,255,0)] hover:to-[rgba(255,255,255,0.1)]"
18266
+ // Known limitation: ODS color vars hold hex values, so Tailwind
18267
+ // alpha modifiers (to-ods-accent/10) silently produce no CSS.
18268
+ // color-mix() accepts hex, so we derive the 10%-alpha stop from the token.
18269
+ isActive ? "bg-gradient-to-b from-transparent to-[color-mix(in_srgb,var(--color-accent-primary)_10%,transparent)]" : "hover:bg-gradient-to-b hover:from-transparent hover:to-[color-mix(in_srgb,var(--color-accent-primary)_10%,transparent)]"
18263
18270
  ),
18264
18271
  children: [
18265
18272
  tab.icon ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex items-center justify-center", children: [
@@ -24638,6 +24645,8 @@ function FloatingTooltip({
24638
24645
  function DashboardInfoCard({
24639
24646
  title,
24640
24647
  titleSlot,
24648
+ titleTag,
24649
+ icon,
24641
24650
  value,
24642
24651
  percentage,
24643
24652
  showProgress = false,
@@ -24667,33 +24676,23 @@ function DashboardInfoCard({
24667
24676
  };
24668
24677
  const renderProgress = () => {
24669
24678
  if (!showProgress || percentage === void 0) return null;
24670
- const strokeFor = (size2) => Math.max(2, Math.round(size2 * 10 / 56));
24679
+ const strokeFor = (size3) => Math.max(2, Math.round(size3 * 10 / 56));
24671
24680
  const common = {
24672
24681
  percentage,
24673
24682
  variant: progressVariant,
24674
24683
  overflow: progressOverflow,
24675
24684
  showLabel: false
24676
24685
  };
24677
- if (progressSize === void 0) {
24678
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CircularProgress, { ...common });
24679
- }
24680
- if (typeof progressSize === "number") {
24681
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CircularProgress, { ...common, size: progressSize, strokeWidth: strokeFor(progressSize) });
24686
+ const size2 = typeof progressSize === "number" ? { base: 24, md: progressSize } : _nullishCoalesce(progressSize, () => ( { base: 24, md: 56 }));
24687
+ const { base, md, lg } = size2;
24688
+ const rings = [
24689
+ { key: "base", size: base, className: md !== void 0 ? "md:hidden" : lg !== void 0 ? "lg:hidden" : "" }
24690
+ ];
24691
+ if (md !== void 0) {
24692
+ rings.push({ key: "md", size: md, className: lg !== void 0 ? "hidden md:block lg:hidden" : "hidden md:block" });
24682
24693
  }
24683
- const { base, md, lg } = progressSize;
24684
- const rings = [];
24685
- if (md !== void 0 && lg !== void 0) {
24686
- rings.push({ key: "base", size: base, className: "md:hidden" });
24687
- rings.push({ key: "md", size: md, className: "hidden md:block lg:hidden" });
24694
+ if (lg !== void 0) {
24688
24695
  rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
24689
- } else if (md !== void 0) {
24690
- rings.push({ key: "base", size: base, className: "md:hidden" });
24691
- rings.push({ key: "md", size: md, className: "hidden md:block" });
24692
- } else if (lg !== void 0) {
24693
- rings.push({ key: "base", size: base, className: "lg:hidden" });
24694
- rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
24695
- } else {
24696
- rings.push({ key: "base", size: base, className: "" });
24697
24696
  }
24698
24697
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: rings.map((ring) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24699
24698
  CircularProgress,
@@ -24707,10 +24706,14 @@ function DashboardInfoCard({
24707
24706
  )) });
24708
24707
  };
24709
24708
  const cardContent = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
24710
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col", children: [
24711
- _nullishCoalesce(titleSlot, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 text-ods-text-secondary", children: title }))),
24709
+ icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 size-8 md:size-14 p-[var(--spacing-system-xxs)] bg-ods-bg border border-ods-border rounded-sm flex items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "size-4 md:size-6 flex items-center justify-center [&>*]:size-full", children: icon }) }),
24710
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
24711
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xxs)]", children: [
24712
+ _nullishCoalesce(titleSlot, () => ( (title !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 text-ods-text-secondary truncate", children: title })))),
24713
+ titleTag
24714
+ ] }),
24712
24715
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
24713
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "text-h2 text-ods-text-primary", valueClassName), children: formattedValue }),
24716
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "text-h3 md:text-h2 text-ods-text-primary truncate", valueClassName), children: formattedValue }),
24714
24717
  subValue && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: subValue }),
24715
24718
  renderPercentage(),
24716
24719
  tooltip && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FloatingTooltip, { content: tooltip, side: "top", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "cursor-help text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGD345ZVcjs.QuestionCircleIcon, { size: 20 }) }) })
@@ -24718,7 +24721,7 @@ function DashboardInfoCard({
24718
24721
  ] }),
24719
24722
  renderProgress()
24720
24723
  ] });
24721
- const baseClassName = "bg-ods-card border border-ods-border rounded-sm p-[var(--spacing-system-m)] flex gap-[var(--spacing-system-s)] items-center transition-all";
24724
+ const baseClassName = "bg-ods-card border border-ods-border rounded-md p-[var(--spacing-system-xsf)] md:p-[var(--spacing-system-m)] h-16 md:h-[104px] flex gap-[var(--spacing-system-s)] md:gap-[var(--spacing-system-m)] items-center transition-all";
24722
24725
  if (href) {
24723
24726
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24724
24727
  _chunkWBR7H6E3cjs.next_link_default,
@@ -48166,6 +48169,7 @@ function useRealtimeChunkProcessor(options) {
48166
48169
  const hasEverStreamedRef = _react.useRef.call(void 0, false);
48167
48170
  const directModeFlagRef = _react.useRef.call(void 0, isDirectMode);
48168
48171
  const sawDirectMessageRef = _react.useRef.call(void 0, false);
48172
+ const directTeardownFiredRef = _react.useRef.call(void 0, false);
48169
48173
  _react.useEffect.call(void 0, () => {
48170
48174
  directModeFlagRef.current = isDirectMode;
48171
48175
  }, [isDirectMode]);
@@ -48179,8 +48183,9 @@ function useRealtimeChunkProcessor(options) {
48179
48183
  const emitSegments = (s, meta) => _optionalChain([callbacks, 'access', _1163 => _1163.onSegmentsUpdate, 'optionalCall', _1164 => _1164(s, streamSeq != null ? { ...meta, streamSeq } : meta)]);
48180
48184
  if (action.action === "direct_message") sawDirectMessageRef.current = true;
48181
48185
  if ((directModeFlagRef.current || sawDirectMessageRef.current) && !DIRECT_MODE_ALLOWED.has(action.action)) {
48182
- if (isInStreamRef.current) {
48186
+ if (isInStreamRef.current || !directTeardownFiredRef.current) {
48183
48187
  isInStreamRef.current = false;
48188
+ directTeardownFiredRef.current = true;
48184
48189
  _optionalChain([callbacks, 'access', _1165 => _1165.onStreamEnd, 'optionalCall', _1166 => _1166()]);
48185
48190
  accumulator.resetSegments();
48186
48191
  }
@@ -48220,6 +48225,9 @@ function useRealtimeChunkProcessor(options) {
48220
48225
  break;
48221
48226
  }
48222
48227
  case "tool_execution": {
48228
+ if (action.segment.data.type === "EXECUTING_TOOL") {
48229
+ _optionalChain([callbacks, 'access', _1173 => _1173.onAgentBusy, 'optionalCall', _1174 => _1174()]);
48230
+ }
48223
48231
  if (!isInStreamRef.current && callbacks.onToolExecuted) {
48224
48232
  callbacks.onToolExecuted(action.segment);
48225
48233
  break;
@@ -48242,7 +48250,7 @@ function useRealtimeChunkProcessor(options) {
48242
48250
  emitSegments(segments);
48243
48251
  } else {
48244
48252
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
48245
- _optionalChain([callbacks, 'access', _1173 => _1173.onEscalatedApproval, 'optionalCall', _1174 => _1174(requestId, { command, explanation, approvalType })]);
48253
+ _optionalChain([callbacks, 'access', _1175 => _1175.onEscalatedApproval, 'optionalCall', _1176 => _1176(requestId, { command, explanation, approvalType })]);
48246
48254
  }
48247
48255
  break;
48248
48256
  }
@@ -48254,13 +48262,13 @@ function useRealtimeChunkProcessor(options) {
48254
48262
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
48255
48263
  pendingEscalatedRef.current.set(requestId, {
48256
48264
  command: summary,
48257
- explanation: _optionalChain([required, 'optionalAccess', _1175 => _1175.toolExplanation]),
48265
+ explanation: _optionalChain([required, 'optionalAccess', _1177 => _1177.toolExplanation]),
48258
48266
  approvalType,
48259
48267
  toolCalls
48260
48268
  });
48261
- _optionalChain([callbacks, 'access', _1176 => _1176.onEscalatedApproval, 'optionalCall', _1177 => _1177(requestId, {
48269
+ _optionalChain([callbacks, 'access', _1178 => _1178.onEscalatedApproval, 'optionalCall', _1179 => _1179(requestId, {
48262
48270
  command: summary,
48263
- explanation: _optionalChain([required, 'optionalAccess', _1178 => _1178.toolExplanation]),
48271
+ explanation: _optionalChain([required, 'optionalAccess', _1180 => _1180.toolExplanation]),
48264
48272
  approvalType
48265
48273
  })]);
48266
48274
  break;
@@ -48286,11 +48294,12 @@ function useRealtimeChunkProcessor(options) {
48286
48294
  }
48287
48295
  case "approval_result": {
48288
48296
  const { requestId, approved, approvalType, resolvedByName } = action;
48297
+ if (approved) _optionalChain([callbacks, 'access', _1181 => _1181.onAgentBusy, 'optionalCall', _1182 => _1182()]);
48289
48298
  const escalatedData = pendingEscalatedRef.current.get(requestId);
48290
48299
  const status = approved ? "approved" : "rejected";
48291
48300
  if (escalatedData) {
48292
48301
  pendingEscalatedRef.current.delete(requestId);
48293
- _optionalChain([callbacks, 'access', _1179 => _1179.onEscalatedApprovalResult, 'optionalCall', _1180 => _1180(requestId, approved, {
48302
+ _optionalChain([callbacks, 'access', _1183 => _1183.onEscalatedApprovalResult, 'optionalCall', _1184 => _1184(requestId, approved, {
48294
48303
  command: escalatedData.command,
48295
48304
  explanation: escalatedData.explanation,
48296
48305
  approvalType: escalatedData.approvalType
@@ -48336,29 +48345,29 @@ function useRealtimeChunkProcessor(options) {
48336
48345
  emitSegments(accumulator.getSegments());
48337
48346
  }
48338
48347
  }
48339
- _optionalChain([callbacks, 'access', _1181 => _1181.onApprovalResolved, 'optionalCall', _1182 => _1182(requestId, status, approvalType, resolvedByName)]);
48348
+ _optionalChain([callbacks, 'access', _1185 => _1185.onApprovalResolved, 'optionalCall', _1186 => _1186(requestId, status, approvalType, resolvedByName)]);
48340
48349
  break;
48341
48350
  }
48342
48351
  case "error": {
48343
48352
  let message2;
48344
- if ("details" in action && _optionalChain([action, 'optionalAccess', _1183 => _1183.details])) {
48353
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _1187 => _1187.details])) {
48345
48354
  try {
48346
- message2 = _optionalChain([JSON, 'access', _1184 => _1184.parse, 'call', _1185 => _1185(action.details), 'optionalAccess', _1186 => _1186.error, 'optionalAccess', _1187 => _1187.message]);
48355
+ message2 = _optionalChain([JSON, 'access', _1188 => _1188.parse, 'call', _1189 => _1189(action.details), 'optionalAccess', _1190 => _1190.error, 'optionalAccess', _1191 => _1191.message]);
48347
48356
  } catch (e60) {
48348
48357
  message2 = action.details;
48349
48358
  }
48350
48359
  }
48351
48360
  const segments = accumulator.addError(action.error, message2);
48352
48361
  emitSegments(segments);
48353
- _optionalChain([callbacks, 'access', _1188 => _1188.onError, 'optionalCall', _1189 => _1189(action.error, message2)]);
48362
+ _optionalChain([callbacks, 'access', _1192 => _1192.onError, 'optionalCall', _1193 => _1193(action.error, message2)]);
48354
48363
  break;
48355
48364
  }
48356
48365
  case "system": {
48357
- _optionalChain([callbacks, 'access', _1190 => _1190.onSystemMessage, 'optionalCall', _1191 => _1191(action.text, { streamSeq })]);
48366
+ _optionalChain([callbacks, 'access', _1194 => _1194.onSystemMessage, 'optionalCall', _1195 => _1195(action.text, { streamSeq })]);
48358
48367
  break;
48359
48368
  }
48360
48369
  case "direct_message": {
48361
- _optionalChain([callbacks, 'access', _1192 => _1192.onDirectMessage, 'optionalCall', _1193 => _1193(action.text, {
48370
+ _optionalChain([callbacks, 'access', _1196 => _1196.onDirectMessage, 'optionalCall', _1197 => _1197(action.text, {
48362
48371
  ownerType: action.ownerType,
48363
48372
  displayName: action.displayName,
48364
48373
  userId: action.userId,
@@ -48367,7 +48376,7 @@ function useRealtimeChunkProcessor(options) {
48367
48376
  break;
48368
48377
  }
48369
48378
  case "message_request":
48370
- _optionalChain([callbacks, 'access', _1194 => _1194.onUserMessage, 'optionalCall', _1195 => _1195(action.text, {
48379
+ _optionalChain([callbacks, 'access', _1198 => _1198.onUserMessage, 'optionalCall', _1199 => _1199(action.text, {
48371
48380
  ownerType: action.ownerType,
48372
48381
  displayName: action.displayName,
48373
48382
  userId: action.userId,
@@ -48376,7 +48385,7 @@ function useRealtimeChunkProcessor(options) {
48376
48385
  })]);
48377
48386
  break;
48378
48387
  case "token_usage":
48379
- _optionalChain([callbacks, 'access', _1196 => _1196.onTokenUsage, 'optionalCall', _1197 => _1197(action.data)]);
48388
+ _optionalChain([callbacks, 'access', _1200 => _1200.onTokenUsage, 'optionalCall', _1201 => _1201(action.data)]);
48380
48389
  break;
48381
48390
  case "context_compaction_start": {
48382
48391
  const standalone = !isInStreamRef.current;
@@ -48391,7 +48400,7 @@ function useRealtimeChunkProcessor(options) {
48391
48400
  break;
48392
48401
  }
48393
48402
  case "dialog_closed":
48394
- _optionalChain([callbacks, 'access', _1198 => _1198.onDialogClosed, 'optionalCall', _1199 => _1199()]);
48403
+ _optionalChain([callbacks, 'access', _1202 => _1202.onDialogClosed, 'optionalCall', _1203 => _1203()]);
48395
48404
  break;
48396
48405
  default:
48397
48406
  break;
@@ -48407,6 +48416,7 @@ function useRealtimeChunkProcessor(options) {
48407
48416
  pendingEscalatedRef.current.clear();
48408
48417
  hasInitializedWithData.current = false;
48409
48418
  sawDirectMessageRef.current = false;
48419
+ directTeardownFiredRef.current = false;
48410
48420
  }, []);
48411
48421
  const updateApprovalStatus = _react.useCallback.call(void 0,
48412
48422
  (requestId, status, resolvedByName) => {
@@ -48438,7 +48448,7 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
48438
48448
  const data = await res.json();
48439
48449
  return _nullishCoalesce(data.commands, () => ( []));
48440
48450
  } catch (err) {
48441
- if (_optionalChain([err, 'optionalAccess', _1200 => _1200.name]) === "AbortError") throw err;
48451
+ if (_optionalChain([err, 'optionalAccess', _1204 => _1204.name]) === "AbortError") throw err;
48442
48452
  console.warn("[chat] slash-commands fetch failed, showing none:", err);
48443
48453
  return [];
48444
48454
  }
@@ -48459,7 +48469,7 @@ function useSlashCommands(prefix, commandsUrl) {
48459
48469
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
48460
48470
  if (!cancelled) setCommands(next);
48461
48471
  } catch (err) {
48462
- if (!cancelled && _optionalChain([err, 'optionalAccess', _1201 => _1201.name]) !== "AbortError") {
48472
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _1205 => _1205.name]) !== "AbortError") {
48463
48473
  console.warn("[use-slash-commands] fetch failed:", err);
48464
48474
  }
48465
48475
  } finally {
@@ -48478,7 +48488,7 @@ function useSlashCommandRegistry(commandsUrl, options) {
48478
48488
  const query = _reactquery.useQuery.call(void 0, {
48479
48489
  queryKey: ["chat-slash-commands", commandsUrl],
48480
48490
  queryFn: ({ signal }) => fetchSlashCommands("", signal, commandsUrl),
48481
- enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1202 => _1202.enabled]), () => ( true)),
48491
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1206 => _1206.enabled]), () => ( true)),
48482
48492
  staleTime: Infinity,
48483
48493
  gcTime: Infinity,
48484
48494
  // The commands registry is non-critical chrome — a failure degrades to an
@@ -48517,21 +48527,21 @@ async function fetchEmptyStateConfig(signal, emptyStateUrl) {
48517
48527
  }
48518
48528
  const data = await res.json();
48519
48529
  return {
48520
- name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1203 => _1203.name]), () => ( null)),
48521
- icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1204 => _1204.icon]), () => ( null)),
48522
- greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1205 => _1205.greeting]), () => ( null)),
48523
- enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1206 => _1206.enabledRagTableIds]), () => ( [])),
48524
- quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1207 => _1207.quickActions]), () => ( [])),
48525
- suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1208 => _1208.suggestedQueries]), () => ( []))
48530
+ name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1207 => _1207.name]), () => ( null)),
48531
+ icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1208 => _1208.icon]), () => ( null)),
48532
+ greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1209 => _1209.greeting]), () => ( null)),
48533
+ enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1210 => _1210.enabledRagTableIds]), () => ( [])),
48534
+ quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1211 => _1211.quickActions]), () => ( [])),
48535
+ suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _1212 => _1212.suggestedQueries]), () => ( []))
48526
48536
  };
48527
48537
  } catch (err) {
48528
- if (_optionalChain([err, 'optionalAccess', _1209 => _1209.name]) === "AbortError") throw err;
48538
+ if (_optionalChain([err, 'optionalAccess', _1213 => _1213.name]) === "AbortError") throw err;
48529
48539
  console.warn("[chat] empty-state config fetch failed, using neutral defaults:", err);
48530
48540
  return EMPTY_STATE_FALLBACK;
48531
48541
  }
48532
48542
  }
48533
48543
  function useEmptyStateConfig(emptyStateUrl, options) {
48534
- const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1210 => _1210.enabled]), () => ( true))) && !!emptyStateUrl;
48544
+ const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _1214 => _1214.enabled]), () => ( true))) && !!emptyStateUrl;
48535
48545
  const query = _reactquery.useQuery.call(void 0, {
48536
48546
  queryKey: ["chat-empty-state", emptyStateUrl],
48537
48547
  queryFn: ({ signal }) => fetchEmptyStateConfig(signal, emptyStateUrl),
@@ -48560,7 +48570,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
48560
48570
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
48561
48571
  function uploadWithProgress(url, file, token, onProgress, signal) {
48562
48572
  return new Promise((resolve, reject) => {
48563
- if (_optionalChain([signal, 'optionalAccess', _1211 => _1211.aborted])) {
48573
+ if (_optionalChain([signal, 'optionalAccess', _1215 => _1215.aborted])) {
48564
48574
  reject(new Error("Upload cancelled"));
48565
48575
  return;
48566
48576
  }
@@ -48574,7 +48584,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48574
48584
  xhr.removeEventListener("error", handleError);
48575
48585
  xhr.removeEventListener("abort", handleAbort);
48576
48586
  xhr.removeEventListener("timeout", handleTimeout);
48577
- _optionalChain([signal, 'optionalAccess', _1212 => _1212.removeEventListener, 'call', _1213 => _1213("abort", handleSignalAbort)]);
48587
+ _optionalChain([signal, 'optionalAccess', _1216 => _1216.removeEventListener, 'call', _1217 => _1217("abort", handleSignalAbort)]);
48578
48588
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
48579
48589
  };
48580
48590
  const handleProgress = (event) => {
@@ -48610,7 +48620,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
48610
48620
  const handleSignalAbort = () => {
48611
48621
  xhr.abort();
48612
48622
  };
48613
- _optionalChain([signal, 'optionalAccess', _1214 => _1214.addEventListener, 'call', _1215 => _1215("abort", handleSignalAbort, { once: true })]);
48623
+ _optionalChain([signal, 'optionalAccess', _1218 => _1218.addEventListener, 'call', _1219 => _1219("abort", handleSignalAbort, { once: true })]);
48614
48624
  xhr.upload.addEventListener("progress", handleProgress);
48615
48625
  xhr.addEventListener("load", handleLoad);
48616
48626
  xhr.addEventListener("error", handleError);
@@ -48654,12 +48664,12 @@ function useChatAttachments() {
48654
48664
  try {
48655
48665
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
48656
48666
  } catch (err) {
48657
- if (_optionalChain([ctrl, 'optionalAccess', _1216 => _1216.signal, 'access', _1217 => _1217.aborted])) return;
48667
+ if (_optionalChain([ctrl, 'optionalAccess', _1220 => _1220.signal, 'access', _1221 => _1221.aborted])) return;
48658
48668
  throw new Error(
48659
48669
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
48660
48670
  );
48661
48671
  }
48662
- if (_optionalChain([ctrl, 'optionalAccess', _1218 => _1218.signal, 'access', _1219 => _1219.aborted])) return;
48672
+ if (_optionalChain([ctrl, 'optionalAccess', _1222 => _1222.signal, 'access', _1223 => _1223.aborted])) return;
48663
48673
  if (!sniffed) {
48664
48674
  throw new Error("Unrecognized file format");
48665
48675
  }
@@ -48673,7 +48683,7 @@ function useChatAttachments() {
48673
48683
  const urlResp = await _chunkSR6LEWCFcjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
48674
48684
  method: "POST",
48675
48685
  headers: { "Content-Type": "application/json" },
48676
- signal: _optionalChain([ctrl, 'optionalAccess', _1220 => _1220.signal]),
48686
+ signal: _optionalChain([ctrl, 'optionalAccess', _1224 => _1224.signal]),
48677
48687
  body: JSON.stringify({
48678
48688
  fileName: att.file.name,
48679
48689
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -48699,9 +48709,9 @@ function useChatAttachments() {
48699
48709
  (pct) => {
48700
48710
  updateOne(att.id, { progress: pct });
48701
48711
  },
48702
- _optionalChain([ctrl, 'optionalAccess', _1221 => _1221.signal])
48712
+ _optionalChain([ctrl, 'optionalAccess', _1225 => _1225.signal])
48703
48713
  );
48704
- if (_optionalChain([ctrl, 'optionalAccess', _1222 => _1222.signal, 'access', _1223 => _1223.aborted])) return;
48714
+ if (_optionalChain([ctrl, 'optionalAccess', _1226 => _1226.signal, 'access', _1227 => _1227.aborted])) return;
48705
48715
  updateOne(att.id, {
48706
48716
  status: "ready",
48707
48717
  progress: 100,
@@ -48709,7 +48719,7 @@ function useChatAttachments() {
48709
48719
  viewToken: mintData.viewToken
48710
48720
  });
48711
48721
  } catch (err) {
48712
- if (_optionalChain([ctrl, 'optionalAccess', _1224 => _1224.signal, 'access', _1225 => _1225.aborted])) return;
48722
+ if (_optionalChain([ctrl, 'optionalAccess', _1228 => _1228.signal, 'access', _1229 => _1229.aborted])) return;
48713
48723
  const message2 = err instanceof Error ? err.message : String(err);
48714
48724
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
48715
48725
  } finally {
@@ -48860,7 +48870,7 @@ var ANON_DEFAULTS = {
48860
48870
  function useResolveChatIdentity(enabled) {
48861
48871
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
48862
48872
  const url = runtime.endpoints.identityUrl;
48863
- const proxyEmail = _nullishCoalesce(_optionalChain([_chunkSR6LEWCFcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1226 => _1226.email]), () => ( null));
48873
+ const proxyEmail = _nullishCoalesce(_optionalChain([_chunkSR6LEWCFcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _1230 => _1230.email]), () => ( null));
48864
48874
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
48865
48875
  const [isLoading, setIsLoading] = _react.useState.call(void 0, enabled);
48866
48876
  _react.useEffect.call(void 0, () => {
@@ -48951,7 +48961,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
48951
48961
  yield chunk;
48952
48962
  }
48953
48963
  } catch (err) {
48954
- if (_optionalChain([err, 'optionalAccess', _1227 => _1227.name]) === "AbortError" || ctrl.signal.aborted) {
48964
+ if (_optionalChain([err, 'optionalAccess', _1231 => _1231.name]) === "AbortError" || ctrl.signal.aborted) {
48955
48965
  return;
48956
48966
  }
48957
48967
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -49002,7 +49012,7 @@ function useChat({
49002
49012
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
49003
49013
  onMessagesChangeRef.current = onMessagesChange;
49004
49014
  _react.useEffect.call(void 0, () => {
49005
- _optionalChain([onMessagesChangeRef, 'access', _1228 => _1228.current, 'optionalCall', _1229 => _1229(messages)]);
49015
+ _optionalChain([onMessagesChangeRef, 'access', _1232 => _1232.current, 'optionalCall', _1233 => _1233(messages)]);
49006
49016
  }, [messages]);
49007
49017
  const {
49008
49018
  streamMessage,
@@ -49039,7 +49049,7 @@ function useChat({
49039
49049
  name: "You",
49040
49050
  content: text,
49041
49051
  timestamp: /* @__PURE__ */ new Date(),
49042
- ..._optionalChain([options, 'optionalAccess', _1230 => _1230.hidden]) ? { hidden: true } : {}
49052
+ ..._optionalChain([options, 'optionalAccess', _1234 => _1234.hidden]) ? { hidden: true } : {}
49043
49053
  };
49044
49054
  addMessage(userMessage);
49045
49055
  setIsTyping(true);
@@ -49101,7 +49111,7 @@ function useChat({
49101
49111
  currentTextSegment = "";
49102
49112
  }
49103
49113
  const seg = segment;
49104
- const proposalId = _optionalChain([seg, 'access', _1231 => _1231.data, 'optionalAccess', _1232 => _1232.requestId]);
49114
+ const proposalId = _optionalChain([seg, 'access', _1235 => _1235.data, 'optionalAccess', _1236 => _1236.requestId]);
49105
49115
  const updateApprovalMessage = (transform) => {
49106
49116
  setMessages((prev) => {
49107
49117
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -49110,7 +49120,7 @@ function useChat({
49110
49120
  if (!Array.isArray(m.content)) continue;
49111
49121
  const segments = m.content;
49112
49122
  const hasMatch = segments.some(
49113
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1233 => _1233.data, 'optionalAccess', _1234 => _1234.requestId]) === proposalId
49123
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1237 => _1237.data, 'optionalAccess', _1238 => _1238.requestId]) === proposalId
49114
49124
  );
49115
49125
  if (!hasMatch) continue;
49116
49126
  const next = [...prev];
@@ -49152,11 +49162,11 @@ function useChat({
49152
49162
  if (!Array.isArray(m.content)) continue;
49153
49163
  const segments = m.content;
49154
49164
  const hasMatch = segments.some(
49155
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1235 => _1235.data, 'optionalAccess', _1236 => _1236.requestId]) === decision.proposalId
49165
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1239 => _1239.data, 'optionalAccess', _1240 => _1240.requestId]) === decision.proposalId
49156
49166
  );
49157
49167
  if (!hasMatch) continue;
49158
49168
  const flipped = segments.map(
49159
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1237 => _1237.data, 'optionalAccess', _1238 => _1238.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49169
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _1241 => _1241.data, 'optionalAccess', _1242 => _1242.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
49160
49170
  );
49161
49171
  const next = [...prev];
49162
49172
  next[i] = { ...m, content: flipped };
@@ -49318,8 +49328,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49318
49328
  })),
49319
49329
  { role: "user", content: message2 }
49320
49330
  ];
49321
- const targetPath = _optionalChain([extra, 'optionalAccess', _1239 => _1239.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49322
- const requestBody = _optionalChain([extra, 'optionalAccess', _1240 => _1240.approvalAction]) ? {
49331
+ const targetPath = _optionalChain([extra, 'optionalAccess', _1243 => _1243.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
49332
+ const requestBody = _optionalChain([extra, 'optionalAccess', _1244 => _1244.approvalAction]) ? {
49323
49333
  proposal_id: extra.approvalAction.proposalId,
49324
49334
  action: extra.approvalAction.action,
49325
49335
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -49328,8 +49338,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49328
49338
  }))
49329
49339
  } : {
49330
49340
  messages: apiMessages,
49331
- ..._optionalChain([extra, 'optionalAccess', _1241 => _1241.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49332
- ..._optionalChain([extra, 'optionalAccess', _1242 => _1242.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49341
+ ..._optionalChain([extra, 'optionalAccess', _1245 => _1245.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
49342
+ ..._optionalChain([extra, 'optionalAccess', _1246 => _1246.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
49333
49343
  };
49334
49344
  const response = await _chunkSR6LEWCFcjs.embedAuthedFetch.call(void 0, targetPath, {
49335
49345
  method: "POST",
@@ -49339,7 +49349,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49339
49349
  if (!response.ok) {
49340
49350
  throw new Error(`Chat request failed: ${response.status}`);
49341
49351
  }
49342
- const reader = _optionalChain([response, 'access', _1243 => _1243.body, 'optionalAccess', _1244 => _1244.getReader, 'call', _1245 => _1245()]);
49352
+ const reader = _optionalChain([response, 'access', _1247 => _1247.body, 'optionalAccess', _1248 => _1248.getReader, 'call', _1249 => _1249()]);
49343
49353
  if (!reader) throw new Error("No response body");
49344
49354
  const decoder = new TextDecoder();
49345
49355
  let buffer = "";
@@ -49422,7 +49432,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49422
49432
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
49423
49433
  const result = _nullishCoalesce(meta.result, () => ( null));
49424
49434
  const card = _nullishCoalesce(meta.card, () => ( null));
49425
- if (_optionalChain([card, 'optionalAccess', _1246 => _1246.ref, 'optionalAccess', _1247 => _1247.id]) && _optionalChain([card, 'optionalAccess', _1248 => _1248.type])) {
49435
+ if (_optionalChain([card, 'optionalAccess', _1250 => _1250.ref, 'optionalAccess', _1251 => _1251.id]) && _optionalChain([card, 'optionalAccess', _1252 => _1252.type])) {
49426
49436
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
49427
49437
  const key = buildChatRefKey(card.type, card.ref.id);
49428
49438
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -49435,8 +49445,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
49435
49445
  willAutoContinue: meta.willAutoContinue === true,
49436
49446
  ...toolName ? { toolName } : {},
49437
49447
  ...result ? { result } : {},
49438
- ..._optionalChain([card, 'optionalAccess', _1249 => _1249.marker]) ? { marker: card.marker } : {},
49439
- ..._optionalChain([card, 'optionalAccess', _1250 => _1250.ref]) ? { cardRef: card.ref } : {},
49448
+ ..._optionalChain([card, 'optionalAccess', _1253 => _1253.marker]) ? { marker: card.marker } : {},
49449
+ ..._optionalChain([card, 'optionalAccess', _1254 => _1254.ref]) ? { cardRef: card.ref } : {},
49440
49450
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
49441
49451
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
49442
49452
  };
@@ -49555,7 +49565,7 @@ var DEFAULT_CHAT_SOURCE = "embed";
49555
49565
  var chatStorageKey = (source) => {
49556
49566
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
49557
49567
  const auth = _chunkSR6LEWCFcjs.getEmbedProxyAuth.call(void 0, );
49558
- if (_optionalChain([auth, 'optionalAccess', _1251 => _1251.email])) {
49568
+ if (_optionalChain([auth, 'optionalAccess', _1255 => _1255.email])) {
49559
49569
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
49560
49570
  }
49561
49571
  return base;
@@ -49610,7 +49620,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49610
49620
  const { active = true } = runtimeOptions;
49611
49621
  const runtime = _chunk2B6773QMcjs.useRequiredChatRuntime.call(void 0, );
49612
49622
  const source = runtime.source || DEFAULT_CHAT_SOURCE;
49613
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1252 => _1252.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49623
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _1256 => _1256.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
49614
49624
  const persistedRef = _react.useRef.call(void 0, null);
49615
49625
  if (persistedRef.current === null) {
49616
49626
  pruneStaleChatStorage(source);
@@ -49715,7 +49725,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49715
49725
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
49716
49726
  sources = sourcesMapRef.current.get(lookupIdx);
49717
49727
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
49718
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1253 => _1253.current, 'access', _1254 => _1254.get, 'call', _1255 => _1255(lookupIdx), 'optionalAccess', _1256 => _1256.scrollAnchor]), () => ( void 0));
49728
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _1257 => _1257.current, 'access', _1258 => _1258.get, 'call', _1259 => _1259(lookupIdx), 'optionalAccess', _1260 => _1260.scrollAnchor]), () => ( void 0));
49719
49729
  }
49720
49730
  return {
49721
49731
  id: m.id,
@@ -49763,7 +49773,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49763
49773
  );
49764
49774
  return;
49765
49775
  }
49766
- const refSlug = typeof _optionalChain([reference, 'access', _1257 => _1257.metadata, 'optionalAccess', _1258 => _1258.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
49776
+ const refSlug = typeof _optionalChain([reference, 'access', _1261 => _1261.metadata, 'optionalAccess', _1262 => _1262.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
49767
49777
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
49768
49778
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
49769
49779
  const text = `/${cmdId} display "${escaped}"`;
@@ -49835,18 +49845,18 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
49835
49845
  clearMessages,
49836
49846
  streamingPhase,
49837
49847
  /** Provider key for the lib's `<ModelDisplay>` icon. */
49838
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1259 => _1259.provider]), () => ( null)),
49839
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1260 => _1260.modelLabel]), () => ( null)),
49840
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1261 => _1261.contextWindowMaxTokens]), () => ( null)),
49848
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1263 => _1263.provider]), () => ( null)),
49849
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1264 => _1264.modelLabel]), () => ( null)),
49850
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1265 => _1265.contextWindowMaxTokens]), () => ( null)),
49841
49851
  /** Input tokens (known after server's message_start frame; null until). */
49842
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1262 => _1262.inputTokens]), () => ( null)),
49852
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1266 => _1266.inputTokens]), () => ( null)),
49843
49853
  /** Output tokens (known only after server's trailing usage frame). */
49844
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1263 => _1263.outputTokens]), () => ( null)),
49854
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1267 => _1267.outputTokens]), () => ( null)),
49845
49855
  /** Cache hit % (read / total-input × 100). null during streaming. */
49846
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1264 => _1264.cacheHitRatePct]), () => ( null)),
49856
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1268 => _1268.cacheHitRatePct]), () => ( null)),
49847
49857
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
49848
49858
  * token counts). null until the trailing usage frame lands. */
49849
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1265 => _1265.breakdown]), () => ( null)),
49859
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _1269 => _1269.breakdown]), () => ( null)),
49850
49860
  // ─── Dialog management — stubs for v1 ────────────────────────────────
49851
49861
  // Guide mode currently keeps its history in `localStorage` opaquely
49852
49862
  // under the hood (`runtime.source` namespaced key). Surfacing that
@@ -49904,15 +49914,15 @@ var noopRejectRequest = async (_id, _reason) => {
49904
49914
 
49905
49915
  // src/components/chat/utils/process-historical-messages.ts
49906
49916
  function getOwnerDisplayName(owner) {
49907
- if (_optionalChain([owner, 'optionalAccess', _1266 => _1266.type]) === OWNER_TYPE.ADMIN && owner.user) {
49917
+ if (_optionalChain([owner, 'optionalAccess', _1270 => _1270.type]) === OWNER_TYPE.ADMIN && owner.user) {
49908
49918
  const { firstName, lastName } = owner.user;
49909
49919
  const name = [firstName, lastName].filter(Boolean).join(" ");
49910
49920
  if (name) return name;
49911
49921
  }
49912
- return _optionalChain([owner, 'optionalAccess', _1267 => _1267.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
49922
+ return _optionalChain([owner, 'optionalAccess', _1271 => _1271.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
49913
49923
  }
49914
49924
  function getOwnerAvatar(owner) {
49915
- return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1268 => _1268.user, 'optionalAccess', _1269 => _1269.image, 'optionalAccess', _1270 => _1270.imageUrl]), () => ( void 0));
49925
+ return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _1272 => _1272.user, 'optionalAccess', _1273 => _1273.image, 'optionalAccess', _1274 => _1274.imageUrl]), () => ( void 0));
49916
49926
  }
49917
49927
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
49918
49928
  messageDataArray.forEach((data) => {
@@ -49975,14 +49985,14 @@ function processHistoricalMessages(messages, options = {}) {
49975
49985
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
49976
49986
  return;
49977
49987
  }
49978
- const isUserMessage = _optionalChain([msg, 'access', _1271 => _1271.owner, 'optionalAccess', _1272 => _1272.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1273 => _1273.owner, 'optionalAccess', _1274 => _1274.type]) === OWNER_TYPE.ADMIN;
49988
+ const isUserMessage = _optionalChain([msg, 'access', _1275 => _1275.owner, 'optionalAccess', _1276 => _1276.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1277 => _1277.owner, 'optionalAccess', _1278 => _1278.type]) === OWNER_TYPE.ADMIN;
49979
49989
  if (isUserMessage) {
49980
49990
  flushAssistantMessage();
49981
- const userAuthorType = _optionalChain([msg, 'access', _1275 => _1275.owner, 'optionalAccess', _1276 => _1276.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
49991
+ const userAuthorType = _optionalChain([msg, 'access', _1279 => _1279.owner, 'optionalAccess', _1280 => _1280.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
49982
49992
  messageDataArray.forEach((data) => {
49983
49993
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
49984
49994
  const rawContext = data.contextItems;
49985
- const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1277 => _1277.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1278 => _1278.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
49995
+ const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1281 => _1281.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1282 => _1282.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
49986
49996
  processedMessages.push({
49987
49997
  id: msg.id,
49988
49998
  role: "user",
@@ -50006,7 +50016,7 @@ function processHistoricalMessages(messages, options = {}) {
50006
50016
  });
50007
50017
  const nextMsg = messages[index + 1];
50008
50018
  const isLastMessage = index === messages.length - 1;
50009
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1279 => _1279.owner, 'optionalAccess', _1280 => _1280.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1281 => _1281.owner, 'optionalAccess', _1282 => _1282.type]) === OWNER_TYPE.ADMIN);
50019
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1283 => _1283.owner, 'optionalAccess', _1284 => _1284.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1285 => _1285.owner, 'optionalAccess', _1286 => _1286.type]) === OWNER_TYPE.ADMIN);
50010
50020
  if (isLastMessage || nextIsFromUser) {
50011
50021
  flushAssistantMessage();
50012
50022
  }
@@ -50116,7 +50126,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50116
50126
  }
50117
50127
  }
50118
50128
  } else {
50119
- _optionalChain([escalatedApprovals, 'optionalAccess', _1283 => _1283.set, 'call', _1284 => _1284(data.approvalRequestId, {
50129
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1287 => _1287.set, 'call', _1288 => _1288(data.approvalRequestId, {
50120
50130
  command: data.command || "",
50121
50131
  explanation: data.explanation,
50122
50132
  approvalType,
@@ -50130,8 +50140,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50130
50140
  const existingStatus = approvalStatuses[data.approvalRequestId];
50131
50141
  const status = existingStatus || (data.approved ? "approved" : "rejected");
50132
50142
  const resolvedByName = "resolvedByName" in data ? data.resolvedByName : void 0;
50133
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1285 => _1285.get, 'call', _1286 => _1286(data.approvalRequestId)]);
50134
- if (_optionalChain([escalatedData, 'optionalAccess', _1287 => _1287.toolCalls]) && escalatedData.toolCalls.length > 0) {
50143
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _1289 => _1289.get, 'call', _1290 => _1290(data.approvalRequestId)]);
50144
+ if (_optionalChain([escalatedData, 'optionalAccess', _1291 => _1291.toolCalls]) && escalatedData.toolCalls.length > 0) {
50135
50145
  if (batchApprovalsEnabled) {
50136
50146
  accumulator.addApprovalBatch(
50137
50147
  data.approvalRequestId,
@@ -50153,7 +50163,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50153
50163
  );
50154
50164
  }
50155
50165
  }
50156
- _optionalChain([escalatedApprovals, 'optionalAccess', _1288 => _1288.delete, 'call', _1289 => _1289(data.approvalRequestId)]);
50166
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1292 => _1292.delete, 'call', _1293 => _1293(data.approvalRequestId)]);
50157
50167
  break;
50158
50168
  }
50159
50169
  if (escalatedData) {
@@ -50162,7 +50172,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50162
50172
  explanation: escalatedData.explanation,
50163
50173
  approvalType: escalatedData.approvalType
50164
50174
  });
50165
- _optionalChain([escalatedApprovals, 'optionalAccess', _1290 => _1290.delete, 'call', _1291 => _1291(data.approvalRequestId)]);
50175
+ _optionalChain([escalatedApprovals, 'optionalAccess', _1294 => _1294.delete, 'call', _1295 => _1295(data.approvalRequestId)]);
50166
50176
  }
50167
50177
  const before = accumulator.getSegments();
50168
50178
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status, resolvedByName);
@@ -50178,9 +50188,9 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
50178
50188
  case MESSAGE_TYPE.ERROR:
50179
50189
  if ("error" in data) {
50180
50190
  let message2;
50181
- if ("details" in data && _optionalChain([data, 'optionalAccess', _1292 => _1292.details])) {
50191
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _1296 => _1296.details])) {
50182
50192
  try {
50183
- message2 = _optionalChain([JSON, 'access', _1293 => _1293.parse, 'call', _1294 => _1294(data.details), 'optionalAccess', _1295 => _1295.error, 'optionalAccess', _1296 => _1296.message]);
50193
+ message2 = _optionalChain([JSON, 'access', _1297 => _1297.parse, 'call', _1298 => _1298(data.details), 'optionalAccess', _1299 => _1299.error, 'optionalAccess', _1300 => _1300.message]);
50184
50194
  } catch (e67) {
50185
50195
  message2 = data.details;
50186
50196
  }
@@ -50263,14 +50273,14 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50263
50273
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
50264
50274
  return;
50265
50275
  }
50266
- const isUserMessage = _optionalChain([msg, 'access', _1297 => _1297.owner, 'optionalAccess', _1298 => _1298.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1299 => _1299.owner, 'optionalAccess', _1300 => _1300.type]) === OWNER_TYPE.ADMIN;
50276
+ const isUserMessage = _optionalChain([msg, 'access', _1301 => _1301.owner, 'optionalAccess', _1302 => _1302.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _1303 => _1303.owner, 'optionalAccess', _1304 => _1304.type]) === OWNER_TYPE.ADMIN;
50267
50277
  if (isUserMessage) {
50268
50278
  flushAssistantMessage();
50269
- const userAuthorType = _optionalChain([msg, 'access', _1301 => _1301.owner, 'optionalAccess', _1302 => _1302.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50279
+ const userAuthorType = _optionalChain([msg, 'access', _1305 => _1305.owner, 'optionalAccess', _1306 => _1306.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
50270
50280
  messageDataArray.forEach((data) => {
50271
50281
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
50272
50282
  const rawContext = data.contextItems;
50273
- const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1303 => _1303.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1304 => _1304.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50283
+ const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _1307 => _1307.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _1308 => _1308.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
50274
50284
  processedMessages.push({
50275
50285
  id: msg.id,
50276
50286
  role: "user",
@@ -50294,7 +50304,7 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
50294
50304
  });
50295
50305
  const nextMsg = messages[index + 1];
50296
50306
  const isLastMessage = index === messages.length - 1;
50297
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1305 => _1305.owner, 'optionalAccess', _1306 => _1306.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1307 => _1307.owner, 'optionalAccess', _1308 => _1308.type]) === OWNER_TYPE.ADMIN);
50307
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _1309 => _1309.owner, 'optionalAccess', _1310 => _1310.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _1311 => _1311.owner, 'optionalAccess', _1312 => _1312.type]) === OWNER_TYPE.ADMIN);
50298
50308
  if (isLastMessage || nextIsFromUser) {
50299
50309
  flushAssistantMessage();
50300
50310
  }
@@ -50393,6 +50403,9 @@ function useNatsChatAdapter(config, options = {}) {
50393
50403
  const dialogId = isManagedMode ? internalDialogId : controlledDialogId !== void 0 ? controlledDialogId : null;
50394
50404
  const [messages, setMessages] = _react.useState.call(void 0, []);
50395
50405
  const [streamingPhase, setStreamingPhase] = _react.useState.call(void 0, "idle");
50406
+ const streamingPhaseRef = _react.useRef.call(void 0, streamingPhase);
50407
+ streamingPhaseRef.current = streamingPhase;
50408
+ const suppressAgentBusyRef = _react.useRef.call(void 0, false);
50396
50409
  const [approvalStatuses, setApprovalStatuses] = _react.useState.call(void 0, {});
50397
50410
  const [dialogs, setDialogs] = _react.useState.call(void 0, []);
50398
50411
  const [dialogsNextCursor, setDialogsNextCursor] = _react.useState.call(void 0, null);
@@ -50410,6 +50423,8 @@ function useNatsChatAdapter(config, options = {}) {
50410
50423
  async (requestId) => {
50411
50424
  if (!approveRequestCallback) return;
50412
50425
  setApprovalStatuses((prev) => ({ ...prev, [requestId]: "approved" }));
50426
+ const tookLock = streamingPhaseRef.current === "idle";
50427
+ setStreamingPhase((p) => p === "idle" ? "thinking" : p);
50413
50428
  try {
50414
50429
  await approveRequestCallback(requestId);
50415
50430
  } catch (err) {
@@ -50418,6 +50433,9 @@ function useNatsChatAdapter(config, options = {}) {
50418
50433
  delete next[requestId];
50419
50434
  return next;
50420
50435
  });
50436
+ if (tookLock) {
50437
+ setStreamingPhase((p) => p === "thinking" ? "idle" : p);
50438
+ }
50421
50439
  console.error("[useNatsChatAdapter] approveRequest failed:", err);
50422
50440
  }
50423
50441
  },
@@ -50458,6 +50476,18 @@ function useNatsChatAdapter(config, options = {}) {
50458
50476
  },
50459
50477
  onStreamStart: () => setStreamingPhase("streaming"),
50460
50478
  onStreamEnd: () => setStreamingPhase("idle"),
50479
+ // Agent is executing (approved) commands outside an open stream — keep
50480
+ // the composer locked exactly like the in-stream phases. An open stream
50481
+ // keeps ownership: only 'idle' upgrades to 'thinking'. Suppressed during
50482
+ // initial catchup so a replayed dead tail can't lock a finished dialog.
50483
+ onAgentBusy: () => {
50484
+ if (suppressAgentBusyRef.current) return;
50485
+ setStreamingPhase((p) => p === "idle" ? "thinking" : p);
50486
+ },
50487
+ // Terminal turn failures can arrive without a MESSAGE_END; unlock the
50488
+ // composer unless an open stream still owns the phase (in-stream errors
50489
+ // are followed by the stream's own MESSAGE_END).
50490
+ onError: () => setStreamingPhase((p) => p === "streaming" ? p : "idle"),
50461
50491
  // Live cumulative token counter for the active dialog — drives the
50462
50492
  // composer's "X / Y tokens used" tail as the assistant streams.
50463
50493
  onTokenUsage: (data) => setDialogTokenUsage(data),
@@ -50473,6 +50503,8 @@ function useNatsChatAdapter(config, options = {}) {
50473
50503
  onSegmentsUpdate: (segments) => callbacksRef.current.onSegmentsUpdate(segments),
50474
50504
  onStreamStart: () => callbacksRef.current.onStreamStart(),
50475
50505
  onStreamEnd: () => callbacksRef.current.onStreamEnd(),
50506
+ onAgentBusy: () => callbacksRef.current.onAgentBusy(),
50507
+ onError: () => callbacksRef.current.onError(),
50476
50508
  onTokenUsage: (data) => callbacksRef.current.onTokenUsage(data),
50477
50509
  onMetadata: (meta) => callbacksRef.current.onMetadata(meta),
50478
50510
  onApprove: accumApprove,
@@ -50562,10 +50594,13 @@ function useNatsChatAdapter(config, options = {}) {
50562
50594
  }, [active, dialogId, loadDialogHistory, resetAccumulator]);
50563
50595
  _react.useEffect.call(void 0, () => {
50564
50596
  if (!active || !dialogId) return;
50597
+ suppressAgentBusyRef.current = true;
50565
50598
  resetChunkTracking();
50566
50599
  startInitialBuffering();
50567
50600
  catchUpChunks().catch((err) => {
50568
50601
  console.error("[useNatsChatAdapter] initial catchup failed:", err);
50602
+ }).finally(() => {
50603
+ suppressAgentBusyRef.current = false;
50569
50604
  });
50570
50605
  }, [active, dialogId, resetChunkTracking, startInitialBuffering, catchUpChunks]);
50571
50606
  useNatsDialogSubscription({
@@ -50630,7 +50665,7 @@ function useNatsChatAdapter(config, options = {}) {
50630
50665
  }, [active, fetchDialogs, loadDialogsPage]);
50631
50666
  const sendMessage = _react.useCallback.call(void 0,
50632
50667
  async (text, sendOptions) => {
50633
- const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1309 => _1309.hidden]), () => ( false));
50668
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _1313 => _1313.hidden]), () => ( false));
50634
50669
  setMessages((prev) => [
50635
50670
  ...prev,
50636
50671
  {
@@ -50794,11 +50829,11 @@ function useNatsChatAdapter(config, options = {}) {
50794
50829
  // Tokens: live `token_usage` frame / dialog snapshot (`dialogTokenUsage`).
50795
50830
  // contextWindow uses the dialog's `contextSize` (the "X / Y" denominator,
50796
50831
  // matching the /mingo page). cacheHitRate/breakdown are SSE-only → null.
50797
- currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1310 => _1310.provider]), () => ( modelProvider)), () => ( null)),
50798
- currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1311 => _1311.modelLabel]), () => ( modelLabel)), () => ( null)),
50799
- currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1312 => _1312.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _1313 => _1313.contextWindowMaxTokens]))), () => ( null)),
50800
- currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1314 => _1314.inputTokensSize]), () => ( null)),
50801
- currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1315 => _1315.outputTokensSize]), () => ( null)),
50832
+ currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1314 => _1314.provider]), () => ( modelProvider)), () => ( null)),
50833
+ currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _1315 => _1315.modelLabel]), () => ( modelLabel)), () => ( null)),
50834
+ currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1316 => _1316.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _1317 => _1317.contextWindowMaxTokens]))), () => ( null)),
50835
+ currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1318 => _1318.inputTokensSize]), () => ( null)),
50836
+ currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _1319 => _1319.outputTokensSize]), () => ( null)),
50802
50837
  currentCacheHitRatePct: null,
50803
50838
  currentUsageBreakdown: null,
50804
50839
  // Dialog management
@@ -51046,7 +51081,7 @@ function extractIncompleteMessageState(lastMessage) {
51046
51081
  break;
51047
51082
  case "approval_batch": {
51048
51083
  const allDone = !!segment.data.executions && segment.data.toolCalls.every(
51049
- (c) => _optionalChain([segment, 'access', _1316 => _1316.data, 'access', _1317 => _1317.executions, 'optionalAccess', _1318 => _1318[c.toolExecutionRequestId], 'optionalAccess', _1319 => _1319.status]) === "done"
51084
+ (c) => _optionalChain([segment, 'access', _1320 => _1320.data, 'access', _1321 => _1321.executions, 'optionalAccess', _1322 => _1322[c.toolExecutionRequestId], 'optionalAccess', _1323 => _1323.status]) === "done"
51050
51085
  );
51051
51086
  if (segment.status !== "rejected" && !allDone) {
51052
51087
  hasIncompleteState = true;
@@ -51114,20 +51149,20 @@ function mergeHistoryWithRealtime(input) {
51114
51149
  const seqCoverageKnown = realtimeSeenStreamSeq > 0 && historyMaxStreamSeq > 0;
51115
51150
  const historyCoversRealtime = seqCoverageKnown ? historyMaxStreamSeq >= realtimeSeenStreamSeq : null;
51116
51151
  const trailing = processedHistory[processedHistory.length - 1];
51117
- const historyTrailingAssistant = _optionalChain([trailing, 'optionalAccess', _1320 => _1320.role]) === "assistant" ? trailing : null;
51118
- const historyBatchId = historyTrailingAssistant && Array.isArray(historyTrailingAssistant.content) ? _nullishCoalesce(_optionalChain([historyTrailingAssistant, 'access', _1321 => _1321.content, 'access', _1322 => _1322.find, 'call', _1323 => _1323((s) => s.type === "approval_batch"), 'optionalAccess', _1324 => _1324.data, 'optionalAccess', _1325 => _1325.approvalRequestId]), () => ( null)) : null;
51152
+ const historyTrailingAssistant = _optionalChain([trailing, 'optionalAccess', _1324 => _1324.role]) === "assistant" ? trailing : null;
51153
+ const historyBatchId = historyTrailingAssistant && Array.isArray(historyTrailingAssistant.content) ? _nullishCoalesce(_optionalChain([historyTrailingAssistant, 'access', _1325 => _1325.content, 'access', _1326 => _1326.find, 'call', _1327 => _1327((s) => s.type === "approval_batch"), 'optionalAccess', _1328 => _1328.data, 'optionalAccess', _1329 => _1329.approvalRequestId]), () => ( null)) : null;
51119
51154
  let processedToUse = processedHistory;
51120
51155
  const pinnedSyntheticIds = /* @__PURE__ */ new Set();
51121
51156
  const droppedSyntheticIds = /* @__PURE__ */ new Set();
51122
51157
  if (historyBatchId) {
51123
51158
  const batchTwins = existingMessages.filter(
51124
51159
  (m) => m.role === "assistant" && Array.isArray(m.content) && m.content.some(
51125
- (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1326 => _1326.data, 'optionalAccess', _1327 => _1327.approvalRequestId]) === historyBatchId
51160
+ (s) => s.type === "approval_batch" && _optionalChain([s, 'access', _1330 => _1330.data, 'optionalAccess', _1331 => _1331.approvalRequestId]) === historyBatchId
51126
51161
  )
51127
51162
  );
51128
51163
  const existingWithSameBatch = _nullishCoalesce(batchTwins.find((m) => m.id === streamingMessageId), () => ( batchTwins[batchTwins.length - 1]));
51129
51164
  if (existingWithSameBatch && Array.isArray(existingWithSameBatch.content)) {
51130
- const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1328 => _1328.content])) ? historyTrailingAssistant.content.length : 0;
51165
+ const histSize = Array.isArray(_optionalChain([historyTrailingAssistant, 'optionalAccess', _1332 => _1332.content])) ? historyTrailingAssistant.content.length : 0;
51131
51166
  const realtimeSize = existingWithSameBatch.content.length;
51132
51167
  if (existingWithSameBatch.id === streamingMessageId || realtimeSize > histSize) {
51133
51168
  processedToUse = processedHistory.slice(0, -1);
@@ -51143,16 +51178,16 @@ function mergeHistoryWithRealtime(input) {
51143
51178
  if (pinnedSyntheticIds.has(m.id)) return true;
51144
51179
  if (droppedSyntheticIds.has(m.id)) return false;
51145
51180
  if (processedIds.has(m.id)) return false;
51146
- if (_optionalChain([rawHistoryIds, 'optionalAccess', _1329 => _1329.has, 'call', _1330 => _1330(m.id)])) return false;
51181
+ if (_optionalChain([rawHistoryIds, 'optionalAccess', _1333 => _1333.has, 'call', _1334 => _1334(m.id)])) return false;
51147
51182
  if (m.role === "user" && m.id.startsWith("optimistic-") && typeof m.content === "string") {
51148
- const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1331 => _1331.timestamp, 'optionalAccess', _1332 => _1332.getTime, 'call', _1333 => _1333()]), () => ( 0))) <= historyFetchedAt;
51183
+ const canBeInSnapshot = (_nullishCoalesce(_optionalChain([m, 'access', _1335 => _1335.timestamp, 'optionalAccess', _1336 => _1336.getTime, 'call', _1337 => _1337()]), () => ( 0))) <= historyFetchedAt;
51149
51184
  return !(canBeInSnapshot && processedToUse.some((pm) => pm.role === "user" && pm.content === m.content));
51150
51185
  }
51151
51186
  if (isSyntheticRealtimeId(m.id) && m.id !== streamingMessageId) {
51152
51187
  if (m.role === "assistant" && trailingAssistantText && assistantAnswerText(m.content) === trailingAssistantText) {
51153
51188
  return false;
51154
51189
  }
51155
- const covered = typeof m.streamSeq === "number" && historyMaxStreamSeq > 0 ? historyMaxStreamSeq >= m.streamSeq : historyCoversRealtime !== null ? historyCoversRealtime : (_nullishCoalesce(_optionalChain([m, 'access', _1334 => _1334.timestamp, 'optionalAccess', _1335 => _1335.getTime, 'call', _1336 => _1336()]), () => ( 0))) <= historyFetchedAt;
51190
+ const covered = typeof m.streamSeq === "number" && historyMaxStreamSeq > 0 ? historyMaxStreamSeq >= m.streamSeq : historyCoversRealtime !== null ? historyCoversRealtime : (_nullishCoalesce(_optionalChain([m, 'access', _1338 => _1338.timestamp, 'optionalAccess', _1339 => _1339.getTime, 'call', _1340 => _1340()]), () => ( 0))) <= historyFetchedAt;
51156
51191
  if (covered) return false;
51157
51192
  }
51158
51193
  return true;
@@ -51372,7 +51407,7 @@ function useChatDialogManager({
51372
51407
  const handleConfirmRestore = _react.useCallback.call(void 0, async () => {
51373
51408
  if (restoreTarget) {
51374
51409
  try {
51375
- await _optionalChain([unarchiveDialog, 'optionalCall', _1337 => _1337(restoreTarget.id)]);
51410
+ await _optionalChain([unarchiveDialog, 'optionalCall', _1341 => _1341(restoreTarget.id)]);
51376
51411
  } catch (err) {
51377
51412
  console.error("[useChatDialogManager] unarchive failed:", err);
51378
51413
  return;
@@ -51698,6 +51733,7 @@ function EmbeddableChatInner({
51698
51733
  onOpenChange,
51699
51734
  defaultOpen,
51700
51735
  showInternalTrigger = true,
51736
+ previewMode = false,
51701
51737
  extras,
51702
51738
  tableIdForDocumentType,
51703
51739
  modes,
@@ -51789,7 +51825,7 @@ function EmbeddableChatInner({
51789
51825
  }),
51790
51826
  [commandsUrl]
51791
51827
  );
51792
- const userName = _optionalChain([identityUser, 'optionalAccess', _1338 => _1338.firstName, 'optionalAccess', _1339 => _1339.trim, 'call', _1340 => _1340()]) || _optionalChain([identityUser, 'optionalAccess', _1341 => _1341.name, 'optionalAccess', _1342 => _1342.split, 'call', _1343 => _1343(" "), 'access', _1344 => _1344[0], 'optionalAccess', _1345 => _1345.trim, 'call', _1346 => _1346()]) || void 0;
51828
+ const userName = _optionalChain([identityUser, 'optionalAccess', _1342 => _1342.firstName, 'optionalAccess', _1343 => _1343.trim, 'call', _1344 => _1344()]) || _optionalChain([identityUser, 'optionalAccess', _1345 => _1345.name, 'optionalAccess', _1346 => _1346.split, 'call', _1347 => _1347(" "), 'access', _1348 => _1348[0], 'optionalAccess', _1349 => _1349.trim, 'call', _1350 => _1350()]) || void 0;
51793
51829
  const effectiveModes = _react.useMemo.call(void 0, () => {
51794
51830
  if (modes) return modes;
51795
51831
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
@@ -51798,19 +51834,19 @@ function EmbeddableChatInner({
51798
51834
  const mingoCaps = _react.useMemo.call(void 0, () => {
51799
51835
  if (mingoState) {
51800
51836
  return {
51801
- canRename: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1347 => _1347.canRename]), () => ( false)),
51802
- canArchive: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1348 => _1348.canArchive]), () => ( false)),
51803
- fetchArchivedDialogs: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1349 => _1349.fetchArchivedDialogs]),
51804
- unarchiveDialog: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1350 => _1350.unarchiveDialog]),
51805
- searchQuery: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1351 => _1351.searchQuery]),
51806
- onSearchChange: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1352 => _1352.onSearchChange])
51837
+ canRename: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1351 => _1351.canRename]), () => ( false)),
51838
+ canArchive: _nullishCoalesce(_optionalChain([mingoDialogCapabilities, 'optionalAccess', _1352 => _1352.canArchive]), () => ( false)),
51839
+ fetchArchivedDialogs: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1353 => _1353.fetchArchivedDialogs]),
51840
+ unarchiveDialog: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1354 => _1354.unarchiveDialog]),
51841
+ searchQuery: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1355 => _1355.searchQuery]),
51842
+ onSearchChange: _optionalChain([mingoDialogCapabilities, 'optionalAccess', _1356 => _1356.onSearchChange])
51807
51843
  };
51808
51844
  }
51809
51845
  return {
51810
- canRename: !!_optionalChain([effectiveModes, 'access', _1353 => _1353.mingo, 'optionalAccess', _1354 => _1354.renameDialog]),
51811
- canArchive: !!_optionalChain([effectiveModes, 'access', _1355 => _1355.mingo, 'optionalAccess', _1356 => _1356.archiveDialog]),
51812
- fetchArchivedDialogs: _optionalChain([effectiveModes, 'access', _1357 => _1357.mingo, 'optionalAccess', _1358 => _1358.fetchArchivedDialogs]),
51813
- unarchiveDialog: _optionalChain([effectiveModes, 'access', _1359 => _1359.mingo, 'optionalAccess', _1360 => _1360.unarchiveDialog]),
51846
+ canRename: !!_optionalChain([effectiveModes, 'access', _1357 => _1357.mingo, 'optionalAccess', _1358 => _1358.renameDialog]),
51847
+ canArchive: !!_optionalChain([effectiveModes, 'access', _1359 => _1359.mingo, 'optionalAccess', _1360 => _1360.archiveDialog]),
51848
+ fetchArchivedDialogs: _optionalChain([effectiveModes, 'access', _1361 => _1361.mingo, 'optionalAccess', _1362 => _1362.fetchArchivedDialogs]),
51849
+ unarchiveDialog: _optionalChain([effectiveModes, 'access', _1363 => _1363.mingo, 'optionalAccess', _1364 => _1364.unarchiveDialog]),
51814
51850
  searchQuery: void 0,
51815
51851
  onSearchChange: void 0
51816
51852
  };
@@ -51824,7 +51860,7 @@ function EmbeddableChatInner({
51824
51860
  if (controlledActiveMode === void 0) {
51825
51861
  setUncontrolledActiveMode(next);
51826
51862
  }
51827
- _optionalChain([onActiveModeChange, 'optionalCall', _1361 => _1361(next)]);
51863
+ _optionalChain([onActiveModeChange, 'optionalCall', _1365 => _1365(next)]);
51828
51864
  },
51829
51865
  [controlledActiveMode, onActiveModeChange]
51830
51866
  );
@@ -51846,7 +51882,7 @@ function EmbeddableChatInner({
51846
51882
  const effectiveQuickActions = emptyStateUrl ? emptyStateConfig.quickActions : [];
51847
51883
  const effectiveAssistantName = emptyStateConfig.name;
51848
51884
  const effectiveAssistantIcon = emptyStateConfig.icon;
51849
- const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1362 => _1362.title]) === "string" ? guideWelcome.title : null)));
51885
+ const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _1366 => _1366.title]) === "string" ? guideWelcome.title : null)));
51850
51886
  const {
51851
51887
  messages: rawMessages,
51852
51888
  isLoading: chatLoading,
@@ -51886,7 +51922,7 @@ function EmbeddableChatInner({
51886
51922
  if (activeMode !== "guide" || guidePromptSentRef.current) return;
51887
51923
  guidePromptSentRef.current = true;
51888
51924
  void sendMessage(guidePendingPrompt);
51889
- _optionalChain([onGuidePromptConsumed, 'optionalCall', _1363 => _1363()]);
51925
+ _optionalChain([onGuidePromptConsumed, 'optionalCall', _1367 => _1367()]);
51890
51926
  }, [guidePendingPrompt, activeMode, sendMessage, onGuidePromptConsumed]);
51891
51927
  const {
51892
51928
  attachments: stagedAttachments,
@@ -51897,7 +51933,7 @@ function EmbeddableChatInner({
51897
51933
  clear: clearAttachments
51898
51934
  } = useChatAttachments();
51899
51935
  const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
51900
- const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1364 => _1364.maxItems]), () => ( 10));
51936
+ const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1368 => _1368.maxItems]), () => ( 10));
51901
51937
  const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
51902
51938
  const [contextItems, setContextItems] = _react.useState.call(void 0, []);
51903
51939
  const [contextPickerOpen, setContextPickerOpen] = _react.useState.call(void 0, false);
@@ -51914,10 +51950,10 @@ function EmbeddableChatInner({
51914
51950
  }, [activeDialogId, activeMode]);
51915
51951
  const mentionMarkerByType = _react.useMemo.call(void 0, () => {
51916
51952
  const m = /* @__PURE__ */ new Map();
51917
- for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1365 => _1365.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
51953
+ for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _1369 => _1369.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
51918
51954
  return m;
51919
- }, [_optionalChain([contextPicker, 'optionalAccess', _1366 => _1366.entityTypes])]);
51920
- const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1367 => _1367.entityTypes]);
51955
+ }, [_optionalChain([contextPicker, 'optionalAccess', _1370 => _1370.entityTypes])]);
51956
+ const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _1371 => _1371.entityTypes]);
51921
51957
  const resolveContextIcon = _react.useMemo.call(void 0, () => {
51922
51958
  const byType = /* @__PURE__ */ new Map();
51923
51959
  for (const t of _nullishCoalesce(contextEntityTypes, () => ( []))) byType.set(t.type, t.icon);
@@ -51929,7 +51965,7 @@ function EmbeddableChatInner({
51929
51965
  if (mentionActiveRef.current) {
51930
51966
  if (contextItems.some((p) => `${p.type}:${p.id}` === key)) return;
51931
51967
  if (contextItems.length >= contextMaxItems) return;
51932
- _optionalChain([chatInputRef, 'access', _1368 => _1368.current, 'optionalAccess', _1369 => _1369.commitMention, 'call', _1370 => _1370(mentionTokenOf(key, mentionMarkerByType), {
51968
+ _optionalChain([chatInputRef, 'access', _1372 => _1372.current, 'optionalAccess', _1373 => _1373.commitMention, 'call', _1374 => _1374(mentionTokenOf(key, mentionMarkerByType), {
51933
51969
  label: item.label,
51934
51970
  icon: resolveContextIcon(item)
51935
51971
  })]);
@@ -51951,9 +51987,9 @@ function EmbeddableChatInner({
51951
51987
  setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
51952
51988
  if (mentionKeysRef.current.has(key)) {
51953
51989
  mentionKeysRef.current.delete(key);
51954
- const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1371 => _1371.current, 'optionalAccess', _1372 => _1372.getValue, 'call', _1373 => _1373()]), () => ( ""));
51990
+ const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _1375 => _1375.current, 'optionalAccess', _1376 => _1376.getValue, 'call', _1377 => _1377()]), () => ( ""));
51955
51991
  const next = cur.replace(`@${mentionTokenOf(key, mentionMarkerByType)}`, "").replace(/\s{2,}/g, " ").trimStart();
51956
- _optionalChain([chatInputRef, 'access', _1374 => _1374.current, 'optionalAccess', _1375 => _1375.setValue, 'call', _1376 => _1376(next)]);
51992
+ _optionalChain([chatInputRef, 'access', _1378 => _1378.current, 'optionalAccess', _1379 => _1379.setValue, 'call', _1380 => _1380(next)]);
51957
51993
  }
51958
51994
  }, [mentionMarkerByType]);
51959
51995
  const handleContextValueChange = _react.useCallback.call(void 0, (value) => {
@@ -51970,7 +52006,7 @@ function EmbeddableChatInner({
51970
52006
  }, []);
51971
52007
  const closeContextPicker = _react.useCallback.call(void 0, () => {
51972
52008
  if (mentionActiveRef.current) {
51973
- _optionalChain([chatInputRef, 'access', _1377 => _1377.current, 'optionalAccess', _1378 => _1378.removeMentionTrigger, 'call', _1379 => _1379()]);
52009
+ _optionalChain([chatInputRef, 'access', _1381 => _1381.current, 'optionalAccess', _1382 => _1382.removeMentionTrigger, 'call', _1383 => _1383()]);
51974
52010
  }
51975
52011
  setContextPickerOpen(false);
51976
52012
  setMentionQuery(null);
@@ -52004,8 +52040,8 @@ function EmbeddableChatInner({
52004
52040
  []
52005
52041
  );
52006
52042
  const timestampCacheRef = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
52007
- const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _1380 => _1380.firstName]), _optionalChain([identityUser, 'optionalAccess', _1381 => _1381.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _1382 => _1382.name, 'optionalAccess', _1383 => _1383.trim, 'call', _1384 => _1384()]) || void 0 : void 0;
52008
- const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _1385 => _1385.avatarUrl, 'optionalAccess', _1386 => _1386.trim, 'call', _1387 => _1387()]) || void 0 : void 0;
52043
+ const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _1384 => _1384.firstName]), _optionalChain([identityUser, 'optionalAccess', _1385 => _1385.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _1386 => _1386.name, 'optionalAccess', _1387 => _1387.trim, 'call', _1388 => _1388()]) || void 0 : void 0;
52044
+ const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _1389 => _1389.avatarUrl, 'optionalAccess', _1390 => _1390.trim, 'call', _1391 => _1391()]) || void 0 : void 0;
52009
52045
  const messages = _react.useMemo.call(void 0, () => {
52010
52046
  const cache = timestampCacheRef.current;
52011
52047
  const seenIds = /* @__PURE__ */ new Set();
@@ -52183,9 +52219,9 @@ function EmbeddableChatInner({
52183
52219
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
52184
52220
  const lastSources = _react.useMemo.call(void 0, () => {
52185
52221
  if (chatLoading) return void 0;
52186
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1388 => _1388.sources]);
52222
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _1392 => _1392.sources]);
52187
52223
  if (!sources || sources.length === 0) return void 0;
52188
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1389 => _1389.content]) || "";
52224
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _1393 => _1393.content]) || "";
52189
52225
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
52190
52226
  (m) => parseInt(m[1], 10)
52191
52227
  );
@@ -52202,7 +52238,7 @@ function EmbeddableChatInner({
52202
52238
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
52203
52239
  "div",
52204
52240
  {
52205
- className: `flex h-full flex-col overflow-hidden transition-colors duration-200 ${archiveOpen || !hasConversation && activeMode === "mingo" ? "bg-ods-card" : "bg-ods-bg"}`,
52241
+ className: `flex h-full flex-col overflow-hidden transition-colors duration-200 ${archiveOpen || !hasConversation && activeMode === "mingo" ? "bg-ods-card" : "bg-ods-bg"} ${previewMode ? "pointer-events-none select-none" : ""}`,
52206
52242
  children: archiveOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
52207
52243
  "div",
52208
52244
  {
@@ -52232,7 +52268,7 @@ function EmbeddableChatInner({
52232
52268
  ChatPanelHeader,
52233
52269
  {
52234
52270
  showBack: hasConversation || guideCanReturnToMingo,
52235
- title: hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1390 => _1390.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats",
52271
+ title: hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _1394 => _1394.title]) || "New Chat" : isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "Current Chats",
52236
52272
  backAriaLabel: hasConversation ? isViewingArchived ? "Back to archive" : "Back" : "Back to Mingo",
52237
52273
  isArchivedView: isViewingArchived,
52238
52274
  onBack: hasConversation ? handleBack : () => handleActiveModeChange("mingo"),
@@ -52281,7 +52317,7 @@ function EmbeddableChatInner({
52281
52317
  renderContextItem,
52282
52318
  renderMention,
52283
52319
  NavLinkAnchor: NavLinkAnchorViaRuntime,
52284
- className: "flex-1",
52320
+ className: "flex-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
52285
52321
  contentClassName: "max-w-none pb-0",
52286
52322
  fullWidth: true,
52287
52323
  hasNextPage: hasMoreMessages,
@@ -52353,9 +52389,9 @@ function EmbeddableChatInner({
52353
52389
  subtitle: _nullishCoalesce(effectiveGreeting, () => ( void 0)),
52354
52390
  subtitleLoading: emptyStateLoading,
52355
52391
  ...guideWelcome,
52356
- title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1391 => _1391.title]))),
52357
- icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1392 => _1392.icon]))),
52358
- quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _1393 => _1393.quickActions]), () => ( guideSuggestedActions)),
52392
+ title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1395 => _1395.title]))),
52393
+ icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _1396 => _1396.icon]))),
52394
+ quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _1397 => _1397.quickActions]), () => ( guideSuggestedActions)),
52359
52395
  onQuickAction: (action) => {
52360
52396
  setQuickActionPreview(null);
52361
52397
  handleSend(_nullishCoalesce(action.prompt, () => ( action.label)));
@@ -52423,7 +52459,7 @@ function EmbeddableChatInner({
52423
52459
  onStop: stopMessage,
52424
52460
  sending: chatLoading || hasInflightUploads,
52425
52461
  placeholder: hasInflightUploads ? "Waiting for uploads to finish\u2026" : "Ask a question...",
52426
- autoFocus: autoFocusInput,
52462
+ autoFocus: previewMode ? false : autoFocusInput,
52427
52463
  slashCommands: slashCommandsProp,
52428
52464
  previewText: _nullishCoalesce(quickActionPreview, () => ( void 0)),
52429
52465
  showAttachmentButton: attachmentsEnabled && activeMode === "guide",
@@ -53497,4 +53533,4 @@ function EmbeddableChatInner({
53497
53533
 
53498
53534
 
53499
53535
  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.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatHeaderIconButton = ChatHeaderIconButton; exports.COMPACT_HEADER_BUTTON = COMPACT_HEADER_BUTTON; 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.SquareAvatar2 = SquareAvatar2; 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.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.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.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.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.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.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.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;
53500
- //# sourceMappingURL=chunk-BXXXBZYY.cjs.map
53536
+ //# sourceMappingURL=chunk-KUDLV25M.cjs.map