@flamingo-stack/openframe-frontend-core 0.0.751 → 0.0.753

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 (106) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-FHT7SMA7.cjs → chunk-35BJY5RR.cjs} +47 -47
  3. package/dist/{chunk-ALPRQ3ZX.cjs → chunk-3GG3QAPT.cjs} +15 -15
  4. package/dist/{chunk-34TWK3JE.cjs → chunk-5E6JHOGX.cjs} +3 -3
  5. package/dist/{chunk-OFO75R2O.cjs → chunk-7Z4EQOIX.cjs} +174 -174
  6. package/dist/{chunk-C6LPOYDM.cjs → chunk-AG4HR6Z6.cjs} +8 -8
  7. package/dist/{chunk-XJ3J4UIS.cjs → chunk-B27XV2TC.cjs} +19 -19
  8. package/dist/{chunk-MJFTWHV6.cjs → chunk-C6JHDRK3.cjs} +6 -6
  9. package/dist/{chunk-2YXOD2KL.cjs → chunk-H3RYUTND.cjs} +5 -0
  10. package/dist/{chunk-53I4YHRT.cjs → chunk-ITQZK3UT.cjs} +3 -3
  11. package/dist/{chunk-H52GKJ36.cjs → chunk-J3E5UN2O.cjs} +19 -19
  12. package/dist/{chunk-5WC535NJ.cjs → chunk-JLAYELWS.cjs} +40 -40
  13. package/dist/{chunk-UGCRLRCT.cjs → chunk-NO5UJLLQ.cjs} +2 -5
  14. package/dist/{chunk-5P7WBA2U.cjs → chunk-QXQHCX2R.cjs} +4 -4
  15. package/dist/{chunk-ESRA7NUI.cjs → chunk-R45NJ5ZA.cjs} +90 -90
  16. package/dist/{chunk-CVBHB4OZ.cjs → chunk-RGYLC3US.cjs} +7 -7
  17. package/dist/{chunk-TPH4SRR2.cjs → chunk-SDF5UUTE.cjs} +800 -659
  18. package/dist/{chunk-3TELPOVH.cjs → chunk-T4BBZ5ST.cjs} +2 -2
  19. package/dist/{chunk-CLAJIQ7E.cjs → chunk-UNRNLSG4.cjs} +19 -19
  20. package/dist/{chunk-NOUROZYH.cjs → chunk-UVTJT5BK.cjs} +24 -24
  21. package/dist/{chunk-77IKUBSH.cjs → chunk-W77VPNBJ.cjs} +12 -12
  22. package/dist/{chunk-DGEB5GUZ.cjs → chunk-WBOHLXFC.cjs} +2 -2
  23. package/dist/{chunk-X4LAMJHD.cjs → chunk-WIT36ZTN.cjs} +113 -113
  24. package/dist/{chunk-QOONZMSQ.cjs → chunk-XSOGT6DF.cjs} +28 -28
  25. package/dist/{chunk-LIGDPFDM.cjs → chunk-XW6WSW36.cjs} +771 -771
  26. package/dist/{chunk-4WNBVNGP.cjs → chunk-Y7AZCDLZ.cjs} +20 -20
  27. package/dist/{chunk-SDOCZTST.cjs → chunk-Z6TUOE6L.cjs} +41 -41
  28. package/dist/{chunk-RVLQHSID.cjs → chunk-ZGADZHLD.cjs} +101 -101
  29. package/dist/{chunk-MU7FFN6M.cjs → chunk-ZJ77IOMY.cjs} +83 -83
  30. package/dist/{cloud-tenants-JDPC2DYF.cjs → cloud-tenants-7LTS4DAP.cjs} +11 -11
  31. package/dist/components/case-studies/index.cjs +24 -24
  32. package/dist/components/chat/chat-dialog-menu-items.js +6 -6
  33. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  34. package/dist/components/chat/chat-message-enhanced.js +3 -0
  35. package/dist/components/chat/chat-panel-context.d.ts +3 -0
  36. package/dist/components/chat/chat-panel-context.d.ts.map +1 -1
  37. package/dist/components/chat/embeddable-chat.d.ts +20 -0
  38. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  39. package/dist/components/chat/embeddable-chat.js +78 -8
  40. package/dist/components/chat/hooks/index.d.ts +1 -0
  41. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  42. package/dist/components/chat/hooks/index.js +1 -0
  43. package/dist/components/chat/hooks/use-what-to-ask.d.ts +69 -0
  44. package/dist/components/chat/hooks/use-what-to-ask.d.ts.map +1 -0
  45. package/dist/components/chat/hooks/use-what-to-ask.js +106 -0
  46. package/dist/components/chat/index.cjs +15 -7
  47. package/dist/components/chat/index.d.ts +1 -0
  48. package/dist/components/chat/index.d.ts.map +1 -1
  49. package/dist/components/chat/index.js +1 -0
  50. package/dist/components/chat/mingo-chat-header.d.ts +4 -2
  51. package/dist/components/chat/mingo-chat-header.d.ts.map +1 -1
  52. package/dist/components/chat/mingo-chat-header.js +7 -2
  53. package/dist/components/chat/suggestions-display.d.ts +11 -0
  54. package/dist/components/chat/suggestions-display.d.ts.map +1 -0
  55. package/dist/components/chat/suggestions-display.js +27 -0
  56. package/dist/components/chat/types/message.types.d.ts +27 -1
  57. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  58. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  59. package/dist/components/chat/utils/extract-incomplete-message-state.js +2 -0
  60. package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
  61. package/dist/components/chat/utils/message-segment-accumulator.js +3 -0
  62. package/dist/components/contact/index.cjs +12 -12
  63. package/dist/components/docs/index.cjs +15 -15
  64. package/dist/components/embeds/index.cjs +12 -12
  65. package/dist/components/faq/index.cjs +13 -13
  66. package/dist/components/features/index.cjs +11 -11
  67. package/dist/components/help-center-pages/index.cjs +112 -112
  68. package/dist/components/index.cjs +69 -61
  69. package/dist/components/loading/loading-region.d.ts.map +1 -1
  70. package/dist/components/loading/loading-region.js +2 -5
  71. package/dist/components/loading/unified-skeleton.d.ts +2 -0
  72. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  73. package/dist/components/loading/unified-skeleton.js +5 -0
  74. package/dist/components/meeting-scheduler/index.cjs +72 -72
  75. package/dist/components/navigation/index.cjs +14 -14
  76. package/dist/components/onboarding-guides/index.cjs +14 -14
  77. package/dist/components/product-demo/index.cjs +12 -12
  78. package/dist/components/related-content/index.cjs +7 -7
  79. package/dist/components/tickets/index.cjs +17 -17
  80. package/dist/components/ui/file-manager/index.cjs +30 -30
  81. package/dist/components/ui/index.cjs +19 -11
  82. package/dist/{devices-ADQWD37J.cjs → devices-CGDJAYRB.cjs} +12 -12
  83. package/dist/{embeddable-chat-7YF2JMPS.cjs → embeddable-chat-CMEHSDV7.cjs} +165 -93
  84. package/dist/index.cjs +23 -15
  85. package/dist/{knowledge-TNS64EGK.cjs → knowledge-X5I4QJKV.cjs} +12 -12
  86. package/dist/{logs-754MDDE4.cjs → logs-GDGIRJFI.cjs} +19 -19
  87. package/dist/{policies-Q23DPIH6.cjs → policies-2UOCENDX.cjs} +15 -15
  88. package/dist/{remote-session-ZKP2W3IS.cjs → remote-session-57DGC4X3.cjs} +6 -6
  89. package/dist/{scripts-DCYLK2RZ.cjs → scripts-AS4GEG6L.cjs} +18 -18
  90. package/dist/{software-update-XCMGUIER.cjs → software-update-ADPUFMFY.cjs} +15 -15
  91. package/dist/{tickets-board-BNW4AYFL.cjs → tickets-board-EP6L3BSV.cjs} +7 -7
  92. package/package.json +1 -1
  93. package/src/components/chat/chat-dialog-menu-items.tsx +6 -6
  94. package/src/components/chat/chat-message-enhanced.tsx +3 -0
  95. package/src/components/chat/chat-panel-context.tsx +3 -0
  96. package/src/components/chat/embeddable-chat.tsx +132 -9
  97. package/src/components/chat/hooks/index.ts +1 -0
  98. package/src/components/chat/hooks/use-what-to-ask.ts +203 -0
  99. package/src/components/chat/index.ts +1 -0
  100. package/src/components/chat/mingo-chat-header.tsx +11 -4
  101. package/src/components/chat/suggestions-display.tsx +41 -0
  102. package/src/components/chat/types/message.types.ts +31 -1
  103. package/src/components/chat/utils/extract-incomplete-message-state.ts +2 -0
  104. package/src/components/chat/utils/message-segment-accumulator.ts +4 -0
  105. package/src/components/loading/loading-region.tsx +4 -9
  106. package/src/components/loading/unified-skeleton.tsx +13 -0
@@ -315,7 +315,7 @@ var _chunkWWUSFOJ7cjs = require('./chunk-WWUSFOJ7.cjs');
315
315
 
316
316
 
317
317
 
318
- var _chunkOFO75R2Ocjs = require('./chunk-OFO75R2O.cjs');
318
+ var _chunk7Z4EQOIXcjs = require('./chunk-7Z4EQOIX.cjs');
319
319
 
320
320
 
321
321
  var _chunkL2IQESTQcjs = require('./chunk-L2IQESTQ.cjs');
@@ -359,7 +359,7 @@ var _chunkK6VWTUCHcjs = require('./chunk-K6VWTUCH.cjs');
359
359
  var _chunkZ74QE57Tcjs = require('./chunk-Z74QE57T.cjs');
360
360
 
361
361
 
362
- var _chunkUGCRLRCTcjs = require('./chunk-UGCRLRCT.cjs');
362
+ var _chunkNO5UJLLQcjs = require('./chunk-NO5UJLLQ.cjs');
363
363
 
364
364
 
365
365
  var _chunk2QMBXGMQcjs = require('./chunk-2QMBXGMQ.cjs');
@@ -379,7 +379,7 @@ var _chunkRB6BSE3Ocjs = require('./chunk-RB6BSE3O.cjs');
379
379
 
380
380
 
381
381
 
382
- var _chunk2YXOD2KLcjs = require('./chunk-2YXOD2KL.cjs');
382
+ var _chunkH3RYUTNDcjs = require('./chunk-H3RYUTND.cjs');
383
383
 
384
384
 
385
385
  var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
@@ -3786,6 +3786,197 @@ var AskDisplay = _react.forwardRef.call(void 0, ({ className, cards: cards2, onS
3786
3786
  });
3787
3787
  AskDisplay.displayName = "AskDisplay";
3788
3788
 
3789
+ // src/components/chat/chat-panel-context.tsx
3790
+
3791
+ var ChatPanelContext = _react.createContext.call(void 0, null);
3792
+ function useChatPanel() {
3793
+ return _react.useContext.call(void 0, ChatPanelContext);
3794
+ }
3795
+
3796
+ // src/components/chat/quick-action-chip.tsx
3797
+
3798
+
3799
+ var AGENT_ACCENTS = { fae: "pink", mingo: "cyan" };
3800
+ function getAgentAccent(slug) {
3801
+ return slug === "fae" || slug === "mingo" ? AGENT_ACCENTS[slug] : void 0;
3802
+ }
3803
+ function accentFromIdentityIcon(icon) {
3804
+ const color = _optionalChain([icon, 'optionalAccess', _62 => _62.props, 'optionalAccess', _63 => _63.color]);
3805
+ return typeof color === "string" && color.length > 0 ? color : void 0;
3806
+ }
3807
+ var ACCENT_CLASS = {
3808
+ pink: "text-ods-flamingo-pink",
3809
+ cyan: "text-ods-flamingo-cyan"
3810
+ };
3811
+ function isQuickActionIconSpec(icon) {
3812
+ return typeof icon === "object" && icon !== null && !Array.isArray(icon) && !_react.isValidElement.call(void 0, icon);
3813
+ }
3814
+ function renderQuickActionIcon(icon) {
3815
+ if (!isQuickActionIconSpec(icon)) {
3816
+ return icon;
3817
+ }
3818
+ const spec = icon;
3819
+ if (!spec.name && !spec.url) return void 0;
3820
+ const accentClass = spec.accent ? ACCENT_CLASS[spec.accent] : void 0;
3821
+ const props = spec.accent && !accentClass ? { color: spec.accent, ..._nullishCoalesce(spec.props, () => ( {})) } : spec.props;
3822
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.EntityIcon, { icon: { name: spec.name, url: spec.url, props }, size: _nullishCoalesce(spec.size, () => ( 16)), className: accentClass });
3823
+ }
3824
+ function composeChipLabel(label, lozenge) {
3825
+ if (!lozenge) return label;
3826
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3827
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3828
+ "span",
3829
+ {
3830
+ className: _chunk3ATAYP36cjs.cn.call(void 0,
3831
+ // -translate-y-[1px]: align-middle centers on x-height, but the chip
3832
+ // labels are uppercase (no descenders), so the lozenge reads ~1px low
3833
+ // against the caps' optical center (measured 9.1px above / 6.9px
3834
+ // below in the 32px Tag). Keep QuickActionChipSkeleton's lozenge bar
3835
+ // offset in lockstep.
3836
+ "mr-2 inline-flex -translate-y-[1px] items-center rounded px-[5px] py-[3px] align-middle font-bold uppercase text-h6",
3837
+ lozenge.className
3838
+ ),
3839
+ style: { background: "color-mix(in srgb, currentColor 14%, transparent)" },
3840
+ children: lozenge.label
3841
+ }
3842
+ ),
3843
+ label
3844
+ ] });
3845
+ }
3846
+ function QuickActionChipSkeleton({
3847
+ labelCh = 16,
3848
+ icon = true,
3849
+ lozenge = false,
3850
+ size = "default",
3851
+ variant = "outline",
3852
+ className
3853
+ }) {
3854
+ const question = variant === "question";
3855
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3856
+ _chunkJHQNUWFMcjs.Tag,
3857
+ {
3858
+ variant: "outline",
3859
+ size: question ? "sentence" : size,
3860
+ className: _chunk3ATAYP36cjs.cn.call(void 0, question && "max-w-full", className),
3861
+ icon: icon && !question ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", "aria-hidden": true, className: size === "large" ? "block size-5" : "block size-4" }) : void 0,
3862
+ label: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3863
+ lozenge && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", "aria-hidden": true, className: "mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" }),
3864
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3865
+ _chunkH3RYUTNDcjs.UnifiedSkeleton,
3866
+ {
3867
+ as: "span",
3868
+ "aria-hidden": true,
3869
+ className: "inline-block h-[0.9em] translate-y-[0.08em]",
3870
+ width: `${labelCh}ch`
3871
+ }
3872
+ )
3873
+ ] })
3874
+ }
3875
+ );
3876
+ }
3877
+ function QuickActionChipButton({
3878
+ label,
3879
+ icon,
3880
+ theme,
3881
+ lozenge,
3882
+ variant = "outline",
3883
+ selected = false,
3884
+ selectedAccent,
3885
+ size = "default",
3886
+ onSelect,
3887
+ onHoverStart,
3888
+ onHoverEnd,
3889
+ interactive = true,
3890
+ className
3891
+ }) {
3892
+ const themedIcon = theme && isQuickActionIconSpec(icon) && !icon.accent ? { ...icon, accent: theme.accent } : icon;
3893
+ const resolvedLozenge = lozenge === true ? _optionalChain([theme, 'optionalAccess', _64 => _64.lozenge]) : lozenge === false ? void 0 : lozenge;
3894
+ const resolvedIcon = renderQuickActionIcon(themedIcon);
3895
+ const resolvedLabel = composeChipLabel(label, resolvedLozenge);
3896
+ const question = variant === "question";
3897
+ const tagVariant = selected ? selectedAccent === "cyan" ? "selectedCyan" : "selected" : question ? "outline" : variant;
3898
+ const tagSize = question ? "sentence" : size;
3899
+ if (!interactive) {
3900
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJHQNUWFMcjs.Tag, { variant: tagVariant, size: tagSize, icon: resolvedIcon, label: resolvedLabel, className });
3901
+ }
3902
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3903
+ "button",
3904
+ {
3905
+ type: "button",
3906
+ onClick: onSelect,
3907
+ onMouseEnter: onHoverStart,
3908
+ onMouseLeave: onHoverEnd,
3909
+ onFocus: onHoverStart,
3910
+ onBlur: onHoverEnd,
3911
+ "aria-pressed": selected || void 0,
3912
+ className: _chunk3ATAYP36cjs.cn.call(void 0,
3913
+ "rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
3914
+ // A question may be longer than a narrow column: it shrinks and clips there, read from its start.
3915
+ question ? "min-w-0 max-w-full text-left" : "shrink-0",
3916
+ className
3917
+ ),
3918
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3919
+ _chunkJHQNUWFMcjs.Tag,
3920
+ {
3921
+ variant: tagVariant,
3922
+ size: tagSize,
3923
+ icon: resolvedIcon,
3924
+ label: resolvedLabel,
3925
+ className: question ? "max-w-full" : void 0
3926
+ }
3927
+ )
3928
+ }
3929
+ );
3930
+ }
3931
+ function QuickActionChipFromData({
3932
+ chip,
3933
+ defaultTheme,
3934
+ defaultLozenge,
3935
+ interactive = true,
3936
+ className
3937
+ }) {
3938
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3939
+ QuickActionChipButton,
3940
+ {
3941
+ label: chip.label,
3942
+ icon: chip.icon,
3943
+ theme: _nullishCoalesce(chip.theme, () => ( defaultTheme)),
3944
+ lozenge: _nullishCoalesce(chip.lozenge, () => ( (defaultLozenge || void 0))),
3945
+ variant: _nullishCoalesce(chip.variant, () => ( "outline")),
3946
+ selected: chip.selected,
3947
+ selectedAccent: chip.selectedAccent,
3948
+ onSelect: chip.onSelect,
3949
+ onHoverStart: chip.onHoverStart,
3950
+ onHoverEnd: chip.onHoverEnd,
3951
+ interactive,
3952
+ className
3953
+ }
3954
+ );
3955
+ }
3956
+
3957
+ // src/components/chat/suggestions-display.tsx
3958
+
3959
+ function SuggestionsDisplay({ segment }) {
3960
+ const panel = useChatPanel();
3961
+ const pick = _nullishCoalesce(segment.onPick, () => ( _optionalChain([panel, 'optionalAccess', _65 => _65.sendPrompt])));
3962
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-sf)]", children: [
3963
+ segment.groups.map((group) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xs)]", children: [
3964
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h5", children: group.label }),
3965
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 flex-wrap gap-[var(--spacing-system-xs)]", children: group.prompts.map((prompt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3966
+ QuickActionChipButton,
3967
+ {
3968
+ variant: "question",
3969
+ label: prompt.label,
3970
+ icon: prompt.icon,
3971
+ onSelect: pick ? () => pick(_nullishCoalesce(prompt.prompt, () => ( prompt.label))) : void 0
3972
+ },
3973
+ prompt.label
3974
+ )) })
3975
+ ] }, group.label)),
3976
+ segment.note && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: segment.note })
3977
+ ] });
3978
+ }
3979
+
3789
3980
  // src/components/chat/error-message-display.tsx
3790
3981
 
3791
3982
 
@@ -3923,12 +4114,12 @@ function MspOrganizationCardSkeleton({ className }) {
3923
4114
  className
3924
4115
  ),
3925
4116
  children: [
3926
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "size-12 shrink-0 rounded-md" }),
4117
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "size-12 shrink-0 rounded-md" }),
3927
4118
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-2 self-stretch", children: [
3928
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-3/5 rounded-md" }),
3929
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-4 w-2/5 rounded-md" })
4119
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/5 rounded-md" }),
4120
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-2/5 rounded-md" })
3930
4121
  ] }),
3931
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "size-12 shrink-0 rounded-md" })
4122
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "size-12 shrink-0 rounded-md" })
3932
4123
  ]
3933
4124
  }
3934
4125
  );
@@ -4028,10 +4219,10 @@ var ChatHeader = _react.forwardRef.call(void 0,
4028
4219
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: cardClasses, children: [
4029
4220
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
4030
4221
  isLoading ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
4031
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-16 w-16 shrink-0 rounded-full" }),
4222
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-16 w-16 shrink-0 rounded-full" }),
4032
4223
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1", children: [
4033
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-6 w-40" }),
4034
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-4 w-28" })
4224
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-6 w-40" }),
4225
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-4 w-28" })
4035
4226
  ] })
4036
4227
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
4037
4228
  userIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-ods-accent", children: userIcon }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -4199,7 +4390,7 @@ function ContextItemsSkeleton({ count }) {
4199
4390
  "div",
4200
4391
  {
4201
4392
  className: "flex items-center border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 last:border-b-0",
4202
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-1/2" })
4393
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-1/2" })
4203
4394
  },
4204
4395
  `ctx-skeleton-${i}`
4205
4396
  )) });
@@ -4251,7 +4442,7 @@ function ContextItemsList({
4251
4442
  );
4252
4443
  }),
4253
4444
  loadingMore && // `contents`: the rows stay the list's own rows; the region only adds the one announcement.
4254
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUGCRLRCTcjs.LoadingRegion, { label: "Loading more items", className: "contents", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextItemsSkeleton, { count: 3 }) })
4445
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNO5UJLLQcjs.LoadingRegion, { label: "Loading more items", className: "contents", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextItemsSkeleton, { count: 3 }) })
4255
4446
  ]
4256
4447
  }
4257
4448
  );
@@ -4351,7 +4542,7 @@ function ChatContextPicker({
4351
4542
  if (!open) return void 0;
4352
4543
  const onDocDown = (e) => {
4353
4544
  const target = e.target;
4354
- if (_optionalChain([rootRef, 'access', _62 => _62.current, 'optionalAccess', _63 => _63.contains, 'call', _64 => _64(target)]) || _optionalChain([target, 'optionalAccess', _65 => _65.closest, 'optionalCall', _66 => _66("[data-context-trigger]")])) return;
4545
+ if (_optionalChain([rootRef, 'access', _66 => _66.current, 'optionalAccess', _67 => _67.contains, 'call', _68 => _68(target)]) || _optionalChain([target, 'optionalAccess', _69 => _69.closest, 'optionalCall', _70 => _70("[data-context-trigger]")])) return;
4355
4546
  onClose();
4356
4547
  };
4357
4548
  document.addEventListener("mousedown", onDocDown);
@@ -4359,7 +4550,7 @@ function ChatContextPicker({
4359
4550
  }, [open, onClose]);
4360
4551
  _react.useEffect.call(void 0, () => {
4361
4552
  if (!open || view !== "items") return void 0;
4362
- const id = requestAnimationFrame(() => _optionalChain([searchRef, 'access', _67 => _67.current, 'optionalAccess', _68 => _68.focus, 'call', _69 => _69()]));
4553
+ const id = requestAnimationFrame(() => _optionalChain([searchRef, 'access', _71 => _71.current, 'optionalAccess', _72 => _72.focus, 'call', _73 => _73()]));
4363
4554
  return () => cancelAnimationFrame(id);
4364
4555
  }, [open, view]);
4365
4556
  _react.useEffect.call(void 0, () => {
@@ -4441,7 +4632,7 @@ function ChatContextPicker({
4441
4632
  {
4442
4633
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA65PRT7Fcjs.Upload02Icon, { size: 24 }),
4443
4634
  label: "Upload File",
4444
- onClick: () => _optionalChain([config, 'access', _70 => _70.onUploadFile, 'optionalCall', _71 => _71()])
4635
+ onClick: () => _optionalChain([config, 'access', _74 => _74.onUploadFile, 'optionalCall', _75 => _75()])
4445
4636
  }
4446
4637
  ),
4447
4638
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextMenuRow, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGAENV6K7cjs.PackagePlusIcon, { size: 24 }), label: "Assign Item", onClick: () => setView("types") })
@@ -4506,7 +4697,7 @@ function ChatContextPicker({
4506
4697
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4507
4698
  _react.Suspense,
4508
4699
  {
4509
- fallback: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUGCRLRCTcjs.LoadingRegion, { label: "Loading items", className: "max-h-[340px] overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextItemsSkeleton, { count: ITEMS_SKELETON_ROWS }) }),
4700
+ fallback: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNO5UJLLQcjs.LoadingRegion, { label: "Loading items", className: "max-h-[340px] overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextItemsSkeleton, { count: ITEMS_SKELETON_ROWS }) }),
4510
4701
  children: config.renderItems({
4511
4702
  type: activeType.type,
4512
4703
  query: debouncedQuery,
@@ -4536,7 +4727,7 @@ function ChatContextChipStrip({
4536
4727
  // `tag` pills (Figma 1:6073): 32px tall, card surface, bordered, mono-
4537
4728
  // uppercase label, 16px lead icon + xmark-circle remove. Wraps to new rows.
4538
4729
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-wrap content-center items-center gap-2", className), children: items.map((item) => {
4539
- const hostNode = _optionalChain([renderItem, 'optionalCall', _72 => _72(item)]);
4730
+ const hostNode = _optionalChain([renderItem, 'optionalCall', _76 => _76(item)]);
4540
4731
  if (hostNode != null) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Fragment, { children: hostNode }, itemKey2(item));
4541
4732
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4542
4733
  "div",
@@ -4681,7 +4872,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
4681
4872
  const isExecuting = message.type === "EXECUTING_TOOL";
4682
4873
  const isExecuted = message.type === "EXECUTED_TOOL";
4683
4874
  const integratedToolType = message.integratedToolType || "OPENFRAME";
4684
- const previewText = variant === "client" ? _optionalChain([message, 'access', _73 => _73.toolExplanation, 'optionalAccess', _74 => _74.trim, 'call', _75 => _75()]) : _optionalChain([message, 'access', _76 => _76.toolTitle, 'optionalAccess', _77 => _77.trim, 'call', _78 => _78()]);
4875
+ const previewText = variant === "client" ? _optionalChain([message, 'access', _77 => _77.toolExplanation, 'optionalAccess', _78 => _78.trim, 'call', _79 => _79()]) : _optionalChain([message, 'access', _80 => _80.toolTitle, 'optionalAccess', _81 => _81.trim, 'call', _82 => _82()]);
4685
4876
  const argEntries = _react.useMemo.call(void 0, () => {
4686
4877
  if (!message.parameters || typeof message.parameters !== "object") return [];
4687
4878
  const entries = Object.entries(message.parameters).filter(([, v]) => v !== null && v !== void 0 && v !== "");
@@ -4704,7 +4895,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
4704
4895
  return null;
4705
4896
  };
4706
4897
  const statusTone = isExecuting ? "working" : message.success === false ? "error" : "success";
4707
- const statusLabel = _optionalChain([message, 'access', _79 => _79.statusLabel, 'optionalAccess', _80 => _80.trim, 'call', _81 => _81()]) || (isExecuting ? "Working on it" : message.success === false ? "Failed" : "Done");
4898
+ const statusLabel = _optionalChain([message, 'access', _83 => _83.statusLabel, 'optionalAccess', _84 => _84.trim, 'call', _85 => _85()]) || (isExecuting ? "Working on it" : message.success === false ? "Failed" : "Done");
4708
4899
  const headerContent = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4709
4900
  !isClient && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWI2OTGKCcjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
4710
4901
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -4830,7 +5021,7 @@ function groupAskRuns(segments) {
4830
5021
  runs.set(index, [segment]);
4831
5022
  return;
4832
5023
  }
4833
- _optionalChain([runs, 'access', _82 => _82.get, 'call', _83 => _83(headIndex), 'optionalAccess', _84 => _84.push, 'call', _85 => _85(segment)]);
5024
+ _optionalChain([runs, 'access', _86 => _86.get, 'call', _87 => _87(headIndex), 'optionalAccess', _88 => _88.push, 'call', _89 => _89(segment)]);
4834
5025
  });
4835
5026
  return runs;
4836
5027
  }
@@ -4964,7 +5155,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
4964
5155
  }, [hasMarkerSupport, renderEntityCard, refByKey, segments]);
4965
5156
  _react.useEffect.call(void 0, () => {
4966
5157
  const cache = renderedCardNodeCache.current;
4967
- const usedKeys = _optionalChain([renderingPlan, 'optionalAccess', _86 => _86.usedKeys]);
5158
+ const usedKeys = _optionalChain([renderingPlan, 'optionalAccess', _90 => _90.usedKeys]);
4968
5159
  if (!usedKeys) return;
4969
5160
  if (cache.size <= usedKeys.size) return;
4970
5161
  for (const k of [...cache.keys()]) {
@@ -4987,7 +5178,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
4987
5178
  const sepIdx = stripped.indexOf(":");
4988
5179
  const marker = sepIdx === -1 ? stripped : stripped.slice(0, sepIdx);
4989
5180
  const id = sepIdx === -1 ? "" : stripped.slice(sepIdx + 1);
4990
- const node = _optionalChain([renderMention, 'optionalCall', _87 => _87({ marker, id })]);
5181
+ const node = _optionalChain([renderMention, 'optionalCall', _91 => _91({ marker, id })]);
4991
5182
  if (node != null) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: node });
4992
5183
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary opacity-60", children });
4993
5184
  }
@@ -4998,7 +5189,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
4998
5189
  const cardType = stripped.slice(0, sepIdx);
4999
5190
  const cardId = stripped.slice(sepIdx + 1);
5000
5191
  const key = `${cardType}:${cardId}`;
5001
- const inline = _optionalChain([renderingPlanRef, 'access', _88 => _88.current, 'optionalAccess', _89 => _89.inlineByKey, 'access', _90 => _90.get, 'call', _91 => _91(key)]);
5192
+ const inline = _optionalChain([renderingPlanRef, 'access', _92 => _92.current, 'optionalAccess', _93 => _93.inlineByKey, 'access', _94 => _94.get, 'call', _95 => _95(key)]);
5002
5193
  if (inline != null) return inline;
5003
5194
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary opacity-60", children: cardId });
5004
5195
  }
@@ -5011,7 +5202,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
5011
5202
  };
5012
5203
  }, [hasMarkerSupport, hasMentionSupport, renderMention, NavLinkAnchor]);
5013
5204
  const renderSegmentBody = (segIndex, text2, isStreaming) => {
5014
- const parts = _optionalChain([renderingPlan, 'optionalAccess', _92 => _92.partsBySegment, 'access', _93 => _93.get, 'call', _94 => _94(segIndex)]);
5205
+ const parts = _optionalChain([renderingPlan, 'optionalAccess', _96 => _96.partsBySegment, 'access', _97 => _97.get, 'call', _98 => _98(segIndex)]);
5015
5206
  if (!parts || parts.length === 0) {
5016
5207
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5017
5208
  SimpleMarkdownRenderer,
@@ -5102,6 +5293,8 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
5102
5293
  const run = askRuns.get(index);
5103
5294
  if (!run) return null;
5104
5295
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AskDisplay, { cards: run, onSelect: onAskSelect }, index);
5296
+ } else if (segment.type === "suggestions") {
5297
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SuggestionsDisplay, { segment }, index);
5105
5298
  } else if (segment.type === "tool_execution") {
5106
5299
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5107
5300
  ToolExecutionDisplay,
@@ -5183,7 +5376,7 @@ var ChatMessageEnhanced = _react.forwardRef.call(void 0,
5183
5376
  );
5184
5377
  ChatMessageEnhanced.displayName = "ChatMessageEnhanced";
5185
5378
  var MemoizedChatMessageEnhanced = _react.memo.call(void 0, ChatMessageEnhanced, (prevProps, nextProps) => {
5186
- return prevProps.role === nextProps.role && prevProps.content === nextProps.content && prevProps.name === nextProps.name && prevProps.avatar === nextProps.avatar && prevProps.isTyping === nextProps.isTyping && _optionalChain([prevProps, 'access', _95 => _95.timestamp, 'optionalAccess', _96 => _96.getTime, 'call', _97 => _97()]) === _optionalChain([nextProps, 'access', _98 => _98.timestamp, 'optionalAccess', _99 => _99.getTime, 'call', _100 => _100()]) && prevProps.showAvatar === nextProps.showAvatar && prevProps.assistantType === nextProps.assistantType && prevProps.approvalVariant === nextProps.approvalVariant && prevProps.appearance === nextProps.appearance && prevProps.authorType === nextProps.authorType && prevProps.assistantIcon === nextProps.assistantIcon && prevProps.className === nextProps.className && // Reference equality — the host re-uses the same array instance per
5379
+ return prevProps.role === nextProps.role && prevProps.content === nextProps.content && prevProps.name === nextProps.name && prevProps.avatar === nextProps.avatar && prevProps.isTyping === nextProps.isTyping && _optionalChain([prevProps, 'access', _99 => _99.timestamp, 'optionalAccess', _100 => _100.getTime, 'call', _101 => _101()]) === _optionalChain([nextProps, 'access', _102 => _102.timestamp, 'optionalAccess', _103 => _103.getTime, 'call', _104 => _104()]) && prevProps.showAvatar === nextProps.showAvatar && prevProps.assistantType === nextProps.assistantType && prevProps.approvalVariant === nextProps.approvalVariant && prevProps.appearance === nextProps.appearance && prevProps.authorType === nextProps.authorType && prevProps.assistantIcon === nextProps.assistantIcon && prevProps.className === nextProps.className && // Reference equality — the host re-uses the same array instance per
5187
5380
  // message (it's set once on the optimistic send and never mutated).
5188
5381
  prevProps.contextItems === nextProps.contextItems && prevProps.resolveContextIcon === nextProps.resolveContextIcon && prevProps.renderContextItem === nextProps.renderContextItem && // Host keeps this stable (module const / useCallback), so reference
5189
5382
  // equality holds across streaming chunks.
@@ -5209,11 +5402,11 @@ function ChatMessageSkeleton({
5209
5402
  const lines = Math.max(1, bodyLines);
5210
5403
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "relative py-[var(--spacing-system-s)]", className), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
5211
5404
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
5212
- showAvatar && !isUser && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-8 w-8 flex-shrink-0 rounded-full" }),
5213
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-32 rounded" }),
5214
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "ml-auto h-4 w-14 rounded" })
5405
+ showAvatar && !isUser && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-8 w-8 flex-shrink-0 rounded-full" }),
5406
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-32 rounded" }),
5407
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "ml-auto h-4 w-14 rounded" })
5215
5408
  ] }),
5216
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-2 pt-[var(--spacing-system-xxs)]", children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-4 rounded", bodyLineWidth(i, lines)) }, i)) })
5409
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-2 pt-[var(--spacing-system-xxs)]", children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-4 rounded", bodyLineWidth(i, lines)) }, i)) })
5217
5410
  ] }) });
5218
5411
  }
5219
5412
  function ChatMessageListSkeleton({
@@ -5230,7 +5423,7 @@ function ChatMessageListSkeleton({
5230
5423
  id: index,
5231
5424
  isUser: index % 3 === 0
5232
5425
  }));
5233
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUGCRLRCTcjs.LoadingRegion, { label: "Loading messages", announce: region, className: "relative flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5426
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNO5UJLLQcjs.LoadingRegion, { label: "Loading messages", announce: region, className: "relative flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5234
5427
  "div",
5235
5428
  {
5236
5429
  className: _chunk3ATAYP36cjs.cn.call(void 0,
@@ -5449,7 +5642,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5449
5642
  const prevCount = prevRenderRef.current.messageCount;
5450
5643
  const prevLastId = prevRenderRef.current.lastMessageId;
5451
5644
  const newCount = messages.length;
5452
- const currentLastId = _optionalChain([messages, 'access', _101 => _101[messages.length - 1], 'optionalAccess', _102 => _102.id]);
5645
+ const currentLastId = _optionalChain([messages, 'access', _105 => _105[messages.length - 1], 'optionalAccess', _106 => _106.id]);
5453
5646
  prevRenderRef.current = { dialogId, messageCount: newCount, lastMessageId: currentLastId };
5454
5647
  if (dialogChanged) {
5455
5648
  followBottomRef.current = true;
@@ -5530,10 +5723,10 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5530
5723
  };
5531
5724
  let touchY = null;
5532
5725
  const onTouchStart = (e) => {
5533
- touchY = _nullishCoalesce(_optionalChain([e, 'access', _103 => _103.touches, 'access', _104 => _104[0], 'optionalAccess', _105 => _105.clientY]), () => ( null));
5726
+ touchY = _nullishCoalesce(_optionalChain([e, 'access', _107 => _107.touches, 'access', _108 => _108[0], 'optionalAccess', _109 => _109.clientY]), () => ( null));
5534
5727
  };
5535
5728
  const onTouchMove = (e) => {
5536
- const y = _optionalChain([e, 'access', _106 => _106.touches, 'access', _107 => _107[0], 'optionalAccess', _108 => _108.clientY]);
5729
+ const y = _optionalChain([e, 'access', _110 => _110.touches, 'access', _111 => _111[0], 'optionalAccess', _112 => _112.clientY]);
5537
5730
  if (y == null || touchY == null) return;
5538
5731
  if (y > touchY) disarm();
5539
5732
  touchY = y;
@@ -5591,7 +5784,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5591
5784
  };
5592
5785
  }, [autoScroll, scrollRef, contentRef, scrollToBottom, stopScroll, isLoading]);
5593
5786
  _react.useEffect.call(void 0, () => {
5594
- _optionalChain([kickGrowthWatchRef, 'access', _109 => _109.current, 'optionalCall', _110 => _110()]);
5787
+ _optionalChain([kickGrowthWatchRef, 'access', _113 => _113.current, 'optionalCall', _114 => _114()]);
5595
5788
  }, [messages, isTyping]);
5596
5789
  const pinPrevHeightRef = _react.useRef.call(void 0, 0);
5597
5790
  _react.useLayoutEffect.call(void 0, () => {
@@ -5670,7 +5863,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5670
5863
  ro.observe(node);
5671
5864
  const timer = setTimeout(() => {
5672
5865
  ro.disconnect();
5673
- if (_optionalChain([anchorWatcherRef, 'access', _111 => _111.current, 'optionalAccess', _112 => _112.id]) === last.id) {
5866
+ if (_optionalChain([anchorWatcherRef, 'access', _115 => _115.current, 'optionalAccess', _116 => _116.id]) === last.id) {
5674
5867
  anchorWatcherRef.current = null;
5675
5868
  }
5676
5869
  }, 2e3);
@@ -5700,7 +5893,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5700
5893
  scrollTop: el.scrollTop
5701
5894
  };
5702
5895
  }
5703
- _optionalChain([onLoadMoreRef, 'access', _113 => _113.current, 'optionalCall', _114 => _114()]);
5896
+ _optionalChain([onLoadMoreRef, 'access', _117 => _117.current, 'optionalCall', _118 => _118()]);
5704
5897
  }
5705
5898
  },
5706
5899
  { root: scrollContainer, rootMargin: "200px", threshold: 0.1 }
@@ -5734,8 +5927,8 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5734
5927
  );
5735
5928
  }
5736
5929
  const lastMessage = messages[messages.length - 1];
5737
- const lastSegments = Array.isArray(_optionalChain([lastMessage, 'optionalAccess', _115 => _115.content])) ? lastMessage.content : null;
5738
- const lastSegment = _optionalChain([lastSegments, 'optionalAccess', _116 => _116[lastSegments.length - 1]]);
5930
+ const lastSegments = Array.isArray(_optionalChain([lastMessage, 'optionalAccess', _119 => _119.content])) ? lastMessage.content : null;
5931
+ const lastSegment = _optionalChain([lastSegments, 'optionalAccess', _120 => _120[lastSegments.length - 1]]);
5739
5932
  const isPausedOnApproval = !!lastSegment && (lastSegment.type === "approval_request" || lastSegment.type === "approval_batch" || lastSegment.type === "escalation_offer") && (lastSegment.status === void 0 || lastSegment.status === "pending");
5740
5933
  const showStreamingLoader = isTyping && !isPausedOnApproval && !(pendingApprovals && pendingApprovals.length > 0);
5741
5934
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatAppearanceContext.Provider, { value: appearance, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP6F6PHVKcjs.OverlayOpenRegistryProvider, { onOpenChange: handleOverlayOpenChange, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-0 flex-1 flex-col", children: [
@@ -5778,7 +5971,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5778
5971
  if (message.hidden) return null;
5779
5972
  const isEmptyPendingTurn = index === messages.length - 1 && isTyping && message.role === "assistant" && !hasNonEmptyContent(message.content) && (!Array.isArray(message.content) || message.content.every((s) => s.type === "text"));
5780
5973
  if (isEmptyPendingTurn) return null;
5781
- const ownedContent = _optionalChain([renderAfterMessage, 'optionalCall', _117 => _117(message, index)]);
5974
+ const ownedContent = _optionalChain([renderAfterMessage, 'optionalCall', _121 => _121(message, index)]);
5782
5975
  const row = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5783
5976
  MemoizedChatMessageEnhanced,
5784
5977
  {
@@ -5881,167 +6074,6 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5881
6074
  );
5882
6075
  ChatMessageList.displayName = "ChatMessageList";
5883
6076
 
5884
- // src/components/chat/quick-action-chip.tsx
5885
-
5886
-
5887
- var AGENT_ACCENTS = { fae: "pink", mingo: "cyan" };
5888
- function getAgentAccent(slug) {
5889
- return slug === "fae" || slug === "mingo" ? AGENT_ACCENTS[slug] : void 0;
5890
- }
5891
- function accentFromIdentityIcon(icon) {
5892
- const color = _optionalChain([icon, 'optionalAccess', _118 => _118.props, 'optionalAccess', _119 => _119.color]);
5893
- return typeof color === "string" && color.length > 0 ? color : void 0;
5894
- }
5895
- var ACCENT_CLASS = {
5896
- pink: "text-ods-flamingo-pink",
5897
- cyan: "text-ods-flamingo-cyan"
5898
- };
5899
- function isQuickActionIconSpec(icon) {
5900
- return typeof icon === "object" && icon !== null && !Array.isArray(icon) && !_react.isValidElement.call(void 0, icon);
5901
- }
5902
- function renderQuickActionIcon(icon) {
5903
- if (!isQuickActionIconSpec(icon)) {
5904
- return icon;
5905
- }
5906
- const spec = icon;
5907
- if (!spec.name && !spec.url) return void 0;
5908
- const accentClass = spec.accent ? ACCENT_CLASS[spec.accent] : void 0;
5909
- const props = spec.accent && !accentClass ? { color: spec.accent, ..._nullishCoalesce(spec.props, () => ( {})) } : spec.props;
5910
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.EntityIcon, { icon: { name: spec.name, url: spec.url, props }, size: _nullishCoalesce(spec.size, () => ( 16)), className: accentClass });
5911
- }
5912
- function composeChipLabel(label, lozenge) {
5913
- if (!lozenge) return label;
5914
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
5915
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5916
- "span",
5917
- {
5918
- className: _chunk3ATAYP36cjs.cn.call(void 0,
5919
- // -translate-y-[1px]: align-middle centers on x-height, but the chip
5920
- // labels are uppercase (no descenders), so the lozenge reads ~1px low
5921
- // against the caps' optical center (measured 9.1px above / 6.9px
5922
- // below in the 32px Tag). Keep QuickActionChipSkeleton's lozenge bar
5923
- // offset in lockstep.
5924
- "mr-2 inline-flex -translate-y-[1px] items-center rounded px-[5px] py-[3px] align-middle font-bold uppercase text-h6",
5925
- lozenge.className
5926
- ),
5927
- style: { background: "color-mix(in srgb, currentColor 14%, transparent)" },
5928
- children: lozenge.label
5929
- }
5930
- ),
5931
- label
5932
- ] });
5933
- }
5934
- function QuickActionChipSkeleton({
5935
- labelCh = 16,
5936
- icon = true,
5937
- lozenge = false,
5938
- size = "default",
5939
- variant = "outline",
5940
- className
5941
- }) {
5942
- const question = variant === "question";
5943
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5944
- _chunkJHQNUWFMcjs.Tag,
5945
- {
5946
- variant: "outline",
5947
- size: question ? "sentence" : size,
5948
- className: _chunk3ATAYP36cjs.cn.call(void 0, question && "max-w-full", className),
5949
- icon: icon && !question ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", "aria-hidden": true, className: size === "large" ? "block size-5" : "block size-4" }) : void 0,
5950
- label: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
5951
- lozenge && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", "aria-hidden": true, className: "mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" }),
5952
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5953
- _chunk2YXOD2KLcjs.UnifiedSkeleton,
5954
- {
5955
- as: "span",
5956
- "aria-hidden": true,
5957
- className: "inline-block h-[0.9em] translate-y-[0.08em]",
5958
- width: `${labelCh}ch`
5959
- }
5960
- )
5961
- ] })
5962
- }
5963
- );
5964
- }
5965
- function QuickActionChipButton({
5966
- label,
5967
- icon,
5968
- theme,
5969
- lozenge,
5970
- variant = "outline",
5971
- selected = false,
5972
- selectedAccent,
5973
- size = "default",
5974
- onSelect,
5975
- onHoverStart,
5976
- onHoverEnd,
5977
- interactive = true,
5978
- className
5979
- }) {
5980
- const themedIcon = theme && isQuickActionIconSpec(icon) && !icon.accent ? { ...icon, accent: theme.accent } : icon;
5981
- const resolvedLozenge = lozenge === true ? _optionalChain([theme, 'optionalAccess', _120 => _120.lozenge]) : lozenge === false ? void 0 : lozenge;
5982
- const resolvedIcon = renderQuickActionIcon(themedIcon);
5983
- const resolvedLabel = composeChipLabel(label, resolvedLozenge);
5984
- const question = variant === "question";
5985
- const tagVariant = selected ? selectedAccent === "cyan" ? "selectedCyan" : "selected" : question ? "outline" : variant;
5986
- const tagSize = question ? "sentence" : size;
5987
- if (!interactive) {
5988
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJHQNUWFMcjs.Tag, { variant: tagVariant, size: tagSize, icon: resolvedIcon, label: resolvedLabel, className });
5989
- }
5990
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5991
- "button",
5992
- {
5993
- type: "button",
5994
- onClick: onSelect,
5995
- onMouseEnter: onHoverStart,
5996
- onMouseLeave: onHoverEnd,
5997
- onFocus: onHoverStart,
5998
- onBlur: onHoverEnd,
5999
- "aria-pressed": selected || void 0,
6000
- className: _chunk3ATAYP36cjs.cn.call(void 0,
6001
- "rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
6002
- // A question may be longer than a narrow column: it shrinks and clips there, read from its start.
6003
- question ? "min-w-0 max-w-full text-left" : "shrink-0",
6004
- className
6005
- ),
6006
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6007
- _chunkJHQNUWFMcjs.Tag,
6008
- {
6009
- variant: tagVariant,
6010
- size: tagSize,
6011
- icon: resolvedIcon,
6012
- label: resolvedLabel,
6013
- className: question ? "max-w-full" : void 0
6014
- }
6015
- )
6016
- }
6017
- );
6018
- }
6019
- function QuickActionChipFromData({
6020
- chip,
6021
- defaultTheme,
6022
- defaultLozenge,
6023
- interactive = true,
6024
- className
6025
- }) {
6026
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6027
- QuickActionChipButton,
6028
- {
6029
- label: chip.label,
6030
- icon: chip.icon,
6031
- theme: _nullishCoalesce(chip.theme, () => ( defaultTheme)),
6032
- lozenge: _nullishCoalesce(chip.lozenge, () => ( (defaultLozenge || void 0))),
6033
- variant: _nullishCoalesce(chip.variant, () => ( "outline")),
6034
- selected: chip.selected,
6035
- selectedAccent: chip.selectedAccent,
6036
- onSelect: chip.onSelect,
6037
- onHoverStart: chip.onHoverStart,
6038
- onHoverEnd: chip.onHoverEnd,
6039
- interactive,
6040
- className
6041
- }
6042
- );
6043
- }
6044
-
6045
6077
  // src/platform-domains.ts
6046
6078
  var PLATFORM_DOMAINS = [
6047
6079
  { key: "marketing-hub", defaultUrl: "https://marketing-hub.flamingo.so", envVar: "NEXT_PUBLIC_MARKETING_HUB_URL" },
@@ -6093,7 +6125,7 @@ function byKey(key) {
6093
6125
  return PLATFORM_DOMAINS.find((e) => e.key === key);
6094
6126
  }
6095
6127
  function envOverrideFor(key) {
6096
- const envVar = _optionalChain([byKey, 'call', _121 => _121(key), 'optionalAccess', _122 => _122.envVar]);
6128
+ const envVar = _optionalChain([byKey, 'call', _122 => _122(key), 'optionalAccess', _123 => _123.envVar]);
6097
6129
  if (!envVar) return null;
6098
6130
  return ENV_OVERRIDES[envVar] || null;
6099
6131
  }
@@ -6103,7 +6135,7 @@ function ensureScheme(url) {
6103
6135
  return `https://${trimmed.replace(/^\/+/, "")}`;
6104
6136
  }
6105
6137
  function getPlatformProductionUrl(platform) {
6106
- const resolved = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(envOverrideFor(platform), () => ( _optionalChain([byKey, 'call', _123 => _123(platform), 'optionalAccess', _124 => _124.defaultUrl]))), () => ( envOverrideFor("flamingo"))), () => ( "https://www.flamingo.run"));
6138
+ const resolved = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(envOverrideFor(platform), () => ( _optionalChain([byKey, 'call', _124 => _124(platform), 'optionalAccess', _125 => _125.defaultUrl]))), () => ( envOverrideFor("flamingo"))), () => ( "https://www.flamingo.run"));
6107
6139
  return ensureScheme(resolved);
6108
6140
  }
6109
6141
  function getPlatformUrl(platform, options = {}) {
@@ -6112,7 +6144,7 @@ function getPlatformUrl(platform, options = {}) {
6112
6144
  }
6113
6145
  function getDeploymentUrl(options) {
6114
6146
  if (typeof window !== "undefined") return window.location.origin;
6115
- const configured = _optionalChain([options, 'access', _125 => _125.configuredUrl, 'optionalAccess', _126 => _126.trim, 'call', _127 => _127()]);
6147
+ const configured = _optionalChain([options, 'access', _126 => _126.configuredUrl, 'optionalAccess', _127 => _127.trim, 'call', _128 => _128()]);
6116
6148
  if (configured) return ensureScheme(configured).replace(/\/+$/, "");
6117
6149
  if (process.env.VERCEL_ENV === "preview" && process.env.VERCEL_URL) {
6118
6150
  return ensureScheme(process.env.VERCEL_URL).replace(/\/+$/, "");
@@ -6134,7 +6166,7 @@ function getRequestOrigin(headers, options) {
6134
6166
  const host = headers.get("host");
6135
6167
  if (!host) return getDeploymentUrl(options);
6136
6168
  const local = LOCAL_HOSTNAME.test(host.replace(/:\d+$/, ""));
6137
- const proto = _optionalChain([headers, 'access', _128 => _128.get, 'call', _129 => _129("x-forwarded-proto"), 'optionalAccess', _130 => _130.split, 'call', _131 => _131(","), 'access', _132 => _132[0], 'access', _133 => _133.trim, 'call', _134 => _134()]) || (local ? "http" : "https");
6169
+ const proto = _optionalChain([headers, 'access', _129 => _129.get, 'call', _130 => _130("x-forwarded-proto"), 'optionalAccess', _131 => _131.split, 'call', _132 => _132(","), 'access', _133 => _133[0], 'access', _134 => _134.trim, 'call', _135 => _135()]) || (local ? "http" : "https");
6138
6170
  return `${proto}://${host}`;
6139
6171
  }
6140
6172
  function resolveRedirectTarget(origin, target) {
@@ -6163,7 +6195,7 @@ function toRegistrableBaseDomain(host) {
6163
6195
  return void 0;
6164
6196
  }
6165
6197
  function aliasHostsOf(key) {
6166
- return _nullishCoalesce(_optionalChain([byKey, 'call', _135 => _135(key), 'optionalAccess', _136 => _136.aliasHostnames]), () => ( []));
6198
+ return _nullishCoalesce(_optionalChain([byKey, 'call', _136 => _136(key), 'optionalAccess', _137 => _137.aliasHostnames]), () => ( []));
6167
6199
  }
6168
6200
  function hostsForEntry(entry, opts) {
6169
6201
  const resolved = hostOf(getPlatformProductionUrl(entry.key));
@@ -6459,13 +6491,13 @@ function recordCountLabel(count) {
6459
6491
  }
6460
6492
  function buildGroupedSource(spec) {
6461
6493
  const first = spec.rows[0];
6462
- const externalUrl = _nullishCoalesce(spec.externalUrl, () => ( _optionalChain([first, 'optionalAccess', _137 => _137.externalUrl])));
6463
- const targetPlatform = spec.targetPlatform !== void 0 ? spec.targetPlatform : _optionalChain([first, 'optionalAccess', _138 => _138.targetPlatform]);
6494
+ const externalUrl = _nullishCoalesce(spec.externalUrl, () => ( _optionalChain([first, 'optionalAccess', _138 => _138.externalUrl])));
6495
+ const targetPlatform = spec.targetPlatform !== void 0 ? spec.targetPlatform : _optionalChain([first, 'optionalAccess', _139 => _139.targetPlatform]);
6464
6496
  return {
6465
6497
  index: spec.index,
6466
6498
  name: `${getSourceLabel(spec.sourceRepo)} ${recordCountLabel(spec.rows.length)}`,
6467
- path: _nullishCoalesce(_optionalChain([first, 'optionalAccess', _139 => _139.path]), () => ( "")),
6468
- documentType: _nullishCoalesce(_optionalChain([first, 'optionalAccess', _140 => _140.documentType]), () => ( "")),
6499
+ path: _nullishCoalesce(_optionalChain([first, 'optionalAccess', _140 => _140.path]), () => ( "")),
6500
+ documentType: _nullishCoalesce(_optionalChain([first, 'optionalAccess', _141 => _141.documentType]), () => ( "")),
6469
6501
  ...externalUrl ? { externalUrl } : {},
6470
6502
  targetPlatform: _nullishCoalesce(targetPlatform, () => ( null)),
6471
6503
  sourceRepo: spec.sourceRepo,
@@ -6533,7 +6565,7 @@ function groupSourcesByTable(sources2) {
6533
6565
  index: source.index,
6534
6566
  sourceRepo: source.sourceRepo,
6535
6567
  rows: uniqueRows(members.flatMap(rowsOf)),
6536
- ..._optionalChain([serverChip, 'optionalAccess', _141 => _141.externalUrl]) ? { externalUrl: serverChip.externalUrl } : {},
6568
+ ..._optionalChain([serverChip, 'optionalAccess', _142 => _142.externalUrl]) ? { externalUrl: serverChip.externalUrl } : {},
6537
6569
  ...serverChip && serverChip.targetPlatform !== void 0 ? { targetPlatform: serverChip.targetPlatform } : {}
6538
6570
  })
6539
6571
  );
@@ -6581,7 +6613,7 @@ function formatChatAttachmentMarkdownForBubble(att, viewUrlPrefix) {
6581
6613
 
6582
6614
  [Attached: ${safeName}](${url})`;
6583
6615
  }
6584
- var CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = _chunkOFO75R2Ocjs.escapeRegExp.call(void 0, CHAT_ATTACHMENT_VIEW_URL_PREFIX);
6616
+ var CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = _chunk7Z4EQOIXcjs.escapeRegExp.call(void 0, CHAT_ATTACHMENT_VIEW_URL_PREFIX);
6585
6617
  var CHAT_ATTACHMENT_MARKDOWN_PATTERN = new RegExp(
6586
6618
  `^\\s*!?\\[[^\\]]*\\]\\(${CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED}[^)]+\\)\\s*$`,
6587
6619
  "gm"
@@ -6605,7 +6637,7 @@ var AUTO_CONTINUATION_DIRECTIVE_PREFIX = "[internal-auto-continuation]";
6605
6637
  function buildAutoContinuationDirective(toolName, opts = {}) {
6606
6638
  const ticketRef = opts.ticketId ? ` (ticket #${opts.ticketId})` : "";
6607
6639
  const ticketHash = opts.ticketId ? ` #${opts.ticketId}` : "";
6608
- const isClose = toolName === "update_ticket" && _optionalChain([opts, 'access', _142 => _142.status, 'optionalAccess', _143 => _143.toUpperCase, 'call', _144 => _144()]) === "CLOSED";
6640
+ const isClose = toolName === "update_ticket" && _optionalChain([opts, 'access', _143 => _143.status, 'optionalAccess', _144 => _144.toUpperCase, 'call', _145 => _145()]) === "CLOSED";
6609
6641
  if (toolName === "create_ticket") {
6610
6642
  return `${AUTO_CONTINUATION_DIRECTIVE_PREFIX} The user just approved create_ticket${ticketRef}. Per ticket-protocol \xA71a, ask 2-4 SHORT, issue-specific diagnostic follow-up questions tailored to the symptom they reported in their original message. When they answer, propose an update_ticket with content_addendum carrying a clean Q&A digest. Do NOT call any tool in this turn \u2014 just write the questions as prose.`;
6611
6643
  }
@@ -6667,7 +6699,7 @@ function formatSingularLookupInvocation(cmdId, value) {
6667
6699
  return safe ? `/${cmdId} "${safe}"` : `/${cmdId}`;
6668
6700
  }
6669
6701
  function extractEntityIdFilter(override, expectedTableId) {
6670
- const f = _optionalChain([override, 'optionalAccess', _145 => _145.entityIdFilter]);
6702
+ const f = _optionalChain([override, 'optionalAccess', _146 => _146.entityIdFilter]);
6671
6703
  if (!f) return null;
6672
6704
  const tableId = typeof f.tableId === "string" ? f.tableId : "";
6673
6705
  const id = typeof f.id === "string" ? f.id : "";
@@ -6868,7 +6900,7 @@ function MarqueeWall({
6868
6900
  if (!container || !copy) return;
6869
6901
  const size = axis === "y" ? copy.offsetHeight : copy.offsetWidth;
6870
6902
  copySizeRef.current = size;
6871
- const clone = _optionalChain([trackRef, 'access', _146 => _146.current, 'optionalAccess', _147 => _147.querySelector, 'call', _148 => _148('[data-marquee-copy="clone"]')]);
6903
+ const clone = _optionalChain([trackRef, 'access', _147 => _147.current, 'optionalAccess', _148 => _148.querySelector, 'call', _149 => _149('[data-marquee-copy="clone"]')]);
6872
6904
  wrapSizeRef.current = clone ? axis === "y" ? clone.offsetTop - copy.offsetTop : clone.offsetLeft - copy.offsetLeft : size + (typeof copyGap === "number" ? copyGap : 0);
6873
6905
  const avail = axis === "y" ? container.clientHeight : container.clientWidth;
6874
6906
  setOverflows(size > avail + 1);
@@ -6999,7 +7031,7 @@ function MarqueeWall({
6999
7031
  if (Math.abs(delta) > 3 && !dragMovedRef.current) {
7000
7032
  dragMovedRef.current = true;
7001
7033
  try {
7002
- _optionalChain([containerRef, 'access', _149 => _149.current, 'optionalAccess', _150 => _150.setPointerCapture, 'call', _151 => _151(e.pointerId)]);
7034
+ _optionalChain([containerRef, 'access', _150 => _150.current, 'optionalAccess', _151 => _151.setPointerCapture, 'call', _152 => _152(e.pointerId)]);
7003
7035
  } catch (e4) {
7004
7036
  }
7005
7037
  }
@@ -7016,7 +7048,7 @@ function MarqueeWall({
7016
7048
  dragSuppressUntilRef.current = performance.now() + DRAG_RESUME_MS;
7017
7049
  if (dragMovedRef.current) {
7018
7050
  try {
7019
- _optionalChain([containerRef, 'access', _152 => _152.current, 'optionalAccess', _153 => _153.releasePointerCapture, 'call', _154 => _154(e.pointerId)]);
7051
+ _optionalChain([containerRef, 'access', _153 => _153.current, 'optionalAccess', _154 => _154.releasePointerCapture, 'call', _155 => _155(e.pointerId)]);
7020
7052
  } catch (e5) {
7021
7053
  }
7022
7054
  }
@@ -7281,16 +7313,16 @@ function MingoOnboardingCardSkeleton({
7281
7313
  ),
7282
7314
  children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-xxs)]", children: [
7283
7315
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-[var(--spacing-system-xxs)]", children: [
7284
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "size-4 shrink-0 rounded-sm" }),
7285
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-3.5 rounded-sm", titleWidth) }),
7316
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "size-4 shrink-0 rounded-sm" }),
7317
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-3.5 rounded-sm", titleWidth) }),
7286
7318
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1" }),
7287
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-3.5 shrink-0 rounded-sm", slashWidth) })
7319
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-3.5 shrink-0 rounded-sm", slashWidth) })
7288
7320
  ] }),
7289
7321
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
7290
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3.5 w-full rounded-sm" }),
7291
- descriptionLines === 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
7322
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3.5 w-full rounded-sm" }),
7323
+ descriptionLines === 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
7292
7324
  ] }),
7293
- hasChips ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-[var(--spacing-system-xs)] flex flex-wrap items-center gap-[var(--spacing-system-xxs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-7 rounded-md", w) }, i)) }) : null
7325
+ hasChips ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-[var(--spacing-system-xs)] flex flex-wrap items-center gap-[var(--spacing-system-xxs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-7 rounded-md", w) }, i)) }) : null
7294
7326
  ] })
7295
7327
  }
7296
7328
  );
@@ -7305,7 +7337,7 @@ var ROW_VARIANTS = [
7305
7337
  ];
7306
7338
  function MingoOnboardingListSkeleton({ region = true, rows = 6, className }) {
7307
7339
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7308
- _chunkUGCRLRCTcjs.LoadingRegion,
7340
+ _chunkNO5UJLLQcjs.LoadingRegion,
7309
7341
  {
7310
7342
  label: "Loading slash commands",
7311
7343
  announce: region,
@@ -7336,18 +7368,18 @@ function chatDialogMenuItems({
7336
7368
  onArchive
7337
7369
  }) {
7338
7370
  const items = [
7339
- onCopyLink && {
7340
- id: "copy-link",
7341
- label: "Copy Chat Link",
7342
- icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSVNAJZEXcjs.Link01HorizontalIcon, { className: chatMenuIconClassName }),
7343
- onClick: onCopyLink
7344
- },
7345
7371
  onRename && {
7346
7372
  id: "rename",
7347
7373
  label: "Rename Chat",
7348
7374
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkB7AGSQ2Pcjs.PenEditIcon, { className: chatMenuIconClassName }),
7349
7375
  onClick: onRename
7350
7376
  },
7377
+ onCopyLink && {
7378
+ id: "copy-link",
7379
+ label: "Copy Chat Link",
7380
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSVNAJZEXcjs.Link01HorizontalIcon, { className: chatMenuIconClassName }),
7381
+ onClick: onCopyLink
7382
+ },
7351
7383
  onCompact && {
7352
7384
  id: "compact",
7353
7385
  label: "Compact Chat Memory",
@@ -7425,7 +7457,7 @@ function MingoChatHistoryRow({
7425
7457
  const unread = _nullishCoalesce(dialog.unreadMessagesCount, () => ( 0));
7426
7458
  const hasMenu = !!onRequestRename || !!onRequestArchive || !!onRequestCopyLink || !!onRequestCompact;
7427
7459
  const owner = dialog.owner;
7428
- const hasAvatar = !!(_optionalChain([owner, 'optionalAccess', _155 => _155.name]) || _optionalChain([owner, 'optionalAccess', _156 => _156.avatarUrl]));
7460
+ const hasAvatar = !!(_optionalChain([owner, 'optionalAccess', _156 => _156.name]) || _optionalChain([owner, 'optionalAccess', _157 => _157.avatarUrl]));
7429
7461
  const [menuOpen, setMenuOpen] = _react.useState.call(void 0, false);
7430
7462
  const menuItems = chatDialogMenuItems({
7431
7463
  onCopyLink: onRequestCopyLink && (() => onRequestCopyLink(dialog)),
@@ -7450,11 +7482,11 @@ function MingoChatHistoryRow({
7450
7482
  {
7451
7483
  role: "button",
7452
7484
  tabIndex: 0,
7453
- onClick: () => _optionalChain([onSelect, 'optionalCall', _157 => _157(dialog.id)]),
7485
+ onClick: () => _optionalChain([onSelect, 'optionalCall', _158 => _158(dialog.id)]),
7454
7486
  onKeyDown: (e) => {
7455
7487
  if (e.key === "Enter" || e.key === " ") {
7456
7488
  e.preventDefault();
7457
- _optionalChain([onSelect, 'optionalCall', _158 => _158(dialog.id)]);
7489
+ _optionalChain([onSelect, 'optionalCall', _159 => _159(dialog.id)]);
7458
7490
  }
7459
7491
  },
7460
7492
  className: "flex min-w-0 flex-1 cursor-pointer items-center gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-s)] focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent",
@@ -7521,8 +7553,8 @@ function MingoChatHistoryRow({
7521
7553
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7522
7554
  "span",
7523
7555
  {
7524
- onClick: () => _optionalChain([onSelect, 'optionalCall', _159 => _159(dialog.id)]),
7525
- title: _optionalChain([owner, 'optionalAccess', _160 => _160.name]) || void 0,
7556
+ onClick: () => _optionalChain([onSelect, 'optionalCall', _160 => _160(dialog.id)]),
7557
+ title: _optionalChain([owner, 'optionalAccess', _161 => _161.name]) || void 0,
7526
7558
  className: _chunk3ATAYP36cjs.cn.call(void 0,
7527
7559
  "absolute inset-0 flex cursor-pointer items-center justify-center transition-opacity",
7528
7560
  hasMenu && (menuOpen ? "pointer-events-none opacity-0" : "md:group-hover/row:pointer-events-none md:group-hover/row:opacity-0 md:peer-[:focus-within]/menu:pointer-events-none md:peer-[:focus-within]/menu:opacity-0")
@@ -7532,9 +7564,9 @@ function MingoChatHistoryRow({
7532
7564
  {
7533
7565
  variant: "round",
7534
7566
  sizePx: 24,
7535
- src: _optionalChain([owner, 'optionalAccess', _161 => _161.avatarUrl]) || void 0,
7536
- alt: _optionalChain([owner, 'optionalAccess', _162 => _162.name]) || void 0,
7537
- fallback: _optionalChain([owner, 'optionalAccess', _163 => _163.name]) || void 0,
7567
+ src: _optionalChain([owner, 'optionalAccess', _162 => _162.avatarUrl]) || void 0,
7568
+ alt: _optionalChain([owner, 'optionalAccess', _163 => _163.name]) || void 0,
7569
+ fallback: _optionalChain([owner, 'optionalAccess', _164 => _164.name]) || void 0,
7538
7570
  initialsClassName: "text-[10px] text-ods-text-secondary"
7539
7571
  }
7540
7572
  )
@@ -7556,18 +7588,18 @@ function MingoChatHistorySkeleton({
7556
7588
  ["w-1/2", "w-2/3"]
7557
7589
  ];
7558
7590
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7559
- _chunkUGCRLRCTcjs.LoadingRegion,
7591
+ _chunkNO5UJLLQcjs.LoadingRegion,
7560
7592
  {
7561
7593
  label: "Loading conversations",
7562
7594
  announce: region,
7563
7595
  className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-m)] overflow-hidden", className),
7564
7596
  children: groups.map((widths, g) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
7565
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3 w-16 rounded" }),
7597
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-16 rounded" }),
7566
7598
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-hidden rounded-md border border-ods-border", children: widths.map((w, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7567
7599
  "div",
7568
7600
  {
7569
7601
  className: "flex h-12 items-center border-b border-ods-border bg-ods-bg px-[var(--spacing-system-s)] last:border-b-0",
7570
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-4 rounded", w) })
7602
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-4 rounded", w) })
7571
7603
  },
7572
7604
  i
7573
7605
  )) })
@@ -7590,7 +7622,7 @@ function MingoChatHistory({
7590
7622
  className
7591
7623
  }) {
7592
7624
  const groups = _react.useMemo.call(void 0, () => groupDialogs(dialogs), [dialogs]);
7593
- const noSearchResults = groups.length === 0 && !!_optionalChain([searchQuery, 'optionalAccess', _164 => _164.trim, 'call', _165 => _165()]);
7625
+ const noSearchResults = groups.length === 0 && !!_optionalChain([searchQuery, 'optionalAccess', _165 => _165.trim, 'call', _166 => _166()]);
7594
7626
  const { scrollRef, fadeTop, fadeBottom, update: updateFade } = useScrollFade();
7595
7627
  const sentinelRef = _react.useRef.call(void 0, null);
7596
7628
  const onLoadMoreRef = _react.useRef.call(void 0, onLoadMore);
@@ -7607,7 +7639,7 @@ function MingoChatHistory({
7607
7639
  const io = new IntersectionObserver(
7608
7640
  ([entry]) => {
7609
7641
  if (entry.isIntersecting && !isLoadingMoreRef.current) {
7610
- _optionalChain([onLoadMoreRef, 'access', _166 => _166.current, 'optionalCall', _167 => _167()]);
7642
+ _optionalChain([onLoadMoreRef, 'access', _167 => _167.current, 'optionalCall', _168 => _168()]);
7611
7643
  }
7612
7644
  },
7613
7645
  { root, rootMargin: "120px", threshold: 0.1 }
@@ -7785,8 +7817,8 @@ function MingoWelcome({
7785
7817
  icon: action.icon,
7786
7818
  variant: action.variant,
7787
7819
  onSelect: action.onClick,
7788
- onHoverStart: () => _optionalChain([onQuickActionHover, 'optionalCall', _168 => _168(action)]),
7789
- onHoverEnd: () => _optionalChain([onQuickActionHoverEnd, 'optionalCall', _169 => _169()])
7820
+ onHoverStart: () => _optionalChain([onQuickActionHover, 'optionalCall', _169 => _169(action)]),
7821
+ onHoverEnd: () => _optionalChain([onQuickActionHoverEnd, 'optionalCall', _170 => _170()])
7790
7822
  })),
7791
7823
  agentSlug,
7792
7824
  rows: 4,
@@ -7839,9 +7871,9 @@ function GuideWelcome({
7839
7871
  props: action.iconProps,
7840
7872
  accent: _nullishCoalesce(_nullishCoalesce(action.accent, () => ( accentFromIdentityIcon(icon))), () => ( "cyan"))
7841
7873
  },
7842
- onSelect: () => _optionalChain([onQuickAction, 'optionalCall', _170 => _170(action)]),
7843
- onHoverStart: () => _optionalChain([onQuickActionHover, 'optionalCall', _171 => _171(action)]),
7844
- onHoverEnd: () => _optionalChain([onQuickActionHoverEnd, 'optionalCall', _172 => _172()])
7874
+ onSelect: () => _optionalChain([onQuickAction, 'optionalCall', _171 => _171(action)]),
7875
+ onHoverStart: () => _optionalChain([onQuickActionHover, 'optionalCall', _172 => _172(action)]),
7876
+ onHoverEnd: () => _optionalChain([onQuickActionHoverEnd, 'optionalCall', _173 => _173()])
7845
7877
  })),
7846
7878
  [quickActions, icon, onQuickAction, onQuickActionHover, onQuickActionHoverEnd]
7847
7879
  );
@@ -7858,11 +7890,11 @@ function GuideWelcome({
7858
7890
  icon && (icon.name || icon.url) ? (
7859
7891
  // Agent-mode identity glyph (chat-config Identity tab). Sized to
7860
7892
  // match the default Mingo mark (48px).
7861
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.EntityIcon, { icon: { name: icon.name, url: icon.url, props: icon.props }, size: 48 })
7893
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.EntityIcon, { icon: { name: icon.name, url: icon.url, props: icon.props }, size: 48 })
7862
7894
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLVO7FALWcjs.AgentMark, { agent: "mingo", className: "h-12 w-12" }),
7863
7895
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[var(--spacing-system-l)]", children: [
7864
7896
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h2", children: title }),
7865
- subtitle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h4", children: subtitle }) : subtitleLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-3/4 max-w-80 rounded-sm" }) }) : null
7897
+ subtitle ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h4", children: subtitle }) : subtitleLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-3/4 max-w-80 rounded-sm" }) }) : null
7866
7898
  ] })
7867
7899
  ] }),
7868
7900
  children
@@ -8040,7 +8072,7 @@ function MingoArchiveList({
8040
8072
  if (!sentinel || !hasMore || typeof IntersectionObserver === "undefined") return void 0;
8041
8073
  const observer = new IntersectionObserver(
8042
8074
  ([entry]) => {
8043
- if (_optionalChain([entry, 'optionalAccess', _173 => _173.isIntersecting]) && !isLoadingMoreRef.current) _optionalChain([onLoadMoreRef, 'access', _174 => _174.current, 'optionalCall', _175 => _175()]);
8075
+ if (_optionalChain([entry, 'optionalAccess', _174 => _174.isIntersecting]) && !isLoadingMoreRef.current) _optionalChain([onLoadMoreRef, 'access', _175 => _175.current, 'optionalCall', _176 => _176()]);
8044
8076
  },
8045
8077
  { rootMargin: "120px", threshold: 0.1 }
8046
8078
  );
@@ -8059,7 +8091,7 @@ function MingoArchiveList({
8059
8091
  ChatListItem,
8060
8092
  {
8061
8093
  title: dialog.title || "Untitled Chat",
8062
- onClick: () => _optionalChain([onSelectDialog, 'optionalCall', _176 => _176(dialog.id)]),
8094
+ onClick: () => _optionalChain([onSelectDialog, 'optionalCall', _177 => _177(dialog.id)]),
8063
8095
  trailing: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
8064
8096
  dialog.timestamp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "whitespace-nowrap text-ods-text-secondary text-h6", children: _chunkLVO7FALWcjs.formatRelativeTime.call(void 0, dialog.timestamp) }),
8065
8097
  dialog.owner && (dialog.owner.name || dialog.owner.avatarUrl) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -8078,7 +8110,7 @@ function MingoArchiveList({
8078
8110
  dialog.id
8079
8111
  )),
8080
8112
  hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-px shrink-0", "aria-hidden": true })
8081
- ] }) : isLoading ? Array.from({ length: 6 }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { "aria-hidden": true, className: "h-10 shrink-0 rounded-md" }, i)) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8113
+ ] }) : isLoading ? Array.from({ length: 6 }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { "aria-hidden": true, className: "h-10 shrink-0 rounded-md" }, i)) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8082
8114
  ChatListEmptyState,
8083
8115
  {
8084
8116
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKFICYKQQcjs.BoxArchiveIcon, { size: 24 }),
@@ -8124,10 +8156,15 @@ function MingoChatHeader({
8124
8156
  onToggleList,
8125
8157
  listOpen = false,
8126
8158
  menuItems = [],
8159
+ extraMenuItems = [],
8127
8160
  onRestore,
8128
8161
  onCollapse,
8129
8162
  onClose
8130
8163
  }) {
8164
+ const menuGroups = [
8165
+ ...menuItems.length > 0 ? [{ items: menuItems, separator: true }] : [],
8166
+ ...extraMenuItems.length > 0 ? [{ items: extraMenuItems }] : []
8167
+ ];
8131
8168
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-14 w-full shrink-0 overflow-hidden border-b border-ods-border", children: [
8132
8169
  onToggleList && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8133
8170
  ChatHeaderIconButton,
@@ -8157,12 +8194,12 @@ function MingoChatHeader({
8157
8194
  ) : null
8158
8195
  ] }),
8159
8196
  onRestore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatHeaderIconButton, { onClick: onRestore, "aria-label": "Unarchive chat", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPPX2JK6Pcjs.Refresh01LeftIcon, { size: 24 }) }),
8160
- menuItems.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8197
+ menuGroups.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8161
8198
  _chunkP6F6PHVKcjs.ActionsMenuDropdown,
8162
8199
  {
8163
8200
  triggerAriaLabel: "Chat actions",
8164
8201
  onCloseAutoFocus: (e) => e.preventDefault(),
8165
- groups: [{ items: menuItems }],
8202
+ groups: menuGroups,
8166
8203
  customTrigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChatHeaderIconButton, { "aria-label": "Chat actions", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSWHUL32Wcjs.Ellipsis01Icon, { size: 24 }) })
8167
8204
  }
8168
8205
  ),
@@ -8195,7 +8232,7 @@ function ChatHeaderSearchField({
8195
8232
  const finishCollapse = _react.useCallback.call(void 0, () => {
8196
8233
  if (collapsedRef.current) return;
8197
8234
  collapsedRef.current = true;
8198
- _optionalChain([onCollapse, 'optionalCall', _177 => _177()]);
8235
+ _optionalChain([onCollapse, 'optionalCall', _178 => _178()]);
8199
8236
  }, [onCollapse]);
8200
8237
  const beginCollapse = _react.useCallback.call(void 0, () => {
8201
8238
  setExiting(true);
@@ -8277,7 +8314,7 @@ var STATUS_GLYPHS = {
8277
8314
  approval: { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOBGYDNT6cjs.ShieldCheckIcon, { className: "text-ods-accent" }), label: "Waiting for approval" }
8278
8315
  };
8279
8316
  function statusFor(dialog, statusOf) {
8280
- return _nullishCoalesce(_optionalChain([statusOf, 'optionalCall', _178 => _178(dialog)]), () => ( ((_nullishCoalesce(dialog.unreadMessagesCount, () => ( 0))) > 0 ? "unread" : void 0)));
8317
+ return _nullishCoalesce(_optionalChain([statusOf, 'optionalCall', _179 => _179(dialog)]), () => ( ((_nullishCoalesce(dialog.unreadMessagesCount, () => ( 0))) > 0 ? "unread" : void 0)));
8281
8318
  }
8282
8319
  function MingoChatRail({
8283
8320
  dialogs,
@@ -8306,8 +8343,8 @@ function MingoChatRail({
8306
8343
  onExpand,
8307
8344
  className
8308
8345
  }) {
8309
- const [searchOpen, setSearchOpen] = _react.useState.call(void 0, !!_optionalChain([searchQuery, 'optionalAccess', _179 => _179.trim, 'call', _180 => _180()]));
8310
- const hasSearch = !!_optionalChain([searchQuery, 'optionalAccess', _181 => _181.trim, 'call', _182 => _182()]);
8346
+ const [searchOpen, setSearchOpen] = _react.useState.call(void 0, !!_optionalChain([searchQuery, 'optionalAccess', _180 => _180.trim, 'call', _181 => _181()]));
8347
+ const hasSearch = !!_optionalChain([searchQuery, 'optionalAccess', _182 => _182.trim, 'call', _183 => _183()]);
8311
8348
  const items = [];
8312
8349
  if (onNewChat) items.push({ id: "new", label: "Start New Chat", icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIZPN2P7Ucjs.ChatPlusIcon, {}), onClick: onNewChat });
8313
8350
  if (onOpenArchive) {
@@ -8364,7 +8401,7 @@ function MingoChatRail({
8364
8401
  if (!sentinel || !hasMore || typeof IntersectionObserver === "undefined") return void 0;
8365
8402
  const observer = new IntersectionObserver(
8366
8403
  ([entry]) => {
8367
- if (_optionalChain([entry, 'optionalAccess', _183 => _183.isIntersecting]) && !isLoadingMoreRef.current) _optionalChain([onLoadMoreRef, 'access', _184 => _184.current, 'optionalCall', _185 => _185()]);
8404
+ if (_optionalChain([entry, 'optionalAccess', _184 => _184.isIntersecting]) && !isLoadingMoreRef.current) _optionalChain([onLoadMoreRef, 'access', _185 => _185.current, 'optionalCall', _186 => _186()]);
8368
8405
  },
8369
8406
  { rootMargin: "120px", threshold: 0.1 }
8370
8407
  );
@@ -8382,7 +8419,7 @@ function MingoChatRail({
8382
8419
  onRetry && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2QMBXGMQcjs.Button, { variant: "outline", size: "small", leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXLTOM62Pcjs.Refresh01RightIcon, {}), onClick: onRetry, children: "Try again" })
8383
8420
  ] });
8384
8421
  } else if (isLoadingHistory) {
8385
- list = Array.from({ length: 6 }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { "aria-hidden": true, className: "h-10 shrink-0 rounded-md" }, i));
8422
+ list = Array.from({ length: 6 }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { "aria-hidden": true, className: "h-10 shrink-0 rounded-md" }, i));
8386
8423
  } else if (dialogs.length === 0 && !draftTitle) {
8387
8424
  list = hasSearch ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "px-[var(--spacing-system-xs)] py-[var(--spacing-system-s)] text-ods-text-secondary text-h6", children: "No chats found" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8388
8425
  ChatListEmptyState,
@@ -8478,7 +8515,7 @@ function MingoChatRailRow({ dialog, active, status, onSelect, menuItems }) {
8478
8515
  {
8479
8516
  active,
8480
8517
  title,
8481
- onClick: () => _optionalChain([onSelect, 'optionalCall', _186 => _186(dialog.id)]),
8518
+ onClick: () => _optionalChain([onSelect, 'optionalCall', _187 => _187(dialog.id)]),
8482
8519
  className: _chunk3ATAYP36cjs.cn.call(void 0, hasMenu && "pr-10"),
8483
8520
  trailing: glyph ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
8484
8521
  "span",
@@ -8612,7 +8649,7 @@ function MingoHistoryRail({
8612
8649
  onRetry,
8613
8650
  className
8614
8651
  }) {
8615
- const hasSearch = !!_optionalChain([searchQuery, 'optionalAccess', _187 => _187.trim, 'call', _188 => _188()]);
8652
+ const hasSearch = !!_optionalChain([searchQuery, 'optionalAccess', _188 => _188.trim, 'call', _189 => _189()]);
8616
8653
  const hasList = dialogs.length > 0 || hasSearch;
8617
8654
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
8618
8655
  "div",
@@ -8761,7 +8798,7 @@ function ChatDialogModals({
8761
8798
  RenameChatModal,
8762
8799
  {
8763
8800
  isOpen: renameTarget != null,
8764
- initialName: _nullishCoalesce(_optionalChain([renameTarget, 'optionalAccess', _189 => _189.title]), () => ( "")),
8801
+ initialName: _nullishCoalesce(_optionalChain([renameTarget, 'optionalAccess', _190 => _190.title]), () => ( "")),
8765
8802
  onClose: () => setRenameTarget(null),
8766
8803
  onSave: onConfirmRename
8767
8804
  }
@@ -8975,7 +9012,7 @@ function ChatAttachmentAddButton({
8975
9012
  const canAddMore = slotsAvailable > 0 && !disabled;
8976
9013
  const handlePick = () => {
8977
9014
  if (!canAddMore) return;
8978
- _optionalChain([fileInputRef, 'access', _190 => _190.current, 'optionalAccess', _191 => _191.click, 'call', _192 => _192()]);
9015
+ _optionalChain([fileInputRef, 'access', _191 => _191.current, 'optionalAccess', _192 => _192.click, 'call', _193 => _193()]);
8979
9016
  };
8980
9017
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
8981
9018
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -9138,7 +9175,7 @@ function ChatContextMemoryBar({
9138
9175
  _react.useEffect.call(void 0, () => {
9139
9176
  if (!open) return void 0;
9140
9177
  const onOutside = (e) => {
9141
- if (_optionalChain([rootRef, 'access', _193 => _193.current, 'optionalAccess', _194 => _194.contains, 'call', _195 => _195(e.target)])) return;
9178
+ if (_optionalChain([rootRef, 'access', _194 => _194.current, 'optionalAccess', _195 => _195.contains, 'call', _196 => _196(e.target)])) return;
9142
9179
  setOpen(false);
9143
9180
  };
9144
9181
  document.addEventListener("mousedown", onOutside, true);
@@ -9397,9 +9434,9 @@ function BreakdownRow({
9397
9434
  ModelDisplay.displayName = "ModelDisplay";
9398
9435
  var ModelDisplaySkeleton = _react2.default.forwardRef(
9399
9436
  ({ className, showTokens = false, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, "aria-hidden": true, className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-1 text-h6", className), ...props, children: [
9400
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-4 shrink-0 rounded-sm" }),
9401
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-5 w-24" }),
9402
- showTokens && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "ml-auto h-3 w-32" })
9437
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-4 shrink-0 rounded-sm" }),
9438
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-5 w-24" }),
9439
+ showTokens && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "ml-auto h-3 w-32" })
9403
9440
  ] })
9404
9441
  );
9405
9442
  ModelDisplaySkeleton.displayName = "ModelDisplaySkeleton";
@@ -9440,7 +9477,7 @@ function ChatComposer({
9440
9477
  const locked = lock != null;
9441
9478
  const selected = _nullishCoalesce(selectedContextItems, () => ( []));
9442
9479
  const memory = _nullishCoalesce(contextMemoryItems, () => ( []));
9443
- const entityTypes = _optionalChain([contextPicker, 'optionalAccess', _196 => _196.entityTypes]);
9480
+ const entityTypes = _optionalChain([contextPicker, 'optionalAccess', _197 => _197.entityTypes]);
9444
9481
  const iconByType = _react.useMemo.call(void 0, () => {
9445
9482
  const map = /* @__PURE__ */ new Map();
9446
9483
  for (const t of _nullishCoalesce(entityTypes, () => ( []))) map.set(t.type, t.icon);
@@ -9456,7 +9493,7 @@ function ChatComposer({
9456
9493
  sending,
9457
9494
  placeholder,
9458
9495
  disabled: locked,
9459
- disabledPlaceholder: _optionalChain([lock, 'optionalAccess', _197 => _197.placeholder]),
9496
+ disabledPlaceholder: _optionalChain([lock, 'optionalAccess', _198 => _198.placeholder]),
9460
9497
  previewText,
9461
9498
  fullWidth: true,
9462
9499
  className: "px-0",
@@ -9469,7 +9506,7 @@ function ChatComposer({
9469
9506
  startIcon: contextEnabled ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
9470
9507
  ChatComposerPlusMenu,
9471
9508
  {
9472
- onToggle: () => contextPickerOpen ? _optionalChain([onCloseContextPicker, 'optionalCall', _198 => _198()]) : _optionalChain([onOpenContextPicker, 'optionalCall', _199 => _199()]),
9509
+ onToggle: () => contextPickerOpen ? _optionalChain([onCloseContextPicker, 'optionalCall', _199 => _199()]) : _optionalChain([onOpenContextPicker, 'optionalCall', _200 => _200()]),
9473
9510
  open: contextPickerOpen,
9474
9511
  disabled: attachmentsDisabled || locked,
9475
9512
  dropdown: contextPicker ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -9478,8 +9515,8 @@ function ChatComposer({
9478
9515
  open: contextPickerOpen,
9479
9516
  config: contextPicker,
9480
9517
  selectedItems: selected,
9481
- onToggleItem: (item) => _optionalChain([onToggleContextItem, 'optionalCall', _200 => _200(item)]),
9482
- onClose: () => _optionalChain([onCloseContextPicker, 'optionalCall', _201 => _201()]),
9518
+ onToggleItem: (item) => _optionalChain([onToggleContextItem, 'optionalCall', _201 => _201(item)]),
9519
+ onClose: () => _optionalChain([onCloseContextPicker, 'optionalCall', _202 => _202()]),
9483
9520
  mentionQuery
9484
9521
  }
9485
9522
  ) : void 0
@@ -9606,29 +9643,22 @@ function ChatArchivePage(props) {
9606
9643
  ] });
9607
9644
  }
9608
9645
 
9609
- // src/components/chat/chat-panel-context.tsx
9610
-
9611
- var ChatPanelContext = _react.createContext.call(void 0, null);
9612
- function useChatPanel() {
9613
- return _react.useContext.call(void 0, ChatPanelContext);
9614
- }
9615
-
9616
9646
  // src/components/chat/utils/execute-navigation.ts
9617
9647
  function isForeignOriginHref(href) {
9618
- return /^https?:\/\//i.test(href) && !_chunkOFO75R2Ocjs.isSameOriginAbsoluteHref.call(void 0, href);
9648
+ return /^https?:\/\//i.test(href) && !_chunk7Z4EQOIXcjs.isSameOriginAbsoluteHref.call(void 0, href);
9619
9649
  }
9620
9650
  function runNavigation(runtime, href, path, targetPlatform, fallbackNavigate) {
9621
- const isNewTab = runtime ? _chunkOFO75R2Ocjs.computeIsNewTab.call(void 0, runtime, href, _nullishCoalesce(targetPlatform, () => ( null))) : false;
9651
+ const isNewTab = runtime ? _chunk7Z4EQOIXcjs.computeIsNewTab.call(void 0, runtime, href, _nullishCoalesce(targetPlatform, () => ( null))) : false;
9622
9652
  if (isNewTab) {
9623
- if (_optionalChain([runtime, 'optionalAccess', _202 => _202.navigation, 'access', _203 => _203.openExternal])) runtime.navigation.openExternal(href);
9624
- else window.open(href, "_blank", _chunkOFO75R2Ocjs.NEW_TAB_FEATURES);
9653
+ if (_optionalChain([runtime, 'optionalAccess', _203 => _203.navigation, 'access', _204 => _204.openExternal])) runtime.navigation.openExternal(href);
9654
+ else window.open(href, "_blank", _chunk7Z4EQOIXcjs.NEW_TAB_FEATURES);
9625
9655
  return;
9626
9656
  }
9627
- const target = isForeignOriginHref(href) ? href : _chunkOFO75R2Ocjs.stripSameOriginToPath.call(void 0, href);
9657
+ const target = isForeignOriginHref(href) ? href : _chunk7Z4EQOIXcjs.stripSameOriginToPath.call(void 0, href);
9628
9658
  if (target.includes("#") && _chunkCSJO7ZGNcjs.navigateSamePageHash.call(void 0, target, { headerOffset: _chunkCSJO7ZGNcjs.STICKY_HEADER_OFFSET_PX })) {
9629
9659
  return;
9630
9660
  }
9631
- const handled = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _204 => _204.navigation, 'access', _205 => _205.navigate, 'optionalCall', _206 => _206({ href, path, targetPlatform })]), () => ( false));
9661
+ const handled = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _205 => _205.navigation, 'access', _206 => _206.navigate, 'optionalCall', _207 => _207({ href, path, targetPlatform })]), () => ( false));
9632
9662
  if (!handled) {
9633
9663
  if (fallbackNavigate) fallbackNavigate(target);
9634
9664
  else window.location.assign(target);
@@ -9675,10 +9705,10 @@ function useNavLinkViaRuntime({
9675
9705
  const runtime = _chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, );
9676
9706
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
9677
9707
  const panel = useChatPanel();
9678
- const resolvedHref = _chunkOFO75R2Ocjs.resolveHrefForRuntime.call(void 0, href, runtime);
9679
- const isNewTab = _chunkOFO75R2Ocjs.computeIsNewTab.call(void 0, runtime, resolvedHref, _nullishCoalesce(targetPlatform, () => ( null)));
9708
+ const resolvedHref = _chunk7Z4EQOIXcjs.resolveHrefForRuntime.call(void 0, href, runtime);
9709
+ const isNewTab = _chunk7Z4EQOIXcjs.computeIsNewTab.call(void 0, runtime, resolvedHref, _nullishCoalesce(targetPlatform, () => ( null)));
9680
9710
  const onClick = (e) => {
9681
- _optionalChain([onClickProp, 'optionalCall', _207 => _207(e)]);
9711
+ _optionalChain([onClickProp, 'optionalCall', _208 => _208(e)]);
9682
9712
  if (e.defaultPrevented) return;
9683
9713
  const handled = executeNavigation({
9684
9714
  event: e,
@@ -9688,9 +9718,9 @@ function useNavLinkViaRuntime({
9688
9718
  targetPlatform,
9689
9719
  fallbackNavigate: router.push
9690
9720
  });
9691
- if (handled && !isNewTab && _optionalChain([panel, 'optionalAccess', _208 => _208.closeChat])) panel.closeChat();
9721
+ if (handled && !isNewTab && _optionalChain([panel, 'optionalAccess', _209 => _209.closeChat])) panel.closeChat();
9692
9722
  };
9693
- const attrs = _chunkOFO75R2Ocjs.newTabAnchorAttrs.call(void 0, isNewTab);
9723
+ const attrs = _chunk7Z4EQOIXcjs.newTabAnchorAttrs.call(void 0, isNewTab);
9694
9724
  return {
9695
9725
  href: resolvedHref,
9696
9726
  ...attrs,
@@ -9772,11 +9802,11 @@ var DEFAULT_CAPTIONS_PATH = "/api/captions";
9772
9802
  function getCaptionsUrl(entityType, entityId, srtContent, options) {
9773
9803
  if (!srtContent) return void 0;
9774
9804
  const hash = `${srtContent.length}-${srtContent.slice(0, 8).replace(/\s/g, "")}`;
9775
- const variant = _optionalChain([options, 'optionalAccess', _209 => _209.variant]) ? `&variant=${options.variant}` : "";
9805
+ const variant = _optionalChain([options, 'optionalAccess', _210 => _210.variant]) ? `&variant=${options.variant}` : "";
9776
9806
  return `${DEFAULT_CAPTIONS_PATH}/${entityType}/${entityId}?v=${hash}${variant}`;
9777
9807
  }
9778
9808
  function resolveCaptionsBase(endpoints) {
9779
- return _optionalChain([endpoints, 'optionalAccess', _210 => _210.captionsUrlPrefix]) || DEFAULT_CAPTIONS_PATH;
9809
+ return _optionalChain([endpoints, 'optionalAccess', _211 => _211.captionsUrlPrefix]) || DEFAULT_CAPTIONS_PATH;
9780
9810
  }
9781
9811
  function rebaseCaptionsUrl(endpoints, url) {
9782
9812
  if (!url || !url.startsWith(`${DEFAULT_CAPTIONS_PATH}/`)) return url;
@@ -9811,7 +9841,7 @@ function captionsEntityTypeForDocType(docType) {
9811
9841
  // src/components/features/use-captions.ts
9812
9842
 
9813
9843
  function useCaptions() {
9814
- const endpoints = _nullishCoalesce(_optionalChain([_chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, ), 'optionalAccess', _211 => _211.endpoints]), () => ( null));
9844
+ const endpoints = _nullishCoalesce(_optionalChain([_chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, ), 'optionalAccess', _212 => _212.endpoints]), () => ( null));
9815
9845
  return _react.useMemo.call(void 0,
9816
9846
  () => ({
9817
9847
  forEntity: (entityType, entity) => getEntityCaptionUrls(endpoints, entityType, entity),
@@ -9837,7 +9867,7 @@ function UserDisplay({
9837
9867
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
9838
9868
  _chunkJHQNUWFMcjs.SquareAvatar,
9839
9869
  {
9840
- src: avatarUrl ? _chunkOFO75R2Ocjs.getProxiedImageUrl.call(void 0, avatarUrl) || avatarUrl : void 0,
9870
+ src: avatarUrl ? _chunk7Z4EQOIXcjs.getProxiedImageUrl.call(void 0, avatarUrl) || avatarUrl : void 0,
9841
9871
  fallback: name,
9842
9872
  alt: name,
9843
9873
  sizePx: size,
@@ -10087,9 +10117,9 @@ function CardsStrip(props) {
10087
10117
  const p = hoverPointerRef.current;
10088
10118
  if (!p.inside) return;
10089
10119
  const el = typeof document !== "undefined" ? document.elementFromPoint(p.x, p.y) : null;
10090
- const cardEl = _optionalChain([el, 'optionalAccess', _212 => _212.closest, 'optionalCall', _213 => _213("[data-strip-card-key]")]);
10091
- const scoped = cardEl && _optionalChain([scrollerRef, 'access', _214 => _214.current, 'optionalAccess', _215 => _215.contains, 'call', _216 => _216(cardEl)]) ? cardEl : null;
10092
- const key = _nullishCoalesce(_optionalChain([scoped, 'optionalAccess', _217 => _217.getAttribute, 'call', _218 => _218("data-strip-card-key")]), () => ( null));
10120
+ const cardEl = _optionalChain([el, 'optionalAccess', _213 => _213.closest, 'optionalCall', _214 => _214("[data-strip-card-key]")]);
10121
+ const scoped = cardEl && _optionalChain([scrollerRef, 'access', _215 => _215.current, 'optionalAccess', _216 => _216.contains, 'call', _217 => _217(cardEl)]) ? cardEl : null;
10122
+ const key = _nullishCoalesce(_optionalChain([scoped, 'optionalAccess', _218 => _218.getAttribute, 'call', _219 => _219("data-strip-card-key")]), () => ( null));
10093
10123
  const current = activeKeyRef.current;
10094
10124
  if (key === current) return;
10095
10125
  if (current !== null) deactivate(current);
@@ -10127,7 +10157,7 @@ function CardsStrip(props) {
10127
10157
  }, [syncHoverToPointer]);
10128
10158
  const seamBuffer = _react.useCallback.call(void 0, () => {
10129
10159
  const half = singleCopyWidthRef.current;
10130
- const viewport = _nullishCoalesce(_optionalChain([scrollerRef, 'access', _219 => _219.current, 'optionalAccess', _220 => _220.clientWidth]), () => ( 0));
10160
+ const viewport = _nullishCoalesce(_optionalChain([scrollerRef, 'access', _220 => _220.current, 'optionalAccess', _221 => _221.clientWidth]), () => ( 0));
10131
10161
  return Math.max(0, Math.min(200, half / 4, half - viewport - TRACK_GAP_PX - 1));
10132
10162
  }, []);
10133
10163
  const mirror = _react.useCallback.call(void 0,
@@ -10151,7 +10181,7 @@ function CardsStrip(props) {
10151
10181
  const scroller = scrollerRef.current;
10152
10182
  if (scroller) scroller.scrollLeft = mirror(pos);
10153
10183
  },
10154
- readBack: () => mirror(_nullishCoalesce(_optionalChain([scrollerRef, 'access', _221 => _221.current, 'optionalAccess', _222 => _222.scrollLeft]), () => ( 0))),
10184
+ readBack: () => mirror(_nullishCoalesce(_optionalChain([scrollerRef, 'access', _222 => _222.current, 'optionalAccess', _223 => _223.scrollLeft]), () => ( 0))),
10155
10185
  onAfterFrame: syncHoverIfScrolled
10156
10186
  });
10157
10187
  const [mountedIdx, setMountedIdx] = _react.useState.call(void 0, () => /* @__PURE__ */ new Set());
@@ -10199,11 +10229,11 @@ function CardsStrip(props) {
10199
10229
  fn = (el) => {
10200
10230
  if (!el) return void 0;
10201
10231
  cardElIdxRef.current.set(el, idx);
10202
- _optionalChain([cardObserverRef, 'access', _223 => _223.current, 'optionalAccess', _224 => _224.observe, 'call', _225 => _225(el)]);
10232
+ _optionalChain([cardObserverRef, 'access', _224 => _224.current, 'optionalAccess', _225 => _225.observe, 'call', _226 => _226(el)]);
10203
10233
  return () => {
10204
10234
  cardElIdxRef.current.delete(el);
10205
10235
  cardElNearRef.current.delete(el);
10206
- _optionalChain([cardObserverRef, 'access', _226 => _226.current, 'optionalAccess', _227 => _227.unobserve, 'call', _228 => _228(el)]);
10236
+ _optionalChain([cardObserverRef, 'access', _227 => _227.current, 'optionalAccess', _228 => _228.unobserve, 'call', _229 => _229(el)]);
10207
10237
  };
10208
10238
  };
10209
10239
  cardRefFns.set(idx, fn);
@@ -10222,7 +10252,7 @@ function CardsStrip(props) {
10222
10252
  const track = trackRef.current;
10223
10253
  if (!scroller || !track) return;
10224
10254
  const firstCard = track.firstElementChild;
10225
- const step = (_nullishCoalesce(_optionalChain([firstCard, 'optionalAccess', _229 => _229.offsetWidth]), () => ( 320))) + TRACK_GAP_PX;
10255
+ const step = (_nullishCoalesce(_optionalChain([firstCard, 'optionalAccess', _230 => _230.offsetWidth]), () => ( 320))) + TRACK_GAP_PX;
10226
10256
  chevronSuppressUntilRef.current = performance.now() + CHEVRON_SUPPRESS_MS;
10227
10257
  if (marqueeActiveRef.current) {
10228
10258
  glideBy((reverse ? -dir : dir) * step);
@@ -10283,11 +10313,11 @@ function CardsStrip(props) {
10283
10313
  {
10284
10314
  ref: (node) => {
10285
10315
  wrapperRef.current = node;
10286
- _optionalChain([rootRef, 'optionalCall', _230 => _230(node)]);
10316
+ _optionalChain([rootRef, 'optionalCall', _231 => _231(node)]);
10287
10317
  },
10288
10318
  className: _chunk3ATAYP36cjs.cn.call(void 0, "flex w-full min-w-0 flex-col gap-6", className),
10289
10319
  children: [
10290
- showTitle && title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkOFO75R2Ocjs.SECTION_HEADING_CLASS} break-words`, children: _chunkOFO75R2Ocjs.accentSentenceMarks.call(void 0, title) }),
10320
+ showTitle && title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunk7Z4EQOIXcjs.SECTION_HEADING_CLASS} break-words`, children: _chunk7Z4EQOIXcjs.accentSentenceMarks.call(void 0, title) }),
10291
10321
  headerSlot,
10292
10322
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", style: bled ? { marginLeft: -insets.left, marginRight: -insets.right } : void 0, children: [
10293
10323
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -10439,7 +10469,7 @@ function groupByAspectRatio(items, getAspectRatio) {
10439
10469
 
10440
10470
  function VideoBitesStrip({
10441
10471
  bites,
10442
- title = _chunkOFO75R2Ocjs.DEFAULT_VIDEO_BITES_TITLE,
10472
+ title = _chunk7Z4EQOIXcjs.DEFAULT_VIDEO_BITES_TITLE,
10443
10473
  showTitle = true,
10444
10474
  filterPublished = true,
10445
10475
  profile = null,
@@ -10452,14 +10482,14 @@ function VideoBitesStrip({
10452
10482
  cardHeightMobile = 300,
10453
10483
  showChevrons = true,
10454
10484
  onBiteNavigate,
10455
- sortComparator = _chunkOFO75R2Ocjs.sortBitesByCreatedAtDesc,
10485
+ sortComparator = _chunk7Z4EQOIXcjs.sortBitesByCreatedAtDesc,
10456
10486
  className
10457
10487
  }) {
10458
10488
  const items = _react.useMemo.call(void 0, () => {
10459
10489
  const filtered = filterPublished ? bites.filter((b) => b.published) : [...bites];
10460
10490
  return filtered.sort(sortComparator);
10461
10491
  }, [bites, filterPublished, sortComparator]);
10462
- const warmup = _chunk3RFQPQ7Zcjs.useVideoWarmup.call(void 0, { videoUrl: _optionalChain([items, 'access', _231 => _231[0], 'optionalAccess', _232 => _232.url]) || null });
10492
+ const warmup = _chunk3RFQPQ7Zcjs.useVideoWarmup.call(void 0, { videoUrl: _optionalChain([items, 'access', _232 => _232[0], 'optionalAccess', _233 => _233.url]) || null });
10463
10493
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10464
10494
  CardsStrip,
10465
10495
  {
@@ -10528,8 +10558,8 @@ function VideoBiteCard({
10528
10558
  const controlled = active !== void 0;
10529
10559
  const [selfActive, setSelfActive] = _react.useState.call(void 0, false);
10530
10560
  const isActive = controlled ? !!active : selfActive;
10531
- const activate = () => controlled ? _optionalChain([onActivate, 'optionalCall', _233 => _233(key)]) : setSelfActive(true);
10532
- const deactivate = () => controlled ? _optionalChain([onDeactivate, 'optionalCall', _234 => _234(key)]) : setSelfActive(false);
10561
+ const activate = () => controlled ? _optionalChain([onActivate, 'optionalCall', _234 => _234(key)]) : setSelfActive(true);
10562
+ const deactivate = () => controlled ? _optionalChain([onDeactivate, 'optionalCall', _235 => _235(key)]) : setSelfActive(false);
10533
10563
  const titleInputRef = _react.useRef.call(void 0, null);
10534
10564
  _chunkDGFDBPO7cjs.useIsomorphicLayoutEffect.call(void 0, () => {
10535
10565
  const el = titleInputRef.current;
@@ -10539,7 +10569,7 @@ function VideoBiteCard({
10539
10569
  });
10540
10570
  const navigate = () => {
10541
10571
  if (bite.onNavigate) bite.onNavigate();
10542
- else _optionalChain([onBiteNavigate, 'optionalCall', _235 => _235(bite, index)]);
10572
+ else _optionalChain([onBiteNavigate, 'optionalCall', _236 => _236(bite, index)]);
10543
10573
  };
10544
10574
  const handlePointerEnter = () => {
10545
10575
  if (!isTouch) activate();
@@ -10564,9 +10594,9 @@ function VideoBiteCard({
10564
10594
  placeholder: "Title (optional)",
10565
10595
  "aria-label": "Bite title",
10566
10596
  rows: 1,
10567
- onChange: (e) => _optionalChain([onTitleChange, 'optionalCall', _236 => _236(e.target.value)]),
10597
+ onChange: (e) => _optionalChain([onTitleChange, 'optionalCall', _237 => _237(e.target.value)]),
10568
10598
  ref: titleInputRef,
10569
- onBlur: (e) => _optionalChain([onTitleCommit, 'optionalCall', _237 => _237(e.target.value)]),
10599
+ onBlur: (e) => _optionalChain([onTitleCommit, 'optionalCall', _238 => _238(e.target.value)]),
10570
10600
  onClick: (e) => e.stopPropagation(),
10571
10601
  className: _chunk3ATAYP36cjs.cn.call(void 0,
10572
10602
  titleClass,
@@ -10618,7 +10648,7 @@ function VideoBiteCard({
10618
10648
  },
10619
10649
  children: [
10620
10650
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10621
- _chunkOFO75R2Ocjs.VideoHoverPreviewSurface,
10651
+ _chunk7Z4EQOIXcjs.VideoHoverPreviewSurface,
10622
10652
  {
10623
10653
  url: bite.url,
10624
10654
  posterUrl: bite.thumbnail_url,
@@ -10653,7 +10683,7 @@ function VideoBiteCard({
10653
10683
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
10654
10684
  "div",
10655
10685
  {
10656
- ref: (node) => _optionalChain([rootRef, 'optionalCall', _238 => _238(node)]),
10686
+ ref: (node) => _optionalChain([rootRef, 'optionalCall', _239 => _239(node)]),
10657
10687
  "aria-hidden": isClone || void 0,
10658
10688
  "data-strip-card-key": key,
10659
10689
  className: _chunk3ATAYP36cjs.cn.call(void 0,
@@ -10689,7 +10719,7 @@ function EntityVideoSection({
10689
10719
  title = "Video",
10690
10720
  videoSummary,
10691
10721
  videoBites,
10692
- bitesTitle = _chunkOFO75R2Ocjs.DEFAULT_VIDEO_BITES_TITLE,
10722
+ bitesTitle = _chunk7Z4EQOIXcjs.DEFAULT_VIDEO_BITES_TITLE,
10693
10723
  filterPublishedBites = true,
10694
10724
  bitesProfile = null,
10695
10725
  bitesHref,
@@ -10707,8 +10737,8 @@ function EntityVideoSection({
10707
10737
  const hasHighlight = !!highlightVideoUrl;
10708
10738
  const hasVideo = hasFullVideo || hasHighlight;
10709
10739
  const derivedCaptions = captionsEntity ? captions.forEntityId(captionsEntity.type, captionsEntity.id) : null;
10710
- const captionsUrl = _nullishCoalesce(captionsUrlProp, () => ( _optionalChain([derivedCaptions, 'optionalAccess', _239 => _239.captionsUrl])));
10711
- const highlightCaptionsUrl = _nullishCoalesce(highlightCaptionsUrlProp, () => ( _optionalChain([derivedCaptions, 'optionalAccess', _240 => _240.highlightCaptionsUrl])));
10740
+ const captionsUrl = _nullishCoalesce(captionsUrlProp, () => ( _optionalChain([derivedCaptions, 'optionalAccess', _240 => _240.captionsUrl])));
10741
+ const highlightCaptionsUrl = _nullishCoalesce(highlightCaptionsUrlProp, () => ( _optionalChain([derivedCaptions, 'optionalAccess', _241 => _241.highlightCaptionsUrl])));
10712
10742
  if (!hasVideo && !videoSummary && (!videoBites || videoBites.length === 0)) {
10713
10743
  return null;
10714
10744
  }
@@ -10735,7 +10765,7 @@ function EntityVideoSection({
10735
10765
  )
10736
10766
  ] }),
10737
10767
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10738
- _chunkOFO75R2Ocjs.Video,
10768
+ _chunk7Z4EQOIXcjs.Video,
10739
10769
  {
10740
10770
  kind: fullVideoKind,
10741
10771
  url: fullVideoUrl,
@@ -10747,7 +10777,7 @@ function EntityVideoSection({
10747
10777
  }
10748
10778
  ) }),
10749
10779
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10750
- _chunkOFO75R2Ocjs.Video,
10780
+ _chunk7Z4EQOIXcjs.Video,
10751
10781
  {
10752
10782
  url: highlightVideoUrl,
10753
10783
  poster: highlightVideoThumbnail,
@@ -10756,7 +10786,7 @@ function EntityVideoSection({
10756
10786
  }
10757
10787
  ) })
10758
10788
  ] }) : fullVideoUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10759
- _chunkOFO75R2Ocjs.Video,
10789
+ _chunk7Z4EQOIXcjs.Video,
10760
10790
  {
10761
10791
  kind: fullVideoKind,
10762
10792
  url: fullVideoUrl,
@@ -10767,7 +10797,7 @@ function EntityVideoSection({
10767
10797
  priority
10768
10798
  }
10769
10799
  ) : highlightVideoUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10770
- _chunkOFO75R2Ocjs.Video,
10800
+ _chunk7Z4EQOIXcjs.Video,
10771
10801
  {
10772
10802
  url: highlightVideoUrl,
10773
10803
  poster: highlightVideoThumbnail,
@@ -10777,7 +10807,7 @@ function EntityVideoSection({
10777
10807
  }
10778
10808
  ) : null),
10779
10809
  videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 flex-col gap-6", children: [
10780
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkOFO75R2Ocjs.SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
10810
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunk7Z4EQOIXcjs.SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
10781
10811
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-hidden break-words text-ods-text-primary text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: videoSummary }) })
10782
10812
  ] }),
10783
10813
  videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -10826,7 +10856,7 @@ function ChatVideoEntityCard({ chatRef }) {
10826
10856
 
10827
10857
  function designDocPeople(doc) {
10828
10858
  const people = [];
10829
- if (_optionalChain([doc, 'access', _241 => _241.author, 'optionalAccess', _242 => _242.full_name]))
10859
+ if (_optionalChain([doc, 'access', _242 => _242.author, 'optionalAccess', _243 => _243.full_name]))
10830
10860
  people.push({
10831
10861
  key: `dri-${_nullishCoalesce(doc.author.id, () => ( doc.author.full_name))}`,
10832
10862
  name: doc.author.full_name,
@@ -10839,33 +10869,33 @@ function designDocPeople(doc) {
10839
10869
  return people;
10840
10870
  }
10841
10871
  function designDocMetaLine(doc) {
10842
- return [_optionalChain([doc, 'access', _243 => _243.author, 'optionalAccess', _244 => _244.full_name]) ? `DRI ${doc.author.full_name}` : null, `updated ${_chunkOFO75R2Ocjs.formatDateShort.call(void 0, doc.updated_at)}`].filter(Boolean).join(" \xB7 ");
10872
+ return [_optionalChain([doc, 'access', _244 => _244.author, 'optionalAccess', _245 => _245.full_name]) ? `DRI ${doc.author.full_name}` : null, `updated ${_chunk7Z4EQOIXcjs.formatDateShort.call(void 0, doc.updated_at)}`].filter(Boolean).join(" \xB7 ");
10843
10873
  }
10844
10874
  function DesignDocCardSkeleton() {
10845
10875
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
10846
10876
  "div",
10847
10877
  {
10848
10878
  className: _chunk3ATAYP36cjs.cn.call(void 0,
10849
- _chunkOFO75R2Ocjs.CONTENT_CARD_SKELETON_FRAME_CLASS,
10879
+ _chunk7Z4EQOIXcjs.CONTENT_CARD_SKELETON_FRAME_CLASS,
10850
10880
  "flex h-full flex-col gap-[var(--spacing-system-mf)] p-[var(--spacing-system-lf)]"
10851
10881
  ),
10852
10882
  children: [
10853
10883
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-[16px]", children: [
10854
10884
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
10855
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Subheading, { className: "w-3/4" }),
10856
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Caption, { className: "w-1/3" })
10885
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Subheading, { className: "w-3/4" }),
10886
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Caption, { className: "w-1/3" })
10857
10887
  ] }),
10858
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.InteractiveSkeleton.Chip, { className: "hidden w-24 md:block" })
10888
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.InteractiveSkeleton.Chip, { className: "hidden w-24 md:block" })
10859
10889
  ] }),
10860
10890
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-[72px] flex-col justify-center gap-2", children: [
10861
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Body, {}),
10862
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Body, {}),
10863
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Body, { className: "w-5/6" })
10891
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Body, {}),
10892
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Body, {}),
10893
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Body, { className: "w-5/6" })
10864
10894
  ] }),
10865
10895
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
10866
10896
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center justify-between gap-2", children: [
10867
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.TextSkeleton.Caption, { className: "w-1/3" }),
10868
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.MediaSkeleton.Avatar, { size: "sm" })
10897
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.TextSkeleton.Caption, { className: "w-1/3" }),
10898
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.MediaSkeleton.Avatar, { size: "sm" })
10869
10899
  ] })
10870
10900
  ]
10871
10901
  }
@@ -10874,7 +10904,7 @@ function DesignDocCardSkeleton() {
10874
10904
  function DesignDocCard({ doc, href, target, rel, className }) {
10875
10905
  const readiness = DESIGN_DOC_READINESS_DISPLAY[designDocReadiness(doc.completion)];
10876
10906
  const people = designDocPeople(doc);
10877
- const link = _chunkOFO75R2Ocjs.safeHref.call(void 0, _nullishCoalesce(href, () => ( null)));
10907
+ const link = _chunk7Z4EQOIXcjs.safeHref.call(void 0, _nullishCoalesce(href, () => ( null)));
10878
10908
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
10879
10909
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-[16px]", children: [
10880
10910
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
@@ -10882,7 +10912,7 @@ function DesignDocCard({ doc, href, target, rel, className }) {
10882
10912
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h5", children: designDocMetaLine(doc) }) })
10883
10913
  ] }),
10884
10914
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
10885
- _chunkOFO75R2Ocjs.StatusBadge,
10915
+ _chunk7Z4EQOIXcjs.StatusBadge,
10886
10916
  {
10887
10917
  text: readiness.label,
10888
10918
  colorScheme: readiness.scheme,
@@ -10892,7 +10922,7 @@ function DesignDocCard({ doc, href, target, rel, className }) {
10892
10922
  }
10893
10923
  )
10894
10924
  ] }),
10895
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.StatusBadge, { text: readiness.label, colorScheme: readiness.scheme, variant: "button", singleLine: true }) }),
10925
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.StatusBadge, { text: readiness.label, colorScheme: readiness.scheme, variant: "button", singleLine: true }) }),
10896
10926
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[72px] items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: doc.summary || "" }) }),
10897
10927
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
10898
10928
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center justify-between gap-2", children: [
@@ -10901,7 +10931,7 @@ function DesignDocCard({ doc, href, target, rel, className }) {
10901
10931
  ] })
10902
10932
  ] });
10903
10933
  const outer = _chunk3ATAYP36cjs.cn.call(void 0,
10904
- _chunkOFO75R2Ocjs.CONTENT_CARD_FRAME_CLASS,
10934
+ _chunk7Z4EQOIXcjs.CONTENT_CARD_FRAME_CLASS,
10905
10935
  "flex h-full flex-col gap-[var(--spacing-system-mf)] p-[var(--spacing-system-lf)]",
10906
10936
  className
10907
10937
  );
@@ -11045,26 +11075,26 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
11045
11075
  metaParts.push(
11046
11076
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "whitespace-nowrap", children: dateText }, "date")
11047
11077
  );
11048
- const href = _chunkOFO75R2Ocjs.safeHref.call(void 0, item.url);
11078
+ const href = _chunk7Z4EQOIXcjs.safeHref.call(void 0, item.url);
11049
11079
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
11050
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
11051
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TEXT_COL, children: [
11052
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
11080
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
11081
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TEXT_COL, children: [
11082
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
11053
11083
  reviewState ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReviewStateBadge, { state: reviewState }) : null,
11054
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE, children: primaryText })
11084
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE, children: primaryText })
11055
11085
  ] }),
11056
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
11086
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW, children: metaParts.map((part, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
11057
11087
  i > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 text-ods-text-secondary/40", children: "\xB7" }) : null,
11058
11088
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate", children: part })
11059
11089
  ] }, i)) }) }),
11060
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_SUMMARY, children: _chunkOFO75R2Ocjs.COMPACT_CARD_ROW_FILLER }) })
11090
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SUMMARY, children: _chunk7Z4EQOIXcjs.COMPACT_CARD_ROW_FILLER }) })
11061
11091
  ] }),
11062
11092
  href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-3.5 w-3.5" }) }) : null
11063
11093
  ] });
11064
11094
  if (anchorProps) {
11065
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body });
11095
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body });
11066
11096
  }
11067
- return href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target: "_blank", rel: "noopener noreferrer", className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
11097
+ return href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target: "_blank", rel: "noopener noreferrer", className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: body }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
11068
11098
  }
11069
11099
  function GitHubActivityCardSkeleton({
11070
11100
  variant = "compact",
@@ -11073,22 +11103,22 @@ function GitHubActivityCardSkeleton({
11073
11103
  if (variant === "row") {
11074
11104
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `flex min-w-0 items-center gap-3 ${_nullishCoalesce(className, () => ( ""))}`, children: [
11075
11105
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-28 shrink-0 items-center gap-2", children: [
11076
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3.5 w-3.5 rounded" }),
11077
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3 w-16 rounded" })
11106
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3.5 w-3.5 rounded" }),
11107
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-16 rounded" })
11078
11108
  ] }),
11079
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3 w-2/3 flex-1 rounded" }),
11080
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3 w-40 shrink-0 rounded" }),
11081
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { className: "h-3 w-20 shrink-0 rounded" })
11109
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-2/3 flex-1 rounded" }),
11110
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-40 shrink-0 rounded" }),
11111
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-3 w-20 shrink-0 rounded" })
11082
11112
  ] });
11083
11113
  }
11084
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_SKELETON_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
11085
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: _chunkOFO75R2Ocjs.COMPACT_CARD_SKELETON_IMAGE_SLOT }),
11086
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TEXT_COL, children: [
11087
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-2/3 rounded" }) }),
11088
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/2 rounded" }) }),
11089
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_SUMMARY, children: _chunkOFO75R2Ocjs.COMPACT_CARD_ROW_FILLER }) })
11114
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_SKELETON_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
11115
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SKELETON_IMAGE_SLOT }),
11116
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TEXT_COL, children: [
11117
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-2/3 rounded" }) }),
11118
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/2 rounded" }) }),
11119
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SUMMARY, children: _chunk7Z4EQOIXcjs.COMPACT_CARD_ROW_FILLER }) })
11090
11120
  ] }),
11091
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3.5 rounded" }) })
11121
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3.5 rounded" }) })
11092
11122
  ] });
11093
11123
  }
11094
11124
 
@@ -11096,31 +11126,31 @@ function GitHubActivityCardSkeleton({
11096
11126
 
11097
11127
 
11098
11128
  function CampaignCardAdmin({ campaign, className, anchorProps }) {
11099
- const goalsCount = _optionalChain([campaign, 'access', _245 => _245.goals, 'optionalAccess', _246 => _246.length]) || 0;
11129
+ const goalsCount = _optionalChain([campaign, 'access', _246 => _246.goals, 'optionalAccess', _247 => _247.length]) || 0;
11100
11130
  const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
11101
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Megaphone, { className: "h-5 w-5" }) }),
11102
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TEXT_COL, children: [
11103
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE, children: campaign.name }) }),
11104
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_SUBTITLE, children: [
11105
- campaign.start_date ? _chunkOFO75R2Ocjs.formatDateShort.call(void 0, campaign.start_date) : null,
11131
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Megaphone, { className: "h-5 w-5" }) }),
11132
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TEXT_COL, children: [
11133
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE, children: campaign.name }) }),
11134
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SUBTITLE, children: [
11135
+ campaign.start_date ? _chunk7Z4EQOIXcjs.formatDateShort.call(void 0, campaign.start_date) : null,
11106
11136
  goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
11107
11137
  "Marketing campaign"
11108
11138
  ].filter(Boolean).join(" \xB7 ") }) }),
11109
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_SUMMARY, children: campaign.description || _chunkOFO75R2Ocjs.COMPACT_CARD_ROW_FILLER }) })
11139
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SUMMARY, children: campaign.description || _chunk7Z4EQOIXcjs.COMPACT_CARD_ROW_FILLER }) })
11110
11140
  ] })
11111
11141
  ] });
11112
11142
  if (anchorProps) {
11113
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: innerChildren });
11143
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { ...anchorProps, className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: innerChildren });
11114
11144
  }
11115
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: innerChildren });
11145
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: innerChildren });
11116
11146
  }
11117
11147
  function CampaignCardAdminSkeleton({ className }) {
11118
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_SKELETON_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
11119
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: _chunkOFO75R2Ocjs.COMPACT_CARD_SKELETON_IMAGE_SLOT }),
11120
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TEXT_COL, children: [
11121
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
11122
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/2 rounded" }) }),
11123
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
11148
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_SKELETON_OUTER} ${_nullishCoalesce(className, () => ( ""))}`, children: [
11149
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: _chunk7Z4EQOIXcjs.COMPACT_CARD_SKELETON_IMAGE_SLOT }),
11150
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TEXT_COL, children: [
11151
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3.5 w-3/5 rounded" }) }),
11152
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-1/2 rounded" }) }),
11153
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "h-3 w-11/12 rounded" }) })
11124
11154
  ] })
11125
11155
  ] });
11126
11156
  }
@@ -11154,8 +11184,8 @@ function getVendorLogo(vendor) {
11154
11184
  if (vendor.logo) {
11155
11185
  return fixSupabaseStorageUrl(vendor.logo);
11156
11186
  }
11157
- const logoMedia = _optionalChain([vendor, 'access', _247 => _247.vendor_media, 'optionalAccess', _248 => _248.find, 'call', _249 => _249((m) => m.media_type === "logo")]);
11158
- if (_optionalChain([logoMedia, 'optionalAccess', _250 => _250.media_url])) {
11187
+ const logoMedia = _optionalChain([vendor, 'access', _248 => _248.vendor_media, 'optionalAccess', _249 => _249.find, 'call', _250 => _250((m) => m.media_type === "logo")]);
11188
+ if (_optionalChain([logoMedia, 'optionalAccess', _251 => _251.media_url])) {
11159
11189
  return fixSupabaseStorageUrl(logoMedia.media_url);
11160
11190
  }
11161
11191
  return null;
@@ -11211,7 +11241,7 @@ function VendorIcon({
11211
11241
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: containerClasses, children: logoUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11212
11242
  _chunkHOTM4UM6cjs.next_image_default,
11213
11243
  {
11214
- src: _chunkOFO75R2Ocjs.getProxiedImageUrl2.call(void 0, logoUrl) || logoUrl,
11244
+ src: _chunk7Z4EQOIXcjs.getProxiedImageUrl2.call(void 0, logoUrl) || logoUrl,
11215
11245
  alt: `${vendor.title} logo`,
11216
11246
  width,
11217
11247
  height,
@@ -11224,7 +11254,7 @@ function VendorIcon({
11224
11254
  "flex items-center justify-center uppercase text-h6",
11225
11255
  backgroundStyle === "white" ? "text-[#333333]" : "text-ods-text-secondary"
11226
11256
  ),
11227
- children: _optionalChain([vendor, 'access', _251 => _251.title, 'optionalAccess', _252 => _252.substring, 'call', _253 => _253(0, 2)]) || "??"
11257
+ children: _optionalChain([vendor, 'access', _252 => _252.title, 'optionalAccess', _253 => _253.substring, 'call', _254 => _254(0, 2)]) || "??"
11228
11258
  }
11229
11259
  ) });
11230
11260
  }
@@ -11241,8 +11271,8 @@ function useChatCardItem(type, id) {
11241
11271
  const res = await _chunkDGFDBPO7cjs.embedAuthedFetch.call(void 0, url);
11242
11272
  if (!res.ok) throw new Error(`chat card fetch failed: ${res.status}`);
11243
11273
  const data = await res.json();
11244
- const items = _chunkOFO75R2Ocjs.extractCardItems.call(void 0, type, data);
11245
- const match = items.find((it) => _chunkOFO75R2Ocjs.extractItemId.call(void 0, type, it) === id);
11274
+ const items = _chunk7Z4EQOIXcjs.extractCardItems.call(void 0, type, data);
11275
+ const match = items.find((it) => _chunk7Z4EQOIXcjs.extractItemId.call(void 0, type, it) === id);
11246
11276
  return _nullishCoalesce(match, () => ( null));
11247
11277
  },
11248
11278
  enabled: !!url && id.length > 0,
@@ -11316,12 +11346,12 @@ function MingoInfoCardSkeleton({ className }) {
11316
11346
  className
11317
11347
  ),
11318
11348
  children: [
11319
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "block size-10 shrink-0 rounded-md border border-ods-border" }),
11349
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block size-10 shrink-0 rounded-md border border-ods-border" }),
11320
11350
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1.5", children: [
11321
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-1/2 rounded" }),
11322
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-3/4 rounded" })
11351
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-4 w-1/2 rounded" }),
11352
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-3 w-3/4 rounded" })
11323
11353
  ] }),
11324
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2YXOD2KLcjs.UnifiedSkeleton, { as: "span", className: "block h-5 w-16 shrink-0 rounded" })
11354
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { as: "span", className: "block h-5 w-16 shrink-0 rounded" })
11325
11355
  ]
11326
11356
  }
11327
11357
  );
@@ -11428,7 +11458,7 @@ function pickFetchedCardHref({
11428
11458
  itemHref,
11429
11459
  allowComposed
11430
11460
  }) {
11431
- if (_optionalChain([composed, 'optionalAccess', _254 => _254.hostOverride])) {
11461
+ if (_optionalChain([composed, 'optionalAccess', _255 => _255.hostOverride])) {
11432
11462
  return { source: "hostOverride", href: composed.href, targetPlatform: composed.targetPlatform };
11433
11463
  }
11434
11464
  if (itemHref) return { source: "item", href: itemHref };
@@ -11444,7 +11474,7 @@ function resolveFetchedCardHref({
11444
11474
  composeContentUrl
11445
11475
  }) {
11446
11476
  if (!composeContentUrl || !contentRefType || !id) return null;
11447
- const canonicalType = _chunkOFO75R2Ocjs.canonicalContentRefType.call(void 0, contentRefType);
11477
+ const canonicalType = _chunk7Z4EQOIXcjs.canonicalContentRefType.call(void 0, contentRefType);
11448
11478
  return composeContentUrl({
11449
11479
  // The card registry keys some entries by the legacy rail vocabulary
11450
11480
  // (`blog_post_existing`) because that is what `buildListUrl` expects.
@@ -11490,20 +11520,20 @@ function resolveSourceRowCTA(row, ctx = {}) {
11490
11520
  if (row.path && shouldFallbackToPathNav(row) && !row.externalUrl) {
11491
11521
  const safePath = sanitizePath(row.path);
11492
11522
  if (safePath) {
11493
- const docTarget = row.documentType ? _optionalChain([ctx, 'access', _255 => _255.docPlatformTargets, 'optionalAccess', _256 => _256[row.documentType]]) : void 0;
11523
+ const docTarget = row.documentType ? _optionalChain([ctx, 'access', _256 => _256.docPlatformTargets, 'optionalAccess', _257 => _257[row.documentType]]) : void 0;
11494
11524
  if (docTarget) {
11495
11525
  const seg = docTarget.basePath.split("/").filter(Boolean).join("/");
11496
11526
  const base = `${getPlatformUrl(docTarget.platform)}${seg ? `/${seg}` : ""}/`;
11497
- href = _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, new URL(safePath, base).toString()), () => ( null));
11527
+ href = _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, new URL(safePath, base).toString()), () => ( null));
11498
11528
  targetPlatform = docTarget.platform;
11499
11529
  } else if (ctx.chipBasePlatform) {
11500
11530
  const base = `${getPlatformUrl(ctx.chipBasePlatform)}/knowledge-base/`;
11501
- href = _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, new URL(safePath, base).toString()), () => ( null));
11531
+ href = _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, new URL(safePath, base).toString()), () => ( null));
11502
11532
  targetPlatform = ctx.chipBasePlatform;
11503
11533
  } else if (ctx.baseRoute) {
11504
11534
  const synthetic = `https://_internal_.local${ctx.baseRoute.startsWith("/") ? ctx.baseRoute : "/" + ctx.baseRoute}/`;
11505
11535
  const absolute = new URL(safePath, synthetic).toString();
11506
- href = _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, absolute.replace("https://_internal_.local", "")), () => ( null));
11536
+ href = _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, absolute.replace("https://_internal_.local", "")), () => ( null));
11507
11537
  targetPlatform = _nullishCoalesce(ctx.currentPlatform, () => ( null));
11508
11538
  }
11509
11539
  }
@@ -11512,15 +11542,15 @@ function resolveSourceRowCTA(row, ctx = {}) {
11512
11542
  // Canonical vocabulary only — a rail-vocab alias would miss the host's
11513
11543
  // `hostedTypes` / `overrides` and fall through to the seam's default
11514
11544
  // `<origin>/<type>/<id>` branch. Same canonicalizer `buildListUrl` uses.
11515
- type: _chunkOFO75R2Ocjs.canonicalContentRefType.call(void 0, row.documentType),
11545
+ type: _chunk7Z4EQOIXcjs.canonicalContentRefType.call(void 0, row.documentType),
11516
11546
  identifier: idValue,
11517
11547
  externalUrl: row.externalUrl,
11518
11548
  targetPlatform: _nullishCoalesce(row.targetPlatform, () => ( null))
11519
11549
  });
11520
- href = composed.href ? _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, composed.href), () => ( null)) : null;
11550
+ href = composed.href ? _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, composed.href), () => ( null)) : null;
11521
11551
  targetPlatform = composed.targetPlatform;
11522
11552
  } else if (row.externalUrl) {
11523
- href = _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, row.externalUrl), () => ( null));
11553
+ href = _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, row.externalUrl), () => ( null));
11524
11554
  targetPlatform = _nullishCoalesce(row.targetPlatform, () => ( null));
11525
11555
  }
11526
11556
  const documentType = row.documentType;
@@ -11559,7 +11589,7 @@ function resolveCardDestination({
11559
11589
  composeContentUrl,
11560
11590
  resolveHref = (href) => href
11561
11591
  }) {
11562
- const refPath = typeof _optionalChain([chatRef, 'access', _257 => _257.metadata, 'optionalAccess', _258 => _258.path]) === "string" && chatRef.metadata.path ? chatRef.metadata.path : null;
11592
+ const refPath = typeof _optionalChain([chatRef, 'access', _258 => _258.metadata, 'optionalAccess', _259 => _259.path]) === "string" && chatRef.metadata.path ? chatRef.metadata.path : null;
11563
11593
  const path = _nullishCoalesce(refPath, () => ( (item ? readFetchedCardPath(item) : null)));
11564
11594
  const cta = resolveSourceRowCTA(
11565
11595
  {
@@ -11576,7 +11606,7 @@ function resolveCardDestination({
11576
11606
  const rowUrl = cta.href ? resolveHref(cta.href) : _nullishCoalesce(chatRef.url, () => ( null));
11577
11607
  const rowPlatform = _nullishCoalesce(_nullishCoalesce(cta.targetPlatform, () => ( chatRef.targetPlatform)), () => ( null));
11578
11608
  if (rowUrl) return { url: rowUrl, targetPlatform: rowPlatform, path, source: "row" };
11579
- if (_optionalChain([entry, 'optionalAccess', _259 => _259.contentRefType]) && item) {
11609
+ if (_optionalChain([entry, 'optionalAccess', _260 => _260.contentRefType]) && item) {
11580
11610
  const choice = pickFetchedCardHref({
11581
11611
  composed: resolveFetchedCardHref({
11582
11612
  contentRefType: entry.contentRefType,
@@ -11584,10 +11614,10 @@ function resolveCardDestination({
11584
11614
  item,
11585
11615
  composeContentUrl
11586
11616
  }),
11587
- itemHref: _nullishCoalesce(_optionalChain([entry, 'access', _260 => _260.fallbackHref, 'optionalCall', _261 => _261(item)]), () => ( null)),
11617
+ itemHref: _nullishCoalesce(_optionalChain([entry, 'access', _261 => _261.fallbackHref, 'optionalCall', _262 => _262(item)]), () => ( null)),
11588
11618
  allowComposed: !entry.noComposedHref
11589
11619
  });
11590
- const url = choice ? _nullishCoalesce(_chunkOFO75R2Ocjs.safeHref.call(void 0, choice.href), () => ( null)) : null;
11620
+ const url = choice ? _nullishCoalesce(_chunk7Z4EQOIXcjs.safeHref.call(void 0, choice.href), () => ( null)) : null;
11591
11621
  if (choice && url) {
11592
11622
  return { url, targetPlatform: _nullishCoalesce(choice.targetPlatform, () => ( rowPlatform)), path, source: choice.source };
11593
11623
  }
@@ -11600,11 +11630,11 @@ function resolveCardDestination({
11600
11630
 
11601
11631
  function DeletedDataCard({ title, entityLabel, recoveryNote, className }) {
11602
11632
  const label = entityLabel || "Item";
11603
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_OUTER_STATIC} opacity-70 ${_nullishCoalesce(className, () => ( ""))}`, children: [
11604
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Trash2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
11605
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TEXT_COL, children: [
11606
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunkOFO75R2Ocjs.COMPACT_CARD_TITLE} text-ods-text-secondary line-through`, children: title || `Deleted ${label.toLowerCase()}` }) }),
11607
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFO75R2Ocjs.COMPACT_CARD_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
11633
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_OUTER_STATIC} opacity-70 ${_nullishCoalesce(className, () => ( ""))}`, children: [
11634
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Trash2, { className: "h-4 w-4 text-ods-text-secondary" }) }),
11635
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TEXT_COL, children: [
11636
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${_chunk7Z4EQOIXcjs.COMPACT_CARD_TITLE} text-ods-text-secondary line-through`, children: title || `Deleted ${label.toLowerCase()}` }) }),
11637
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk7Z4EQOIXcjs.COMPACT_CARD_META_ROW, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
11608
11638
  label,
11609
11639
  " deleted",
11610
11640
  recoveryNote ? ` \xB7 ${recoveryNote}` : ""
@@ -11659,7 +11689,7 @@ function GitHubChatCard({
11659
11689
  description,
11660
11690
  icon: githubKindIcon(kind),
11661
11691
  status,
11662
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11692
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11663
11693
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11664
11694
  menuAriaLabel: "Activity actions"
11665
11695
  }
@@ -11678,8 +11708,8 @@ function cardMenuGroups(href, discuss, openDetails, externalLink) {
11678
11708
  if (href) {
11679
11709
  items.push({
11680
11710
  id: "open-details",
11681
- label: _nullishCoalesce(_optionalChain([openDetails, 'optionalAccess', _262 => _262.label]), () => ( "Open Details")),
11682
- icon: _nullishCoalesce(_optionalChain([openDetails, 'optionalAccess', _263 => _263.icon]), () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMLT7ASAcjs.EyeIcon, { size: 20 }))),
11711
+ label: _nullishCoalesce(_optionalChain([openDetails, 'optionalAccess', _263 => _263.label]), () => ( "Open Details")),
11712
+ icon: _nullishCoalesce(_optionalChain([openDetails, 'optionalAccess', _264 => _264.icon]), () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMMLT7ASAcjs.EyeIcon, { size: 20 }))),
11683
11713
  // Main row → open the entity (same tab, soft Link nav).
11684
11714
  href,
11685
11715
  // Trailing 40px ↗ side-button → open in a new tab.
@@ -11739,18 +11769,18 @@ function itemVideoMetadata(item) {
11739
11769
  for (const v of vals) if (typeof v === "string" && v.length > 0) return v;
11740
11770
  return void 0;
11741
11771
  };
11742
- const m = _nullishCoalesce(_optionalChain([item, 'optionalAccess', _264 => _264.metadata]), () => ( {}));
11772
+ const m = _nullishCoalesce(_optionalChain([item, 'optionalAccess', _265 => _265.metadata]), () => ( {}));
11743
11773
  const out = {};
11744
- const videoUrl = pick(m.videoUrl, _optionalChain([item, 'optionalAccess', _265 => _265.custom_video_url]), _optionalChain([item, 'optionalAccess', _266 => _266.main_video_url]));
11745
- const youtubeUrl = pick(m.youtubeUrl, _optionalChain([item, 'optionalAccess', _267 => _267.youtube_url]), _optionalChain([item, 'optionalAccess', _268 => _268.testimonial_video_url]));
11746
- const highlightVideoUrl = pick(m.highlightVideoUrl, _optionalChain([item, 'optionalAccess', _269 => _269.highlight_video_url]));
11774
+ const videoUrl = pick(m.videoUrl, _optionalChain([item, 'optionalAccess', _266 => _266.custom_video_url]), _optionalChain([item, 'optionalAccess', _267 => _267.main_video_url]));
11775
+ const youtubeUrl = pick(m.youtubeUrl, _optionalChain([item, 'optionalAccess', _268 => _268.youtube_url]), _optionalChain([item, 'optionalAccess', _269 => _269.testimonial_video_url]));
11776
+ const highlightVideoUrl = pick(m.highlightVideoUrl, _optionalChain([item, 'optionalAccess', _270 => _270.highlight_video_url]));
11747
11777
  const videoPoster = pick(
11748
11778
  m.videoPoster,
11749
- _optionalChain([item, 'optionalAccess', _270 => _270.main_video_thumbnail]),
11750
- _optionalChain([item, 'optionalAccess', _271 => _271.highlight_video_thumbnail]),
11751
- _optionalChain([item, 'optionalAccess', _272 => _272.featured_image])
11779
+ _optionalChain([item, 'optionalAccess', _271 => _271.main_video_thumbnail]),
11780
+ _optionalChain([item, 'optionalAccess', _272 => _272.highlight_video_thumbnail]),
11781
+ _optionalChain([item, 'optionalAccess', _273 => _273.featured_image])
11752
11782
  );
11753
- const highlightVideoPoster = pick(m.highlightVideoPoster, _optionalChain([item, 'optionalAccess', _273 => _273.highlight_video_thumbnail]));
11783
+ const highlightVideoPoster = pick(m.highlightVideoPoster, _optionalChain([item, 'optionalAccess', _274 => _274.highlight_video_thumbnail]));
11754
11784
  if (videoUrl) out.videoUrl = videoUrl;
11755
11785
  if (youtubeUrl) out.youtubeUrl = youtubeUrl;
11756
11786
  if (highlightVideoUrl) out.highlightVideoUrl = highlightVideoUrl;
@@ -11780,15 +11810,15 @@ function fetchedItemDisplayRef(item, chatRef) {
11780
11810
  }
11781
11811
  function fetchedFaqDisplayRef(item, chatRef) {
11782
11812
  const it = item;
11783
- const answer = typeof _optionalChain([it, 'optionalAccess', _274 => _274.answer]) === "string" && it.answer.trim().length > 0 ? it.answer.trim() : null;
11813
+ const answer = typeof _optionalChain([it, 'optionalAccess', _275 => _275.answer]) === "string" && it.answer.trim().length > 0 ? it.answer.trim() : null;
11784
11814
  return {
11785
11815
  type: "faq",
11786
11816
  id: chatRef.id,
11787
11817
  sourceRepo: chatRef.sourceRepo,
11788
- title: typeof _optionalChain([it, 'optionalAccess', _275 => _275.question]) === "string" && it.question ? it.question : chatRef.id,
11818
+ title: typeof _optionalChain([it, 'optionalAccess', _276 => _276.question]) === "string" && it.question ? it.question : chatRef.id,
11789
11819
  url: _nullishCoalesce(chatRef.url, () => ( null)),
11790
11820
  ...answer ? { preview: answer.length > 400 ? `${answer.slice(0, 397)}\u2026` : answer } : {},
11791
- metadata: typeof _optionalChain([it, 'optionalAccess', _276 => _276.section]) === "string" && it.section ? { section: it.section } : {}
11821
+ metadata: typeof _optionalChain([it, 'optionalAccess', _277 => _277.section]) === "string" && it.section ? { section: it.section } : {}
11792
11822
  };
11793
11823
  }
11794
11824
  function HubspotTicketChatCard({
@@ -11796,8 +11826,8 @@ function HubspotTicketChatCard({
11796
11826
  isNewTab,
11797
11827
  discuss
11798
11828
  }) {
11799
- const status = typeof _optionalChain([chatRef, 'access', _277 => _277.metadata, 'optionalAccess', _278 => _278.status]) === "string" ? chatRef.metadata.status : void 0;
11800
- const statusLabel = typeof _optionalChain([chatRef, 'access', _279 => _279.metadata, 'optionalAccess', _280 => _280.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
11829
+ const status = typeof _optionalChain([chatRef, 'access', _278 => _278.metadata, 'optionalAccess', _279 => _279.status]) === "string" ? chatRef.metadata.status : void 0;
11830
+ const statusLabel = typeof _optionalChain([chatRef, 'access', _280 => _280.metadata, 'optionalAccess', _281 => _281.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
11801
11831
  const statusText = _nullishCoalesce(statusLabel, () => ( formatStatusToken(status)));
11802
11832
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11803
11833
  MingoInfoCard,
@@ -11806,7 +11836,7 @@ function HubspotTicketChatCard({
11806
11836
  description: _nullishCoalesce(chatRef.preview, () => ( void 0)),
11807
11837
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOSS23NHHcjs.TagIcon, { size: 24 }),
11808
11838
  status: statusText ? { label: statusText, variant: hubspotStatusToVariant(status) } : void 0,
11809
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11839
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11810
11840
  menuGroups: cardMenuGroups(chatRef.url, discuss, {
11811
11841
  label: "Open Ticket Details",
11812
11842
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOSS23NHHcjs.TagIcon, { size: 20 })
@@ -11820,7 +11850,7 @@ function FaqChatCard({
11820
11850
  isNewTab,
11821
11851
  discuss
11822
11852
  }) {
11823
- const section = typeof _optionalChain([chatRef, 'access', _281 => _281.metadata, 'optionalAccess', _282 => _282.section]) === "string" ? chatRef.metadata.section.trim() : void 0;
11853
+ const section = typeof _optionalChain([chatRef, 'access', _282 => _282.metadata, 'optionalAccess', _283 => _283.section]) === "string" ? chatRef.metadata.section.trim() : void 0;
11824
11854
  const statusLabel = section && section.length > 0 ? section : "FAQ";
11825
11855
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11826
11856
  MingoInfoCard,
@@ -11829,7 +11859,7 @@ function FaqChatCard({
11829
11859
  description: _nullishCoalesce(chatRef.preview, () => ( void 0)),
11830
11860
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFO6DOP6Mcjs.QuestionCircleIcon, { size: 24 }),
11831
11861
  status: { label: statusLabel, variant: "grey" },
11832
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11862
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11833
11863
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11834
11864
  menuAriaLabel: "FAQ actions"
11835
11865
  }
@@ -11840,7 +11870,7 @@ function SlackChatCard({
11840
11870
  isNewTab,
11841
11871
  discuss
11842
11872
  }) {
11843
- const channelName = typeof _optionalChain([chatRef, 'access', _283 => _283.metadata, 'optionalAccess', _284 => _284.channelName]) === "string" ? chatRef.metadata.channelName.trim() : void 0;
11873
+ const channelName = typeof _optionalChain([chatRef, 'access', _284 => _284.metadata, 'optionalAccess', _285 => _285.channelName]) === "string" ? chatRef.metadata.channelName.trim() : void 0;
11844
11874
  const channelPretty = channelName ? channelName.startsWith("#") ? channelName : `#${channelName}` : void 0;
11845
11875
  const title = channelPretty ? `${chatRef.title} \xB7 ${channelPretty}` : chatRef.title;
11846
11876
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -11849,7 +11879,7 @@ function SlackChatCard({
11849
11879
  title,
11850
11880
  description: _nullishCoalesce(chatRef.preview, () => ( void 0)),
11851
11881
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZUHFVG4Fcjs.SlackLogoGreyIcon, { size: 24 }),
11852
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11882
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11853
11883
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11854
11884
  menuAriaLabel: "Message actions"
11855
11885
  }
@@ -11867,7 +11897,7 @@ function GlyphChatCard({
11867
11897
  title: chatRef.title,
11868
11898
  description: _nullishCoalesce(chatRef.preview, () => ( void 0)),
11869
11899
  icon,
11870
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11900
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11871
11901
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11872
11902
  menuAriaLabel: "Card actions"
11873
11903
  }
@@ -11883,22 +11913,22 @@ function TrustCenterChatCard({
11883
11913
  isNewTab,
11884
11914
  discuss
11885
11915
  }) {
11886
- const raw2 = _optionalChain([item, 'optionalAccess', _285 => _285.frameworks]);
11916
+ const raw2 = _optionalChain([item, 'optionalAccess', _286 => _286.frameworks]);
11887
11917
  const frameworks = Array.isArray(raw2) ? raw2 : [];
11888
- const summary = _chunkOFO75R2Ocjs.trustFrameworksSummary.call(void 0, frameworks);
11918
+ const summary = _chunk7Z4EQOIXcjs.trustFrameworksSummary.call(void 0, frameworks);
11889
11919
  const leadFramework = frameworks[0];
11890
11920
  const lead = leadFramework ? {
11891
- label: _chunkOFO75R2Ocjs.trustFrameworkBadge.call(void 0, leadFramework),
11892
- color: _chunkOFO75R2Ocjs.trustFrameworkMonitoringEntry.call(void 0, leadFramework.monitoring).color
11921
+ label: _chunk7Z4EQOIXcjs.trustFrameworkBadge.call(void 0, leadFramework),
11922
+ color: _chunk7Z4EQOIXcjs.trustFrameworkMonitoringEntry.call(void 0, leadFramework.monitoring).color
11893
11923
  } : void 0;
11894
11924
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11895
11925
  MingoInfoCard,
11896
11926
  {
11897
- title: _chunkOFO75R2Ocjs.TRUST_CENTER_TITLE,
11898
- description: summary || _chunkOFO75R2Ocjs.TRUST_CENTER_TAGLINE,
11927
+ title: _chunk7Z4EQOIXcjs.TRUST_CENTER_TITLE,
11928
+ description: summary || _chunk7Z4EQOIXcjs.TRUST_CENTER_TAGLINE,
11899
11929
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOBGYDNT6cjs.ShieldCheckIcon, { size: 24 }),
11900
11930
  status: lead ? { label: lead.label, variant: TRUST_STATUS_TAG_VARIANT[lead.color] } : void 0,
11901
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11931
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11902
11932
  menuGroups: cardMenuGroups(chatRef.url, discuss, {
11903
11933
  label: "View trust center",
11904
11934
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOBGYDNT6cjs.ShieldCheckIcon, { size: 20 })
@@ -11920,7 +11950,7 @@ function DataRoomDocChatCard({
11920
11950
  description: _nullishCoalesce(chatRef.preview, () => ( void 0)),
11921
11951
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU4USZF42cjs.FileContentIcon, { size: 24 }),
11922
11952
  status: { label: badgeText, variant: "grey" },
11923
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11953
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11924
11954
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11925
11955
  menuAriaLabel: "Document actions"
11926
11956
  }
@@ -11932,14 +11962,14 @@ function GenericFinancialChatCard({
11932
11962
  isNewTab,
11933
11963
  discuss
11934
11964
  }) {
11935
- const subtitle = typeof _optionalChain([chatRef, 'access', _286 => _286.metadata, 'optionalAccess', _287 => _287.subtitle]) === "string" ? chatRef.metadata.subtitle : void 0;
11965
+ const subtitle = typeof _optionalChain([chatRef, 'access', _287 => _287.metadata, 'optionalAccess', _288 => _288.subtitle]) === "string" ? chatRef.metadata.subtitle : void 0;
11936
11966
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11937
11967
  MingoInfoCard,
11938
11968
  {
11939
11969
  title: chatRef.title,
11940
11970
  description: subtitle,
11941
11971
  icon,
11942
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11972
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
11943
11973
  menuGroups: cardMenuGroups(chatRef.url, discuss),
11944
11974
  menuAriaLabel: "Document actions"
11945
11975
  }
@@ -12001,12 +12031,12 @@ function ProductReleaseChatCard({
12001
12031
  discuss
12002
12032
  }) {
12003
12033
  const releaseProps = buildProps(item);
12004
- const status = _optionalChain([item, 'optionalAccess', _288 => _288.version]) ? { label: String(item.version), variant: "grey" } : { label: "Release", variant: "grey" };
12034
+ const status = _optionalChain([item, 'optionalAccess', _289 => _289.version]) ? { label: String(item.version), variant: "grey" } : { label: "Release", variant: "grey" };
12005
12035
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12006
12036
  EntityMingoCard,
12007
12037
  {
12008
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _289 => _289.title]), () => ( "")),
12009
- description: _optionalChain([item, 'optionalAccess', _290 => _290.summary]) || releaseProps.formattedDate || void 0,
12038
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _290 => _290.title]), () => ( "")),
12039
+ description: _optionalChain([item, 'optionalAccess', _291 => _291.summary]) || releaseProps.formattedDate || void 0,
12010
12040
  cover: releaseProps.coverImage || void 0,
12011
12041
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkX5LU4XQNcjs.Rocket02Icon, { size: 24 }),
12012
12042
  status,
@@ -12023,17 +12053,17 @@ function CampaignChatCard({
12023
12053
  isNewTab,
12024
12054
  discuss
12025
12055
  }) {
12026
- const goalsCount = Array.isArray(_optionalChain([item, 'optionalAccess', _291 => _291.goals])) ? item.goals.length : 0;
12056
+ const goalsCount = Array.isArray(_optionalChain([item, 'optionalAccess', _292 => _292.goals])) ? item.goals.length : 0;
12027
12057
  const meta = [
12028
- _optionalChain([item, 'optionalAccess', _292 => _292.start_date]) ? _chunkOFO75R2Ocjs.formatDateShort.call(void 0, item.start_date) : null,
12058
+ _optionalChain([item, 'optionalAccess', _293 => _293.start_date]) ? _chunk7Z4EQOIXcjs.formatDateShort.call(void 0, item.start_date) : null,
12029
12059
  goalsCount > 0 ? `${goalsCount} goal${goalsCount !== 1 ? "s" : ""}` : null,
12030
12060
  "Marketing campaign"
12031
12061
  ].filter(Boolean).join(" \xB7 ");
12032
12062
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12033
12063
  EntityMingoCard,
12034
12064
  {
12035
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _293 => _293.name]), () => ( "")),
12036
- description: meta || _optionalChain([item, 'optionalAccess', _294 => _294.description]) || void 0,
12065
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _294 => _294.name]), () => ( "")),
12066
+ description: meta || _optionalChain([item, 'optionalAccess', _295 => _295.description]) || void 0,
12037
12067
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6OCFDC2Qcjs.Megaphone01Icon, { size: 24 }),
12038
12068
  chatRef,
12039
12069
  isNewTab,
@@ -12064,7 +12094,7 @@ function EntityMingoCard({
12064
12094
  imageAlt: typeof title === "string" ? title : void 0,
12065
12095
  icon: fallbackIcon,
12066
12096
  status,
12067
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
12097
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, chatRef.url, isNewTab),
12068
12098
  menuGroups: cardMenuGroups(chatRef.url, discuss, openDetails, externalLink),
12069
12099
  menuAriaLabel
12070
12100
  }
@@ -12076,7 +12106,7 @@ function entityCover(image, ogPlaceholder) {
12076
12106
  function statusPill(status) {
12077
12107
  const s = typeof status === "string" ? status.trim() : "";
12078
12108
  if (!s) return void 0;
12079
- const scheme = _chunkOFO75R2Ocjs.getStatusColorScheme.call(void 0, s);
12109
+ const scheme = _chunk7Z4EQOIXcjs.getStatusColorScheme.call(void 0, s);
12080
12110
  const variant = scheme === "success" || scheme === "error" || scheme === "warning" ? scheme : "grey";
12081
12111
  return { label: s, variant };
12082
12112
  }
@@ -12088,14 +12118,14 @@ function BlogChatCard({
12088
12118
  hasEmbeddedVideo,
12089
12119
  discuss
12090
12120
  }) {
12091
- const category = Array.isArray(_optionalChain([item, 'optionalAccess', _295 => _295.categories])) ? _nullishCoalesce(_optionalChain([item, 'access', _296 => _296.categories, 'access', _297 => _297.find, 'call', _298 => _298((c) => _optionalChain([c, 'optionalAccess', _299 => _299.name])), 'optionalAccess', _300 => _300.name]), () => ( void 0)) : void 0;
12121
+ const category = Array.isArray(_optionalChain([item, 'optionalAccess', _296 => _296.categories])) ? _nullishCoalesce(_optionalChain([item, 'access', _297 => _297.categories, 'access', _298 => _298.find, 'call', _299 => _299((c) => _optionalChain([c, 'optionalAccess', _300 => _300.name])), 'optionalAccess', _301 => _301.name]), () => ( void 0)) : void 0;
12092
12122
  const status = hasEmbeddedVideo ? { label: "Video", variant: "primary" } : category ? { label: category, variant: "grey" } : void 0;
12093
12123
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12094
12124
  EntityMingoCard,
12095
12125
  {
12096
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _301 => _301.title]), () => ( "")),
12097
- description: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _302 => _302.summary]), () => ( void 0)),
12098
- cover: entityCover(_optionalChain([item, 'optionalAccess', _303 => _303.featured_image]), ogPlaceholder),
12126
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _302 => _302.title]), () => ( "")),
12127
+ description: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _303 => _303.summary]), () => ( void 0)),
12128
+ cover: entityCover(_optionalChain([item, 'optionalAccess', _304 => _304.featured_image]), ogPlaceholder),
12099
12129
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEAPORE6cjs.NewspaperIcon, { size: 24 }),
12100
12130
  status,
12101
12131
  chatRef,
@@ -12112,13 +12142,13 @@ function CaseStudyChatCard({
12112
12142
  ogPlaceholder,
12113
12143
  discuss
12114
12144
  }) {
12115
- const meta = [_optionalChain([item, 'optionalAccess', _304 => _304.msp, 'optionalAccess', _305 => _305.name]), _optionalChain([item, 'optionalAccess', _306 => _306.user, 'optionalAccess', _307 => _307.full_name])].filter(Boolean).join(" \xB7 ");
12145
+ const meta = [_optionalChain([item, 'optionalAccess', _305 => _305.msp, 'optionalAccess', _306 => _306.name]), _optionalChain([item, 'optionalAccess', _307 => _307.user, 'optionalAccess', _308 => _308.full_name])].filter(Boolean).join(" \xB7 ");
12116
12146
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12117
12147
  EntityMingoCard,
12118
12148
  {
12119
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _308 => _308.title]), () => ( "")),
12120
- description: _optionalChain([item, 'optionalAccess', _309 => _309.summary]) || meta || void 0,
12121
- cover: entityCover(_optionalChain([item, 'optionalAccess', _310 => _310.featured_image]), ogPlaceholder),
12149
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _309 => _309.title]), () => ( "")),
12150
+ description: _optionalChain([item, 'optionalAccess', _310 => _310.summary]) || meta || void 0,
12151
+ cover: entityCover(_optionalChain([item, 'optionalAccess', _311 => _311.featured_image]), ogPlaceholder),
12122
12152
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk44URXY24cjs.TrophyIcon, { size: 24 }),
12123
12153
  status: { label: "Case study", variant: "grey" },
12124
12154
  chatRef,
@@ -12135,13 +12165,13 @@ function CustomerInterviewChatCard({
12135
12165
  ogPlaceholder,
12136
12166
  discuss
12137
12167
  }) {
12138
- const meta = [_optionalChain([item, 'optionalAccess', _311 => _311.user, 'optionalAccess', _312 => _312.full_name]), _optionalChain([item, 'optionalAccess', _313 => _313.msp, 'optionalAccess', _314 => _314.name])].filter(Boolean).join(" \xB7 ");
12168
+ const meta = [_optionalChain([item, 'optionalAccess', _312 => _312.user, 'optionalAccess', _313 => _313.full_name]), _optionalChain([item, 'optionalAccess', _314 => _314.msp, 'optionalAccess', _315 => _315.name])].filter(Boolean).join(" \xB7 ");
12139
12169
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12140
12170
  EntityMingoCard,
12141
12171
  {
12142
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _315 => _315.title]), () => ( "")),
12143
- description: _optionalChain([item, 'optionalAccess', _316 => _316.video_summary]) || meta || void 0,
12144
- cover: entityCover(_optionalChain([item, 'optionalAccess', _317 => _317.featured_image]), ogPlaceholder),
12172
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _316 => _316.title]), () => ( "")),
12173
+ description: _optionalChain([item, 'optionalAccess', _317 => _317.video_summary]) || meta || void 0,
12174
+ cover: entityCover(_optionalChain([item, 'optionalAccess', _318 => _318.featured_image]), ogPlaceholder),
12145
12175
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZL4LQNYXcjs.MicrophoneIcon, { size: 24 }),
12146
12176
  status: { label: "Interview", variant: "grey" },
12147
12177
  chatRef,
@@ -12158,16 +12188,16 @@ function DesignDocChatCard({
12158
12188
  discuss
12159
12189
  }) {
12160
12190
  const displayRef = fetchedItemDisplayRef(item, chatRef);
12161
- const doc = _optionalChain([item, 'optionalAccess', _318 => _318.doc]);
12191
+ const doc = _optionalChain([item, 'optionalAccess', _319 => _319.doc]);
12162
12192
  const readiness = doc ? DESIGN_DOC_READINESS_DISPLAY[designDocReadiness(doc.completion)] : null;
12163
12193
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12164
12194
  MingoInfoCard,
12165
12195
  {
12166
- title: _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _319 => _319.title]), () => ( displayRef.title)),
12196
+ title: _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _320 => _320.title]), () => ( displayRef.title)),
12167
12197
  description: doc ? [designDocMetaLine(doc), formatCompletionLabel(doc.completion)].join(" \xB7 ") : _nullishCoalesce(displayRef.preview, () => ( void 0)),
12168
12198
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU4USZF42cjs.FileContentIcon, { size: 24 }),
12169
12199
  status: readiness ? { label: readiness.label, variant: readiness.scheme === "success" ? "success" : "grey" } : { label: "Design doc", variant: "grey" },
12170
- anchorProps: _chunkOFO75R2Ocjs.buildAnchorProps.call(void 0, displayRef.url, isNewTab),
12200
+ anchorProps: _chunk7Z4EQOIXcjs.buildAnchorProps.call(void 0, displayRef.url, isNewTab),
12171
12201
  menuGroups: cardMenuGroups(displayRef.url, discuss),
12172
12202
  menuAriaLabel: "Design doc actions"
12173
12203
  }
@@ -12180,13 +12210,13 @@ function InvestorUpdateChatCard({
12180
12210
  ogPlaceholder,
12181
12211
  discuss
12182
12212
  }) {
12183
- const title = _optionalChain([item, 'optionalAccess', _320 => _320.title]) || `Update #${_nullishCoalesce(_optionalChain([item, 'optionalAccess', _321 => _321.update_number]), () => ( "?"))}`;
12213
+ const title = _optionalChain([item, 'optionalAccess', _321 => _321.title]) || `Update #${_nullishCoalesce(_optionalChain([item, 'optionalAccess', _322 => _322.update_number]), () => ( "?"))}`;
12184
12214
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12185
12215
  EntityMingoCard,
12186
12216
  {
12187
12217
  title,
12188
- description: _optionalChain([item, 'optionalAccess', _322 => _322.strategic_update]) || _optionalChain([item, 'optionalAccess', _323 => _323.content]) || _chunkOFO75R2Ocjs.formatInvestorUpdatePeriod.call(void 0, _nullishCoalesce(_optionalChain([item, 'optionalAccess', _324 => _324.period_start]), () => ( null)), _nullishCoalesce(_optionalChain([item, 'optionalAccess', _325 => _325.period_end]), () => ( null))) || void 0,
12189
- cover: entityCover(_optionalChain([item, 'optionalAccess', _326 => _326.featured_image]), ogPlaceholder),
12218
+ description: _optionalChain([item, 'optionalAccess', _323 => _323.strategic_update]) || _optionalChain([item, 'optionalAccess', _324 => _324.content]) || _chunk7Z4EQOIXcjs.formatInvestorUpdatePeriod.call(void 0, _nullishCoalesce(_optionalChain([item, 'optionalAccess', _325 => _325.period_start]), () => ( null)), _nullishCoalesce(_optionalChain([item, 'optionalAccess', _326 => _326.period_end]), () => ( null))) || void 0,
12219
+ cover: entityCover(_optionalChain([item, 'optionalAccess', _327 => _327.featured_image]), ogPlaceholder),
12190
12220
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk37SGOMF5cjs.PresentationLineIcon, { size: 24 }),
12191
12221
  status: { label: "Investor update", variant: "grey" },
12192
12222
  chatRef,
@@ -12203,12 +12233,12 @@ function OnboardingGuideChatCard({
12203
12233
  ogPlaceholder,
12204
12234
  discuss
12205
12235
  }) {
12206
- const cover = _nullishCoalesce(_nullishCoalesce(entityCover(_optionalChain([item, 'optionalAccess', _327 => _327.featured_image])), () => ( entityCover(_optionalChain([item, 'optionalAccess', _328 => _328.main_video_thumbnail])))), () => ( entityCover(_optionalChain([item, 'optionalAccess', _329 => _329.og_image_url]), ogPlaceholder)));
12236
+ const cover = _nullishCoalesce(_nullishCoalesce(entityCover(_optionalChain([item, 'optionalAccess', _328 => _328.featured_image])), () => ( entityCover(_optionalChain([item, 'optionalAccess', _329 => _329.main_video_thumbnail])))), () => ( entityCover(_optionalChain([item, 'optionalAccess', _330 => _330.og_image_url]), ogPlaceholder)));
12207
12237
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12208
12238
  EntityMingoCard,
12209
12239
  {
12210
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _330 => _330.title]), () => ( "")),
12211
- description: _nullishCoalesce(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _331 => _331.summary]), () => ( _optionalChain([item, 'optionalAccess', _332 => _332.description]))), () => ( void 0)),
12240
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _331 => _331.title]), () => ( "")),
12241
+ description: _nullishCoalesce(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _332 => _332.summary]), () => ( _optionalChain([item, 'optionalAccess', _333 => _333.description]))), () => ( void 0)),
12212
12242
  cover,
12213
12243
  fallbackIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZFJDLJSIcjs.CompassIcon, { size: 24 }),
12214
12244
  status: { label: "Guide", variant: "grey" },
@@ -12229,13 +12259,13 @@ function ProgramChatCard({
12229
12259
  discuss
12230
12260
  }) {
12231
12261
  const icon = configKey === "webinar" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGZ6NU2C2cjs.PresentationBarIcon, { size: 24 }) : configKey === "event" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkM4KPLFFAcjs.CalendarIcon, { size: 24 }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZL4LQNYXcjs.MicrophoneIcon, { size: 24 });
12232
- const { line: meta } = _chunkOFO75R2Ocjs.programMetaLine.call(void 0, _nullishCoalesce(item, () => ( {})), configKey, _chunkOFO75R2Ocjs.programMetaFormatters.call(void 0, _chunkOFO75R2Ocjs.PROGRAM_META_RENDERERS));
12262
+ const { line: meta } = _chunk7Z4EQOIXcjs.programMetaLine.call(void 0, _nullishCoalesce(item, () => ( {})), configKey, _chunk7Z4EQOIXcjs.programMetaFormatters.call(void 0, _chunk7Z4EQOIXcjs.PROGRAM_META_RENDERERS));
12233
12263
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12234
12264
  EntityMingoCard,
12235
12265
  {
12236
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _333 => _333.title]), () => ( "")),
12237
- description: meta || _optionalChain([item, 'optionalAccess', _334 => _334.description]) || void 0,
12238
- cover: entityCover(_optionalChain([item, 'optionalAccess', _335 => _335.cover_url]), ogPlaceholder),
12266
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _334 => _334.title]), () => ( "")),
12267
+ description: meta || _optionalChain([item, 'optionalAccess', _335 => _335.description]) || void 0,
12268
+ cover: entityCover(_optionalChain([item, 'optionalAccess', _336 => _336.cover_url]), ogPlaceholder),
12239
12269
  fallbackIcon: icon,
12240
12270
  status: { label, variant: "grey" },
12241
12271
  chatRef,
@@ -12252,10 +12282,10 @@ function RoadmapChatCard({
12252
12282
  cardType,
12253
12283
  discuss
12254
12284
  }) {
12255
- const logoUrl = typeof _optionalChain([item, 'optionalAccess', _336 => _336.icon]) === "string" && item.icon.startsWith("http") ? item.icon : void 0;
12256
- const useTypeIcon = cardType === "internal_task" || !logoUrl && _optionalChain([item, 'optionalAccess', _337 => _337.customItemId]) != null;
12285
+ const logoUrl = typeof _optionalChain([item, 'optionalAccess', _337 => _337.icon]) === "string" && item.icon.startsWith("http") ? item.icon : void 0;
12286
+ const useTypeIcon = cardType === "internal_task" || !logoUrl && _optionalChain([item, 'optionalAccess', _338 => _338.customItemId]) != null;
12257
12287
  const defaultIcon = cardType === "delivery_item" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3UIJR4PYcjs.TruckFastIcon, { size: 24 }) : cardType === "internal_task" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6DN5HKRWcjs.CheckSquareIcon, { size: 24 }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMQDSQKK2cjs.MapIcon, { size: 24 });
12258
- const icon = useTypeIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.TaskTypeIcon, { customItemId: _optionalChain([item, 'optionalAccess', _338 => _338.customItemId]), className: "size-6" }) : logoUrl ? (
12288
+ const icon = useTypeIcon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.TaskTypeIcon, { customItemId: _optionalChain([item, 'optionalAccess', _339 => _339.customItemId]), className: "size-6" }) : logoUrl ? (
12259
12289
  // Contained (not full-bleed) so the integration logo keeps its aspect
12260
12290
  // ratio inside the bordered icon box — matches RoadmapCard.
12261
12291
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHOTM4UM6cjs.next_image_default, { src: logoUrl, alt: "", className: "size-6 object-contain", width: 24, height: 24, unoptimized: true })
@@ -12266,10 +12296,10 @@ function RoadmapChatCard({
12266
12296
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12267
12297
  EntityMingoCard,
12268
12298
  {
12269
- title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _339 => _339.title]), () => ( "")),
12270
- description: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _340 => _340.description]), () => ( void 0)),
12299
+ title: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _340 => _340.title]), () => ( "")),
12300
+ description: _nullishCoalesce(_optionalChain([item, 'optionalAccess', _341 => _341.description]), () => ( void 0)),
12271
12301
  fallbackIcon: icon,
12272
- status: statusPill(_optionalChain([item, 'optionalAccess', _341 => _341.status])),
12302
+ status: statusPill(_optionalChain([item, 'optionalAccess', _342 => _342.status])),
12273
12303
  chatRef,
12274
12304
  isNewTab,
12275
12305
  discuss,
@@ -12285,7 +12315,7 @@ function refHydratedEntry(docType, label, renderRef) {
12285
12315
  bareInline: true,
12286
12316
  contentRefType: docType,
12287
12317
  noComposedHref: true,
12288
- fallbackHref: (item) => _nullishCoalesce(_optionalChain([item, 'optionalAccess', _342 => _342.url]), () => ( null)),
12318
+ fallbackHref: (item) => _nullishCoalesce(_optionalChain([item, 'optionalAccess', _343 => _343.url]), () => ( null)),
12289
12319
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MingoInfoCardSkeleton, {}),
12290
12320
  render: (item, chatRef, opts) => renderRef(fetchedItemDisplayRef(item, chatRef), opts)
12291
12321
  };
@@ -12317,15 +12347,15 @@ function financialRegistryEntries() {
12317
12347
  );
12318
12348
  }
12319
12349
  function refText(ref, key) {
12320
- const value = _optionalChain([ref, 'optionalAccess', _343 => _343[key]]);
12350
+ const value = _optionalChain([ref, 'optionalAccess', _344 => _344[key]]);
12321
12351
  return typeof value === "string" && value.length > 0 ? value : null;
12322
12352
  }
12323
12353
  function VendorGlyph({ title, logoUrl }) {
12324
- if (!logoUrl) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.EntityIcon, { icon: { name: SOURCE_ICON_NAMES.vendors }, size: 24 });
12354
+ if (!logoUrl) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.EntityIcon, { icon: { name: SOURCE_ICON_NAMES.vendors }, size: 24 });
12325
12355
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VendorIcon, { vendor: { title, logo_url: logoUrl }, size: "xs", showBackground: false });
12326
12356
  }
12327
12357
  function SitePageGlyph({ iconName }) {
12328
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.EntityIcon, { icon: { name: _nullishCoalesce(iconName, () => ( SOURCE_ICON_NAMES["website-pages"])) }, size: 24 });
12358
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.EntityIcon, { icon: { name: _nullishCoalesce(iconName, () => ( SOURCE_ICON_NAMES["website-pages"])) }, size: 24 });
12329
12359
  }
12330
12360
  var GITHUB_CARD_CONFIGS = {
12331
12361
  github_commit: { label: "GitHub commit", kind: "commit" },
@@ -12363,7 +12393,7 @@ var REF_GLYPH_CARD_CONFIGS = {
12363
12393
  // rate. A glyph card; it opens the pricing page.
12364
12394
  openframe_price: { label: "OpenFrame price" },
12365
12395
  // A vendor (product) of the OpenMSP directory. A glyph card; it opens the vendor's page there.
12366
- vendor: { label: "Vendor", icon: (ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VendorGlyph, { title: _nullishCoalesce(_optionalChain([ref, 'optionalAccess', _344 => _344.title]), () => ( "")), logoUrl: refText(ref, "logo_url") }) }
12396
+ vendor: { label: "Vendor", icon: (ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VendorGlyph, { title: _nullishCoalesce(_optionalChain([ref, 'optionalAccess', _345 => _345.title]), () => ( "")), logoUrl: refText(ref, "logo_url") }) }
12367
12397
  };
12368
12398
  function sourceGlyph(docType) {
12369
12399
  const { Icon } = resolveSourceIcon({ sourceRepo: defaultTableIdForDocumentType(docType), documentType: docType });
@@ -12382,8 +12412,8 @@ function refGlyphRegistryEntries() {
12382
12412
  title: displayRef.title,
12383
12413
  description: _nullishCoalesce(displayRef.preview, () => ( void 0)),
12384
12414
  cover: entityCover(
12385
- _optionalChain([displayRef, 'access', _345 => _345.metadata, 'optionalAccess', _346 => _346.videoPoster]),
12386
- _nullishCoalesce(_optionalChain([opts, 'access', _347 => _347.extras, 'optionalAccess', _348 => _348.buildOgPlaceholderUrl, 'optionalCall', _349 => _349(_nullishCoalesce(displayRef.title, () => ( "")))]), () => ( null))
12415
+ _optionalChain([displayRef, 'access', _346 => _346.metadata, 'optionalAccess', _347 => _347.videoPoster]),
12416
+ _nullishCoalesce(_optionalChain([opts, 'access', _348 => _348.extras, 'optionalAccess', _349 => _349.buildOgPlaceholderUrl, 'optionalCall', _350 => _350(_nullishCoalesce(displayRef.title, () => ( "")))]), () => ( null))
12387
12417
  ),
12388
12418
  fallbackIcon: glyph(displayRef),
12389
12419
  status: { label: cfg.label, variant: "grey" },
@@ -12398,9 +12428,9 @@ function refGlyphRegistryEntries() {
12398
12428
  }
12399
12429
  function fetchedEmployeeEntryDisplayRef(item, chatRef) {
12400
12430
  const it = item;
12401
- const title = typeof _optionalChain([it, 'optionalAccess', _350 => _350.title]) === "string" && it.title.trim().length > 0 ? it.title.trim() : chatRef.title;
12402
- const author = typeof _optionalChain([it, 'optionalAccess', _351 => _351.author, 'optionalAccess', _352 => _352.full_name]) === "string" ? it.author.full_name.trim() : "";
12403
- const summary = typeof _optionalChain([it, 'optionalAccess', _353 => _353.summary]) === "string" ? it.summary.trim() : "";
12431
+ const title = typeof _optionalChain([it, 'optionalAccess', _351 => _351.title]) === "string" && it.title.trim().length > 0 ? it.title.trim() : chatRef.title;
12432
+ const author = typeof _optionalChain([it, 'optionalAccess', _352 => _352.author, 'optionalAccess', _353 => _353.full_name]) === "string" ? it.author.full_name.trim() : "";
12433
+ const summary = typeof _optionalChain([it, 'optionalAccess', _354 => _354.summary]) === "string" ? it.summary.trim() : "";
12404
12434
  const preview = [author, summary].filter((x) => x.length > 0).join(" \xB7 ");
12405
12435
  return { ...chatRef, title, preview: preview.length > 0 ? preview : chatRef.preview };
12406
12436
  }
@@ -12442,7 +12472,7 @@ function programRegistryEntries() {
12442
12472
  label: cfg.label,
12443
12473
  contentRefType: cfg.contentRefType,
12444
12474
  bareInline: true,
12445
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.ProgramCardSkeleton, { size: "sm" }),
12475
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.ProgramCardSkeleton, { size: "sm" }),
12446
12476
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12447
12477
  ProgramChatCard,
12448
12478
  {
@@ -12452,7 +12482,7 @@ function programRegistryEntries() {
12452
12482
  discuss: opts.discuss,
12453
12483
  configKey: cfg.configKey,
12454
12484
  label: cfg.configKey.charAt(0).toUpperCase() + cfg.configKey.slice(1),
12455
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _354 => _354.extras, 'optionalAccess', _355 => _355.buildOgPlaceholderUrl, 'optionalCall', _356 => _356(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _357 => _357.title]), () => ( "")))]), () => ( null))
12485
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _355 => _355.extras, 'optionalAccess', _356 => _356.buildOgPlaceholderUrl, 'optionalCall', _357 => _357(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _358 => _358.title]), () => ( "")))]), () => ( null))
12456
12486
  }
12457
12487
  )
12458
12488
  }));
@@ -12473,7 +12503,7 @@ var ROADMAP_CARD_CONFIGS = {
12473
12503
  // The card's destination IS the ClickUp deep link, derived from the
12474
12504
  // task id post-fetch (the refs frame used to carry it).
12475
12505
  noComposedHref: true,
12476
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _358 => _358.id]) != null ? clickupTaskUrl(String(item.id)) : null
12506
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _359 => _359.id]) != null ? clickupTaskUrl(String(item.id)) : null
12477
12507
  }
12478
12508
  };
12479
12509
  function roadmapRegistryEntries() {
@@ -12483,7 +12513,7 @@ function roadmapRegistryEntries() {
12483
12513
  bareInline: true,
12484
12514
  ...cfg.noComposedHref ? { noComposedHref: true } : {},
12485
12515
  ...cfg.fallbackHref ? { fallbackHref: cfg.fallbackHref } : {},
12486
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.RoadmapCardSkeleton, { size: "sm" }),
12516
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.RoadmapCardSkeleton, { size: "sm" }),
12487
12517
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12488
12518
  RoadmapChatCard,
12489
12519
  {
@@ -12515,8 +12545,8 @@ var CHAT_CARD_REGISTRY = {
12515
12545
  DeletedDataCard,
12516
12546
  {
12517
12547
  title: chatRef.title && chatRef.title !== chatRef.id ? chatRef.title : null,
12518
- entityLabel: _nullishCoalesce(_optionalChain([chatRef, 'access', _359 => _359.metadata, 'optionalAccess', _360 => _360.entity_label]), () => ( null)),
12519
- recoveryNote: _nullishCoalesce(_optionalChain([chatRef, 'access', _361 => _361.metadata, 'optionalAccess', _362 => _362.recovery_note]), () => ( null))
12548
+ entityLabel: _nullishCoalesce(_optionalChain([chatRef, 'access', _360 => _360.metadata, 'optionalAccess', _361 => _361.entity_label]), () => ( null)),
12549
+ recoveryNote: _nullishCoalesce(_optionalChain([chatRef, 'access', _362 => _362.metadata, 'optionalAccess', _363 => _363.recovery_note]), () => ( null))
12520
12550
  }
12521
12551
  )
12522
12552
  },
@@ -12533,7 +12563,7 @@ var CHAT_CARD_REGISTRY = {
12533
12563
  bareInline: true,
12534
12564
  contentRefType: "faq",
12535
12565
  noComposedHref: true,
12536
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _363 => _363.id]) != null ? `/faqs#${faqItemAnchor(item.id)}` : null,
12566
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _364 => _364.id]) != null ? `/faqs#${faqItemAnchor(item.id)}` : null,
12537
12567
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MingoInfoCardSkeleton, {}),
12538
12568
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FaqChatCard, { chatRef: fetchedFaqDisplayRef(item, chatRef), isNewTab: opts.isNewTab, discuss: opts.discuss })
12539
12569
  },
@@ -12541,12 +12571,12 @@ var CHAT_CARD_REGISTRY = {
12541
12571
  // projection route; `extractCardItems` turns its object payload into the
12542
12572
  // single matched row. Destination is the public page unless the host
12543
12573
  // re-homes the type (`composeContentUrl` override).
12544
- [_chunkOFO75R2Ocjs.TRUST_CENTER_DOCUMENT_TYPE]: {
12574
+ [_chunk7Z4EQOIXcjs.TRUST_CENTER_DOCUMENT_TYPE]: {
12545
12575
  label: "Trust center",
12546
12576
  bareInline: true,
12547
- contentRefType: _chunkOFO75R2Ocjs.TRUST_CENTER_DOCUMENT_TYPE,
12577
+ contentRefType: _chunk7Z4EQOIXcjs.TRUST_CENTER_DOCUMENT_TYPE,
12548
12578
  noComposedHref: true,
12549
- fallbackHref: () => _chunkOFO75R2Ocjs.TRUST_CENTER_PAGE_PATH,
12579
+ fallbackHref: () => _chunk7Z4EQOIXcjs.TRUST_CENTER_PAGE_PATH,
12550
12580
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MingoInfoCardSkeleton, {}),
12551
12581
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TrustCenterChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
12552
12582
  },
@@ -12572,7 +12602,7 @@ var CHAT_CARD_REGISTRY = {
12572
12602
  label: "Blog post",
12573
12603
  contentRefType: "blog_post_existing",
12574
12604
  bareInline: true,
12575
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.BlogCardSkeleton, { size: "sm" }),
12605
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.BlogCardSkeleton, { size: "sm" }),
12576
12606
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12577
12607
  BlogChatCard,
12578
12608
  {
@@ -12580,8 +12610,8 @@ var CHAT_CARD_REGISTRY = {
12580
12610
  chatRef,
12581
12611
  isNewTab: opts.isNewTab,
12582
12612
  discuss: opts.discuss,
12583
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _364 => _364.extras, 'optionalAccess', _365 => _365.buildOgPlaceholderUrl, 'optionalCall', _366 => _366(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _367 => _367.title]), () => ( "")))]), () => ( null)),
12584
- hasEmbeddedVideo: _optionalChain([chatRef, 'access', _368 => _368.metadata, 'optionalAccess', _369 => _369.hasEmbeddedVideo]) === true
12613
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _365 => _365.extras, 'optionalAccess', _366 => _366.buildOgPlaceholderUrl, 'optionalCall', _367 => _367(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _368 => _368.title]), () => ( "")))]), () => ( null)),
12614
+ hasEmbeddedVideo: _optionalChain([chatRef, 'access', _369 => _369.metadata, 'optionalAccess', _370 => _370.hasEmbeddedVideo]) === true
12585
12615
  }
12586
12616
  )
12587
12617
  },
@@ -12589,7 +12619,7 @@ var CHAT_CARD_REGISTRY = {
12589
12619
  label: "Case study",
12590
12620
  contentRefType: "case_study",
12591
12621
  bareInline: true,
12592
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.CaseStudyCardSkeleton, { size: "sm" }),
12622
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.CaseStudyCardSkeleton, { size: "sm" }),
12593
12623
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12594
12624
  CaseStudyChatCard,
12595
12625
  {
@@ -12597,7 +12627,7 @@ var CHAT_CARD_REGISTRY = {
12597
12627
  chatRef,
12598
12628
  isNewTab: opts.isNewTab,
12599
12629
  discuss: opts.discuss,
12600
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _370 => _370.extras, 'optionalAccess', _371 => _371.buildOgPlaceholderUrl, 'optionalCall', _372 => _372(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _373 => _373.title]), () => ( "")))]), () => ( null))
12630
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _371 => _371.extras, 'optionalAccess', _372 => _372.buildOgPlaceholderUrl, 'optionalCall', _373 => _373(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _374 => _374.title]), () => ( "")))]), () => ( null))
12601
12631
  }
12602
12632
  )
12603
12633
  },
@@ -12606,7 +12636,7 @@ var CHAT_CARD_REGISTRY = {
12606
12636
  contentRefType: "design_doc",
12607
12637
  bareInline: true,
12608
12638
  noComposedHref: true,
12609
- fallbackHref: (item) => _nullishCoalesce(_optionalChain([item, 'optionalAccess', _374 => _374.url]), () => ( null)),
12639
+ fallbackHref: (item) => _nullishCoalesce(_optionalChain([item, 'optionalAccess', _375 => _375.url]), () => ( null)),
12610
12640
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MingoInfoCardSkeleton, {}),
12611
12641
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DesignDocChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
12612
12642
  },
@@ -12614,7 +12644,7 @@ var CHAT_CARD_REGISTRY = {
12614
12644
  label: "Customer interview",
12615
12645
  contentRefType: "customer_interview",
12616
12646
  bareInline: true,
12617
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.CustomerInterviewCardSkeleton, { size: "sm" }),
12647
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.CustomerInterviewCardSkeleton, { size: "sm" }),
12618
12648
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12619
12649
  CustomerInterviewChatCard,
12620
12650
  {
@@ -12622,7 +12652,7 @@ var CHAT_CARD_REGISTRY = {
12622
12652
  chatRef,
12623
12653
  isNewTab: opts.isNewTab,
12624
12654
  discuss: opts.discuss,
12625
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _375 => _375.extras, 'optionalAccess', _376 => _376.buildOgPlaceholderUrl, 'optionalCall', _377 => _377(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _378 => _378.title]), () => ( "")))]), () => ( null))
12655
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _376 => _376.extras, 'optionalAccess', _377 => _377.buildOgPlaceholderUrl, 'optionalCall', _378 => _378(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _379 => _379.title]), () => ( "")))]), () => ( null))
12626
12656
  }
12627
12657
  )
12628
12658
  },
@@ -12630,9 +12660,9 @@ var CHAT_CARD_REGISTRY = {
12630
12660
  label: "Product release",
12631
12661
  contentRefType: "product_release",
12632
12662
  bareInline: true,
12633
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.ProductReleaseCardSkeleton, { size: "sm" }),
12663
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.ProductReleaseCardSkeleton, { size: "sm" }),
12634
12664
  render: (item, chatRef, opts) => {
12635
- const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _379 => _379.extras, 'optionalAccess', _380 => _380.buildProductReleaseCardProps]), () => ( _chunkOFO75R2Ocjs.defaultBuildProductReleaseCardProps));
12665
+ const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _380 => _380.extras, 'optionalAccess', _381 => _381.buildProductReleaseCardProps]), () => ( _chunk7Z4EQOIXcjs.defaultBuildProductReleaseCardProps));
12636
12666
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12637
12667
  ProductReleaseChatCard,
12638
12668
  {
@@ -12650,7 +12680,7 @@ var CHAT_CARD_REGISTRY = {
12650
12680
  label: "Investor update",
12651
12681
  contentRefType: "investor_update",
12652
12682
  bareInline: true,
12653
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.InvestorUpdateCardSkeleton, { size: "sm" }),
12683
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.InvestorUpdateCardSkeleton, { size: "sm" }),
12654
12684
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12655
12685
  InvestorUpdateChatCard,
12656
12686
  {
@@ -12658,7 +12688,7 @@ var CHAT_CARD_REGISTRY = {
12658
12688
  chatRef,
12659
12689
  isNewTab: opts.isNewTab,
12660
12690
  discuss: opts.discuss,
12661
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _381 => _381.extras, 'optionalAccess', _382 => _382.buildOgPlaceholderUrl, 'optionalCall', _383 => _383(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _384 => _384.title]), () => ( "")))]), () => ( null))
12691
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _382 => _382.extras, 'optionalAccess', _383 => _383.buildOgPlaceholderUrl, 'optionalCall', _384 => _384(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _385 => _385.title]), () => ( "")))]), () => ( null))
12662
12692
  }
12663
12693
  )
12664
12694
  },
@@ -12668,7 +12698,7 @@ var CHAT_CARD_REGISTRY = {
12668
12698
  bareInline: true,
12669
12699
  // "Display" affordance (verbatim guide body) instead of "Ask".
12670
12700
  displayAction: true,
12671
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.OnboardingGuideCardSkeleton, { size: "sm" }),
12701
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.OnboardingGuideCardSkeleton, { size: "sm" }),
12672
12702
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12673
12703
  OnboardingGuideChatCard,
12674
12704
  {
@@ -12676,7 +12706,7 @@ var CHAT_CARD_REGISTRY = {
12676
12706
  chatRef,
12677
12707
  isNewTab: opts.isNewTab,
12678
12708
  discuss: opts.discuss,
12679
- ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _385 => _385.extras, 'optionalAccess', _386 => _386.buildOgPlaceholderUrl, 'optionalCall', _387 => _387(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _388 => _388.title]), () => ( "")))]), () => ( null))
12709
+ ogPlaceholder: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _386 => _386.extras, 'optionalAccess', _387 => _387.buildOgPlaceholderUrl, 'optionalCall', _388 => _388(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _389 => _389.title]), () => ( "")))]), () => ( null))
12680
12710
  }
12681
12711
  )
12682
12712
  },
@@ -12687,13 +12717,13 @@ var CHAT_CARD_REGISTRY = {
12687
12717
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CampaignCardAdminSkeleton, {}),
12688
12718
  // No public viewer — synthesize the hub-internal admin URL post-fetch
12689
12719
  // so the wrapper + isNewTab computation see the actual destination.
12690
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _389 => _389.id]) ? `/admin/campaigns/${encodeURIComponent(String(item.id))}` : null,
12720
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _390 => _390.id]) ? `/admin/campaigns/${encodeURIComponent(String(item.id))}` : null,
12691
12721
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CampaignChatCard, { item, chatRef, isNewTab: opts.isNewTab, discuss: opts.discuss })
12692
12722
  },
12693
12723
  ...roadmapRegistryEntries()
12694
12724
  };
12695
12725
  function chatCardLabel(docType) {
12696
- return _optionalChain([CHAT_CARD_REGISTRY, 'access', _390 => _390[docType], 'optionalAccess', _391 => _391.label]);
12726
+ return _optionalChain([CHAT_CARD_REGISTRY, 'access', _391 => _391[docType], 'optionalAccess', _392 => _392.label]);
12697
12727
  }
12698
12728
  function ChatCardNavWrap({
12699
12729
  href,
@@ -12709,13 +12739,13 @@ function ChatCardNavWrap({
12709
12739
  if (!href) return;
12710
12740
  const targetEl = e.target;
12711
12741
  const host = e.currentTarget;
12712
- if (!_optionalChain([host, 'optionalAccess', _392 => _392.contains, 'call', _393 => _393(targetEl)])) return;
12713
- if (_optionalChain([targetEl, 'optionalAccess', _394 => _394.closest, 'optionalCall', _395 => _395("button")])) return;
12714
- if (!_optionalChain([targetEl, 'optionalAccess', _396 => _396.closest, 'optionalCall', _397 => _397("a")])) return;
12742
+ if (!_optionalChain([host, 'optionalAccess', _393 => _393.contains, 'call', _394 => _394(targetEl)])) return;
12743
+ if (_optionalChain([targetEl, 'optionalAccess', _395 => _395.closest, 'optionalCall', _396 => _396("button")])) return;
12744
+ if (!_optionalChain([targetEl, 'optionalAccess', _397 => _397.closest, 'optionalCall', _398 => _398("a")])) return;
12715
12745
  const handled = executeNavigation({ event: e, runtime, href, path, targetPlatform, fallbackNavigate: router.push });
12716
12746
  if (!handled) return;
12717
12747
  e.stopPropagation();
12718
- if (!isNewTab && _optionalChain([panel, 'optionalAccess', _398 => _398.closeChat])) panel.closeChat();
12748
+ if (!isNewTab && _optionalChain([panel, 'optionalAccess', _399 => _399.closeChat])) panel.closeChat();
12719
12749
  };
12720
12750
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "contents", onClickCapture, children });
12721
12751
  }
@@ -12731,7 +12761,7 @@ function ChatCardLoader({
12731
12761
  const entry = CHAT_CARD_REGISTRY[chatRef.type];
12732
12762
  const fetchEntry = entry && entry.contentRefType ? entry : null;
12733
12763
  const { item, isLoading, isError, isFetched } = useChatCardItem(
12734
- _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _399 => _399.contentRefType]), () => ( "")),
12764
+ _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _400 => _400.contentRefType]), () => ( "")),
12735
12765
  fetchEntry ? chatRef.id : ""
12736
12766
  );
12737
12767
  if (!entry) return null;
@@ -12741,7 +12771,7 @@ function ChatCardLoader({
12741
12771
  entry: fetchEntry,
12742
12772
  ctx: sourceRowCtxFromRuntime(runtime, { baseRoute, chipBasePlatform }),
12743
12773
  composeContentUrl: runtime.composeContentUrl,
12744
- resolveHref: (href) => _chunkOFO75R2Ocjs.resolveHrefForRuntime.call(void 0, href, runtime)
12774
+ resolveHref: (href) => _chunk7Z4EQOIXcjs.resolveHrefForRuntime.call(void 0, href, runtime)
12745
12775
  });
12746
12776
  const hrefResolvedChatRef = {
12747
12777
  ...chatRef,
@@ -12752,7 +12782,7 @@ function ChatCardLoader({
12752
12782
  };
12753
12783
  const fetchedTitle = fetchEntry && item ? readFetchedCardTitle(item) : null;
12754
12784
  const finalChatRef = fetchedTitle && (!hrefResolvedChatRef.title || hrefResolvedChatRef.title === hrefResolvedChatRef.id) ? { ...hrefResolvedChatRef, title: fetchedTitle } : hrefResolvedChatRef;
12755
- const isNewTab = _chunkOFO75R2Ocjs.computeIsNewTab.call(void 0, runtime, finalChatRef.url, _nullishCoalesce(finalChatRef.targetPlatform, () => ( null)));
12785
+ const isNewTab = _chunk7Z4EQOIXcjs.computeIsNewTab.call(void 0, runtime, finalChatRef.url, _nullishCoalesce(finalChatRef.targetPlatform, () => ( null)));
12756
12786
  const useDisplay = !!entry.displayAction && !!onDisplay;
12757
12787
  const discussFn = useDisplay ? onDisplay : onDiscuss;
12758
12788
  const discuss = discussFn ? {
@@ -12767,7 +12797,7 @@ function ChatCardLoader({
12767
12797
  isNewTab,
12768
12798
  discuss
12769
12799
  };
12770
- const path = typeof _optionalChain([finalChatRef, 'access', _400 => _400.metadata, 'optionalAccess', _401 => _401.path]) === "string" ? finalChatRef.metadata.path : null;
12800
+ const path = typeof _optionalChain([finalChatRef, 'access', _401 => _401.metadata, 'optionalAccess', _402 => _402.path]) === "string" ? finalChatRef.metadata.path : null;
12771
12801
  const navWrap = (children) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12772
12802
  ChatCardNavWrap,
12773
12803
  {
@@ -12791,7 +12821,7 @@ function ChatCardLoader({
12791
12821
  if (!fetchEntry) {
12792
12822
  return finish(entry.render(void 0, finalChatRef, renderOpts));
12793
12823
  }
12794
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: _nullishCoalesce(_optionalChain([fetchEntry, 'access', _402 => _402.skeleton, 'optionalCall', _403 => _403()]), () => ( null)) });
12824
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: _nullishCoalesce(_optionalChain([fetchEntry, 'access', _403 => _403.skeleton, 'optionalCall', _404 => _404()]), () => ( null)) });
12795
12825
  if (!item) {
12796
12826
  if (isError) {
12797
12827
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CardLoadFailure, { label: entry.label, id: finalChatRef.id, detail: "Failed to load" });
@@ -13085,7 +13115,7 @@ function useChunkCatchup({
13085
13115
  if (catchupRun.current === run) {
13086
13116
  if (currentDialogId !== dialogIdRef.current) {
13087
13117
  catchupRun.current = null;
13088
- if (_optionalChain([pendingCatchupRef, 'access', _404 => _404.current, 'optionalAccess', _405 => _405.dialogId]) === currentDialogId) {
13118
+ if (_optionalChain([pendingCatchupRef, 'access', _405 => _405.current, 'optionalAccess', _406 => _406.dialogId]) === currentDialogId) {
13089
13119
  pendingCatchupRef.current = null;
13090
13120
  }
13091
13121
  } else {
@@ -13096,7 +13126,7 @@ function useChunkCatchup({
13096
13126
  if (pending.dialogId === currentDialogId) {
13097
13127
  rearmForQueuedCatchup();
13098
13128
  try {
13099
- await _optionalChain([catchUpChunksRef, 'access', _406 => _406.current, 'optionalCall', _407 => _407(pending.fromSequenceId)]);
13129
+ await _optionalChain([catchUpChunksRef, 'access', _407 => _407.current, 'optionalCall', _408 => _408(pending.fromSequenceId)]);
13100
13130
  } catch (rerunError) {
13101
13131
  console.error("Queued catch-up re-run failed:", rerunError);
13102
13132
  }
@@ -13247,20 +13277,20 @@ function useNatsDialogSubscription({
13247
13277
  const tearDownSubscriptions = () => {
13248
13278
  subscriptionRefs.current.forEach((sub) => {
13249
13279
  try {
13250
- _optionalChain([sub, 'optionalAccess', _408 => _408.unsubscribe, 'call', _409 => _409()]);
13280
+ _optionalChain([sub, 'optionalAccess', _409 => _409.unsubscribe, 'call', _410 => _410()]);
13251
13281
  } catch (e10) {
13252
13282
  }
13253
13283
  });
13254
13284
  subscriptionRefs.current.clear();
13255
13285
  lastSubscribedDialogIdRef.current = null;
13256
- _optionalChain([abortControllerRef, 'access', _410 => _410.current, 'optionalAccess', _411 => _411.abort, 'call', _412 => _412()]);
13286
+ _optionalChain([abortControllerRef, 'access', _411 => _411.current, 'optionalAccess', _412 => _412.abort, 'call', _413 => _413()]);
13257
13287
  abortControllerRef.current = null;
13258
13288
  };
13259
13289
  const isDisconnectStatus = (status) => status === "closed" || status === "disconnected";
13260
13290
  const lifecycle = _chunkKHKPLOU4cjs.startConnectionLifecycle.call(void 0, {
13261
13291
  conn: sharedConn,
13262
13292
  wsUrl,
13263
- onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _413 => _413.current, 'optionalCall', _414 => _414()]),
13293
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _414 => _414.current, 'optionalCall', _415 => _415()]),
13264
13294
  backoff: reconnectionBackoffRef.current,
13265
13295
  getFreshUrl: () => getNatsWsUrlRef.current(),
13266
13296
  shouldRetryOn: isDisconnectStatus,
@@ -13271,7 +13301,7 @@ function useNatsDialogSubscription({
13271
13301
  setReconnectionCount((c) => c + 1);
13272
13302
  }
13273
13303
  hadConnectionBeforeRef.current = true;
13274
- _optionalChain([onConnectRef, 'access', _415 => _415.current, 'optionalCall', _416 => _416()]);
13304
+ _optionalChain([onConnectRef, 'access', _416 => _416.current, 'optionalCall', _417 => _417()]);
13275
13305
  }
13276
13306
  if (status === "error") {
13277
13307
  console.warn("[NATS] protocol error:", evt.data);
@@ -13281,7 +13311,7 @@ function useNatsDialogSubscription({
13281
13311
  setIsConnected(false);
13282
13312
  setIsSubscribed(false);
13283
13313
  tearDownSubscriptions();
13284
- _optionalChain([onDisconnectRef, 'access', _417 => _417.current, 'optionalCall', _418 => _418()]);
13314
+ _optionalChain([onDisconnectRef, 'access', _418 => _418.current, 'optionalCall', _419 => _419()]);
13285
13315
  }
13286
13316
  }
13287
13317
  });
@@ -13312,13 +13342,13 @@ function useNatsDialogSubscription({
13312
13342
  setIsSubscribed(false);
13313
13343
  subscriptionRefs.current.forEach((sub) => {
13314
13344
  try {
13315
- _optionalChain([sub, 'optionalAccess', _419 => _419.unsubscribe, 'call', _420 => _420()]);
13345
+ _optionalChain([sub, 'optionalAccess', _420 => _420.unsubscribe, 'call', _421 => _421()]);
13316
13346
  } catch (e11) {
13317
13347
  }
13318
13348
  });
13319
13349
  subscriptionRefs.current.clear();
13320
13350
  lastSubscribedDialogIdRef.current = null;
13321
- _optionalChain([abortControllerRef, 'access', _421 => _421.current, 'optionalAccess', _422 => _422.abort, 'call', _423 => _423()]);
13351
+ _optionalChain([abortControllerRef, 'access', _422 => _422.current, 'optionalAccess', _423 => _423.abort, 'call', _424 => _424()]);
13322
13352
  abortControllerRef.current = null;
13323
13353
  }
13324
13354
  return void 0;
@@ -13330,12 +13360,12 @@ function useNatsDialogSubscription({
13330
13360
  if (subscriptionRefs.current.size > 0) {
13331
13361
  subscriptionRefs.current.forEach((sub) => {
13332
13362
  try {
13333
- _optionalChain([sub, 'optionalAccess', _424 => _424.unsubscribe, 'call', _425 => _425()]);
13363
+ _optionalChain([sub, 'optionalAccess', _425 => _425.unsubscribe, 'call', _426 => _426()]);
13334
13364
  } catch (e12) {
13335
13365
  }
13336
13366
  });
13337
13367
  subscriptionRefs.current.clear();
13338
- _optionalChain([abortControllerRef, 'access', _426 => _426.current, 'optionalAccess', _427 => _427.abort, 'call', _428 => _428()]);
13368
+ _optionalChain([abortControllerRef, 'access', _427 => _427.current, 'optionalAccess', _428 => _428.abort, 'call', _429 => _429()]);
13339
13369
  }
13340
13370
  abortControllerRef.current = new AbortController();
13341
13371
  const abort = abortControllerRef.current;
@@ -13365,7 +13395,7 @@ function useNatsDialogSubscription({
13365
13395
  });
13366
13396
  lastSubscribedDialogIdRef.current = dialogId;
13367
13397
  setIsSubscribed(true);
13368
- _optionalChain([onSubscribedRef, 'access', _429 => _429.current, 'optionalCall', _430 => _430()]);
13398
+ _optionalChain([onSubscribedRef, 'access', _430 => _430.current, 'optionalCall', _431 => _431()]);
13369
13399
  };
13370
13400
  if (isConnectedRef.current) {
13371
13401
  createSubscriptions();
@@ -13376,7 +13406,7 @@ function useNatsDialogSubscription({
13376
13406
  abort.abort();
13377
13407
  subscriptions.forEach((sub) => {
13378
13408
  try {
13379
- _optionalChain([sub, 'optionalAccess', _431 => _431.unsubscribe, 'call', _432 => _432()]);
13409
+ _optionalChain([sub, 'optionalAccess', _432 => _432.unsubscribe, 'call', _433 => _433()]);
13380
13410
  } catch (e14) {
13381
13411
  }
13382
13412
  });
@@ -13415,7 +13445,7 @@ function useNatsDialogSubscription({
13415
13445
  });
13416
13446
  lastSubscribedDialogIdRef.current = currentDialogId;
13417
13447
  setIsSubscribed(true);
13418
- _optionalChain([onSubscribedRef, 'access', _433 => _433.current, 'optionalCall', _434 => _434()]);
13448
+ _optionalChain([onSubscribedRef, 'access', _434 => _434.current, 'optionalCall', _435 => _435()]);
13419
13449
  } else if (subscriptionRefs.current.size > 0) {
13420
13450
  setIsSubscribed(true);
13421
13451
  }
@@ -13423,10 +13453,10 @@ function useNatsDialogSubscription({
13423
13453
  return { isConnected, isSubscribed, reconnectionCount };
13424
13454
  }
13425
13455
  function buildNatsWsUrl(apiBaseUrl, options) {
13426
- const path = _optionalChain([options, 'optionalAccess', _435 => _435.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
13456
+ const path = _optionalChain([options, 'optionalAccess', _436 => _436.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
13427
13457
  const u = new URL(path, apiBaseUrl);
13428
13458
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
13429
- if (_optionalChain([options, 'optionalAccess', _436 => _436.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _437 => _437.token])) {
13459
+ if (_optionalChain([options, 'optionalAccess', _437 => _437.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _438 => _438.token])) {
13430
13460
  u.searchParams.set("authorization", options.token);
13431
13461
  }
13432
13462
  return u.toString();
@@ -13444,7 +13474,7 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
13444
13474
  const data = await res.json();
13445
13475
  return _nullishCoalesce(data.commands, () => ( []));
13446
13476
  } catch (err) {
13447
- if (_optionalChain([err, 'optionalAccess', _438 => _438.name]) === "AbortError") throw err;
13477
+ if (_optionalChain([err, 'optionalAccess', _439 => _439.name]) === "AbortError") throw err;
13448
13478
  console.warn("[chat] slash-commands fetch failed, showing none:", err);
13449
13479
  return [];
13450
13480
  }
@@ -13452,8 +13482,8 @@ async function fetchSlashCommands(prefix, signal, commandsUrl) {
13452
13482
  var NO_COMMANDS = [];
13453
13483
  function useSlashCommands(prefix, commandsUrl) {
13454
13484
  const [answered, setAnswered] = _react.useState.call(void 0, null);
13455
- const commands = prefix != null && _optionalChain([answered, 'optionalAccess', _439 => _439.prefix]) === prefix ? answered.commands : NO_COMMANDS;
13456
- const loading = prefix != null && _optionalChain([answered, 'optionalAccess', _440 => _440.prefix]) !== prefix;
13485
+ const commands = prefix != null && _optionalChain([answered, 'optionalAccess', _440 => _440.prefix]) === prefix ? answered.commands : NO_COMMANDS;
13486
+ const loading = prefix != null && _optionalChain([answered, 'optionalAccess', _441 => _441.prefix]) !== prefix;
13457
13487
  _react.useEffect.call(void 0, () => {
13458
13488
  if (prefix == null) return void 0;
13459
13489
  let cancelled = false;
@@ -13463,7 +13493,7 @@ function useSlashCommands(prefix, commandsUrl) {
13463
13493
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
13464
13494
  if (!cancelled) setAnswered({ prefix, commands: next });
13465
13495
  } catch (err) {
13466
- if (!cancelled && _optionalChain([err, 'optionalAccess', _441 => _441.name]) !== "AbortError") {
13496
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _442 => _442.name]) !== "AbortError") {
13467
13497
  console.warn("[use-slash-commands] fetch failed:", err);
13468
13498
  setAnswered({ prefix, commands: NO_COMMANDS });
13469
13499
  }
@@ -13486,7 +13516,7 @@ function useSlashCommandRegistry(commandsUrl, options) {
13486
13516
  const query = _reactquery.useQuery.call(void 0, {
13487
13517
  queryKey: ["chat-slash-commands", commandsUrl],
13488
13518
  queryFn: ({ signal }) => fetchSlashCommands("", signal, commandsUrl),
13489
- enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _442 => _442.enabled]), () => ( true)),
13519
+ enabled: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _443 => _443.enabled]), () => ( true)),
13490
13520
  staleTime: Infinity,
13491
13521
  gcTime: Infinity,
13492
13522
  // The commands registry is non-critical chrome — a failure degrades to an
@@ -13525,21 +13555,21 @@ async function fetchEmptyStateConfig(signal, emptyStateUrl) {
13525
13555
  }
13526
13556
  const data = await res.json();
13527
13557
  return {
13528
- name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _443 => _443.name]), () => ( null)),
13529
- icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _444 => _444.icon]), () => ( null)),
13530
- greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _445 => _445.greeting]), () => ( null)),
13531
- enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _446 => _446.enabledRagTableIds]), () => ( [])),
13532
- quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _447 => _447.quickActions]), () => ( [])),
13533
- suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _448 => _448.suggestedQueries]), () => ( []))
13558
+ name: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _444 => _444.name]), () => ( null)),
13559
+ icon: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _445 => _445.icon]), () => ( null)),
13560
+ greeting: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _446 => _446.greeting]), () => ( null)),
13561
+ enabledRagTableIds: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _447 => _447.enabledRagTableIds]), () => ( [])),
13562
+ quickActions: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _448 => _448.quickActions]), () => ( [])),
13563
+ suggestedQueries: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _449 => _449.suggestedQueries]), () => ( []))
13534
13564
  };
13535
13565
  } catch (err) {
13536
- if (_optionalChain([err, 'optionalAccess', _449 => _449.name]) === "AbortError") throw err;
13566
+ if (_optionalChain([err, 'optionalAccess', _450 => _450.name]) === "AbortError") throw err;
13537
13567
  console.warn("[chat] empty-state config fetch failed, using neutral defaults:", err);
13538
13568
  return EMPTY_STATE_FALLBACK;
13539
13569
  }
13540
13570
  }
13541
13571
  function useEmptyStateConfig(emptyStateUrl, options) {
13542
- const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _450 => _450.enabled]), () => ( true))) && !!emptyStateUrl;
13572
+ const enabled = (_nullishCoalesce(_optionalChain([options, 'optionalAccess', _451 => _451.enabled]), () => ( true))) && !!emptyStateUrl;
13543
13573
  const query = _reactquery.useQuery.call(void 0, {
13544
13574
  queryKey: ["chat-empty-state", emptyStateUrl],
13545
13575
  queryFn: ({ signal }) => fetchEmptyStateConfig(signal, emptyStateUrl),
@@ -13568,7 +13598,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
13568
13598
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
13569
13599
  function uploadWithProgress(url, file, token, onProgress, signal) {
13570
13600
  return new Promise((resolve, reject) => {
13571
- if (_optionalChain([signal, 'optionalAccess', _451 => _451.aborted])) {
13601
+ if (_optionalChain([signal, 'optionalAccess', _452 => _452.aborted])) {
13572
13602
  reject(new Error("Upload cancelled"));
13573
13603
  return;
13574
13604
  }
@@ -13610,7 +13640,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
13610
13640
  const handleSignalAbort = () => {
13611
13641
  xhr.abort();
13612
13642
  };
13613
- _optionalChain([signal, 'optionalAccess', _452 => _452.addEventListener, 'call', _453 => _453("abort", handleSignalAbort, { once: true, signal: listeners.signal })]);
13643
+ _optionalChain([signal, 'optionalAccess', _453 => _453.addEventListener, 'call', _454 => _454("abort", handleSignalAbort, { once: true, signal: listeners.signal })]);
13614
13644
  xhr.upload.addEventListener("progress", handleProgress, { signal: listeners.signal });
13615
13645
  xhr.addEventListener("load", handleLoad, { signal: listeners.signal });
13616
13646
  xhr.addEventListener("error", handleError, { signal: listeners.signal });
@@ -13654,10 +13684,10 @@ function useChatAttachments() {
13654
13684
  try {
13655
13685
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
13656
13686
  } catch (err) {
13657
- if (_optionalChain([ctrl, 'optionalAccess', _454 => _454.signal, 'access', _455 => _455.aborted])) return;
13687
+ if (_optionalChain([ctrl, 'optionalAccess', _455 => _455.signal, 'access', _456 => _456.aborted])) return;
13658
13688
  throw new Error(`Could not read file content: ${err instanceof Error ? err.message : String(err)}`);
13659
13689
  }
13660
- if (_optionalChain([ctrl, 'optionalAccess', _456 => _456.signal, 'access', _457 => _457.aborted])) return;
13690
+ if (_optionalChain([ctrl, 'optionalAccess', _457 => _457.signal, 'access', _458 => _458.aborted])) return;
13661
13691
  if (!sniffed) {
13662
13692
  throw new Error("Unrecognized file format");
13663
13693
  }
@@ -13671,7 +13701,7 @@ function useChatAttachments() {
13671
13701
  const urlResp = await _chunkDGFDBPO7cjs.embedAuthedFetch.call(void 0, uploadUrlEndpoint, {
13672
13702
  method: "POST",
13673
13703
  headers: { "Content-Type": "application/json" },
13674
- signal: _optionalChain([ctrl, 'optionalAccess', _458 => _458.signal]),
13704
+ signal: _optionalChain([ctrl, 'optionalAccess', _459 => _459.signal]),
13675
13705
  body: JSON.stringify({
13676
13706
  fileName: att.file.name,
13677
13707
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -13700,9 +13730,9 @@ function useChatAttachments() {
13700
13730
  (pct) => {
13701
13731
  updateOne(att.id, { progress: pct });
13702
13732
  },
13703
- _optionalChain([ctrl, 'optionalAccess', _459 => _459.signal])
13733
+ _optionalChain([ctrl, 'optionalAccess', _460 => _460.signal])
13704
13734
  );
13705
- if (_optionalChain([ctrl, 'optionalAccess', _460 => _460.signal, 'access', _461 => _461.aborted])) return;
13735
+ if (_optionalChain([ctrl, 'optionalAccess', _461 => _461.signal, 'access', _462 => _462.aborted])) return;
13706
13736
  updateOne(att.id, {
13707
13737
  status: "ready",
13708
13738
  progress: 100,
@@ -13710,7 +13740,7 @@ function useChatAttachments() {
13710
13740
  viewToken: mintData.viewToken
13711
13741
  });
13712
13742
  } catch (err) {
13713
- if (_optionalChain([ctrl, 'optionalAccess', _462 => _462.signal, 'access', _463 => _463.aborted])) return;
13743
+ if (_optionalChain([ctrl, 'optionalAccess', _463 => _463.signal, 'access', _464 => _464.aborted])) return;
13714
13744
  const message = err instanceof Error ? err.message : String(err);
13715
13745
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message });
13716
13746
  } finally {
@@ -13832,7 +13862,7 @@ function useChatAttachmentImageGallery() {
13832
13862
  return () => root.removeEventListener("click", onClick);
13833
13863
  }, [viewUrlPrefix]);
13834
13864
  const modal = state.isOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13835
- _chunkOFO75R2Ocjs.ImageGalleryModal,
13865
+ _chunk7Z4EQOIXcjs.ImageGalleryModal,
13836
13866
  {
13837
13867
  images: state.images,
13838
13868
  isOpen: state.isOpen,
@@ -13859,11 +13889,11 @@ var ANON_DEFAULTS = {
13859
13889
  function useResolveChatIdentity(enabled) {
13860
13890
  const runtime = _chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, );
13861
13891
  const url = runtime.endpoints.identityUrl;
13862
- const proxyEmail = _nullishCoalesce(_optionalChain([_chunkDGFDBPO7cjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _464 => _464.email]), () => ( null));
13892
+ const proxyEmail = _nullishCoalesce(_optionalChain([_chunkDGFDBPO7cjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _465 => _465.email]), () => ( null));
13863
13893
  const requestKey = enabled ? `${url}\0${_nullishCoalesce(proxyEmail, () => ( ""))}` : null;
13864
13894
  const [resolved, setResolved] = _react.useState.call(void 0, null);
13865
- const data = _optionalChain([resolved, 'optionalAccess', _465 => _465.key]) === requestKey ? resolved.data : ANON_DEFAULTS;
13866
- const isLoading = requestKey !== null && _optionalChain([resolved, 'optionalAccess', _466 => _466.key]) !== requestKey;
13895
+ const data = _optionalChain([resolved, 'optionalAccess', _466 => _466.key]) === requestKey ? resolved.data : ANON_DEFAULTS;
13896
+ const isLoading = requestKey !== null && _optionalChain([resolved, 'optionalAccess', _467 => _467.key]) !== requestKey;
13867
13897
  _react.useEffect.call(void 0, () => {
13868
13898
  if (requestKey === null) return void 0;
13869
13899
  let cancelled = false;
@@ -13925,6 +13955,108 @@ function useCloseOnNavigation(close, pathname) {
13925
13955
  }, [pathname]);
13926
13956
  }
13927
13957
 
13958
+ // src/components/chat/hooks/use-what-to-ask.ts
13959
+
13960
+ var DRAFT_KEY = "";
13961
+ function useWhatToAsk({ dialogId, content, user, assistant, onPick }) {
13962
+ const [byDialog, setByDialog] = _react.useState.call(void 0, {});
13963
+ const [draftSent, setDraftSent] = _react.useState.call(void 0, false);
13964
+ const key = _nullishCoalesce(dialogId, () => ( DRAFT_KEY));
13965
+ const [prevKey, setPrevKey] = _react.useState.call(void 0, key);
13966
+ if (prevKey !== key) {
13967
+ setPrevKey(key);
13968
+ if (prevKey === DRAFT_KEY) {
13969
+ setDraftSent(false);
13970
+ setByDialog((prev) => {
13971
+ const { [DRAFT_KEY]: draft, ...rest } = prev;
13972
+ if (!draft) return prev;
13973
+ return draftSent ? { ...rest, [key]: [..._nullishCoalesce(rest[key], () => ( [])), ...draft] } : rest;
13974
+ });
13975
+ }
13976
+ }
13977
+ const ask = _react.useCallback.call(void 0,
13978
+ (target, override) => {
13979
+ const shown = _nullishCoalesce(override, () => ( content));
13980
+ if (!shown) return;
13981
+ const into = target === "current" && dialogId ? dialogId : DRAFT_KEY;
13982
+ const exchange = {
13983
+ id: `what-to-ask-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`,
13984
+ at: Date.now(),
13985
+ content: shown
13986
+ };
13987
+ setByDialog((prev) => ({ ...prev, [into]: [..._nullishCoalesce(prev[into], () => ( [])), exchange] }));
13988
+ },
13989
+ [content, dialogId]
13990
+ );
13991
+ const noteSend = _react.useCallback.call(void 0, () => {
13992
+ if (dialogId == null) setDraftSent(true);
13993
+ }, [dialogId]);
13994
+ const clearDraft = _react.useCallback.call(void 0, () => {
13995
+ setDraftSent(false);
13996
+ setByDialog((prev) => {
13997
+ if (!prev[DRAFT_KEY]) return prev;
13998
+ const rest = { ...prev };
13999
+ delete rest[DRAFT_KEY];
14000
+ return rest;
14001
+ });
14002
+ }, []);
14003
+ const exchanges = _nullishCoalesce(byDialog[key], () => ( []));
14004
+ const withExchanges = (messages) => {
14005
+ if (exchanges.length === 0) return messages;
14006
+ const local = exchanges.flatMap((exchange) => exchangeMessages(exchange, user, assistant, onPick));
14007
+ return mergeByTime(messages, local);
14008
+ };
14009
+ return { ask, withExchanges, noteSend, clearDraft };
14010
+ }
14011
+ function exchangeMessages({ id, at, content }, user, assistant, onPick) {
14012
+ return [
14013
+ {
14014
+ id: `${id}-question`,
14015
+ role: "user",
14016
+ content: content.question,
14017
+ timestamp: new Date(at),
14018
+ name: _optionalChain([user, 'optionalAccess', _468 => _468.name]),
14019
+ avatar: _optionalChain([user, 'optionalAccess', _469 => _469.avatar]),
14020
+ authorType: _optionalChain([user, 'optionalAccess', _470 => _470.authorType])
14021
+ },
14022
+ {
14023
+ id: `${id}-answer`,
14024
+ role: "assistant",
14025
+ content: [
14026
+ { type: "text", text: content.reply },
14027
+ { type: "suggestions", groups: content.groups, note: content.note, onPick }
14028
+ ],
14029
+ // A millisecond after the question, so the pair keeps its order.
14030
+ timestamp: new Date(at + 1),
14031
+ name: _optionalChain([assistant, 'optionalAccess', _471 => _471.name]),
14032
+ avatar: _optionalChain([assistant, 'optionalAccess', _472 => _472.avatar]),
14033
+ authorType: _optionalChain([assistant, 'optionalAccess', _473 => _473.authorType]),
14034
+ assistantType: _optionalChain([assistant, 'optionalAccess', _474 => _474.assistantType])
14035
+ }
14036
+ ];
14037
+ }
14038
+ function awaitsDecision(messages) {
14039
+ return messages.some(
14040
+ (message) => Array.isArray(message.content) && message.content.some(
14041
+ (segment) => (segment.type === "approval_request" || segment.type === "approval_batch" || segment.type === "escalation_offer") && (_nullishCoalesce(segment.status, () => ( "pending"))) === "pending"
14042
+ )
14043
+ );
14044
+ }
14045
+ function mergeByTime(thread, local) {
14046
+ if (local.length === 0) return thread;
14047
+ const out = [];
14048
+ let next = 0;
14049
+ for (const message of thread) {
14050
+ const at = _optionalChain([message, 'access', _475 => _475.timestamp, 'optionalAccess', _476 => _476.getTime, 'call', _477 => _477()]);
14051
+ while (next < local.length && at !== void 0 && (_nullishCoalesce(_optionalChain([local, 'access', _478 => _478[next], 'access', _479 => _479.timestamp, 'optionalAccess', _480 => _480.getTime, 'call', _481 => _481()]), () => ( 0))) < at) {
14052
+ out.push(local[next]);
14053
+ next += 1;
14054
+ }
14055
+ out.push(message);
14056
+ }
14057
+ return out.concat(local.slice(next));
14058
+ }
14059
+
13928
14060
  // src/chat-protocol/progress.ts
13929
14061
  var CHAT_PROGRESS_STAGES = ["understanding", "searching", "searching_again", "reading"];
13930
14062
  function isChatProgressStage(value) {
@@ -14021,9 +14153,9 @@ function appendToTrailingAssistant(prev, segments) {
14021
14153
  for (const seg of segments) {
14022
14154
  const tail = merged[merged.length - 1];
14023
14155
  const key = upsertKey(seg);
14024
- if (seg.type === "text" && _optionalChain([tail, 'optionalAccess', _467 => _467.type]) === "text") {
14156
+ if (seg.type === "text" && _optionalChain([tail, 'optionalAccess', _482 => _482.type]) === "text") {
14025
14157
  merged[merged.length - 1] = { type: "text", text: tail.text + seg.text };
14026
- } else if (seg.type === "thinking" && _optionalChain([tail, 'optionalAccess', _468 => _468.type]) === "thinking") {
14158
+ } else if (seg.type === "thinking" && _optionalChain([tail, 'optionalAccess', _483 => _483.type]) === "thinking") {
14027
14159
  merged[merged.length - 1] = { type: "thinking", text: tail.text + seg.text };
14028
14160
  } else if (key) {
14029
14161
  let idx = merged.findIndex((m) => upsertKey(m) === key);
@@ -14064,7 +14196,7 @@ function applyApprovalStatusToSegment(s, requestId, status, resolvedByName) {
14064
14196
  }
14065
14197
  if (s.type !== "approval_batch") return s;
14066
14198
  const isAnchor = s.data.approvalRequestId === requestId;
14067
- const hasRow = _optionalChain([s, 'access', _469 => _469.data, 'access', _470 => _470.toolCalls, 'optionalAccess', _471 => _471.some, 'call', _472 => _472((c) => c.toolExecutionRequestId === requestId)]);
14199
+ const hasRow = _optionalChain([s, 'access', _484 => _484.data, 'access', _485 => _485.toolCalls, 'optionalAccess', _486 => _486.some, 'call', _487 => _487((c) => c.toolExecutionRequestId === requestId)]);
14068
14200
  if (!isAnchor && !hasRow) return s;
14069
14201
  const nextResolvedBy = _nullishCoalesce(resolvedByName, () => ( s.resolvedByName));
14070
14202
  const nextExecutions = hasRow ? {
@@ -14086,8 +14218,8 @@ function applyApprovalStatusToSegment(s, requestId, status, resolvedByName) {
14086
14218
  };
14087
14219
  }
14088
14220
  function nextBatchExecution(prevExec, toolData) {
14089
- if (toolData.type === "EXECUTING_TOOL" && _optionalChain([prevExec, 'optionalAccess', _473 => _473.status]) === "done") return null;
14090
- return toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prevExec, 'optionalAccess', _474 => _474.result]), success: _optionalChain([prevExec, 'optionalAccess', _475 => _475.success]) };
14221
+ if (toolData.type === "EXECUTING_TOOL" && _optionalChain([prevExec, 'optionalAccess', _488 => _488.status]) === "done") return null;
14222
+ return toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prevExec, 'optionalAccess', _489 => _489.result]), success: _optionalChain([prevExec, 'optionalAccess', _490 => _490.success]) };
14091
14223
  }
14092
14224
  function withBatchExecution(seg, execId, state) {
14093
14225
  return {
@@ -14104,11 +14236,11 @@ function projectBatchStatusToMessages(prev, anchorId, status) {
14104
14236
  }
14105
14237
  function projectBatchRowFailureToMessages(prev, rowRequestId) {
14106
14238
  return mapSegments(prev, (s) => {
14107
- if (s.type !== "approval_batch" || !_optionalChain([s, 'access', _476 => _476.data, 'access', _477 => _477.toolCalls, 'optionalAccess', _478 => _478.some, 'call', _479 => _479((c) => c.toolExecutionRequestId === rowRequestId)])) {
14239
+ if (s.type !== "approval_batch" || !_optionalChain([s, 'access', _491 => _491.data, 'access', _492 => _492.toolCalls, 'optionalAccess', _493 => _493.some, 'call', _494 => _494((c) => c.toolExecutionRequestId === rowRequestId)])) {
14108
14240
  return s;
14109
14241
  }
14110
- const existing = _optionalChain([s, 'access', _480 => _480.data, 'access', _481 => _481.executions, 'optionalAccess', _482 => _482[rowRequestId]]);
14111
- if (_optionalChain([existing, 'optionalAccess', _483 => _483.status]) === "done") return s;
14242
+ const existing = _optionalChain([s, 'access', _495 => _495.data, 'access', _496 => _496.executions, 'optionalAccess', _497 => _497[rowRequestId]]);
14243
+ if (_optionalChain([existing, 'optionalAccess', _498 => _498.status]) === "done") return s;
14112
14244
  return withBatchExecution(s, rowRequestId, { status: "done", success: false });
14113
14245
  });
14114
14246
  }
@@ -14144,7 +14276,7 @@ function mergeToolExecutionIfPresent(prev, segment) {
14144
14276
  for (let j = message.segments.length - 1; j >= 0; j--) {
14145
14277
  const seg = message.segments[j];
14146
14278
  if (execId && seg.type === "approval_batch" && seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId)) {
14147
- const prevExec = _optionalChain([seg, 'access', _484 => _484.data, 'access', _485 => _485.executions, 'optionalAccess', _486 => _486[execId]]);
14279
+ const prevExec = _optionalChain([seg, 'access', _499 => _499.data, 'access', _500 => _500.executions, 'optionalAccess', _501 => _501[execId]]);
14148
14280
  const nextExec = nextBatchExecution(prevExec, toolData);
14149
14281
  if (nextExec === null) return prev;
14150
14282
  if (sameExecutionState(prevExec, nextExec)) return prev;
@@ -14317,9 +14449,9 @@ var MessageSegmentAccumulator = class {
14317
14449
  type: "tool_execution",
14318
14450
  data: {
14319
14451
  ...toolData,
14320
- toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _487 => _487.data, 'access', _488 => _488.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _489 => _489.toolTitle]))),
14321
- toolExplanation: _nullishCoalesce(_nullishCoalesce(toolData.toolExplanation, () => ( _optionalChain([existingExecuting, 'optionalAccess', _490 => _490.data, 'access', _491 => _491.toolExplanation]))), () => ( _optionalChain([executingTool, 'optionalAccess', _492 => _492.toolExplanation]))),
14322
- parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _493 => _493.parameters])
14452
+ toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _502 => _502.data, 'access', _503 => _503.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _504 => _504.toolTitle]))),
14453
+ toolExplanation: _nullishCoalesce(_nullishCoalesce(toolData.toolExplanation, () => ( _optionalChain([existingExecuting, 'optionalAccess', _505 => _505.data, 'access', _506 => _506.toolExplanation]))), () => ( _optionalChain([executingTool, 'optionalAccess', _507 => _507.toolExplanation]))),
14454
+ parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _508 => _508.parameters])
14323
14455
  }
14324
14456
  };
14325
14457
  if (existingIndex !== -1) {
@@ -14343,7 +14475,7 @@ var MessageSegmentAccumulator = class {
14343
14475
  if (seg.type !== "approval_batch") return seg;
14344
14476
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
14345
14477
  if (!hasCall) return seg;
14346
- const prev = _optionalChain([seg, 'access', _494 => _494.data, 'access', _495 => _495.executions, 'optionalAccess', _496 => _496[execId]]);
14478
+ const prev = _optionalChain([seg, 'access', _509 => _509.data, 'access', _510 => _510.executions, 'optionalAccess', _511 => _511[execId]]);
14347
14479
  const next = nextBatchExecution(prev, toolData);
14348
14480
  matched = true;
14349
14481
  if (next === null) return seg;
@@ -14477,8 +14609,8 @@ var MessageSegmentAccumulator = class {
14477
14609
  requestId,
14478
14610
  {
14479
14611
  ...pendingApproval,
14480
- command: _optionalChain([pendingApproval, 'optionalAccess', _497 => _497.command]) || "",
14481
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _498 => _498.approvalType]) || approvalType
14612
+ command: _optionalChain([pendingApproval, 'optionalAccess', _512 => _512.command]) || "",
14613
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _513 => _513.approvalType]) || approvalType
14482
14614
  },
14483
14615
  status
14484
14616
  );
@@ -14503,9 +14635,9 @@ var MessageSegmentAccumulator = class {
14503
14635
  type: "escalation_offer",
14504
14636
  // The resolved chunk carries no text/origin — a redelivered offer must
14505
14637
  // not blank the card the PENDING chunk already painted.
14506
- data: { offerId, text: text2 || _optionalChain([existing, 'optionalAccess', _499 => _499.data, 'access', _500 => _500.text]) || "", origin: _nullishCoalesce(origin, () => ( _optionalChain([existing, 'optionalAccess', _501 => _501.data, 'access', _502 => _502.origin]))) },
14638
+ data: { offerId, text: text2 || _optionalChain([existing, 'optionalAccess', _514 => _514.data, 'access', _515 => _515.text]) || "", origin: _nullishCoalesce(origin, () => ( _optionalChain([existing, 'optionalAccess', _516 => _516.data, 'access', _517 => _517.origin]))) },
14507
14639
  status,
14508
- resolvedByName: _nullishCoalesce(resolvedByName, () => ( _optionalChain([existing, 'optionalAccess', _503 => _503.resolvedByName]))),
14640
+ resolvedByName: _nullishCoalesce(resolvedByName, () => ( _optionalChain([existing, 'optionalAccess', _518 => _518.resolvedByName]))),
14509
14641
  onApprove: this.callbacks.onEscalationApprove,
14510
14642
  onReject: this.callbacks.onEscalationReject
14511
14643
  };
@@ -14704,6 +14836,9 @@ var MessageSegmentAccumulator = class {
14704
14836
  this.completeContextCompaction(segment.summary);
14705
14837
  }
14706
14838
  break;
14839
+ case "suggestions":
14840
+ this.segments.push(segment);
14841
+ break;
14707
14842
  }
14708
14843
  }
14709
14844
  return this.getSegments();
@@ -15010,7 +15145,7 @@ function nullableText(value) {
15010
15145
  }
15011
15146
  function httpsUrl(value) {
15012
15147
  const candidate = text(value);
15013
- if (!candidate || _chunkOFO75R2Ocjs.UNSAFE_URL_CHARS.test(candidate)) return void 0;
15148
+ if (!candidate || _chunk7Z4EQOIXcjs.UNSAFE_URL_CHARS.test(candidate)) return void 0;
15014
15149
  try {
15015
15150
  return new URL(candidate).protocol === "https:" ? candidate : void 0;
15016
15151
  } catch (e19) {
@@ -15027,7 +15162,7 @@ function youtubeVideoId(value) {
15027
15162
  const hostname = parsed.hostname.toLowerCase();
15028
15163
  const isYoutubeHost = hostname === "youtu.be" || hostname === "youtube.com" || hostname.endsWith(".youtube.com");
15029
15164
  if (!isYoutubeHost) return void 0;
15030
- const fromPath = hostname === "youtu.be" ? parsed.pathname.split("/").filter(Boolean)[0] : _optionalChain([/^\/(?:embed|v|shorts)\/([A-Za-z0-9_-]{11})(?:\/|$)/, 'access', _504 => _504.exec, 'call', _505 => _505(parsed.pathname), 'optionalAccess', _506 => _506[1]]);
15165
+ const fromPath = hostname === "youtu.be" ? parsed.pathname.split("/").filter(Boolean)[0] : _optionalChain([/^\/(?:embed|v|shorts)\/([A-Za-z0-9_-]{11})(?:\/|$)/, 'access', _519 => _519.exec, 'call', _520 => _520(parsed.pathname), 'optionalAccess', _521 => _521[1]]);
15031
15166
  const id = _nullishCoalesce(_nullishCoalesce(fromPath, () => ( parsed.searchParams.get("v"))), () => ( void 0));
15032
15167
  return id && YOUTUBE_ID.test(id) ? id : void 0;
15033
15168
  }
@@ -15146,11 +15281,11 @@ function cards(value, decodedSources) {
15146
15281
  {
15147
15282
  type,
15148
15283
  id,
15149
- title: _nullishCoalesce(_optionalChain([source, 'optionalAccess', _507 => _507.name]), () => ( id)),
15150
- url: _nullishCoalesce(_optionalChain([source, 'optionalAccess', _508 => _508.externalUrl]), () => ( null)),
15151
- ..._optionalChain([source, 'optionalAccess', _509 => _509.sourceRepo]) ? { sourceRepo: source.sourceRepo } : {},
15152
- ..._optionalChain([source, 'optionalAccess', _510 => _510.targetPlatform]) !== void 0 ? { targetPlatform: source.targetPlatform } : {},
15153
- ..._optionalChain([source, 'optionalAccess', _511 => _511.path]) ? { metadata: { path: source.path } } : {}
15284
+ title: _nullishCoalesce(_optionalChain([source, 'optionalAccess', _522 => _522.name]), () => ( id)),
15285
+ url: _nullishCoalesce(_optionalChain([source, 'optionalAccess', _523 => _523.externalUrl]), () => ( null)),
15286
+ ..._optionalChain([source, 'optionalAccess', _524 => _524.sourceRepo]) ? { sourceRepo: source.sourceRepo } : {},
15287
+ ..._optionalChain([source, 'optionalAccess', _525 => _525.targetPlatform]) !== void 0 ? { targetPlatform: source.targetPlatform } : {},
15288
+ ..._optionalChain([source, 'optionalAccess', _526 => _526.path]) ? { metadata: { path: source.path } } : {}
15154
15289
  }
15155
15290
  ];
15156
15291
  });
@@ -15186,11 +15321,11 @@ function attachmentsEvent(record) {
15186
15321
  }
15187
15322
  function mergeSourceMetadata(previous, event) {
15188
15323
  const byIndex = /* @__PURE__ */ new Map();
15189
- for (const source of [..._nullishCoalesce(_optionalChain([previous, 'optionalAccess', _512 => _512.sources]), () => ( [])), ..._nullishCoalesce(event.sources, () => ( []))]) {
15324
+ for (const source of [..._nullishCoalesce(_optionalChain([previous, 'optionalAccess', _527 => _527.sources]), () => ( [])), ..._nullishCoalesce(event.sources, () => ( []))]) {
15190
15325
  if (!byIndex.has(source.index)) byIndex.set(source.index, source);
15191
15326
  }
15192
15327
  const byIdentity = /* @__PURE__ */ new Map();
15193
- for (const ref of [..._nullishCoalesce(_optionalChain([previous, 'optionalAccess', _513 => _513.refs]), () => ( [])), ..._nullishCoalesce(event.refs, () => ( []))]) {
15328
+ for (const ref of [..._nullishCoalesce(_optionalChain([previous, 'optionalAccess', _528 => _528.refs]), () => ( [])), ..._nullishCoalesce(event.refs, () => ( []))]) {
15194
15329
  const identity = `${ref.type}:${ref.id}`;
15195
15330
  if (!byIdentity.has(identity)) byIdentity.set(identity, ref);
15196
15331
  }
@@ -15300,7 +15435,7 @@ function createChatStreamReducer(options = {}) {
15300
15435
  let stateCache = null;
15301
15436
  function invalidate() {
15302
15437
  stateCache = null;
15303
- _optionalChain([onChange, 'optionalCall', _514 => _514()]);
15438
+ _optionalChain([onChange, 'optionalCall', _529 => _529()]);
15304
15439
  }
15305
15440
  function getState() {
15306
15441
  if (!stateCache) {
@@ -15318,7 +15453,7 @@ function createChatStreamReducer(options = {}) {
15318
15453
  return stateCache;
15319
15454
  }
15320
15455
  function emit(name, ...args) {
15321
- _optionalChain([onEffect, 'optionalCall', _515 => _515({ name, args })]);
15456
+ _optionalChain([onEffect, 'optionalCall', _530 => _530({ name, args })]);
15322
15457
  }
15323
15458
  function setMessagesInternal(next) {
15324
15459
  if (next !== messages) {
@@ -15361,12 +15496,12 @@ function createChatStreamReducer(options = {}) {
15361
15496
  return stampTrailingAssistantSourceMetadata(stampTrailingAssistantSeq(next, seq));
15362
15497
  }
15363
15498
  function applySegmentsToState(segments, meta) {
15364
- const seq = _optionalChain([meta, 'optionalAccess', _516 => _516.streamSeq]);
15365
- if (_optionalChain([meta, 'optionalAccess', _517 => _517.append]) && meta.isCompacting) {
15499
+ const seq = _optionalChain([meta, 'optionalAccess', _531 => _531.streamSeq]);
15500
+ if (_optionalChain([meta, 'optionalAccess', _532 => _532.append]) && meta.isCompacting) {
15366
15501
  setMessagesInternal(commitTrailingAssistant(upsertTrailingCompaction(messages, segments), seq));
15367
15502
  return;
15368
15503
  }
15369
- if (_optionalChain([meta, 'optionalAccess', _518 => _518.append])) {
15504
+ if (_optionalChain([meta, 'optionalAccess', _533 => _533.append])) {
15370
15505
  setMessagesInternal(commitTrailingAssistant(appendToTrailingAssistant(messages, segments), seq));
15371
15506
  return;
15372
15507
  }
@@ -15378,7 +15513,7 @@ function createChatStreamReducer(options = {}) {
15378
15513
  adoptTrailingAssistant = false;
15379
15514
  const last = messages[messages.length - 1];
15380
15515
  if (!last || last.role !== "assistant" || adoptTail) return;
15381
- const hasContent = (_nullishCoalesce(_optionalChain([last, 'access', _519 => _519.segments, 'optionalAccess', _520 => _520.length]), () => ( 0))) > 0 || last.content !== "";
15516
+ const hasContent = (_nullishCoalesce(_optionalChain([last, 'access', _534 => _534.segments, 'optionalAccess', _535 => _535.length]), () => ( 0))) > 0 || last.content !== "";
15382
15517
  if (!hasContent) return;
15383
15518
  setMessagesInternal([...messages, { id: nextId("assistant"), role: "assistant", content: "", segments: [] }]);
15384
15519
  }
@@ -15597,13 +15732,13 @@ function createChatStreamReducer(options = {}) {
15597
15732
  const summary = required ? _chunkLVO7FALWcjs.getCommandText.call(void 0, required) : `Batch of ${toolCalls.length} tool calls`;
15598
15733
  pendingEscalated.set(requestId, {
15599
15734
  command: summary,
15600
- explanation: _optionalChain([required, 'optionalAccess', _521 => _521.toolExplanation]),
15735
+ explanation: _optionalChain([required, 'optionalAccess', _536 => _536.toolExplanation]),
15601
15736
  approvalType,
15602
15737
  toolCalls
15603
15738
  });
15604
15739
  emit("onEscalatedApproval", requestId, {
15605
15740
  command: summary,
15606
- explanation: _optionalChain([required, 'optionalAccess', _522 => _522.toolExplanation]),
15741
+ explanation: _optionalChain([required, 'optionalAccess', _537 => _537.toolExplanation]),
15607
15742
  approvalType
15608
15743
  });
15609
15744
  break;
@@ -15991,7 +16126,7 @@ function createChatStreamReducer(options = {}) {
15991
16126
  const resolveBatch = (status, confirm) => async () => {
15992
16127
  setMessagesInternal(projectBatchStatusToMessages(messages, anchorId, status));
15993
16128
  for (const id of ids) {
15994
- const ok = await _optionalChain([confirm, 'optionalCall', _523 => _523(id)]);
16129
+ const ok = await _optionalChain([confirm, 'optionalCall', _538 => _538(id)]);
15995
16130
  if (ok === false) {
15996
16131
  setMessagesInternal(projectBatchRowFailureToMessages(messages, id));
15997
16132
  }
@@ -16127,8 +16262,8 @@ function createChatStreamReducer(options = {}) {
16127
16262
  }
16128
16263
  }
16129
16264
  }
16130
- hasEverStreamed = hasEverStreamed || (_nullishCoalesce(_optionalChain([extras, 'optionalAccess', _524 => _524.resumed]), () => ( messages.length > 0)));
16131
- if (_optionalChain([extras, 'optionalAccess', _525 => _525.agentBusy])) agentBusyState();
16265
+ hasEverStreamed = hasEverStreamed || (_nullishCoalesce(_optionalChain([extras, 'optionalAccess', _539 => _539.resumed]), () => ( messages.length > 0)));
16266
+ if (_optionalChain([extras, 'optionalAccess', _540 => _540.agentBusy])) agentBusyState();
16132
16267
  invalidate();
16133
16268
  }
16134
16269
  return {
@@ -16215,7 +16350,7 @@ function createChatStreamReducer(options = {}) {
16215
16350
  },
16216
16351
  endSseTurn() {
16217
16352
  const last = messages[messages.length - 1];
16218
- if (last && last.role === "assistant" && (_nullishCoalesce(_optionalChain([last, 'access', _526 => _526.segments, 'optionalAccess', _527 => _527.length]), () => ( 0))) === 0 && last.content === "") {
16353
+ if (last && last.role === "assistant" && (_nullishCoalesce(_optionalChain([last, 'access', _541 => _541.segments, 'optionalAccess', _542 => _542.length]), () => ( 0))) === 0 && last.content === "") {
16219
16354
  messages = messages.slice(0, -1);
16220
16355
  }
16221
16356
  sseCurrentText = "";
@@ -16369,10 +16504,10 @@ function createChatDialogStore(options = {}) {
16369
16504
  if (onEvict) {
16370
16505
  const sep = key.indexOf(KEY_SEP);
16371
16506
  onEvict(key.slice(0, sep), key.slice(sep + 1), {
16372
- messages: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _528 => _528.state, 'access', _529 => _529.messages]), () => ( EMPTY_STATE.messages)),
16373
- approvalStatuses: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _530 => _530.state, 'access', _531 => _531.approvalStatuses]), () => ( EMPTY_STATE.approvalStatuses)),
16374
- lastAppliedSeq: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _532 => _532.getLastAppliedSeq, 'call', _533 => _533()]), () => ( Number.NEGATIVE_INFINITY)),
16375
- pendingEchoes: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _534 => _534.getPendingEchoes, 'call', _535 => _535()]), () => ( EMPTY_PENDING_ECHOES))
16507
+ messages: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _543 => _543.state, 'access', _544 => _544.messages]), () => ( EMPTY_STATE.messages)),
16508
+ approvalStatuses: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _545 => _545.state, 'access', _546 => _546.approvalStatuses]), () => ( EMPTY_STATE.approvalStatuses)),
16509
+ lastAppliedSeq: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _547 => _547.getLastAppliedSeq, 'call', _548 => _548()]), () => ( Number.NEGATIVE_INFINITY)),
16510
+ pendingEchoes: _nullishCoalesce(_optionalChain([dropped, 'optionalAccess', _549 => _549.getPendingEchoes, 'call', _550 => _550()]), () => ( EMPTY_PENDING_ECHOES))
16376
16511
  });
16377
16512
  }
16378
16513
  }
@@ -16382,12 +16517,12 @@ function createChatDialogStore(options = {}) {
16382
16517
  const key = keyOf(dialogId, side);
16383
16518
  let reducer = reducers.get(key);
16384
16519
  if (!reducer) {
16385
- const base = _nullishCoalesce(_optionalChain([(_nullishCoalesce(createOptions, () => ( defaultCreateOptions))), 'optionalCall', _536 => _536(dialogId, side)]), () => ( {}));
16520
+ const base = _nullishCoalesce(_optionalChain([(_nullishCoalesce(createOptions, () => ( defaultCreateOptions))), 'optionalCall', _551 => _551(dialogId, side)]), () => ( {}));
16386
16521
  const userOnChange = base.onChange;
16387
16522
  reducer = createChatStreamReducer({
16388
16523
  ...base,
16389
16524
  onChange: () => {
16390
- _optionalChain([userOnChange, 'optionalCall', _537 => _537()]);
16525
+ _optionalChain([userOnChange, 'optionalCall', _552 => _552()]);
16391
16526
  notify();
16392
16527
  }
16393
16528
  });
@@ -16432,7 +16567,7 @@ function createChatDialogStore(options = {}) {
16432
16567
  };
16433
16568
  }
16434
16569
  function getSnapshot2(dialogId, side = DEFAULT_DIALOG_SIDE) {
16435
- return _nullishCoalesce(_optionalChain([reducers, 'access', _538 => _538.get, 'call', _539 => _539(keyOf(dialogId, side)), 'optionalAccess', _540 => _540.state]), () => ( EMPTY_STATE));
16570
+ return _nullishCoalesce(_optionalChain([reducers, 'access', _553 => _553.get, 'call', _554 => _554(keyOf(dialogId, side)), 'optionalAccess', _555 => _555.state]), () => ( EMPTY_STATE));
16436
16571
  }
16437
16572
  function getServerSnapshot2() {
16438
16573
  return EMPTY_STATE;
@@ -16521,7 +16656,7 @@ function createDeltaBatcher({
16521
16656
  pending = [];
16522
16657
  const key = pendingKey;
16523
16658
  for (const delta of batch) applyOne(delta, key);
16524
- _optionalChain([onFlushed, 'optionalCall', _541 => _541(batch.length)]);
16659
+ _optionalChain([onFlushed, 'optionalCall', _556 => _556(batch.length)]);
16525
16660
  }
16526
16661
  function schedule() {
16527
16662
  if (raf !== null || timer !== null) return;
@@ -16545,7 +16680,7 @@ function createDeltaBatcher({
16545
16680
  }
16546
16681
  if (!isDeltaEvent(event)) return false;
16547
16682
  const tail = pending[pending.length - 1];
16548
- const seqAdvances = _optionalChain([tail, 'optionalAccess', _542 => _542.seq]) == null ? event.seq == null : event.seq != null && event.seq > tail.seq;
16683
+ const seqAdvances = _optionalChain([tail, 'optionalAccess', _557 => _557.seq]) == null ? event.seq == null : event.seq != null && event.seq > tail.seq;
16549
16684
  if (tail && seqAdvances && tail.type === event.type && (tail.type !== "text-delta" || tail.leading === event.leading)) {
16550
16685
  pending[pending.length - 1] = {
16551
16686
  ...tail,
@@ -16577,7 +16712,7 @@ function useChatStreamReducer({
16577
16712
  side = DEFAULT_DIALOG_SIDE,
16578
16713
  createReducerOptions
16579
16714
  }) {
16580
- const reducer = store.getReducer(dialogId, side, () => _nullishCoalesce(_optionalChain([createReducerOptions, 'optionalCall', _543 => _543()]), () => ( {})));
16715
+ const reducer = store.getReducer(dialogId, side, () => _nullishCoalesce(_optionalChain([createReducerOptions, 'optionalCall', _558 => _558()]), () => ( {})));
16581
16716
  const getSnapshot2 = _react.useCallback.call(void 0, () => store.getSnapshot(dialogId, side), [store, dialogId, side]);
16582
16717
  const getServerSnapshot2 = _react.useCallback.call(void 0, () => store.getServerSnapshot(), [store]);
16583
16718
  const subscribe2 = _react.useCallback.call(void 0, (listener) => store.subscribe(listener), [store]);
@@ -16622,7 +16757,7 @@ function buildConfirmToolBody(request) {
16622
16757
  async function readServerErrorMessage(response) {
16623
16758
  try {
16624
16759
  const body = await response.json();
16625
- if (typeof _optionalChain([body, 'optionalAccess', _544 => _544.error]) === "string" && body.error.length > 0) return body.error;
16760
+ if (typeof _optionalChain([body, 'optionalAccess', _559 => _559.error]) === "string" && body.error.length > 0) return body.error;
16626
16761
  } catch (e20) {
16627
16762
  }
16628
16763
  return null;
@@ -16785,7 +16920,7 @@ function useManagedDialogList({
16785
16920
  try {
16786
16921
  await deleteDialogCallback(id);
16787
16922
  removeLocal(id);
16788
- _optionalChain([onDialogRemovedRef, 'access', _545 => _545.current, 'optionalCall', _546 => _546(id, "deleted")]);
16923
+ _optionalChain([onDialogRemovedRef, 'access', _560 => _560.current, 'optionalCall', _561 => _561(id, "deleted")]);
16789
16924
  } catch (err) {
16790
16925
  console.error(`${logTag} deleteDialog failed:`, err);
16791
16926
  throw err;
@@ -16796,7 +16931,7 @@ function useManagedDialogList({
16796
16931
  const renameDialog = _react.useCallback.call(void 0,
16797
16932
  async (id, title) => {
16798
16933
  if (!renameDialogCallback) return;
16799
- const previous = _optionalChain([dialogsRef, 'access', _547 => _547.current, 'access', _548 => _548.find, 'call', _549 => _549((d) => d.id === id), 'optionalAccess', _550 => _550.title]);
16934
+ const previous = _optionalChain([dialogsRef, 'access', _562 => _562.current, 'access', _563 => _563.find, 'call', _564 => _564((d) => d.id === id), 'optionalAccess', _565 => _565.title]);
16800
16935
  setDialogs((prev) => prev.map((d) => d.id === id ? { ...d, title } : d));
16801
16936
  try {
16802
16937
  await renameDialogCallback(id, title);
@@ -16815,7 +16950,7 @@ function useManagedDialogList({
16815
16950
  try {
16816
16951
  await archiveDialogCallback(id);
16817
16952
  removeLocal(id);
16818
- _optionalChain([onDialogRemovedRef, 'access', _551 => _551.current, 'optionalCall', _552 => _552(id, "archived")]);
16953
+ _optionalChain([onDialogRemovedRef, 'access', _566 => _566.current, 'optionalCall', _567 => _567(id, "archived")]);
16819
16954
  } catch (err) {
16820
16955
  console.error(`${logTag} archiveDialog failed:`, err);
16821
16956
  throw err;
@@ -16883,7 +17018,7 @@ var STORAGE_KEY = "conversation";
16883
17018
  var namespaceFor = (source) => {
16884
17019
  const base = `mingo-chat-${source}`;
16885
17020
  const auth = _chunkDGFDBPO7cjs.getEmbedProxyAuth.call(void 0, );
16886
- return _optionalChain([auth, 'optionalAccess', _553 => _553.email]) ? `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}` : base;
17021
+ return _optionalChain([auth, 'optionalAccess', _568 => _568.email]) ? `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}` : base;
16887
17022
  };
16888
17023
  function createChatConversationStorage(source) {
16889
17024
  return _chunkDGFDBPO7cjs.createLocalStorageAdapter.call(void 0, {
@@ -16956,7 +17091,7 @@ function useChatHistoryHydration({
16956
17091
  if (cancelled) return;
16957
17092
  if (rows.length === 0) {
16958
17093
  const found = isRecord(body) ? body.found : void 0;
16959
- if (found === false) _optionalChain([onOrphanedConversation, 'optionalCall', _554 => _554(conversationId)]);
17094
+ if (found === false) _optionalChain([onOrphanedConversation, 'optionalCall', _569 => _569(conversationId)]);
16960
17095
  return;
16961
17096
  }
16962
17097
  const hydrated = [];
@@ -17033,7 +17168,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17033
17168
  const { active = true } = runtimeOptions;
17034
17169
  const runtime = _chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, );
17035
17170
  const source = runtime.source || DEFAULT_CHAT_SOURCE;
17036
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _555 => _555.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
17171
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _570 => _570.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
17037
17172
  const sendMessageRef = _react.useRef.call(void 0,
17038
17173
  () => Promise.resolve(true)
17039
17174
  );
@@ -17069,7 +17204,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17069
17204
  if (!restoredConversationRef.current) {
17070
17205
  restoredConversationRef.current = true;
17071
17206
  pruneStaleChatConversationStorage(source);
17072
- conversationIdRef.current = _nullishCoalesce(_optionalChain([conversationStorage, 'access', _556 => _556.load, 'call', _557 => _557(), 'optionalAccess', _558 => _558.conversationId]), () => ( null));
17207
+ conversationIdRef.current = _nullishCoalesce(_optionalChain([conversationStorage, 'access', _571 => _571.load, 'call', _572 => _572(), 'optionalAccess', _573 => _573.conversationId]), () => ( null));
17073
17208
  }
17074
17209
  const [conversationId, setConversationId] = _react.useState.call(void 0, () => conversationIdRef.current);
17075
17210
  const commitConversationId = _react.useCallback.call(void 0,
@@ -17160,7 +17295,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17160
17295
  const abortControllerRef = _react.useRef.call(void 0, null);
17161
17296
  const switchConversation = _react.useCallback.call(void 0,
17162
17297
  (id) => {
17163
- _optionalChain([abortControllerRef, 'access', _559 => _559.current, 'optionalAccess', _560 => _560.abort, 'call', _561 => _561()]);
17298
+ _optionalChain([abortControllerRef, 'access', _574 => _574.current, 'optionalAccess', _575 => _575.abort, 'call', _576 => _576()]);
17164
17299
  flushDeltas();
17165
17300
  mutate((r) => r.reset());
17166
17301
  hydrationSendCountRef.current = 0;
@@ -17197,8 +17332,8 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17197
17332
  } = useManagedDialogList({
17198
17333
  autoLoad: active,
17199
17334
  fetchDialogs: fetchActiveDialogs,
17200
- renameDialog: _optionalChain([conversationsApi, 'optionalAccess', _562 => _562.renameDialog]),
17201
- archiveDialog: _optionalChain([conversationsApi, 'optionalAccess', _563 => _563.archiveDialog]),
17335
+ renameDialog: _optionalChain([conversationsApi, 'optionalAccess', _577 => _577.renameDialog]),
17336
+ archiveDialog: _optionalChain([conversationsApi, 'optionalAccess', _578 => _578.archiveDialog]),
17202
17337
  pageSize: 20,
17203
17338
  search: conversationsApi ? dialogSearch : void 0,
17204
17339
  logTag: "[useSseChatAdapter]",
@@ -17262,7 +17397,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17262
17397
  const serverMessage = await readServerErrorMessage(response);
17263
17398
  throw new Error(_nullishCoalesce(serverMessage, () => ( `Chat request failed: ${response.status}`)));
17264
17399
  }
17265
- const reader = _optionalChain([response, 'access', _564 => _564.body, 'optionalAccess', _565 => _565.getReader, 'call', _566 => _566()]);
17400
+ const reader = _optionalChain([response, 'access', _579 => _579.body, 'optionalAccess', _580 => _580.getReader, 'call', _581 => _581()]);
17266
17401
  if (!reader) throw new Error("No response body");
17267
17402
  const frameDecoder = createSseFrameDecoder();
17268
17403
  let finished = false;
@@ -17291,7 +17426,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17291
17426
  }
17292
17427
  return true;
17293
17428
  } catch (err) {
17294
- if (_optionalChain([err, 'optionalAccess', _567 => _567.name]) === "AbortError" || ctrl.signal.aborted) {
17429
+ if (_optionalChain([err, 'optionalAccess', _582 => _582.name]) === "AbortError" || ctrl.signal.aborted) {
17295
17430
  return true;
17296
17431
  }
17297
17432
  flushDeltas();
@@ -17327,7 +17462,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17327
17462
  );
17328
17463
  sendMessageRef.current = sendMessage;
17329
17464
  const stopMessage = _react.useCallback.call(void 0, () => {
17330
- _optionalChain([abortControllerRef, 'access', _568 => _568.current, 'optionalAccess', _569 => _569.abort, 'call', _570 => _570()]);
17465
+ _optionalChain([abortControllerRef, 'access', _583 => _583.current, 'optionalAccess', _584 => _584.abort, 'call', _585 => _585()]);
17331
17466
  flushDeltas();
17332
17467
  mutate((r) => r.setPhase("idle"));
17333
17468
  }, [mutate, flushDeltas]);
@@ -17363,7 +17498,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17363
17498
  let sendIdx = -1;
17364
17499
  return state.messages.map((m) => {
17365
17500
  const segments = m.segments;
17366
- const content = typeof m.content === "string" && !segments ? m.content : _nullishCoalesce(_optionalChain([segments, 'optionalAccess', _571 => _571.filter, 'call', _572 => _572((s) => s.type === "text"), 'access', _573 => _573.map, 'call', _574 => _574((s) => s.text), 'access', _575 => _575.join, 'call', _576 => _576("")]), () => ( ""));
17501
+ const content = typeof m.content === "string" && !segments ? m.content : _nullishCoalesce(_optionalChain([segments, 'optionalAccess', _586 => _586.filter, 'call', _587 => _587((s) => s.type === "text"), 'access', _588 => _588.map, 'call', _589 => _589((s) => s.text), 'access', _590 => _590.join, 'call', _591 => _591("")]), () => ( ""));
17367
17502
  let sources2;
17368
17503
  let scrollAnchor;
17369
17504
  if (m.role === "user" && !m.hidden) {
@@ -17372,7 +17507,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17372
17507
  if (m.role === "assistant") {
17373
17508
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
17374
17509
  sources2 = sourcesMap.get(lookupIdx);
17375
- scrollAnchor = _nullishCoalesce(_optionalChain([meta, 'access', _577 => _577.get, 'call', _578 => _578(lookupIdx), 'optionalAccess', _579 => _579.scrollAnchor]), () => ( void 0));
17510
+ scrollAnchor = _nullishCoalesce(_optionalChain([meta, 'access', _592 => _592.get, 'call', _593 => _593(lookupIdx), 'optionalAccess', _594 => _594.scrollAnchor]), () => ( void 0));
17376
17511
  }
17377
17512
  return {
17378
17513
  id: m.id,
@@ -17399,7 +17534,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17399
17534
  );
17400
17535
  return;
17401
17536
  }
17402
- const refSlug = typeof _optionalChain([reference, 'access', _580 => _580.metadata, 'optionalAccess', _581 => _581.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
17537
+ const refSlug = typeof _optionalChain([reference, 'access', _595 => _595.metadata, 'optionalAccess', _596 => _596.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
17403
17538
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
17404
17539
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
17405
17540
  const text2 = `/${cmdId} display "${escaped}"`;
@@ -17447,18 +17582,18 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
17447
17582
  /** True while the mount-time rebuild from the server transcript runs. */
17448
17583
  isHydratingHistory,
17449
17584
  /** Provider key for the lib's `<ModelDisplay>` icon. */
17450
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _582 => _582.provider]), () => ( null)),
17451
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _583 => _583.modelLabel]), () => ( null)),
17452
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _584 => _584.contextWindowMaxTokens]), () => ( null)),
17585
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _597 => _597.provider]), () => ( null)),
17586
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _598 => _598.modelLabel]), () => ( null)),
17587
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _599 => _599.contextWindowMaxTokens]), () => ( null)),
17453
17588
  /** Input tokens (known after server's message_start frame; null until). */
17454
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _585 => _585.inputTokens]), () => ( null)),
17589
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _600 => _600.inputTokens]), () => ( null)),
17455
17590
  /** Output tokens (known only after server's trailing usage frame). */
17456
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _586 => _586.outputTokens]), () => ( null)),
17591
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _601 => _601.outputTokens]), () => ( null)),
17457
17592
  /** Cache hit % (read / total-input × 100). null during streaming. */
17458
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _587 => _587.cacheHitRatePct]), () => ( null)),
17593
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _602 => _602.cacheHitRatePct]), () => ( null)),
17459
17594
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
17460
17595
  * token counts). null until the trailing usage frame lands. */
17461
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _588 => _588.breakdown]), () => ( null)),
17596
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _603 => _603.breakdown]), () => ( null)),
17462
17597
  // ─── Dialog management ───────────────────────────────────────────────
17463
17598
  // With `chatConversationsUrl` the server transcript store IS the dialog
17464
17599
  // list (shared `useManagedDialogList`); selecting a row re-hydrates through
@@ -17532,7 +17667,7 @@ function extractIncompleteMessageState(lastMessage) {
17532
17667
  }
17533
17668
  break;
17534
17669
  case "approval_batch": {
17535
- const allDone = !!segment.data.executions && segment.data.toolCalls.every((c) => _optionalChain([segment, 'access', _589 => _589.data, 'access', _590 => _590.executions, 'optionalAccess', _591 => _591[c.toolExecutionRequestId], 'optionalAccess', _592 => _592.status]) === "done");
17670
+ const allDone = !!segment.data.executions && segment.data.toolCalls.every((c) => _optionalChain([segment, 'access', _604 => _604.data, 'access', _605 => _605.executions, 'optionalAccess', _606 => _606[c.toolExecutionRequestId], 'optionalAccess', _607 => _607.status]) === "done");
17536
17671
  if (segment.status !== "rejected" && !allDone) {
17537
17672
  hasIncompleteState = true;
17538
17673
  }
@@ -17567,12 +17702,14 @@ function extractIncompleteMessageState(lastMessage) {
17567
17702
  // outside MESSAGE_START/END — there is no agent turn to continue.
17568
17703
  // - `error` ended the turn; resuming it would re-open a bubble the
17569
17704
  // backend has already abandoned.
17705
+ // - `suggestions` is built locally by the host and never comes from a turn.
17570
17706
  case "text":
17571
17707
  case "thinking":
17572
17708
  case "ask":
17573
17709
  case "ticket_escalated":
17574
17710
  case "ticket_event":
17575
17711
  case "error":
17712
+ case "suggestions":
17576
17713
  break;
17577
17714
  default: {
17578
17715
  const _exhaustive = segment;
@@ -17594,11 +17731,11 @@ function extractIncompleteMessageState(lastMessage) {
17594
17731
  function extractIncompleteTailState(messages) {
17595
17732
  if (!messages || messages.length === 0) return void 0;
17596
17733
  let start = messages.length;
17597
- while (start > 0 && _optionalChain([messages, 'access', _593 => _593[start - 1], 'optionalAccess', _594 => _594.role]) === "assistant") start -= 1;
17734
+ while (start > 0 && _optionalChain([messages, 'access', _608 => _608[start - 1], 'optionalAccess', _609 => _609.role]) === "assistant") start -= 1;
17598
17735
  if (start === messages.length) return void 0;
17599
17736
  const segments = [];
17600
17737
  for (let i = start; i < messages.length; i += 1) {
17601
- const content = _optionalChain([messages, 'access', _595 => _595[i], 'optionalAccess', _596 => _596.content]);
17738
+ const content = _optionalChain([messages, 'access', _610 => _610[i], 'optionalAccess', _611 => _611.content]);
17602
17739
  if (Array.isArray(content)) segments.push(...content);
17603
17740
  }
17604
17741
  if (segments.length === 0) return void 0;
@@ -17829,7 +17966,7 @@ function decodeNatsChunk(chunk) {
17829
17966
  userId: typeof data.userId === "string" ? data.userId : void 0,
17830
17967
  // Wire shape carries no label; fall back to the id (parity with
17831
17968
  // the history path in `process-historical-messages.ts`).
17832
- contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof _optionalChain([it, 'optionalAccess', _597 => _597.type]) === "string" && typeof _optionalChain([it, 'optionalAccess', _598 => _598.id]) === "string").map((it) => ({
17969
+ contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof _optionalChain([it, 'optionalAccess', _612 => _612.type]) === "string" && typeof _optionalChain([it, 'optionalAccess', _613 => _613.id]) === "string").map((it) => ({
17833
17970
  type: it.type,
17834
17971
  id: it.id,
17835
17972
  label: it.id
@@ -17881,15 +18018,15 @@ function decodeNatsChunk(chunk) {
17881
18018
 
17882
18019
  // src/components/chat/utils/process-historical-messages.ts
17883
18020
  function getOwnerDisplayName(owner) {
17884
- if (_optionalChain([owner, 'optionalAccess', _599 => _599.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN && owner.user) {
18021
+ if (_optionalChain([owner, 'optionalAccess', _614 => _614.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN && owner.user) {
17885
18022
  const { firstName, lastName } = owner.user;
17886
18023
  const name = [firstName, lastName].filter(Boolean).join(" ");
17887
18024
  if (name) return name;
17888
18025
  }
17889
- return _optionalChain([owner, 'optionalAccess', _600 => _600.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN ? "Admin" : "You";
18026
+ return _optionalChain([owner, 'optionalAccess', _615 => _615.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN ? "Admin" : "You";
17890
18027
  }
17891
18028
  function getOwnerAvatar(owner) {
17892
- return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _601 => _601.user, 'optionalAccess', _602 => _602.image, 'optionalAccess', _603 => _603.imageUrl]), () => ( void 0));
18029
+ return _nullishCoalesce(_optionalChain([owner, 'optionalAccess', _616 => _616.user, 'optionalAccess', _617 => _617.image, 'optionalAccess', _618 => _618.imageUrl]), () => ( void 0));
17893
18030
  }
17894
18031
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
17895
18032
  messageDataArray.forEach((data) => {
@@ -18081,7 +18218,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18081
18218
  event.offerId,
18082
18219
  event.text,
18083
18220
  event.origin,
18084
- _nullishCoalesce(_optionalChain([escalationOfferStates, 'optionalAccess', _604 => _604[event.offerId]]), () => ( "pending"))
18221
+ _nullishCoalesce(_optionalChain([escalationOfferStates, 'optionalAccess', _619 => _619[event.offerId]]), () => ( "pending"))
18085
18222
  );
18086
18223
  break;
18087
18224
  case "ticket-escalated":
@@ -18115,7 +18252,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18115
18252
  );
18116
18253
  break;
18117
18254
  case "escalation-offer-resolved":
18118
- _optionalChain([offerResolutions, 'optionalAccess', _605 => _605.set, 'call', _606 => _606(event.offerId, {
18255
+ _optionalChain([offerResolutions, 'optionalAccess', _620 => _620.set, 'call', _621 => _621(event.offerId, {
18119
18256
  status: event.status,
18120
18257
  resolvedByName: event.resolvedByName
18121
18258
  })]);
@@ -18179,7 +18316,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18179
18316
  }
18180
18317
  }
18181
18318
  } else {
18182
- _optionalChain([escalatedApprovals, 'optionalAccess', _607 => _607.set, 'call', _608 => _608(event.requestId, {
18319
+ _optionalChain([escalatedApprovals, 'optionalAccess', _622 => _622.set, 'call', _623 => _623(event.requestId, {
18183
18320
  command: event.command || "",
18184
18321
  explanation: event.explanation,
18185
18322
  approvalType,
@@ -18194,8 +18331,8 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18194
18331
  const existingStatus = approvalStatuses[requestId];
18195
18332
  const status = existingStatus || event.status;
18196
18333
  const resolvedByName = event.resolvedByName;
18197
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _609 => _609.get, 'call', _610 => _610(requestId)]);
18198
- if (_optionalChain([escalatedData, 'optionalAccess', _611 => _611.toolCalls]) && escalatedData.toolCalls.length > 0) {
18334
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _624 => _624.get, 'call', _625 => _625(requestId)]);
18335
+ if (_optionalChain([escalatedData, 'optionalAccess', _626 => _626.toolCalls]) && escalatedData.toolCalls.length > 0) {
18199
18336
  if (batchApprovalsEnabled) {
18200
18337
  accumulator.addApprovalBatch(
18201
18338
  requestId,
@@ -18217,7 +18354,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18217
18354
  );
18218
18355
  }
18219
18356
  }
18220
- _optionalChain([escalatedApprovals, 'optionalAccess', _612 => _612.delete, 'call', _613 => _613(requestId)]);
18357
+ _optionalChain([escalatedApprovals, 'optionalAccess', _627 => _627.delete, 'call', _628 => _628(requestId)]);
18221
18358
  break;
18222
18359
  }
18223
18360
  if (escalatedData) {
@@ -18226,7 +18363,7 @@ function applyHistoryEvent(event, accumulator, approvalStatuses, options, escala
18226
18363
  explanation: escalatedData.explanation,
18227
18364
  approvalType: escalatedData.approvalType
18228
18365
  });
18229
- _optionalChain([escalatedApprovals, 'optionalAccess', _614 => _614.delete, 'call', _615 => _615(requestId)]);
18366
+ _optionalChain([escalatedApprovals, 'optionalAccess', _629 => _629.delete, 'call', _630 => _630(requestId)]);
18230
18367
  }
18231
18368
  const before = accumulator.getSegments();
18232
18369
  const after = accumulator.updateApprovalStatus(requestId, status, resolvedByName);
@@ -18318,14 +18455,14 @@ function processHistoricalMessages(messages, options = {}) {
18318
18455
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
18319
18456
  return;
18320
18457
  }
18321
- const isUserMessage = _optionalChain([msg, 'access', _616 => _616.owner, 'optionalAccess', _617 => _617.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _618 => _618.owner, 'optionalAccess', _619 => _619.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN;
18458
+ const isUserMessage = _optionalChain([msg, 'access', _631 => _631.owner, 'optionalAccess', _632 => _632.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _633 => _633.owner, 'optionalAccess', _634 => _634.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN;
18322
18459
  if (isUserMessage) {
18323
18460
  flushAssistantMessage();
18324
- const userAuthorType = _optionalChain([msg, 'access', _620 => _620.owner, 'optionalAccess', _621 => _621.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN ? "admin" : "user";
18461
+ const userAuthorType = _optionalChain([msg, 'access', _635 => _635.owner, 'optionalAccess', _636 => _636.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN ? "admin" : "user";
18325
18462
  messageDataArray.forEach((data) => {
18326
18463
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
18327
18464
  const rawContext = data.contextItems;
18328
- const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _622 => _622.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _623 => _623.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
18465
+ const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof _optionalChain([c, 'optionalAccess', _637 => _637.type]) === "string" && typeof _optionalChain([c, 'optionalAccess', _638 => _638.id]) === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
18329
18466
  processedMessages.push({
18330
18467
  id: msg.id,
18331
18468
  role: "user",
@@ -18372,7 +18509,7 @@ function processHistoricalMessages(messages, options = {}) {
18372
18509
  });
18373
18510
  const nextMsg = messages[index + 1];
18374
18511
  const isLastMessage = index === messages.length - 1;
18375
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _624 => _624.owner, 'optionalAccess', _625 => _625.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _626 => _626.owner, 'optionalAccess', _627 => _627.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN);
18512
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _639 => _639.owner, 'optionalAccess', _640 => _640.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _641 => _641.owner, 'optionalAccess', _642 => _642.type]) === _chunkYRULLK7Ncjs.OWNER_TYPE.ADMIN);
18376
18513
  if (isLastMessage || nextIsFromUser) {
18377
18514
  flushAssistantMessage();
18378
18515
  }
@@ -18756,7 +18893,7 @@ function useNatsChatAdapter(config, options = {}) {
18756
18893
  const connectionState = !active || !dialogId ? "connected" : connectedForDialog === dialogId ? "connected" : "connecting";
18757
18894
  const sendMessage = _react.useCallback.call(void 0,
18758
18895
  async (text2, sendOptions) => {
18759
- const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _628 => _628.hidden]), () => ( false));
18896
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _643 => _643.hidden]), () => ( false));
18760
18897
  mutate((r) => r.pushOptimisticSend(text2, hidden));
18761
18898
  await publishUserMessage(text2, { hidden, dialogId });
18762
18899
  },
@@ -18849,11 +18986,11 @@ function useNatsChatAdapter(config, options = {}) {
18849
18986
  // Tokens: live `token_usage` frame / dialog snapshot (`dialogTokenUsage`).
18850
18987
  // contextWindow uses the dialog's `contextSize` (the "X / Y" denominator,
18851
18988
  // matching the /mingo page). cacheHitRate/breakdown are SSE-only → null.
18852
- currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _629 => _629.provider]), () => ( modelProvider)), () => ( null)),
18853
- currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _630 => _630.modelLabel]), () => ( modelLabel)), () => ( null)),
18854
- currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _631 => _631.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _632 => _632.contextWindowMaxTokens]))), () => ( null)),
18855
- currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _633 => _633.inputTokensSize]), () => ( null)),
18856
- currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _634 => _634.outputTokensSize]), () => ( null)),
18989
+ currentProvider: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _644 => _644.provider]), () => ( modelProvider)), () => ( null)),
18990
+ currentModelLabel: _nullishCoalesce(_nullishCoalesce(_optionalChain([liveModel, 'optionalAccess', _645 => _645.modelLabel]), () => ( modelLabel)), () => ( null)),
18991
+ currentContextWindowMaxTokens: _nullishCoalesce(_nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _646 => _646.contextSize]), () => ( _optionalChain([liveModel, 'optionalAccess', _647 => _647.contextWindowMaxTokens]))), () => ( null)),
18992
+ currentInputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _648 => _648.inputTokensSize]), () => ( null)),
18993
+ currentOutputTokens: _nullishCoalesce(_optionalChain([dialogTokenUsage, 'optionalAccess', _649 => _649.outputTokensSize]), () => ( null)),
18857
18994
  currentCacheHitRatePct: null,
18858
18995
  currentUsageBreakdown: null,
18859
18996
  // Dialog management
@@ -18975,7 +19112,7 @@ function useUnifiedChat(options) {
18975
19112
  []
18976
19113
  );
18977
19114
  const displayRefForward = _react.useCallback.call(void 0,
18978
- (ref) => _optionalChain([activeStateRef, 'access', _635 => _635.current, 'access', _636 => _636.displayRef, 'optionalCall', _637 => _637(ref)]),
19115
+ (ref) => _optionalChain([activeStateRef, 'access', _650 => _650.current, 'access', _651 => _651.displayRef, 'optionalCall', _652 => _652(ref)]),
18979
19116
  []
18980
19117
  );
18981
19118
  const displayRef = activeState.displayRef ? displayRefForward : void 0;
@@ -18985,7 +19122,7 @@ function useUnifiedChat(options) {
18985
19122
  const renameDialog = _react.useCallback.call(void 0, (id, title) => activeStateRef.current.renameDialog(id, title), []);
18986
19123
  const archiveDialog = _react.useCallback.call(void 0, (id) => activeStateRef.current.archiveDialog(id), []);
18987
19124
  const loadMoreDialogs = _react.useCallback.call(void 0, () => activeStateRef.current.loadMoreDialogs(), []);
18988
- const setDialogScope = _react.useCallback.call(void 0, (scope) => _optionalChain([activeStateRef, 'access', _638 => _638.current, 'access', _639 => _639.setDialogScope, 'optionalCall', _640 => _640(scope)]), []);
19125
+ const setDialogScope = _react.useCallback.call(void 0, (scope) => _optionalChain([activeStateRef, 'access', _653 => _653.current, 'access', _654 => _654.setDialogScope, 'optionalCall', _655 => _655(scope)]), []);
18989
19126
  const reloadDialogs = _react.useCallback.call(void 0, () => activeStateRef.current.reloadDialogs(), []);
18990
19127
  const loadMoreMessages = _react.useCallback.call(void 0, () => activeStateRef.current.loadMoreMessages(), []);
18991
19128
  const approveRequest = _react.useCallback.call(void 0, (requestId) => activeStateRef.current.approveRequest(requestId), []);
@@ -19359,4 +19496,8 @@ var MINGO_V2_SPLIT_WIDTH = MINGO_V2_RAIL_WIDTH + CHAT_BLOCK_MIN_WIDTH;
19359
19496
 
19360
19497
 
19361
19498
 
19362
- exports.useScrollFade = useScrollFade; exports.ScrollFadeOverlay = ScrollFadeOverlay; exports.ScrollShadow = ScrollShadow; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.AUTHORED_LINK_REL_TOKENS = AUTHORED_LINK_REL_TOKENS; exports.authoredRelTokens = authoredRelTokens; exports.isNofollowRel = isNofollowRel; exports.renderedLinkRel = renderedLinkRel; exports.findMarkdownLinkAt = findMarkdownLinkAt; exports.formatMarkdownLink = formatMarkdownLink; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.buildHeadingIdMap = buildHeadingIdMap; exports.useHeadingIdMap = useHeadingIdMap; exports.extractText = extractText; exports.useIsHydrated = useIsHydrated; exports.MermaidDiagram = MermaidDiagram; exports.hasRenderableSrc = hasRenderableSrc; exports.buildStandardLeafRenderers = buildStandardLeafRenderers; exports.SAFE_HTML_TAGS = SAFE_HTML_TAGS; exports.SVG_TAGS = SVG_TAGS; exports.buildEffectiveTagSet = buildEffectiveTagSet; exports.buildSanitizeSchema = buildSanitizeSchema; exports.rehypeStripUnsafe = rehypeStripUnsafe; exports.escapeUnknownHtmlTags = escapeUnknownHtmlTags; exports.cardAwareUrlTransform = cardAwareUrlTransform; exports.splitStreamingBlocks = splitStreamingBlocks; exports.completeStreamingTail = completeStreamingTail; exports.TEXT_SIZE_PRESETS = TEXT_SIZE_PRESETS; exports.resolveTextSizeConfig = resolveTextSizeConfig; exports.NO_BROKEN_LINKS = NO_BROKEN_LINKS; exports.MarkdownEngine = MarkdownEngine; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ASK_AI_OPEN_EVENT = ASK_AI_OPEN_EVENT; exports.ASK_AI_OPEN_WITH_REF_EVENT = ASK_AI_OPEN_WITH_REF_EVENT; exports.ASK_AI_OPEN_EVENTS = ASK_AI_OPEN_EVENTS; exports.holdAskAiOpens = holdAskAiOpens; exports.chatListensForAskAiOpens = chatListensForAskAiOpens; exports.ChatAppearanceContext = ChatAppearanceContext; exports.useChatAppearance = useChatAppearance; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.EscalationOfferMessage = EscalationOfferMessage; exports.AiAssistantInfo = AiAssistantInfo; exports.TicketEscalatedMessage = TicketEscalatedMessage; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.TICKET_EVENT_KIND = TICKET_EVENT_KIND; exports.TicketEventMessage = TicketEventMessage; exports.SystemEventMessage = SystemEventMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.ThinkingDisplay = ThinkingDisplay; exports.AskDisplay = AskDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.MspOrganizationCardSkeleton = MspOrganizationCardSkeleton; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; 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.BlockCard = BlockCard; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageSkeleton = ChatMessageSkeleton; exports.ChatMessageListSkeleton = ChatMessageListSkeleton; exports.ChatMessageList = ChatMessageList; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.isQuickActionIconSpec = isQuickActionIconSpec; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipSkeleton = QuickActionChipSkeleton; exports.QuickActionChipButton = QuickActionChipButton; exports.QuickActionChipFromData = QuickActionChipFromData; exports.byKey = byKey; exports.getPlatformProductionUrl = getPlatformProductionUrl; exports.getPlatformUrl = getPlatformUrl; exports.getDeploymentUrl = getDeploymentUrl; exports.isLocalUrl = isLocalUrl; exports.getRequestOrigin = getRequestOrigin; exports.resolveRedirectTarget = resolveRedirectTarget; exports.getAllPlatformBaseDomains = getAllPlatformBaseDomains; exports.DESIGN_DOC_READINESS = DESIGN_DOC_READINESS; exports.DESIGN_DOC_READINESS_DISPLAY = DESIGN_DOC_READINESS_DISPLAY; exports.designDocReadiness = designDocReadiness; exports.formatCompletionLabel = formatCompletionLabel; exports.formatCompletionLabelWithBlockers = formatCompletionLabelWithBlockers; 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.DOC_TABLE_TYPES = DOC_TABLE_TYPES; exports.groupsByTable = groupsByTable; exports.recordCountLabel = recordCountLabel; exports.buildGroupedSource = buildGroupedSource; exports.groupSourcesByTable = groupSourcesByTable; exports.formatCitationIndices = formatCitationIndices; 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.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.clickupTaskUrl = clickupTaskUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.useMarqueeSync = useMarqueeSync; exports.getMarqueeTrackOffset = getMarqueeTrackOffset; exports.getMarqueeAppliedOffset = getMarqueeAppliedOffset; exports.getMarqueeCloneTwin = getMarqueeCloneTwin; exports.MarqueeWallFades = MarqueeWallFades; exports.MarqueeWall = MarqueeWall; exports.WALL_SKELETON_LABEL_CH = WALL_SKELETON_LABEL_CH; exports.interleave = interleave; exports.QuickActionWall = QuickActionWall; exports.MingoOnboardingCardSkeleton = MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = MingoOnboardingListSkeleton; exports.chatDialogMenuItems = chatDialogMenuItems; exports.ChatListEmptyState = ChatListEmptyState; exports.MingoChatHistorySkeleton = MingoChatHistorySkeleton; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.GuideModeBanner = GuideModeBanner; exports.ChatNavSidebar = ChatNavSidebar; exports.ChatListItem = ChatListItem; exports.MingoArchiveList = MingoArchiveList; exports.ChatHeaderIconButton = ChatHeaderIconButton; exports.MingoChatHeader = MingoChatHeader; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.MingoChatRail = MingoChatRail; exports.TabSelector = TabSelector; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatPanelHeader = ChatPanelHeader; 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.ChatContextMemoryBar = ChatContextMemoryBar; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ModelDisplaySkeleton = ModelDisplaySkeleton; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.ChatPanelContext = ChatPanelContext; exports.executeNavigation = executeNavigation; exports.executeNavigationImperative = executeNavigationImperative; exports.handleChatNavClick = handleChatNavClick; exports.useNavLinkViaRuntime = useNavLinkViaRuntime; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.getCaptionsUrl = getCaptionsUrl; exports.rebaseCaptionsUrl = rebaseCaptionsUrl; exports.buildCaptionsUrl = buildCaptionsUrl; exports.getEntityCaptionUrls = getEntityCaptionUrls; exports.getEntityCaptionUrlsById = getEntityCaptionUrlsById; exports.captionsEntityTypeForDocType = captionsEntityTypeForDocType; exports.useCaptions = useCaptions; exports.UserDisplay = UserDisplay; exports.CardHitLayer = CardHitLayer; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; 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.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.designDocPeople = designDocPeople; exports.designDocMetaLine = designDocMetaLine; exports.DesignDocCardSkeleton = DesignDocCardSkeleton; exports.DesignDocCard = DesignDocCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.getVendorLogo = getVendorLogo; exports.VendorIcon = VendorIcon; exports.useChatCardItem = useChatCardItem; exports.MingoInfoCardActionProvider = MingoInfoCardActionProvider; exports.readFetchedCardTitle = readFetchedCardTitle; exports.readFetchedCardPath = readFetchedCardPath; exports.resolveFetchedCardHref = resolveFetchedCardHref; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.resolveCardDestination = resolveCardDestination; exports.chatCardLabel = chatCardLabel; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.EMPTY_DIALOG_CAPABILITIES = EMPTY_DIALOG_CAPABILITIES; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; 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.chatProgressLabel = chatProgressLabel; exports.approvalDisplaysInline = approvalDisplaysInline; exports.appendToTrailingAssistant = appendToTrailingAssistant; exports.upsertTrailingCompaction = upsertTrailingCompaction; exports.applyToolExecutionToMessages = applyToolExecutionToMessages; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.createEmptyTurnMeta = createEmptyTurnMeta; exports.createChatStreamReducer = createChatStreamReducer; exports.DEFAULT_DIALOG_SIDE = DEFAULT_DIALOG_SIDE; exports.DEFAULT_MAX_REDUCERS = DEFAULT_MAX_REDUCERS; exports.MAX_PENDING_RETAIN_KEYS = MAX_PENDING_RETAIN_KEYS; exports.createChatDialogStore = createChatDialogStore; exports.createDeltaBatcher = createDeltaBatcher; exports.useChatStreamReducer = useChatStreamReducer; exports.createChatConversationsApi = createChatConversationsApi; exports.buildDiscussPrompt = buildDiscussPrompt; exports.useManagedDialogList = useManagedDialogList; exports.useSseChatAdapter = useSseChatAdapter; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.extractIncompleteTailState = extractIncompleteTailState; exports.decodeHistoricalMessageData = decodeHistoricalMessageData; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useStableShallow = useStableShallow; exports.useUnifiedChat = useUnifiedChat; exports.chatChipClass = chatChipClass; exports.MINGO_V2_RAIL_WIDTH = MINGO_V2_RAIL_WIDTH; exports.CHAT_BLOCK_MIN_WIDTH = CHAT_BLOCK_MIN_WIDTH; exports.MINGO_V2_SPLIT_WIDTH = MINGO_V2_SPLIT_WIDTH;
19499
+
19500
+
19501
+
19502
+
19503
+ exports.useScrollFade = useScrollFade; exports.ScrollFadeOverlay = ScrollFadeOverlay; exports.ScrollShadow = ScrollShadow; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.AUTHORED_LINK_REL_TOKENS = AUTHORED_LINK_REL_TOKENS; exports.authoredRelTokens = authoredRelTokens; exports.isNofollowRel = isNofollowRel; exports.renderedLinkRel = renderedLinkRel; exports.findMarkdownLinkAt = findMarkdownLinkAt; exports.formatMarkdownLink = formatMarkdownLink; exports.stripInlineMarkdown = stripInlineMarkdown; exports.markdownToPlainText = markdownToPlainText; exports.buildHeadingIdMap = buildHeadingIdMap; exports.useHeadingIdMap = useHeadingIdMap; exports.extractText = extractText; exports.useIsHydrated = useIsHydrated; exports.MermaidDiagram = MermaidDiagram; exports.hasRenderableSrc = hasRenderableSrc; exports.buildStandardLeafRenderers = buildStandardLeafRenderers; exports.SAFE_HTML_TAGS = SAFE_HTML_TAGS; exports.SVG_TAGS = SVG_TAGS; exports.buildEffectiveTagSet = buildEffectiveTagSet; exports.buildSanitizeSchema = buildSanitizeSchema; exports.rehypeStripUnsafe = rehypeStripUnsafe; exports.escapeUnknownHtmlTags = escapeUnknownHtmlTags; exports.cardAwareUrlTransform = cardAwareUrlTransform; exports.splitStreamingBlocks = splitStreamingBlocks; exports.completeStreamingTail = completeStreamingTail; exports.TEXT_SIZE_PRESETS = TEXT_SIZE_PRESETS; exports.resolveTextSizeConfig = resolveTextSizeConfig; exports.NO_BROKEN_LINKS = NO_BROKEN_LINKS; exports.MarkdownEngine = MarkdownEngine; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ASK_AI_OPEN_EVENT = ASK_AI_OPEN_EVENT; exports.ASK_AI_OPEN_WITH_REF_EVENT = ASK_AI_OPEN_WITH_REF_EVENT; exports.ASK_AI_OPEN_EVENTS = ASK_AI_OPEN_EVENTS; exports.holdAskAiOpens = holdAskAiOpens; exports.chatListensForAskAiOpens = chatListensForAskAiOpens; exports.ChatAppearanceContext = ChatAppearanceContext; exports.useChatAppearance = useChatAppearance; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.EscalationOfferMessage = EscalationOfferMessage; exports.AiAssistantInfo = AiAssistantInfo; exports.TicketEscalatedMessage = TicketEscalatedMessage; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.TICKET_EVENT_KIND = TICKET_EVENT_KIND; exports.TicketEventMessage = TicketEventMessage; exports.SystemEventMessage = SystemEventMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.ThinkingDisplay = ThinkingDisplay; exports.AskDisplay = AskDisplay; exports.ChatPanelContext = ChatPanelContext; exports.getAgentAccent = getAgentAccent; exports.accentFromIdentityIcon = accentFromIdentityIcon; exports.isQuickActionIconSpec = isQuickActionIconSpec; exports.renderQuickActionIcon = renderQuickActionIcon; exports.QuickActionChipSkeleton = QuickActionChipSkeleton; exports.QuickActionChipButton = QuickActionChipButton; exports.QuickActionChipFromData = QuickActionChipFromData; exports.SuggestionsDisplay = SuggestionsDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.MspOrganizationCard = MspOrganizationCard; exports.MspOrganizationCardSkeleton = MspOrganizationCardSkeleton; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; 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.BlockCard = BlockCard; exports.remarkCardLinks = remarkCardLinks; exports.remarkMentionChips = remarkMentionChips; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageSkeleton = ChatMessageSkeleton; exports.ChatMessageListSkeleton = ChatMessageListSkeleton; exports.ChatMessageList = ChatMessageList; exports.byKey = byKey; exports.getPlatformProductionUrl = getPlatformProductionUrl; exports.getPlatformUrl = getPlatformUrl; exports.getDeploymentUrl = getDeploymentUrl; exports.isLocalUrl = isLocalUrl; exports.getRequestOrigin = getRequestOrigin; exports.resolveRedirectTarget = resolveRedirectTarget; exports.getAllPlatformBaseDomains = getAllPlatformBaseDomains; exports.DESIGN_DOC_READINESS = DESIGN_DOC_READINESS; exports.DESIGN_DOC_READINESS_DISPLAY = DESIGN_DOC_READINESS_DISPLAY; exports.designDocReadiness = designDocReadiness; exports.formatCompletionLabel = formatCompletionLabel; exports.formatCompletionLabelWithBlockers = formatCompletionLabelWithBlockers; 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.DOC_TABLE_TYPES = DOC_TABLE_TYPES; exports.groupsByTable = groupsByTable; exports.recordCountLabel = recordCountLabel; exports.buildGroupedSource = buildGroupedSource; exports.groupSourcesByTable = groupSourcesByTable; exports.formatCitationIndices = formatCitationIndices; 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.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.clickupTaskUrl = clickupTaskUrl; exports.faqSectionSlug = faqSectionSlug; exports.faqItemAnchor = faqItemAnchor; exports.parseFaqHash = parseFaqHash; exports.useMarqueeSync = useMarqueeSync; exports.getMarqueeTrackOffset = getMarqueeTrackOffset; exports.getMarqueeAppliedOffset = getMarqueeAppliedOffset; exports.getMarqueeCloneTwin = getMarqueeCloneTwin; exports.MarqueeWallFades = MarqueeWallFades; exports.MarqueeWall = MarqueeWall; exports.WALL_SKELETON_LABEL_CH = WALL_SKELETON_LABEL_CH; exports.interleave = interleave; exports.QuickActionWall = QuickActionWall; exports.MingoOnboardingCardSkeleton = MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = MingoOnboardingListSkeleton; exports.chatDialogMenuItems = chatDialogMenuItems; exports.ChatListEmptyState = ChatListEmptyState; exports.MingoChatHistorySkeleton = MingoChatHistorySkeleton; exports.MingoChatHistory = MingoChatHistory; exports.MingoWelcome = MingoWelcome; exports.GuideWelcome = GuideWelcome; exports.GuideModeBanner = GuideModeBanner; exports.ChatNavSidebar = ChatNavSidebar; exports.ChatListItem = ChatListItem; exports.MingoArchiveList = MingoArchiveList; exports.ChatHeaderIconButton = ChatHeaderIconButton; exports.MingoChatHeader = MingoChatHeader; exports.ChatHeaderSearchField = ChatHeaderSearchField; exports.MingoChatRail = MingoChatRail; exports.TabSelector = TabSelector; exports.MingoHistoryRail = MingoHistoryRail; exports.RenameChatModal = RenameChatModal; exports.ArchiveChatModal = ArchiveChatModal; exports.UnarchiveChatModal = UnarchiveChatModal; exports.ChatDialogModals = ChatDialogModals; exports.ChatPanelHeader = ChatPanelHeader; 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.ChatContextMemoryBar = ChatContextMemoryBar; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.ModelDisplaySkeleton = ModelDisplaySkeleton; exports.ChatComposer = ChatComposer; exports.ChatArchivePage = ChatArchivePage; exports.executeNavigation = executeNavigation; exports.executeNavigationImperative = executeNavigationImperative; exports.handleChatNavClick = handleChatNavClick; exports.useNavLinkViaRuntime = useNavLinkViaRuntime; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.getCaptionsUrl = getCaptionsUrl; exports.rebaseCaptionsUrl = rebaseCaptionsUrl; exports.buildCaptionsUrl = buildCaptionsUrl; exports.getEntityCaptionUrls = getEntityCaptionUrls; exports.getEntityCaptionUrlsById = getEntityCaptionUrlsById; exports.captionsEntityTypeForDocType = captionsEntityTypeForDocType; exports.useCaptions = useCaptions; exports.UserDisplay = UserDisplay; exports.CardHitLayer = CardHitLayer; exports.STRIP_CELL_MAX_WIDTH = STRIP_CELL_MAX_WIDTH; exports.CardsStrip = CardsStrip; 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.VideoBitesStrip = VideoBitesStrip; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.designDocPeople = designDocPeople; exports.designDocMetaLine = designDocMetaLine; exports.DesignDocCardSkeleton = DesignDocCardSkeleton; exports.DesignDocCard = DesignDocCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.getVendorLogo = getVendorLogo; exports.VendorIcon = VendorIcon; exports.useChatCardItem = useChatCardItem; exports.MingoInfoCardActionProvider = MingoInfoCardActionProvider; exports.readFetchedCardTitle = readFetchedCardTitle; exports.readFetchedCardPath = readFetchedCardPath; exports.resolveFetchedCardHref = resolveFetchedCardHref; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.resolveCardDestination = resolveCardDestination; exports.chatCardLabel = chatCardLabel; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.EMPTY_DIALOG_CAPABILITIES = EMPTY_DIALOG_CAPABILITIES; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; 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.useWhatToAsk = useWhatToAsk; exports.awaitsDecision = awaitsDecision; exports.mergeByTime = mergeByTime; exports.chatProgressLabel = chatProgressLabel; exports.approvalDisplaysInline = approvalDisplaysInline; exports.appendToTrailingAssistant = appendToTrailingAssistant; exports.upsertTrailingCompaction = upsertTrailingCompaction; exports.applyToolExecutionToMessages = applyToolExecutionToMessages; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.createEmptyTurnMeta = createEmptyTurnMeta; exports.createChatStreamReducer = createChatStreamReducer; exports.DEFAULT_DIALOG_SIDE = DEFAULT_DIALOG_SIDE; exports.DEFAULT_MAX_REDUCERS = DEFAULT_MAX_REDUCERS; exports.MAX_PENDING_RETAIN_KEYS = MAX_PENDING_RETAIN_KEYS; exports.createChatDialogStore = createChatDialogStore; exports.createDeltaBatcher = createDeltaBatcher; exports.useChatStreamReducer = useChatStreamReducer; exports.createChatConversationsApi = createChatConversationsApi; exports.buildDiscussPrompt = buildDiscussPrompt; exports.useManagedDialogList = useManagedDialogList; exports.useSseChatAdapter = useSseChatAdapter; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.extractIncompleteTailState = extractIncompleteTailState; exports.decodeHistoricalMessageData = decodeHistoricalMessageData; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.mapProcessedToUnified = mapProcessedToUnified; exports.historicalToUnified = historicalToUnified; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useStableShallow = useStableShallow; exports.useUnifiedChat = useUnifiedChat; exports.chatChipClass = chatChipClass; exports.MINGO_V2_RAIL_WIDTH = MINGO_V2_RAIL_WIDTH; exports.CHAT_BLOCK_MIN_WIDTH = CHAT_BLOCK_MIN_WIDTH; exports.MINGO_V2_SPLIT_WIDTH = MINGO_V2_SPLIT_WIDTH;