@flamingo-stack/openframe-frontend-core 0.0.373 → 0.0.374-snapshot.20260706184004

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 (91) hide show
  1. package/dist/{chunk-X274IBXR.cjs → chunk-2MTPUJWU.cjs} +26 -26
  2. package/dist/{chunk-X274IBXR.cjs.map → chunk-2MTPUJWU.cjs.map} +1 -1
  3. package/dist/{chunk-4YQY3YBQ.js → chunk-43Q6DBPX.js} +2 -2
  4. package/dist/{chunk-DDI7FFA5.js → chunk-4YVGGC75.js} +634 -591
  5. package/dist/{chunk-DDI7FFA5.js.map → chunk-4YVGGC75.js.map} +1 -1
  6. package/dist/{chunk-FCPUM5S2.cjs → chunk-6M2WBXAX.cjs} +62 -62
  7. package/dist/{chunk-FCPUM5S2.cjs.map → chunk-6M2WBXAX.cjs.map} +1 -1
  8. package/dist/{chunk-DUFK7RSU.js → chunk-6XZHILYR.js} +2 -2
  9. package/dist/{chunk-3QTBIUB7.cjs → chunk-76U2GDDD.cjs} +12 -12
  10. package/dist/{chunk-3QTBIUB7.cjs.map → chunk-76U2GDDD.cjs.map} +1 -1
  11. package/dist/{chunk-ANKXC5RY.cjs → chunk-7CTM6E4V.cjs} +31 -31
  12. package/dist/{chunk-ANKXC5RY.cjs.map → chunk-7CTM6E4V.cjs.map} +1 -1
  13. package/dist/{chunk-M4O75TCN.js → chunk-7T4SRXRL.js} +4 -4
  14. package/dist/{chunk-JDYNGJSD.js → chunk-ALLZDIFL.js} +2 -2
  15. package/dist/{chunk-TH2LDBFE.js → chunk-B3TCRZOY.js} +2 -2
  16. package/dist/{chunk-IDYD2EIV.js → chunk-GOMGEC3Q.js} +2 -2
  17. package/dist/{chunk-LD7WDZQC.js → chunk-HEJIIBH6.js} +2 -2
  18. package/dist/{chunk-4JIVPFPK.cjs → chunk-I4MN5VFO.cjs} +25 -25
  19. package/dist/{chunk-4JIVPFPK.cjs.map → chunk-I4MN5VFO.cjs.map} +1 -1
  20. package/dist/{chunk-IH4IPKF2.js → chunk-IFPJLIKC.js} +4 -4
  21. package/dist/{chunk-CCBQGC44.js → chunk-JVFZSQWC.js} +4 -4
  22. package/dist/{chunk-6OJHTN7B.cjs → chunk-P6OZEG6D.cjs} +57 -57
  23. package/dist/{chunk-6OJHTN7B.cjs.map → chunk-P6OZEG6D.cjs.map} +1 -1
  24. package/dist/{chunk-7YKIXCV3.cjs → chunk-P6UR3BUY.cjs} +7 -7
  25. package/dist/{chunk-7YKIXCV3.cjs.map → chunk-P6UR3BUY.cjs.map} +1 -1
  26. package/dist/{chunk-XNP2LIYD.cjs → chunk-QI5H4KNX.cjs} +9 -9
  27. package/dist/{chunk-XNP2LIYD.cjs.map → chunk-QI5H4KNX.cjs.map} +1 -1
  28. package/dist/{chunk-RHKIYRJJ.js → chunk-QUDTWAL2.js} +2 -2
  29. package/dist/{chunk-4RUTFRJ6.cjs → chunk-RZVSYLO7.cjs} +436 -393
  30. package/dist/chunk-RZVSYLO7.cjs.map +1 -0
  31. package/dist/{chunk-MTT4SFN6.cjs → chunk-SQT2OJVX.cjs} +5 -5
  32. package/dist/{chunk-MTT4SFN6.cjs.map → chunk-SQT2OJVX.cjs.map} +1 -1
  33. package/dist/{chunk-OTSWZF3C.js → chunk-UWJNYZ7U.js} +4 -4
  34. package/dist/{chunk-AFF6QBKL.cjs → chunk-WTLEMFRU.cjs} +37 -37
  35. package/dist/{chunk-AFF6QBKL.cjs.map → chunk-WTLEMFRU.cjs.map} +1 -1
  36. package/dist/{chunk-3N34BFBP.cjs → chunk-WWP5NSCE.cjs} +15 -15
  37. package/dist/{chunk-3N34BFBP.cjs.map → chunk-WWP5NSCE.cjs.map} +1 -1
  38. package/dist/components/case-studies/index.cjs +8 -8
  39. package/dist/components/case-studies/index.js +2 -2
  40. package/dist/components/chat/chat-container.d.ts.map +1 -1
  41. package/dist/components/chat/index.cjs +2 -2
  42. package/dist/components/chat/index.js +1 -1
  43. package/dist/components/chat/types/component.types.d.ts +14 -0
  44. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  45. package/dist/components/contact/index.cjs +3 -3
  46. package/dist/components/contact/index.js +2 -2
  47. package/dist/components/docs/index.cjs +5 -5
  48. package/dist/components/docs/index.js +4 -4
  49. package/dist/components/embeds/index.cjs +3 -3
  50. package/dist/components/embeds/index.js +2 -2
  51. package/dist/components/faq/index.cjs +3 -3
  52. package/dist/components/faq/index.js +2 -2
  53. package/dist/components/features/index.cjs +2 -2
  54. package/dist/components/features/index.js +1 -1
  55. package/dist/components/help-center-pages/index.cjs +20 -20
  56. package/dist/components/help-center-pages/index.js +11 -11
  57. package/dist/components/index.cjs +120 -120
  58. package/dist/components/index.js +9 -9
  59. package/dist/components/navigation/app-layout-drawer.d.ts.map +1 -1
  60. package/dist/components/navigation/app-layout.d.ts +20 -0
  61. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  62. package/dist/components/navigation/index.cjs +2 -2
  63. package/dist/components/navigation/index.js +1 -1
  64. package/dist/components/onboarding-guides/index.cjs +5 -5
  65. package/dist/components/onboarding-guides/index.js +4 -4
  66. package/dist/components/related-content/index.cjs +3 -3
  67. package/dist/components/related-content/index.js +2 -2
  68. package/dist/components/tickets/index.cjs +5 -5
  69. package/dist/components/tickets/index.js +4 -4
  70. package/dist/components/ui/index.cjs +2 -2
  71. package/dist/components/ui/index.js +1 -1
  72. package/dist/index.cjs +2 -2
  73. package/dist/index.js +1 -1
  74. package/package.json +1 -1
  75. package/src/components/chat/chat-container.tsx +20 -1
  76. package/src/components/chat/types/component.types.ts +14 -0
  77. package/src/components/navigation/app-layout-drawer.tsx +23 -1
  78. package/src/components/navigation/app-layout.tsx +50 -2
  79. package/src/stories/ChatContainer.stories.tsx +36 -0
  80. package/dist/chunk-4RUTFRJ6.cjs.map +0 -1
  81. /package/dist/{chunk-4YQY3YBQ.js.map → chunk-43Q6DBPX.js.map} +0 -0
  82. /package/dist/{chunk-DUFK7RSU.js.map → chunk-6XZHILYR.js.map} +0 -0
  83. /package/dist/{chunk-M4O75TCN.js.map → chunk-7T4SRXRL.js.map} +0 -0
  84. /package/dist/{chunk-JDYNGJSD.js.map → chunk-ALLZDIFL.js.map} +0 -0
  85. /package/dist/{chunk-TH2LDBFE.js.map → chunk-B3TCRZOY.js.map} +0 -0
  86. /package/dist/{chunk-IDYD2EIV.js.map → chunk-GOMGEC3Q.js.map} +0 -0
  87. /package/dist/{chunk-LD7WDZQC.js.map → chunk-HEJIIBH6.js.map} +0 -0
  88. /package/dist/{chunk-IH4IPKF2.js.map → chunk-IFPJLIKC.js.map} +0 -0
  89. /package/dist/{chunk-CCBQGC44.js.map → chunk-JVFZSQWC.js.map} +0 -0
  90. /package/dist/{chunk-RHKIYRJJ.js.map → chunk-QUDTWAL2.js.map} +0 -0
  91. /package/dist/{chunk-OTSWZF3C.js.map → chunk-UWJNYZ7U.js.map} +0 -0
@@ -2979,8 +2979,67 @@ function TicketStatusTag({
2979
2979
  );
2980
2980
  }
2981
2981
 
2982
+ // src/components/chat/msp-organization-card.tsx
2983
+ init_cn();
2984
+ init_button2();
2985
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
2986
+ function MspOrganizationCard({
2987
+ name,
2988
+ website,
2989
+ logoUrl,
2990
+ title,
2991
+ href,
2992
+ onOpenWebsite,
2993
+ className
2994
+ }) {
2995
+ const actionLabel = website ? `Open ${website}` : "Open organization website";
2996
+ return /* @__PURE__ */ jsxs13(
2997
+ "div",
2998
+ {
2999
+ className: cn(
3000
+ // Inset ring (box-shadow) instead of `border` so the 1px stroke does not
3001
+ // add to the box height — matches Figma's 80px frame (16 + 48 + 16) with
3002
+ // its inside-aligned stroke. A real border would render 82px.
3003
+ "flex items-start gap-[var(--spacing-system-m)] rounded-md bg-ods-bg p-[var(--spacing-system-m)] ring-1 ring-inset ring-ods-border",
3004
+ className
3005
+ ),
3006
+ children: [
3007
+ /* @__PURE__ */ jsx15(SquareAvatar, { src: logoUrl, alt: name, fallback: name, size: "lg", variant: "square" }),
3008
+ /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3009
+ /* @__PURE__ */ jsx15("span", { className: "truncate text-h3 text-ods-text-primary", children: title ?? `Your IT is managed by ${name}` }),
3010
+ website ? /* @__PURE__ */ jsx15("span", { className: "truncate text-h4 text-ods-text-secondary", children: website }) : null
3011
+ ] }),
3012
+ href ? /* @__PURE__ */ jsx15(Button, { asChild: true, variant: "outline", size: "icon", "aria-label": actionLabel, children: /* @__PURE__ */ jsx15("a", { href, target: "_blank", rel: "noreferrer noopener", children: /* @__PURE__ */ jsx15(ExternalLinkIcon, {}) }) }) : onOpenWebsite ? /* @__PURE__ */ jsx15(Button, { variant: "outline", size: "icon", "aria-label": actionLabel, onClick: onOpenWebsite, children: /* @__PURE__ */ jsx15(ExternalLinkIcon, {}) }) : null
3013
+ ]
3014
+ }
3015
+ );
3016
+ }
3017
+
3018
+ // src/components/chat/msp-organization-card-skeleton.tsx
3019
+ init_cn();
3020
+ import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
3021
+ function MspOrganizationCardSkeleton({ className }) {
3022
+ return /* @__PURE__ */ jsxs14(
3023
+ "div",
3024
+ {
3025
+ className: cn(
3026
+ "flex items-start gap-[var(--spacing-system-m)] rounded-md bg-ods-bg p-[var(--spacing-system-m)] ring-1 ring-inset ring-ods-border",
3027
+ className
3028
+ ),
3029
+ children: [
3030
+ /* @__PURE__ */ jsx16(Skeleton, { className: "size-12 shrink-0 rounded-md" }),
3031
+ /* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-2 self-stretch", children: [
3032
+ /* @__PURE__ */ jsx16(Skeleton, { className: "h-5 w-3/5 rounded-md" }),
3033
+ /* @__PURE__ */ jsx16(Skeleton, { className: "h-4 w-2/5 rounded-md" })
3034
+ ] }),
3035
+ /* @__PURE__ */ jsx16(Skeleton, { className: "size-12 shrink-0 rounded-md" })
3036
+ ]
3037
+ }
3038
+ );
3039
+ }
3040
+
2982
3041
  // src/components/chat/chat-container.tsx
2983
- import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
3042
+ import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
2984
3043
  var ConnectionIndicator = ({ status }) => {
2985
3044
  const getStatusStyles = () => {
2986
3045
  switch (status) {
@@ -2996,7 +3055,7 @@ var ConnectionIndicator = ({ status }) => {
2996
3055
  return "bg-ods-text-tertiary";
2997
3056
  }
2998
3057
  };
2999
- return /* @__PURE__ */ jsx15("div", { className: "flex items-center", children: /* @__PURE__ */ jsx15(
3058
+ return /* @__PURE__ */ jsx17("div", { className: "flex items-center", children: /* @__PURE__ */ jsx17(
3000
3059
  "output",
3001
3060
  {
3002
3061
  className: cn(
@@ -3010,7 +3069,7 @@ var ConnectionIndicator = ({ status }) => {
3010
3069
  };
3011
3070
  var ChatContainer = React6.forwardRef(
3012
3071
  ({ className, children, ...props }, ref) => {
3013
- return /* @__PURE__ */ jsx15(
3072
+ return /* @__PURE__ */ jsx17(
3014
3073
  "div",
3015
3074
  {
3016
3075
  ref,
@@ -3028,9 +3087,9 @@ var ChatContainer = React6.forwardRef(
3028
3087
  );
3029
3088
  ChatContainer.displayName = "ChatContainer";
3030
3089
  var ChatHeader = React6.forwardRef(
3031
- ({ className, userName = 'Grace "Fae" Meadows', userTitle = "Your Personal Assistant", userAvatar, userIcon, onSettingsClick, onNewChat, onClose, onBack, showNewChat = false, connectionStatus = "disconnected", serverUrl = null, headerActions, ticketInfo, fullWidth = false, bare = false, isLoading = false, ...props }, ref) => {
3090
+ ({ className, userName = 'Grace "Fae" Meadows', userTitle = "Your Personal Assistant", userAvatar, userIcon, onSettingsClick, onNewChat, onClose, onBack, showNewChat = false, connectionStatus = "disconnected", serverUrl = null, headerActions, ticketInfo, mspOrganization, isMspLoading = false, fullWidth = false, bare = false, isLoading = false, ...props }, ref) => {
3032
3091
  const cardClasses = bare ? "" : "rounded-md bg-ods-card border border-ods-border";
3033
- return /* @__PURE__ */ jsxs13(
3092
+ return /* @__PURE__ */ jsxs15(
3034
3093
  "div",
3035
3094
  {
3036
3095
  ref,
@@ -3043,30 +3102,30 @@ var ChatHeader = React6.forwardRef(
3043
3102
  ),
3044
3103
  ...props,
3045
3104
  children: [
3046
- onBack && /* @__PURE__ */ jsx15(
3105
+ onBack && /* @__PURE__ */ jsx17(
3047
3106
  Button,
3048
3107
  {
3049
3108
  onClick: onBack,
3050
3109
  variant: "transparent",
3051
3110
  size: "icon",
3052
3111
  "aria-label": "Back",
3053
- leftIcon: /* @__PURE__ */ jsx15(Chevron02LeftIcon, { size: 24, className: "text-ods-text-primary" }),
3112
+ leftIcon: /* @__PURE__ */ jsx17(Chevron02LeftIcon, { size: 24, className: "text-ods-text-primary" }),
3054
3113
  className: cn(
3055
3114
  cardClasses,
3056
3115
  "absolute top-0 right-full mr-[var(--spacing-system-s)] hover:bg-ods-bg-hover"
3057
3116
  )
3058
3117
  }
3059
3118
  ),
3060
- /* @__PURE__ */ jsxs13("div", { className: cardClasses, children: [
3061
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
3062
- isLoading ? /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
3063
- /* @__PURE__ */ jsx15(Skeleton, { className: "w-16 h-16 rounded-full shrink-0" }),
3064
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-1", children: [
3065
- /* @__PURE__ */ jsx15(Skeleton, { className: "h-6 w-40" }),
3066
- /* @__PURE__ */ jsx15(Skeleton, { className: "h-4 w-28" })
3119
+ /* @__PURE__ */ jsxs15("div", { className: cardClasses, children: [
3120
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
3121
+ isLoading ? /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3122
+ /* @__PURE__ */ jsx17(Skeleton, { className: "w-16 h-16 rounded-full shrink-0" }),
3123
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1", children: [
3124
+ /* @__PURE__ */ jsx17(Skeleton, { className: "h-6 w-40" }),
3125
+ /* @__PURE__ */ jsx17(Skeleton, { className: "h-4 w-28" })
3067
3126
  ] })
3068
- ] }) : /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-3", children: [
3069
- userIcon ? /* @__PURE__ */ jsx15("div", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent", children: userIcon }) : /* @__PURE__ */ jsx15(
3127
+ ] }) : /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
3128
+ userIcon ? /* @__PURE__ */ jsx17("div", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent", children: userIcon }) : /* @__PURE__ */ jsx17(
3070
3129
  SquareAvatar,
3071
3130
  {
3072
3131
  src: userAvatar,
@@ -3077,27 +3136,27 @@ var ChatHeader = React6.forwardRef(
3077
3136
  className: "bg-ods-flamingo-pink"
3078
3137
  }
3079
3138
  ),
3080
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-col", children: [
3081
- /* @__PURE__ */ jsx15("span", { className: "text-h3", children: userName }),
3082
- /* @__PURE__ */ jsx15("div", { className: "flex items-center gap-2", children: serverUrl && /* @__PURE__ */ jsxs13(Fragment2, { children: [
3083
- /* @__PURE__ */ jsx15("span", { className: "text-h4 text-ods-text-secondary", children: serverUrl }),
3084
- /* @__PURE__ */ jsx15(ConnectionIndicator, { status: connectionStatus })
3139
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col", children: [
3140
+ /* @__PURE__ */ jsx17("span", { className: "text-h3", children: userName }),
3141
+ /* @__PURE__ */ jsx17("div", { className: "flex items-center gap-2", children: serverUrl && /* @__PURE__ */ jsxs15(Fragment2, { children: [
3142
+ /* @__PURE__ */ jsx17("span", { className: "text-h4 text-ods-text-secondary", children: serverUrl }),
3143
+ /* @__PURE__ */ jsx17(ConnectionIndicator, { status: connectionStatus })
3085
3144
  ] }) })
3086
3145
  ] })
3087
3146
  ] }),
3088
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
3089
- showNewChat && onNewChat && /* @__PURE__ */ jsx15(
3147
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-1", children: [
3148
+ showNewChat && onNewChat && /* @__PURE__ */ jsx17(
3090
3149
  Button,
3091
3150
  {
3092
3151
  onClick: onNewChat,
3093
3152
  variant: "transparent",
3094
3153
  size: "small-legacy",
3095
- leftIcon: /* @__PURE__ */ jsx15(PlusCircleIcon2, { className: "w-5 h-5", whiteOverlay: true }),
3154
+ leftIcon: /* @__PURE__ */ jsx17(PlusCircleIcon2, { className: "w-5 h-5", whiteOverlay: true }),
3096
3155
  className: "text-ods-text-primary hover:bg-ods-bg-hover",
3097
3156
  children: "New Chat"
3098
3157
  }
3099
3158
  ),
3100
- onClose && /* @__PURE__ */ jsx15(
3159
+ onClose && /* @__PURE__ */ jsx17(
3101
3160
  Button,
3102
3161
  {
3103
3162
  onClick: onClose,
@@ -3105,20 +3164,30 @@ var ChatHeader = React6.forwardRef(
3105
3164
  size: "small-legacy",
3106
3165
  "aria-label": "Close",
3107
3166
  className: "text-ods-text-muted hover:text-ods-text-primary hover:bg-ods-bg-hover !p-1.5",
3108
- children: /* @__PURE__ */ jsx15(XmarkIcon, { size: 16 })
3167
+ children: /* @__PURE__ */ jsx17(XmarkIcon, { size: 16 })
3109
3168
  }
3110
3169
  ),
3111
3170
  headerActions
3112
3171
  ] })
3113
3172
  ] }),
3114
- ticketInfo && /* @__PURE__ */ jsxs13(Fragment2, { children: [
3115
- /* @__PURE__ */ jsx15("div", { className: "h-px bg-ods-border" }),
3116
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-between gap-4 px-4 py-2", children: [
3117
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-col min-w-0", children: [
3118
- /* @__PURE__ */ jsx15("span", { className: "text-heading-3 truncate", title: typeof ticketInfo.title === "string" ? ticketInfo.title : void 0, children: ticketInfo.title }),
3119
- ticketInfo.meta && /* @__PURE__ */ jsx15("div", { className: "text-h6 text-ods-text-secondary truncate", title: typeof ticketInfo.meta === "string" ? ticketInfo.meta : void 0, children: ticketInfo.meta })
3173
+ !ticketInfo && (isMspLoading || mspOrganization) && /* @__PURE__ */ jsxs15(Fragment2, { children: [
3174
+ /* @__PURE__ */ jsx17("div", { className: "h-px bg-ods-border" }),
3175
+ isMspLoading || !mspOrganization ? /* @__PURE__ */ jsx17(MspOrganizationCardSkeleton, { className: cn("ring-0 rounded-none", !bare && "rounded-b-md") }) : /* @__PURE__ */ jsx17(
3176
+ MspOrganizationCard,
3177
+ {
3178
+ ...mspOrganization,
3179
+ className: cn("ring-0 rounded-none", !bare && "rounded-b-md", mspOrganization.className)
3180
+ }
3181
+ )
3182
+ ] }),
3183
+ ticketInfo && /* @__PURE__ */ jsxs15(Fragment2, { children: [
3184
+ /* @__PURE__ */ jsx17("div", { className: "h-px bg-ods-border" }),
3185
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between gap-4 px-4 py-2", children: [
3186
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col min-w-0", children: [
3187
+ /* @__PURE__ */ jsx17("span", { className: "text-heading-3 truncate", title: typeof ticketInfo.title === "string" ? ticketInfo.title : void 0, children: ticketInfo.title }),
3188
+ ticketInfo.meta && /* @__PURE__ */ jsx17("div", { className: "text-h6 text-ods-text-secondary truncate", title: typeof ticketInfo.meta === "string" ? ticketInfo.meta : void 0, children: ticketInfo.meta })
3120
3189
  ] }),
3121
- (ticketInfo.status || ticketInfo.statusName) && /* @__PURE__ */ jsx15(
3190
+ (ticketInfo.status || ticketInfo.statusName) && /* @__PURE__ */ jsx17(
3122
3191
  TicketStatusTag,
3123
3192
  {
3124
3193
  ...resolveStatusTagProps({
@@ -3140,7 +3209,7 @@ var ChatHeader = React6.forwardRef(
3140
3209
  ChatHeader.displayName = "ChatHeader";
3141
3210
  var ChatContent = React6.forwardRef(
3142
3211
  ({ className, children, ...props }, ref) => {
3143
- return /* @__PURE__ */ jsx15(
3212
+ return /* @__PURE__ */ jsx17(
3144
3213
  "div",
3145
3214
  {
3146
3215
  ref,
@@ -3157,7 +3226,7 @@ var ChatContent = React6.forwardRef(
3157
3226
  ChatContent.displayName = "ChatContent";
3158
3227
  var ChatFooter = React6.forwardRef(
3159
3228
  ({ className, contentClassName, fullWidth = false, children, ...props }, ref) => {
3160
- return /* @__PURE__ */ jsx15(
3229
+ return /* @__PURE__ */ jsx17(
3161
3230
  "div",
3162
3231
  {
3163
3232
  ref,
@@ -3166,7 +3235,7 @@ var ChatFooter = React6.forwardRef(
3166
3235
  className
3167
3236
  ),
3168
3237
  ...props,
3169
- children: /* @__PURE__ */ jsx15(
3238
+ children: /* @__PURE__ */ jsx17(
3170
3239
  "div",
3171
3240
  {
3172
3241
  className: cn(
@@ -3195,7 +3264,7 @@ import { renderToStaticMarkup } from "react-dom/server";
3195
3264
  // src/components/chat/chat-typing-indicator.tsx
3196
3265
  init_cn();
3197
3266
  import * as React7 from "react";
3198
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
3267
+ import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
3199
3268
  var ChatTypingIndicator = React7.forwardRef(
3200
3269
  ({ className, size: size2 = "md", showText = false, dotClassName, ...props }, ref) => {
3201
3270
  const dotSizeClasses = {
@@ -3220,20 +3289,20 @@ var ChatTypingIndicator = React7.forwardRef(
3220
3289
  }
3221
3290
  }
3222
3291
  `;
3223
- return /* @__PURE__ */ jsxs14(
3292
+ return /* @__PURE__ */ jsxs16(
3224
3293
  "div",
3225
3294
  {
3226
3295
  ref,
3227
3296
  className: cn("flex items-center gap-2", className),
3228
3297
  ...props,
3229
3298
  children: [
3230
- /* @__PURE__ */ jsx16("style", { dangerouslySetInnerHTML: { __html: dotAnimation } }),
3231
- showText && /* @__PURE__ */ jsx16("span", { className: "text-ods-text-secondary text-sm", children: "Assistant is typing" }),
3232
- /* @__PURE__ */ jsxs14("div", { className: cn(
3299
+ /* @__PURE__ */ jsx18("style", { dangerouslySetInnerHTML: { __html: dotAnimation } }),
3300
+ showText && /* @__PURE__ */ jsx18("span", { className: "text-ods-text-secondary text-sm", children: "Assistant is typing" }),
3301
+ /* @__PURE__ */ jsxs16("div", { className: cn(
3233
3302
  "inline-flex items-center justify-center gap-1",
3234
3303
  containerSizeClasses[size2]
3235
3304
  ), children: [
3236
- /* @__PURE__ */ jsx16(
3305
+ /* @__PURE__ */ jsx18(
3237
3306
  "div",
3238
3307
  {
3239
3308
  className: cn(
@@ -3247,7 +3316,7 @@ var ChatTypingIndicator = React7.forwardRef(
3247
3316
  }
3248
3317
  }
3249
3318
  ),
3250
- /* @__PURE__ */ jsx16(
3319
+ /* @__PURE__ */ jsx18(
3251
3320
  "div",
3252
3321
  {
3253
3322
  className: cn(
@@ -3261,7 +3330,7 @@ var ChatTypingIndicator = React7.forwardRef(
3261
3330
  }
3262
3331
  }
3263
3332
  ),
3264
- /* @__PURE__ */ jsx16(
3333
+ /* @__PURE__ */ jsx18(
3265
3334
  "div",
3266
3335
  {
3267
3336
  className: cn(
@@ -3289,7 +3358,7 @@ init_cn();
3289
3358
  // src/components/chat/mingo-onboarding-card.tsx
3290
3359
  init_cn();
3291
3360
  init_button2();
3292
- import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
3361
+ import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
3293
3362
  function MingoOnboardingCard({
3294
3363
  icon,
3295
3364
  title,
@@ -3301,20 +3370,20 @@ function MingoOnboardingCard({
3301
3370
  }) {
3302
3371
  const hasActions = !!actions && actions.length > 0;
3303
3372
  const isInteractive = !hasActions && !!onClick;
3304
- const body = /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
3305
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
3373
+ const body = /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
3374
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
3306
3375
  icon ? (
3307
3376
  // Icon slot — monochrome `ods-text-secondary` (≈ #888) so
3308
3377
  // consumers can drop any `icons-v2-generated` glyph (they use
3309
3378
  // `currentColor`) without per-card styling. Brand multi-color
3310
3379
  // SVGs ignore this color.
3311
- /* @__PURE__ */ jsx17("span", { className: "flex shrink-0 size-4 items-center justify-center text-ods-text-secondary", children: icon })
3380
+ /* @__PURE__ */ jsx19("span", { className: "flex shrink-0 size-4 items-center justify-center text-ods-text-secondary", children: icon })
3312
3381
  ) : null,
3313
- /* @__PURE__ */ jsx17("span", { className: "flex-1 min-w-0 truncate text-h6 text-ods-text-primary", children: title }),
3314
- slashCommand ? /* @__PURE__ */ jsx17("span", { className: "text-h6 text-ods-text-secondary whitespace-nowrap", children: slashCommand }) : null
3382
+ /* @__PURE__ */ jsx19("span", { className: "flex-1 min-w-0 truncate text-h6 text-ods-text-primary", children: title }),
3383
+ slashCommand ? /* @__PURE__ */ jsx19("span", { className: "text-h6 text-ods-text-secondary whitespace-nowrap", children: slashCommand }) : null
3315
3384
  ] }),
3316
- description ? /* @__PURE__ */ jsx17("p", { className: "text-h6 text-ods-text-secondary w-full", children: description }) : null,
3317
- hasActions ? /* @__PURE__ */ jsx17("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: actions.map((action) => /* @__PURE__ */ jsx17(
3385
+ description ? /* @__PURE__ */ jsx19("p", { className: "text-h6 text-ods-text-secondary w-full", children: description }) : null,
3386
+ hasActions ? /* @__PURE__ */ jsx19("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: actions.map((action) => /* @__PURE__ */ jsx19(
3318
3387
  Button,
3319
3388
  {
3320
3389
  type: "button",
@@ -3335,9 +3404,9 @@ function MingoOnboardingCard({
3335
3404
  className
3336
3405
  );
3337
3406
  if (isInteractive) {
3338
- return /* @__PURE__ */ jsx17("button", { type: "button", onClick, className: baseClass, children: body });
3407
+ return /* @__PURE__ */ jsx19("button", { type: "button", onClick, className: baseClass, children: body });
3339
3408
  }
3340
- return /* @__PURE__ */ jsx17("div", { className: baseClass, children: body });
3409
+ return /* @__PURE__ */ jsx19("div", { className: baseClass, children: body });
3341
3410
  }
3342
3411
 
3343
3412
  // src/components/chat/utils/icon-registry.ts
@@ -3536,10 +3605,10 @@ function getDynamicIcon(iconName, size2 = "md", className) {
3536
3605
 
3537
3606
  // src/components/chat/utils/icon-library.tsx
3538
3607
  import { Megaphone as Megaphone2, Bell as Bell2, Info as Info2, Star as Star2, Package as PackageGlyph } from "lucide-react";
3539
- import { jsx as jsx18 } from "react/jsx-runtime";
3608
+ import { jsx as jsx20 } from "react/jsx-runtime";
3540
3609
  function sizedLogo(Logo) {
3541
3610
  return function SizedLogo({ size: size2 = 16, className }) {
3542
- return /* @__PURE__ */ jsx18(Logo, { className, style: { width: size2, height: size2 } });
3611
+ return /* @__PURE__ */ jsx20(Logo, { className, style: { width: size2, height: size2 } });
3543
3612
  };
3544
3613
  }
3545
3614
  var OpenmspLogoIcon = sizedLogo(OpenmspLogo);
@@ -3550,7 +3619,7 @@ function LogoOpenframeIcon({
3550
3619
  color
3551
3620
  }) {
3552
3621
  const tint = color ?? "currentColor";
3553
- return /* @__PURE__ */ jsx18(
3622
+ return /* @__PURE__ */ jsx20(
3554
3623
  OpenFrameLogo,
3555
3624
  {
3556
3625
  className,
@@ -3823,7 +3892,7 @@ var ICON_OPTIONS = [
3823
3892
  ];
3824
3893
 
3825
3894
  // src/components/chat/slash-command-suggestions.tsx
3826
- import { jsx as jsx19 } from "react/jsx-runtime";
3895
+ import { jsx as jsx21 } from "react/jsx-runtime";
3827
3896
  function SlashCommandSuggestions({
3828
3897
  commands,
3829
3898
  highlightedIdx,
@@ -3834,7 +3903,7 @@ function SlashCommandSuggestions({
3834
3903
  className
3835
3904
  }) {
3836
3905
  if (commands.length === 0) return null;
3837
- return /* @__PURE__ */ jsx19(
3906
+ return /* @__PURE__ */ jsx21(
3838
3907
  "div",
3839
3908
  {
3840
3909
  role: "menu",
@@ -3859,7 +3928,7 @@ function SlashCommandSuggestions({
3859
3928
  onAction(cmd, action.id);
3860
3929
  }
3861
3930
  })) : void 0;
3862
- return /* @__PURE__ */ jsx19(
3931
+ return /* @__PURE__ */ jsx21(
3863
3932
  "div",
3864
3933
  {
3865
3934
  role: "menuitem",
@@ -3874,10 +3943,10 @@ function SlashCommandSuggestions({
3874
3943
  }
3875
3944
  },
3876
3945
  className: "cursor-pointer outline-none",
3877
- children: /* @__PURE__ */ jsx19(
3946
+ children: /* @__PURE__ */ jsx21(
3878
3947
  MingoOnboardingCard,
3879
3948
  {
3880
- icon: LegacyIcon ? /* @__PURE__ */ jsx19(LegacyIcon, { className: "size-4" }) : /* @__PURE__ */ jsx19(Icon2, { size: 16 }),
3949
+ icon: LegacyIcon ? /* @__PURE__ */ jsx21(LegacyIcon, { className: "size-4" }) : /* @__PURE__ */ jsx21(Icon2, { size: 16 }),
3881
3950
  title,
3882
3951
  slashCommand: slashLabel,
3883
3952
  description: cmd.description,
@@ -3897,7 +3966,7 @@ function SlashCommandSuggestions({
3897
3966
  }
3898
3967
 
3899
3968
  // src/components/chat/chat-input.tsx
3900
- import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
3969
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
3901
3970
  var SLASH_INPUT_TRIGGER = /^\/([a-z][a-z0-9-]*)?$/;
3902
3971
  var MENTION_GLOBAL = /@[A-Za-z0-9_.+/=-]+:[A-Za-z0-9_.+/=-]+/g;
3903
3972
  var MENTION_TRIGGER_AT_END = /(^|\s)@([\w.-]*)$/;
@@ -3933,7 +4002,7 @@ function buildChipEl(token, label, icon) {
3933
4002
  span.setAttribute("contenteditable", "false");
3934
4003
  span.className = "mx-0.5 inline-flex h-9 items-center select-none align-top";
3935
4004
  span.innerHTML = renderToStaticMarkup(
3936
- /* @__PURE__ */ jsx20(
4005
+ /* @__PURE__ */ jsx22(
3937
4006
  Tag,
3938
4007
  {
3939
4008
  as: "span",
@@ -4264,18 +4333,18 @@ var ChatInput = forwardRef9((allProps, ref) => {
4264
4333
  const isEmpty = value.length === 0;
4265
4334
  const isDisabled = sending || disabled;
4266
4335
  const showPreview = !isDisabled && !!previewText && !previewDismissed;
4267
- return /* @__PURE__ */ jsx20(
4336
+ return /* @__PURE__ */ jsx22(
4268
4337
  "div",
4269
4338
  {
4270
4339
  className: cn(
4271
4340
  fullWidth ? "w-full flex-shrink-0" : "mx-auto w-full max-w-ods-content-narrow flex-shrink-0",
4272
4341
  className
4273
4342
  ),
4274
- children: awaitingResponse ? /* @__PURE__ */ jsxs16("div", { className: "relative flex items-center justify-center gap-[var(--spacing-system-xs)] rounded-md bg-ods-card border border-ods-border px-[var(--spacing-system-s)] py-[var(--spacing-system-s)] transition-colors", children: [
4275
- /* @__PURE__ */ jsx20(ChatTypingIndicator, { size: "sm", dotClassName: "bg-ods-text-primary" }),
4276
- /* @__PURE__ */ jsx20("p", { className: "text-h4 text-ods-text-secondary", children: "Waiting for Technician Response" })
4277
- ] }) : /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
4278
- /* @__PURE__ */ jsx20(
4343
+ children: awaitingResponse ? /* @__PURE__ */ jsxs18("div", { className: "relative flex items-center justify-center gap-[var(--spacing-system-xs)] rounded-md bg-ods-card border border-ods-border px-[var(--spacing-system-s)] py-[var(--spacing-system-s)] transition-colors", children: [
4344
+ /* @__PURE__ */ jsx22(ChatTypingIndicator, { size: "sm", dotClassName: "bg-ods-text-primary" }),
4345
+ /* @__PURE__ */ jsx22("p", { className: "text-h4 text-ods-text-secondary", children: "Waiting for Technician Response" })
4346
+ ] }) : /* @__PURE__ */ jsxs18("div", { className: "relative", children: [
4347
+ /* @__PURE__ */ jsx22(
4279
4348
  SlashCommandSuggestions,
4280
4349
  {
4281
4350
  commands: slashPrefix !== null ? slashSuggestions : [],
@@ -4286,7 +4355,7 @@ var ChatInput = forwardRef9((allProps, ref) => {
4286
4355
  onAction: slashCommands?.onAction
4287
4356
  }
4288
4357
  ),
4289
- /* @__PURE__ */ jsxs16(
4358
+ /* @__PURE__ */ jsxs18(
4290
4359
  "div",
4291
4360
  {
4292
4361
  onMouseDown: (e) => {
@@ -4310,11 +4379,11 @@ var ChatInput = forwardRef9((allProps, ref) => {
4310
4379
  hideBorder && "bg-transparent"
4311
4380
  ),
4312
4381
  children: [
4313
- startIcon && /* @__PURE__ */ jsx20("span", { className: "flex h-6 shrink-0 items-center", children: startIcon }),
4314
- /* @__PURE__ */ jsxs16("div", { className: "relative flex-1 min-w-0", children: [
4315
- isEmpty && !showPreview && /* @__PURE__ */ jsx20("span", { className: "pointer-events-none absolute left-0 top-0 select-none text-h4 !leading-9 text-ods-text-secondary", children: disabled ? "Connection lost. Waiting to reconnect..." : placeholder }),
4316
- showPreview && /* @__PURE__ */ jsx20("p", { className: "pointer-events-none absolute inset-x-0 top-0 m-0 select-none truncate text-h4 !leading-9 text-ods-text-secondary", children: previewText }),
4317
- /* @__PURE__ */ jsx20(
4382
+ startIcon && /* @__PURE__ */ jsx22("span", { className: "flex h-6 shrink-0 items-center", children: startIcon }),
4383
+ /* @__PURE__ */ jsxs18("div", { className: "relative flex-1 min-w-0", children: [
4384
+ isEmpty && !showPreview && /* @__PURE__ */ jsx22("span", { className: "pointer-events-none absolute left-0 top-0 select-none text-h4 !leading-9 text-ods-text-secondary", children: disabled ? "Connection lost. Waiting to reconnect..." : placeholder }),
4385
+ showPreview && /* @__PURE__ */ jsx22("p", { className: "pointer-events-none absolute inset-x-0 top-0 m-0 select-none truncate text-h4 !leading-9 text-ods-text-secondary", children: previewText }),
4386
+ /* @__PURE__ */ jsx22(
4318
4387
  "div",
4319
4388
  {
4320
4389
  ref: editorRef,
@@ -4360,7 +4429,7 @@ var ChatInput = forwardRef9((allProps, ref) => {
4360
4429
  }
4361
4430
  )
4362
4431
  ] }),
4363
- /* @__PURE__ */ jsx20(
4432
+ /* @__PURE__ */ jsx22(
4364
4433
  "button",
4365
4434
  {
4366
4435
  type: "button",
@@ -4375,7 +4444,7 @@ var ChatInput = forwardRef9((allProps, ref) => {
4375
4444
  "focus-visible:outline-none focus-visible:text-ods-accent",
4376
4445
  "disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:text-ods-text-secondary"
4377
4446
  ),
4378
- children: isStopMode ? /* @__PURE__ */ jsx20(StopCircleIcon, { size: 20 }) : /* @__PURE__ */ jsx20(Send01Icon, { size: 20 })
4447
+ children: isStopMode ? /* @__PURE__ */ jsx22(StopCircleIcon, { size: 20 }) : /* @__PURE__ */ jsx22(Send01Icon, { size: 20 })
4379
4448
  }
4380
4449
  )
4381
4450
  ]
@@ -4394,7 +4463,7 @@ import React9, { forwardRef as forwardRef11, memo as memo3, useMemo as useMemo6,
4394
4463
  // src/components/chat/tool-execution-display.tsx
4395
4464
  init_cn();
4396
4465
  import { forwardRef as forwardRef10, useMemo as useMemo4, useState as useState9 } from "react";
4397
- import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
4466
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
4398
4467
  var COMMAND_BODY_KEYS2 = new Set(COMMAND_BODY_ARG_KEYS);
4399
4468
  var ToolExecutionDisplay = forwardRef10(
4400
4469
  ({ className, message: message2, assistantType, ...props }, ref) => {
@@ -4421,12 +4490,12 @@ var ToolExecutionDisplay = forwardRef10(
4421
4490
  const hasResult = isExecuted && typeof message2.result === "string" && message2.result.length > 0;
4422
4491
  const hasBody = argEntries.length > 0 || hasResult || isExecuting;
4423
4492
  const renderStatusIcon = () => {
4424
- if (isExecuting) return /* @__PURE__ */ jsx21(DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" });
4425
- if (isExecuted && message2.success === true) return /* @__PURE__ */ jsx21(CheckCircleIcon, { className: "w-4 h-4 text-ods-success" });
4426
- if (isExecuted && message2.success === false) return /* @__PURE__ */ jsx21(XmarkCircleIcon, { className: "w-4 h-4 text-ods-error" });
4493
+ if (isExecuting) return /* @__PURE__ */ jsx23(DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" });
4494
+ if (isExecuted && message2.success === true) return /* @__PURE__ */ jsx23(CheckCircleIcon, { className: "w-4 h-4 text-ods-success" });
4495
+ if (isExecuted && message2.success === false) return /* @__PURE__ */ jsx23(XmarkCircleIcon, { className: "w-4 h-4 text-ods-error" });
4427
4496
  return null;
4428
4497
  };
4429
- return /* @__PURE__ */ jsxs17(
4498
+ return /* @__PURE__ */ jsxs19(
4430
4499
  "div",
4431
4500
  {
4432
4501
  ref,
@@ -4438,15 +4507,15 @@ var ToolExecutionDisplay = forwardRef10(
4438
4507
  ),
4439
4508
  ...props,
4440
4509
  children: [
4441
- /* @__PURE__ */ jsxs17(
4510
+ /* @__PURE__ */ jsxs19(
4442
4511
  "button",
4443
4512
  {
4444
4513
  type: "button",
4445
4514
  className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full",
4446
4515
  onClick: () => setExpanded((prev) => !prev),
4447
4516
  children: [
4448
- !isClient && /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx21(ToolIcon, { toolType: integratedToolType, size: 16 }) }),
4449
- /* @__PURE__ */ jsx21(
4517
+ !isClient && /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ToolIcon, { toolType: integratedToolType, size: 16 }) }),
4518
+ /* @__PURE__ */ jsx23(
4450
4519
  "div",
4451
4520
  {
4452
4521
  className: cn(
@@ -4456,21 +4525,21 @@ var ToolExecutionDisplay = forwardRef10(
4456
4525
  children: previewText
4457
4526
  }
4458
4527
  ),
4459
- /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: renderStatusIcon() }),
4460
- /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx21(ExpandChevron, { expanded }) })
4528
+ /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: renderStatusIcon() }),
4529
+ /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ExpandChevron, { expanded }) })
4461
4530
  ]
4462
4531
  }
4463
4532
  ),
4464
- /* @__PURE__ */ jsx21("div", { className: "w-full", style: containerStyle, children: /* @__PURE__ */ jsx21("div", { ref: innerRef, children: hasBody && /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-0 items-start w-full text-h6 p-[var(--spacing-system-sf)] bg-ods-card", children: [
4465
- argEntries.map(([key, value]) => /* @__PURE__ */ jsx21(ArgRow, { argKey: key, value }, key)),
4466
- hasResult && /* @__PURE__ */ jsx21(
4533
+ /* @__PURE__ */ jsx23("div", { className: "w-full", style: containerStyle, children: /* @__PURE__ */ jsx23("div", { ref: innerRef, children: hasBody && /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-0 items-start w-full text-h6 p-[var(--spacing-system-sf)] bg-ods-card", children: [
4534
+ argEntries.map(([key, value]) => /* @__PURE__ */ jsx23(ArgRow, { argKey: key, value }, key)),
4535
+ hasResult && /* @__PURE__ */ jsx23(
4467
4536
  ResultBlock,
4468
4537
  {
4469
4538
  result: message2.result,
4470
4539
  className: argEntries.length > 0 ? "mt-[var(--spacing-system-xsf)]" : void 0
4471
4540
  }
4472
4541
  ),
4473
- isExecuting && /* @__PURE__ */ jsxs17(
4542
+ isExecuting && /* @__PURE__ */ jsxs19(
4474
4543
  "div",
4475
4544
  {
4476
4545
  className: cn(
@@ -4478,8 +4547,8 @@ var ToolExecutionDisplay = forwardRef10(
4478
4547
  argEntries.length > 0 && "mt-[var(--spacing-system-xsf)]"
4479
4548
  ),
4480
4549
  children: [
4481
- /* @__PURE__ */ jsx21("span", { className: "text-ods-text-secondary", children: "Result:" }),
4482
- /* @__PURE__ */ jsx21(DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" })
4550
+ /* @__PURE__ */ jsx23("span", { className: "text-ods-text-secondary", children: "Result:" }),
4551
+ /* @__PURE__ */ jsx23(DotsLoaderIcon, { size: 16, className: "text-ods-text-secondary" })
4483
4552
  ]
4484
4553
  }
4485
4554
  )
@@ -4584,7 +4653,7 @@ init_cn();
4584
4653
  // src/components/chat/context-items-list.tsx
4585
4654
  import * as React8 from "react";
4586
4655
  init_cn();
4587
- import { Fragment as Fragment3, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
4656
+ import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
4588
4657
  var itemKey = (i) => `${i.type}:${i.id}`;
4589
4658
  var CONTEXT_ROW_CLASS = "flex w-full items-center gap-2 border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 text-left outline-none transition-colors last:border-b-0 hover:bg-ods-bg-hover focus-visible:bg-ods-bg-hover [&_svg]:size-4 md:[&_svg]:size-6";
4590
4659
  var CONTEXT_ICON_CLASS = "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary md:size-6";
@@ -4601,7 +4670,7 @@ function ContextMenuRow({
4601
4670
  role = "menuitem",
4602
4671
  title
4603
4672
  }) {
4604
- return /* @__PURE__ */ jsxs18(
4673
+ return /* @__PURE__ */ jsxs20(
4605
4674
  "button",
4606
4675
  {
4607
4676
  type: "button",
@@ -4612,19 +4681,19 @@ function ContextMenuRow({
4612
4681
  title,
4613
4682
  className: cn(CONTEXT_ROW_CLASS, disabled && "cursor-not-allowed opacity-40 hover:bg-ods-bg"),
4614
4683
  children: [
4615
- icon != null && /* @__PURE__ */ jsx22("span", { className: CONTEXT_ICON_CLASS, children: icon }),
4616
- /* @__PURE__ */ jsx22("span", { className: CONTEXT_LABEL_CLASS, children: label }),
4684
+ icon != null && /* @__PURE__ */ jsx24("span", { className: CONTEXT_ICON_CLASS, children: icon }),
4685
+ /* @__PURE__ */ jsx24("span", { className: CONTEXT_LABEL_CLASS, children: label }),
4617
4686
  trailing
4618
4687
  ]
4619
4688
  }
4620
4689
  );
4621
4690
  }
4622
4691
  function ContextItemsSkeleton({ count }) {
4623
- return /* @__PURE__ */ jsx22(Fragment3, { children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx22(
4692
+ return /* @__PURE__ */ jsx24(Fragment3, { children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx24(
4624
4693
  "div",
4625
4694
  {
4626
4695
  className: "flex items-center border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 last:border-b-0",
4627
- children: /* @__PURE__ */ jsx22(Skeleton, { className: "h-5 w-1/2" })
4696
+ children: /* @__PURE__ */ jsx24(Skeleton, { className: "h-5 w-1/2" })
4628
4697
  },
4629
4698
  `ctx-skeleton-${i}`
4630
4699
  )) });
@@ -4649,9 +4718,9 @@ function ContextItemsList({
4649
4718
  [hasMore, loadingMore, onLoadMore]
4650
4719
  );
4651
4720
  if (items.length === 0 && !loadingMore) {
4652
- return /* @__PURE__ */ jsx22("div", { className: CONTEXT_STATE_CLASS, children: emptyLabel });
4721
+ return /* @__PURE__ */ jsx24("div", { className: CONTEXT_STATE_CLASS, children: emptyLabel });
4653
4722
  }
4654
- return /* @__PURE__ */ jsxs18(
4723
+ return /* @__PURE__ */ jsxs20(
4655
4724
  "div",
4656
4725
  {
4657
4726
  role: "listbox",
@@ -4661,7 +4730,7 @@ function ContextItemsList({
4661
4730
  children: [
4662
4731
  items.map((item) => {
4663
4732
  const selected = selectedKeys.has(itemKey(item));
4664
- return /* @__PURE__ */ jsx22(
4733
+ return /* @__PURE__ */ jsx24(
4665
4734
  ContextMenuRow,
4666
4735
  {
4667
4736
  role: "option",
@@ -4670,12 +4739,12 @@ function ContextItemsList({
4670
4739
  onClick: () => onToggle(item),
4671
4740
  label: item.label,
4672
4741
  title: !selected && atLimit ? "Selection limit reached" : void 0,
4673
- trailing: selected ? /* @__PURE__ */ jsx22(CheckFillIcon, { className: "size-4 shrink-0 text-ods-accent md:size-6" }) : void 0
4742
+ trailing: selected ? /* @__PURE__ */ jsx24(CheckFillIcon, { className: "size-4 shrink-0 text-ods-accent md:size-6" }) : void 0
4674
4743
  },
4675
4744
  itemKey(item)
4676
4745
  );
4677
4746
  }),
4678
- loadingMore && /* @__PURE__ */ jsx22(ContextItemsSkeleton, { count: 3 })
4747
+ loadingMore && /* @__PURE__ */ jsx24(ContextItemsSkeleton, { count: 3 })
4679
4748
  ]
4680
4749
  }
4681
4750
  );
@@ -4703,7 +4772,7 @@ var ContextErrorBoundary = class extends React8.Component {
4703
4772
  };
4704
4773
 
4705
4774
  // src/components/chat/chat-context-picker.tsx
4706
- import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
4775
+ import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
4707
4776
  var CHAT_CONTEXT_ITEMS_DEFAULT_MAX = 10;
4708
4777
  var ITEMS_SKELETON_ROWS = 10;
4709
4778
  var SEARCH_DEBOUNCE_MS = 300;
@@ -4717,8 +4786,8 @@ function ChatComposerPlusMenu({
4717
4786
  return (
4718
4787
  // `relative` so the dropdown anchors to the button itself (bottom-full),
4719
4788
  // aligning the popover to the `+` rather than the input row.
4720
- /* @__PURE__ */ jsxs19("span", { className: "relative inline-flex", children: [
4721
- /* @__PURE__ */ jsx23(
4789
+ /* @__PURE__ */ jsxs21("span", { className: "relative inline-flex", children: [
4790
+ /* @__PURE__ */ jsx25(
4722
4791
  "button",
4723
4792
  {
4724
4793
  type: "button",
@@ -4733,7 +4802,7 @@ function ChatComposerPlusMenu({
4733
4802
  open ? "text-ods-accent" : "text-ods-text-secondary hover:text-ods-text-primary active:text-ods-accent",
4734
4803
  "focus-visible:text-ods-text-primary disabled:cursor-not-allowed disabled:opacity-40"
4735
4804
  ),
4736
- children: /* @__PURE__ */ jsx23(PlusIcon, { className: "h-6 w-6" })
4805
+ children: /* @__PURE__ */ jsx25(PlusIcon, { className: "h-6 w-6" })
4737
4806
  }
4738
4807
  ),
4739
4808
  dropdown
@@ -4835,7 +4904,7 @@ function ChatContextPicker({
4835
4904
  [config.entityTypes, typeFilter]
4836
4905
  );
4837
4906
  if (!open) return null;
4838
- return /* @__PURE__ */ jsx23(
4907
+ return /* @__PURE__ */ jsx25(
4839
4908
  "div",
4840
4909
  {
4841
4910
  ref: rootRef,
@@ -4858,45 +4927,45 @@ function ChatContextPicker({
4858
4927
  },
4859
4928
  children: view === "root" ? (
4860
4929
  /* Level 0 — Upload File / Assign Item (Figma 31:28312). */
4861
- /* @__PURE__ */ jsxs19("div", { role: "menu", "aria-label": "Add context", children: [
4862
- config.onUploadFile && /* @__PURE__ */ jsx23(
4930
+ /* @__PURE__ */ jsxs21("div", { role: "menu", "aria-label": "Add context", children: [
4931
+ config.onUploadFile && /* @__PURE__ */ jsx25(
4863
4932
  ContextMenuRow,
4864
4933
  {
4865
- icon: /* @__PURE__ */ jsx23(Upload02Icon, { size: 24 }),
4934
+ icon: /* @__PURE__ */ jsx25(Upload02Icon, { size: 24 }),
4866
4935
  label: "Upload File",
4867
4936
  onClick: () => config.onUploadFile?.()
4868
4937
  }
4869
4938
  ),
4870
- /* @__PURE__ */ jsx23(ContextMenuRow, { icon: /* @__PURE__ */ jsx23(PackagePlusIcon, { size: 24 }), label: "Assign Item", onClick: () => setView("types") })
4939
+ /* @__PURE__ */ jsx25(ContextMenuRow, { icon: /* @__PURE__ */ jsx25(PackagePlusIcon, { size: 24 }), label: "Assign Item", onClick: () => setView("types") })
4871
4940
  ] })
4872
4941
  ) : view === "types" ? (
4873
4942
  /* Level 1 — Back + entity-type list (Figma 31:28708). Back stays pinned;
4874
4943
  the type list scrolls if it can't fit the capped popover height. */
4875
- /* @__PURE__ */ jsxs19("div", { role: "menu", "aria-label": "Context types", className: "flex flex-col", children: [
4876
- /* @__PURE__ */ jsxs19(
4944
+ /* @__PURE__ */ jsxs21("div", { role: "menu", "aria-label": "Context types", className: "flex flex-col", children: [
4945
+ /* @__PURE__ */ jsxs21(
4877
4946
  "button",
4878
4947
  {
4879
4948
  type: "button",
4880
4949
  onClick: () => setView("root"),
4881
4950
  className: cn(CONTEXT_BACK_CLASS, "sticky top-0 z-10"),
4882
4951
  children: [
4883
- /* @__PURE__ */ jsx23(Chevron02LeftIcon, { size: 24, className: "shrink-0" }),
4884
- /* @__PURE__ */ jsx23("span", { className: "truncate", children: "Back" })
4952
+ /* @__PURE__ */ jsx25(Chevron02LeftIcon, { size: 24, className: "shrink-0" }),
4953
+ /* @__PURE__ */ jsx25("span", { className: "truncate", children: "Back" })
4885
4954
  ]
4886
4955
  }
4887
4956
  ),
4888
- visibleTypes.length === 0 ? /* @__PURE__ */ jsx23("div", { className: CONTEXT_STATE_CLASS, children: "No matching types" }) : visibleTypes.map((type) => /* @__PURE__ */ jsx23(ContextMenuRow, { icon: type.icon, label: type.label, onClick: () => openType(type) }, type.type))
4957
+ visibleTypes.length === 0 ? /* @__PURE__ */ jsx25("div", { className: CONTEXT_STATE_CLASS, children: "No matching types" }) : visibleTypes.map((type) => /* @__PURE__ */ jsx25(ContextMenuRow, { icon: type.icon, label: type.label, onClick: () => openType(type) }, type.type))
4889
4958
  ] })
4890
4959
  ) : activeType ? (
4891
4960
  /* Level 2 — Back + search + HOST-rendered items (Figma 31:29102). */
4892
- /* @__PURE__ */ jsxs19(Fragment5, { children: [
4893
- /* @__PURE__ */ jsxs19("button", { type: "button", onClick: backToTypes, className: cn(CONTEXT_BACK_CLASS, "sticky top-0 z-10"), children: [
4894
- /* @__PURE__ */ jsx23(Chevron02LeftIcon, { size: 24, className: "shrink-0" }),
4895
- /* @__PURE__ */ jsx23("span", { className: "truncate", children: "Back" })
4961
+ /* @__PURE__ */ jsxs21(Fragment5, { children: [
4962
+ /* @__PURE__ */ jsxs21("button", { type: "button", onClick: backToTypes, className: cn(CONTEXT_BACK_CLASS, "sticky top-0 z-10"), children: [
4963
+ /* @__PURE__ */ jsx25(Chevron02LeftIcon, { size: 24, className: "shrink-0" }),
4964
+ /* @__PURE__ */ jsx25("span", { className: "truncate", children: "Back" })
4896
4965
  ] }),
4897
- /* @__PURE__ */ jsxs19("div", { className: "flex shrink-0 items-center gap-2 border-b border-ods-border bg-ods-card p-3", children: [
4898
- /* @__PURE__ */ jsx23(SearchIcon, { className: "size-4 shrink-0 text-ods-text-secondary md:size-6" }),
4899
- /* @__PURE__ */ jsx23(
4966
+ /* @__PURE__ */ jsxs21("div", { className: "flex shrink-0 items-center gap-2 border-b border-ods-border bg-ods-card p-3", children: [
4967
+ /* @__PURE__ */ jsx25(SearchIcon, { className: "size-4 shrink-0 text-ods-text-secondary md:size-6" }),
4968
+ /* @__PURE__ */ jsx25(
4900
4969
  "input",
4901
4970
  {
4902
4971
  ref: searchRef,
@@ -4907,13 +4976,13 @@ function ChatContextPicker({
4907
4976
  }
4908
4977
  )
4909
4978
  ] }),
4910
- /* @__PURE__ */ jsx23(QueryErrorResetBoundary, { children: ({ reset }) => /* @__PURE__ */ jsx23(
4979
+ /* @__PURE__ */ jsx25(QueryErrorResetBoundary, { children: ({ reset }) => /* @__PURE__ */ jsx25(
4911
4980
  ContextErrorBoundary,
4912
4981
  {
4913
4982
  resetKey: `${activeType.type}:${debouncedQuery}`,
4914
- fallback: (retry) => /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between gap-2 bg-ods-bg px-4 py-3 text-h4 text-ods-attention-red-error", children: [
4915
- /* @__PURE__ */ jsx23("span", { children: "Failed to load" }),
4916
- /* @__PURE__ */ jsx23(
4983
+ fallback: (retry) => /* @__PURE__ */ jsxs21("div", { className: "flex items-center justify-between gap-2 bg-ods-bg px-4 py-3 text-h4 text-ods-attention-red-error", children: [
4984
+ /* @__PURE__ */ jsx25("span", { children: "Failed to load" }),
4985
+ /* @__PURE__ */ jsx25(
4917
4986
  "button",
4918
4987
  {
4919
4988
  type: "button",
@@ -4926,10 +4995,10 @@ function ChatContextPicker({
4926
4995
  }
4927
4996
  )
4928
4997
  ] }),
4929
- children: /* @__PURE__ */ jsx23(
4998
+ children: /* @__PURE__ */ jsx25(
4930
4999
  Suspense,
4931
5000
  {
4932
- fallback: /* @__PURE__ */ jsx23("div", { className: "max-h-[340px] overflow-hidden", children: /* @__PURE__ */ jsx23(ContextItemsSkeleton, { count: ITEMS_SKELETON_ROWS }) }),
5001
+ fallback: /* @__PURE__ */ jsx25("div", { className: "max-h-[340px] overflow-hidden", children: /* @__PURE__ */ jsx25(ContextItemsSkeleton, { count: ITEMS_SKELETON_ROWS }) }),
4933
5002
  children: config.renderItems({
4934
5003
  type: activeType.type,
4935
5004
  query: debouncedQuery,
@@ -4958,18 +5027,18 @@ function ChatContextChipStrip({
4958
5027
  return (
4959
5028
  // `tag` pills (Figma 1:6073): 32px tall, card surface, bordered, mono-
4960
5029
  // uppercase label, 16px lead icon + xmark-circle remove. Wraps to new rows.
4961
- /* @__PURE__ */ jsx23("div", { className: cn("flex flex-wrap content-center items-center gap-2", className), children: items.map((item) => {
5030
+ /* @__PURE__ */ jsx25("div", { className: cn("flex flex-wrap content-center items-center gap-2", className), children: items.map((item) => {
4962
5031
  const hostNode = renderItem?.(item);
4963
- if (hostNode != null) return /* @__PURE__ */ jsx23(Fragment4, { children: hostNode }, itemKey2(item));
4964
- return /* @__PURE__ */ jsxs19(
5032
+ if (hostNode != null) return /* @__PURE__ */ jsx25(Fragment4, { children: hostNode }, itemKey2(item));
5033
+ return /* @__PURE__ */ jsxs21(
4965
5034
  "div",
4966
5035
  {
4967
5036
  className: "flex h-8 shrink-0 items-center gap-2 rounded-md border border-ods-border bg-ods-card px-2",
4968
5037
  role: "group",
4969
5038
  "aria-label": `Context ${item.label}`,
4970
5039
  children: [
4971
- resolveIcon2 && /* @__PURE__ */ jsx23("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary [&_svg]:size-4", children: resolveIcon2(item) }),
4972
- /* @__PURE__ */ jsx23(
5040
+ resolveIcon2 && /* @__PURE__ */ jsx25("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary [&_svg]:size-4", children: resolveIcon2(item) }),
5041
+ /* @__PURE__ */ jsx25(
4973
5042
  "span",
4974
5043
  {
4975
5044
  className: "max-w-[220px] truncate font-mono text-h5 font-medium uppercase tracking-[-0.28px] text-ods-text-primary",
@@ -4977,7 +5046,7 @@ function ChatContextChipStrip({
4977
5046
  children: item.label
4978
5047
  }
4979
5048
  ),
4980
- onRemove && /* @__PURE__ */ jsx23(
5049
+ onRemove && /* @__PURE__ */ jsx25(
4981
5050
  "button",
4982
5051
  {
4983
5052
  type: "button",
@@ -4985,7 +5054,7 @@ function ChatContextChipStrip({
4985
5054
  disabled,
4986
5055
  "aria-label": `Remove ${item.label}`,
4987
5056
  className: "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary outline-none transition-colors hover:text-ods-text-primary focus-visible:text-ods-text-primary disabled:cursor-not-allowed disabled:opacity-40 [&_svg]:size-4",
4988
- children: /* @__PURE__ */ jsx23(XmarkCircleIcon, { size: 16 })
5057
+ children: /* @__PURE__ */ jsx25(XmarkCircleIcon, { size: 16 })
4989
5058
  }
4990
5059
  )
4991
5060
  ]
@@ -4997,7 +5066,7 @@ function ChatContextChipStrip({
4997
5066
  }
4998
5067
 
4999
5068
  // src/components/chat/chat-message-enhanced.tsx
5000
- import { Fragment as Fragment6, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
5069
+ import { Fragment as Fragment6, jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
5001
5070
  var MENTION_MARKER_REGEX = /(^|[^\w@])@[a-z]+:([A-Za-z0-9_.+/=-]*[A-Za-z0-9_+/=])/g;
5002
5071
  var CARD_MARKER_REGEX = /\[card:\/\/([a-zA-Z0-9_-]+):([a-zA-Z0-9_-]+)[\])]/g;
5003
5072
  function normalizeContent(content) {
@@ -5083,7 +5152,7 @@ var ChatMessageEnhanced = forwardRef11(
5083
5152
  cursor = markerEnd;
5084
5153
  inlineByKey.set(
5085
5154
  key,
5086
- props2.inline != null ? props2.inline : /* @__PURE__ */ jsx24("span", { className: "text-ods-text-primary font-medium", children: refMatch?.title ?? cardId })
5155
+ props2.inline != null ? props2.inline : /* @__PURE__ */ jsx26("span", { className: "text-ods-text-primary font-medium", children: refMatch?.title ?? cardId })
5087
5156
  );
5088
5157
  } else if (rendered != null) {
5089
5158
  parts.push({ kind: "text", text: text.slice(cursor, match2.index) });
@@ -5125,8 +5194,8 @@ var ChatMessageEnhanced = forwardRef11(
5125
5194
  const marker = sepIdx === -1 ? stripped : stripped.slice(0, sepIdx);
5126
5195
  const id = sepIdx === -1 ? "" : stripped.slice(sepIdx + 1);
5127
5196
  const node = renderMention?.({ marker, id });
5128
- if (node != null) return /* @__PURE__ */ jsx24(Fragment6, { children: node });
5129
- return /* @__PURE__ */ jsx24("span", { className: "text-ods-text-secondary opacity-60", children });
5197
+ if (node != null) return /* @__PURE__ */ jsx26(Fragment6, { children: node });
5198
+ return /* @__PURE__ */ jsx26("span", { className: "text-ods-text-secondary opacity-60", children });
5130
5199
  }
5131
5200
  if (typeof href === "string" && href.startsWith("card://")) {
5132
5201
  const stripped = href.slice("card://".length);
@@ -5139,15 +5208,15 @@ var ChatMessageEnhanced = forwardRef11(
5139
5208
  if (inline != null) return inline;
5140
5209
  const refMatch = refs[key];
5141
5210
  if (refMatch) {
5142
- return /* @__PURE__ */ jsx24("span", { className: "text-ods-text-primary", children: refMatch.title });
5211
+ return /* @__PURE__ */ jsx26("span", { className: "text-ods-text-primary", children: refMatch.title });
5143
5212
  }
5144
- return /* @__PURE__ */ jsx24("span", { className: "text-ods-text-secondary opacity-60", children: cardId });
5213
+ return /* @__PURE__ */ jsx26("span", { className: "text-ods-text-secondary opacity-60", children: cardId });
5145
5214
  }
5146
5215
  }
5147
5216
  if (typeof href === "string" && NavLinkAnchor && !href.startsWith("#")) {
5148
- return /* @__PURE__ */ jsx24(NavLinkAnchor, { href, className: linkClassName, ...rest, children });
5217
+ return /* @__PURE__ */ jsx26(NavLinkAnchor, { href, className: linkClassName, ...rest, children });
5149
5218
  }
5150
- return /* @__PURE__ */ jsx24("a", { href, className: linkClassName, ...rest, children });
5219
+ return /* @__PURE__ */ jsx26("a", { href, className: linkClassName, ...rest, children });
5151
5220
  }
5152
5221
  };
5153
5222
  }, [hasMarkerSupport, hasMentionSupport, renderMention, chatRefs, renderingPlan, NavLinkAnchor]);
@@ -5176,7 +5245,7 @@ var ChatMessageEnhanced = forwardRef11(
5176
5245
  };
5177
5246
  const avatarProps = getAvatarProps();
5178
5247
  const isSystem = authorType === "system";
5179
- return /* @__PURE__ */ jsx24(
5248
+ return /* @__PURE__ */ jsx26(
5180
5249
  "div",
5181
5250
  {
5182
5251
  ref,
@@ -5185,23 +5254,23 @@ var ChatMessageEnhanced = forwardRef11(
5185
5254
  className
5186
5255
  ),
5187
5256
  ...props,
5188
- children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] min-w-0", children: [
5189
- /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
5257
+ children: /* @__PURE__ */ jsxs22("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] min-w-0", children: [
5258
+ /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
5190
5259
  showAvatar && !isSystem && !(isUser && !avatar) && (!isUser && assistantIcon && !avatar ? (
5191
5260
  // Host-supplied brand icon (e.g. Mingo): render it directly,
5192
5261
  // no filled pill — the icon carries its own brand accent.
5193
- /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center flex-shrink-0", children: assistantIcon })
5194
- ) : /* @__PURE__ */ jsx24(SquareAvatar, { ...avatarProps })),
5195
- /* @__PURE__ */ jsxs20("span", { className: cn(
5262
+ /* @__PURE__ */ jsx26("div", { className: "flex items-center justify-center flex-shrink-0", children: assistantIcon })
5263
+ ) : /* @__PURE__ */ jsx26(SquareAvatar, { ...avatarProps })),
5264
+ /* @__PURE__ */ jsxs22("span", { className: cn(
5196
5265
  "text-h3 !font-mono !font-medium flex-1",
5197
5266
  authorType === "system" ? "text-ods-open-yellow" : authorType === "admin" ? "text-ods-open-yellow" : authorType === "mingo" ? "text-ods-flamingo-cyan" : authorType === "fae" ? "text-ods-flamingo-pink" : "text-ods-text-secondary"
5198
5267
  ), children: [
5199
5268
  name || (isUser ? "User" : assistantType === "mingo" ? "Mingo" : "Fae"),
5200
5269
  !isSystem && ":"
5201
5270
  ] }),
5202
- timestamp && /* @__PURE__ */ jsx24("span", { className: "font-sans text-heading-5 font-medium text-ods-text-secondary shrink-0 whitespace-nowrap", children: timestamp.toLocaleTimeString([], { hour: "numeric", minute: "2-digit" }) })
5271
+ timestamp && /* @__PURE__ */ jsx26("span", { className: "font-sans text-heading-5 font-medium text-ods-text-secondary shrink-0 whitespace-nowrap", children: timestamp.toLocaleTimeString([], { hour: "numeric", minute: "2-digit" }) })
5203
5272
  ] }),
5204
- (!isSystem || segments.length > 0) && /* @__PURE__ */ jsx24("div", { className: "flex flex-col gap-2", children: segments.map((segment, index) => {
5273
+ (!isSystem || segments.length > 0) && /* @__PURE__ */ jsx26("div", { className: "flex flex-col gap-2", children: segments.map((segment, index) => {
5205
5274
  if (segment.type === "text") {
5206
5275
  const parts = renderingPlan?.partsBySegment.get(index);
5207
5276
  const wrapperClass = cn(
@@ -5209,7 +5278,7 @@ var ChatMessageEnhanced = forwardRef11(
5209
5278
  isError ? "text-ods-error" : "text-ods-text-primary"
5210
5279
  );
5211
5280
  if (!parts || parts.length === 0) {
5212
- return /* @__PURE__ */ jsx24("div", { className: wrapperClass, children: /* @__PURE__ */ jsx24(
5281
+ return /* @__PURE__ */ jsx26("div", { className: wrapperClass, children: /* @__PURE__ */ jsx26(
5213
5282
  SimpleMarkdownRenderer,
5214
5283
  {
5215
5284
  content: segment.text,
@@ -5219,9 +5288,9 @@ var ChatMessageEnhanced = forwardRef11(
5219
5288
  }
5220
5289
  ) }, index);
5221
5290
  }
5222
- return /* @__PURE__ */ jsx24("div", { className: wrapperClass, children: parts.map((part, pIdx) => {
5291
+ return /* @__PURE__ */ jsx26("div", { className: wrapperClass, children: parts.map((part, pIdx) => {
5223
5292
  if (part.kind === "text") {
5224
- return /* @__PURE__ */ jsx24(
5293
+ return /* @__PURE__ */ jsx26(
5225
5294
  SimpleMarkdownRenderer,
5226
5295
  {
5227
5296
  content: part.text,
@@ -5232,10 +5301,10 @@ var ChatMessageEnhanced = forwardRef11(
5232
5301
  `t-${pIdx}`
5233
5302
  );
5234
5303
  }
5235
- return /* @__PURE__ */ jsx24("div", { className: "my-3", children: part.node }, `b-${part.key}`);
5304
+ return /* @__PURE__ */ jsx26("div", { className: "my-3", children: part.node }, `b-${part.key}`);
5236
5305
  }) }, index);
5237
5306
  } else if (segment.type === "tool_execution") {
5238
- return /* @__PURE__ */ jsx24(
5307
+ return /* @__PURE__ */ jsx26(
5239
5308
  ToolExecutionDisplay,
5240
5309
  {
5241
5310
  message: segment.data,
@@ -5244,7 +5313,7 @@ var ChatMessageEnhanced = forwardRef11(
5244
5313
  index
5245
5314
  );
5246
5315
  } else if (segment.type === "approval_request") {
5247
- return /* @__PURE__ */ jsx24(
5316
+ return /* @__PURE__ */ jsx26(
5248
5317
  ApprovalRequestMessage,
5249
5318
  {
5250
5319
  data: segment.data,
@@ -5256,7 +5325,7 @@ var ChatMessageEnhanced = forwardRef11(
5256
5325
  index
5257
5326
  );
5258
5327
  } else if (segment.type === "approval_batch") {
5259
- return /* @__PURE__ */ jsx24(
5328
+ return /* @__PURE__ */ jsx26(
5260
5329
  ApprovalBatchMessage,
5261
5330
  {
5262
5331
  data: segment.data,
@@ -5269,7 +5338,7 @@ var ChatMessageEnhanced = forwardRef11(
5269
5338
  index
5270
5339
  );
5271
5340
  } else if (segment.type === "error") {
5272
- return /* @__PURE__ */ jsx24(
5341
+ return /* @__PURE__ */ jsx26(
5273
5342
  ErrorMessageDisplay,
5274
5343
  {
5275
5344
  title: segment.title,
@@ -5278,7 +5347,7 @@ var ChatMessageEnhanced = forwardRef11(
5278
5347
  index
5279
5348
  );
5280
5349
  } else if (segment.type === "context_compaction") {
5281
- return /* @__PURE__ */ jsx24(
5350
+ return /* @__PURE__ */ jsx26(
5282
5351
  ContextCompactionDisplay,
5283
5352
  {
5284
5353
  status: segment.status
@@ -5287,7 +5356,7 @@ var ChatMessageEnhanced = forwardRef11(
5287
5356
  );
5288
5357
  } else if (segment.type === "thinking") {
5289
5358
  const isStreaming = index === segments.length - 1 && isTyping;
5290
- return /* @__PURE__ */ jsx24(
5359
+ return /* @__PURE__ */ jsx26(
5291
5360
  ThinkingDisplay,
5292
5361
  {
5293
5362
  text: segment.text,
@@ -5298,7 +5367,7 @@ var ChatMessageEnhanced = forwardRef11(
5298
5367
  }
5299
5368
  return null;
5300
5369
  }) }),
5301
- stripContextItems && stripContextItems.length > 0 && /* @__PURE__ */ jsx24(
5370
+ stripContextItems && stripContextItems.length > 0 && /* @__PURE__ */ jsx26(
5302
5371
  ChatContextChipStrip,
5303
5372
  {
5304
5373
  items: stripContextItems,
@@ -5333,22 +5402,22 @@ import { useStickToBottom } from "use-stick-to-bottom";
5333
5402
 
5334
5403
  // src/components/chat/chat-message-skeleton.tsx
5335
5404
  init_cn();
5336
- import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
5405
+ import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
5337
5406
  function ChatMessageSkeleton({
5338
5407
  className,
5339
5408
  showAvatar = true,
5340
5409
  isUser = false
5341
5410
  }) {
5342
- return /* @__PURE__ */ jsx25("div", { className: cn("relative py-[var(--spacing-system-s)]", className), children: /* @__PURE__ */ jsxs21("div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
5343
- /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
5344
- showAvatar && !isUser && /* @__PURE__ */ jsx25("div", { className: "h-8 w-8 flex-shrink-0 rounded-full bg-ods-border animate-pulse" }),
5345
- /* @__PURE__ */ jsx25("div", { className: "h-5 w-32 rounded bg-ods-border animate-pulse" }),
5346
- /* @__PURE__ */ jsx25("div", { className: "ml-auto h-4 w-14 rounded bg-ods-border animate-pulse" })
5411
+ return /* @__PURE__ */ jsx27("div", { className: cn("relative py-[var(--spacing-system-s)]", className), children: /* @__PURE__ */ jsxs23("div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
5412
+ /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
5413
+ showAvatar && !isUser && /* @__PURE__ */ jsx27("div", { className: "h-8 w-8 flex-shrink-0 rounded-full bg-ods-border animate-pulse" }),
5414
+ /* @__PURE__ */ jsx27("div", { className: "h-5 w-32 rounded bg-ods-border animate-pulse" }),
5415
+ /* @__PURE__ */ jsx27("div", { className: "ml-auto h-4 w-14 rounded bg-ods-border animate-pulse" })
5347
5416
  ] }),
5348
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-2 pt-[var(--spacing-system-xxs)]", children: [
5349
- /* @__PURE__ */ jsx25("div", { className: "h-4 w-full rounded bg-ods-border animate-pulse" }),
5350
- /* @__PURE__ */ jsx25("div", { className: "h-4 w-11/12 rounded bg-ods-border animate-pulse" }),
5351
- /* @__PURE__ */ jsx25("div", { className: "h-4 w-3/5 rounded bg-ods-border animate-pulse" })
5417
+ /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-2 pt-[var(--spacing-system-xxs)]", children: [
5418
+ /* @__PURE__ */ jsx27("div", { className: "h-4 w-full rounded bg-ods-border animate-pulse" }),
5419
+ /* @__PURE__ */ jsx27("div", { className: "h-4 w-11/12 rounded bg-ods-border animate-pulse" }),
5420
+ /* @__PURE__ */ jsx27("div", { className: "h-4 w-3/5 rounded bg-ods-border animate-pulse" })
5352
5421
  ] })
5353
5422
  ] }) });
5354
5423
  }
@@ -5363,7 +5432,7 @@ function ChatMessageListSkeleton({
5363
5432
  id: index,
5364
5433
  isUser: index % 3 === 0
5365
5434
  }));
5366
- return /* @__PURE__ */ jsx25("div", { className: "relative flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ jsx25(
5435
+ return /* @__PURE__ */ jsx27("div", { className: "relative flex-1 min-h-0 flex flex-col", children: /* @__PURE__ */ jsx27(
5367
5436
  "div",
5368
5437
  {
5369
5438
  className: cn(
@@ -5372,7 +5441,7 @@ function ChatMessageListSkeleton({
5372
5441
  "scrollbar-thin scrollbar-track-transparent scrollbar-thumb-ods-border/30 hover:scrollbar-thumb-ods-text-secondary/30",
5373
5442
  className
5374
5443
  ),
5375
- children: /* @__PURE__ */ jsxs21(
5444
+ children: /* @__PURE__ */ jsxs23(
5376
5445
  "div",
5377
5446
  {
5378
5447
  className: cn(
@@ -5381,8 +5450,8 @@ function ChatMessageListSkeleton({
5381
5450
  ),
5382
5451
  style: { minHeight: "100%" },
5383
5452
  children: [
5384
- /* @__PURE__ */ jsx25("div", { className: "flex-1" }),
5385
- messages.map((message2) => /* @__PURE__ */ jsx25(
5453
+ /* @__PURE__ */ jsx27("div", { className: "flex-1" }),
5454
+ messages.map((message2) => /* @__PURE__ */ jsx27(
5386
5455
  ChatMessageSkeleton,
5387
5456
  {
5388
5457
  showAvatar: showAvatars,
@@ -5400,7 +5469,7 @@ function ChatMessageListSkeleton({
5400
5469
  // src/components/chat/cycling-phrase.tsx
5401
5470
  init_cn();
5402
5471
  import { useEffect as useEffect6, useMemo as useMemo7, useState as useState11 } from "react";
5403
- import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
5472
+ import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
5404
5473
  var BLINK_KEYFRAMES = `
5405
5474
  @keyframes cyclingCursorBlink {
5406
5475
  50% { opacity: 0; }
@@ -5452,7 +5521,7 @@ function CyclingPhrase({
5452
5521
  if (words.length === 0) return null;
5453
5522
  const before = text.slice(0, cursor);
5454
5523
  const after = text.slice(cursor);
5455
- const cursorBlock = /* @__PURE__ */ jsx26(
5524
+ const cursorBlock = /* @__PURE__ */ jsx28(
5456
5525
  "span",
5457
5526
  {
5458
5527
  "aria-hidden": true,
@@ -5467,17 +5536,17 @@ function CyclingPhrase({
5467
5536
  }
5468
5537
  }
5469
5538
  );
5470
- return /* @__PURE__ */ jsxs22("span", { className: cn("relative inline-block whitespace-nowrap", className), children: [
5471
- /* @__PURE__ */ jsx26("style", { dangerouslySetInnerHTML: { __html: BLINK_KEYFRAMES } }),
5472
- /* @__PURE__ */ jsxs22("span", { "aria-hidden": true, className: "invisible", children: [
5539
+ return /* @__PURE__ */ jsxs24("span", { className: cn("relative inline-block whitespace-nowrap", className), children: [
5540
+ /* @__PURE__ */ jsx28("style", { dangerouslySetInnerHTML: { __html: BLINK_KEYFRAMES } }),
5541
+ /* @__PURE__ */ jsxs24("span", { "aria-hidden": true, className: "invisible", children: [
5473
5542
  placeholder,
5474
5543
  "..."
5475
5544
  ] }),
5476
- /* @__PURE__ */ jsxs22("span", { className: "absolute inset-0 inline-flex items-baseline", "aria-live": "polite", children: [
5477
- /* @__PURE__ */ jsx26("span", { children: before }),
5545
+ /* @__PURE__ */ jsxs24("span", { className: "absolute inset-0 inline-flex items-baseline", "aria-live": "polite", children: [
5546
+ /* @__PURE__ */ jsx28("span", { children: before }),
5478
5547
  !holding && cursorBlock,
5479
- /* @__PURE__ */ jsx26("span", { children: after }),
5480
- /* @__PURE__ */ jsx26("span", { children: "..." })
5548
+ /* @__PURE__ */ jsx28("span", { children: after }),
5549
+ /* @__PURE__ */ jsx28("span", { children: "..." })
5481
5550
  ] })
5482
5551
  ] });
5483
5552
  }
@@ -5505,7 +5574,7 @@ var MESSAGE_TYPE = {
5505
5574
  var SCROLL_ANCHOR = { TOP: "top", BOTTOM: "bottom" };
5506
5575
 
5507
5576
  // src/components/chat/chat-message-list.tsx
5508
- import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
5577
+ import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
5509
5578
  var STREAMING_WORDS = [
5510
5579
  "Thinking",
5511
5580
  "Vibing",
@@ -5707,7 +5776,7 @@ var ChatMessageList = forwardRef12(
5707
5776
  }, [hasNextPage, isFetchingNextPage, scrollRef]);
5708
5777
  useImperativeHandle2(ref, () => scrollRef.current, [scrollRef]);
5709
5778
  if (isLoading) {
5710
- return /* @__PURE__ */ jsx27(
5779
+ return /* @__PURE__ */ jsx29(
5711
5780
  ChatMessageListSkeleton,
5712
5781
  {
5713
5782
  className,
@@ -5729,8 +5798,8 @@ var ChatMessageList = forwardRef12(
5729
5798
  const lastSegment = lastSegments?.[lastSegments.length - 1];
5730
5799
  const isPausedOnApproval = !!lastSegment && (lastSegment.type === "approval_request" || lastSegment.type === "approval_batch") && (lastSegment.status === void 0 || lastSegment.status === "pending");
5731
5800
  const showStreamingLoader = isTyping && !isPausedOnApproval && !(pendingApprovals && pendingApprovals.length > 0);
5732
- return /* @__PURE__ */ jsxs23("div", { className: "relative flex-1 min-h-0 flex flex-col", children: [
5733
- /* @__PURE__ */ jsx27(
5801
+ return /* @__PURE__ */ jsxs25("div", { className: "relative flex-1 min-h-0 flex flex-col", children: [
5802
+ /* @__PURE__ */ jsx29(
5734
5803
  "div",
5735
5804
  {
5736
5805
  ref: setScrollRef,
@@ -5740,7 +5809,7 @@ var ChatMessageList = forwardRef12(
5740
5809
  className
5741
5810
  ),
5742
5811
  ...props,
5743
- children: /* @__PURE__ */ jsxs23(
5812
+ children: /* @__PURE__ */ jsxs25(
5744
5813
  "div",
5745
5814
  {
5746
5815
  ref: setContentRef,
@@ -5753,11 +5822,11 @@ var ChatMessageList = forwardRef12(
5753
5822
  ),
5754
5823
  style: { minHeight: "100%" },
5755
5824
  children: [
5756
- hasNextPage && /* @__PURE__ */ jsx27("div", { ref: sentinelRef, className: "h-px" }),
5757
- /* @__PURE__ */ jsx27("div", { className: "flex-1" }),
5825
+ hasNextPage && /* @__PURE__ */ jsx29("div", { ref: sentinelRef, className: "h-px" }),
5826
+ /* @__PURE__ */ jsx29("div", { className: "flex-1" }),
5758
5827
  messages.map((message2, index) => {
5759
5828
  if (message2.hidden) return null;
5760
- return /* @__PURE__ */ jsx27(
5829
+ return /* @__PURE__ */ jsx29(
5761
5830
  MemoizedChatMessageEnhanced,
5762
5831
  {
5763
5832
  ref: getRegisterMessageEl(message2.id),
@@ -5787,7 +5856,7 @@ var ChatMessageList = forwardRef12(
5787
5856
  )
5788
5857
  }
5789
5858
  ),
5790
- showStreamingLoader && /* @__PURE__ */ jsxs23(
5859
+ showStreamingLoader && /* @__PURE__ */ jsxs25(
5791
5860
  "div",
5792
5861
  {
5793
5862
  className: cn(
@@ -5798,16 +5867,16 @@ var ChatMessageList = forwardRef12(
5798
5867
  role: "status",
5799
5868
  "aria-live": "polite",
5800
5869
  children: [
5801
- /* @__PURE__ */ jsx27(DotsLoaderIcon, { className: "w-6 h-6" }),
5802
- /* @__PURE__ */ jsx27(CyclingPhrase, { words: STREAMING_WORDS, className: "text-sm" })
5870
+ /* @__PURE__ */ jsx29(DotsLoaderIcon, { className: "w-6 h-6" }),
5871
+ /* @__PURE__ */ jsx29(CyclingPhrase, { words: STREAMING_WORDS, className: "text-sm" })
5803
5872
  ]
5804
5873
  }
5805
5874
  ),
5806
- pendingApprovals && pendingApprovals.length > 0 && /* @__PURE__ */ jsx27("div", { className: cn(
5875
+ pendingApprovals && pendingApprovals.length > 0 && /* @__PURE__ */ jsx29("div", { className: cn(
5807
5876
  "border-t border-ods-border bg-ods-bg/95 backdrop-blur-sm",
5808
5877
  fullWidth ? "w-full" : "mx-auto w-full max-w-ods-content-narrow",
5809
5878
  contentClassName ?? "px-[var(--spacing-system-m)]"
5810
- ), children: /* @__PURE__ */ jsx27(
5879
+ ), children: /* @__PURE__ */ jsx29(
5811
5880
  MemoizedChatMessageEnhanced,
5812
5881
  {
5813
5882
  role: "assistant",
@@ -5880,7 +5949,7 @@ function useProxiedImageUrl(url) {
5880
5949
 
5881
5950
  // src/components/chat/chat-message-row.tsx
5882
5951
  import { useState as useState12 } from "react";
5883
- import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
5952
+ import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
5884
5953
  function ChatMessageRow({
5885
5954
  displayName,
5886
5955
  avatarUrl,
@@ -5893,8 +5962,8 @@ function ChatMessageRow({
5893
5962
  const [failedSrc, setFailedSrc] = useState12(null);
5894
5963
  const src = resolvedAvatar && resolvedAvatar !== failedSrc ? resolvedAvatar : void 0;
5895
5964
  const hasBody = body.trim().length > 0;
5896
- return /* @__PURE__ */ jsxs24("div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
5897
- src ? /* @__PURE__ */ jsx28(
5965
+ return /* @__PURE__ */ jsxs26("div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
5966
+ src ? /* @__PURE__ */ jsx30(
5898
5967
  next_image_default,
5899
5968
  {
5900
5969
  src,
@@ -5904,27 +5973,27 @@ function ChatMessageRow({
5904
5973
  height: 40,
5905
5974
  onError: () => setFailedSrc(resolvedAvatar ?? null)
5906
5975
  }
5907
- ) : /* @__PURE__ */ jsx28("div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 flex items-center justify-center bg-ods-bg border border-ods-border text-[12px] font-medium text-ods-text-primary font-body", children: getFirstLastInitials(displayName) || "?" }),
5908
- /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-0 max-w-full", children: [
5909
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2 max-w-full mb-1 min-w-0", children: [
5910
- /* @__PURE__ */ jsx28("span", { className: "text-[14px] md:text-[15px] font-bold leading-[1.33] text-ods-text-primary font-body tracking-[-0.02em] truncate", children: displayName }),
5911
- timeLabel && /* @__PURE__ */ jsx28("span", { className: "text-[11px] md:text-[12px] font-medium leading-[1.43] text-ods-text-secondary font-body flex-shrink-0", children: timeLabel })
5976
+ ) : /* @__PURE__ */ jsx30("div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 flex items-center justify-center bg-ods-bg border border-ods-border text-[12px] font-medium text-ods-text-primary font-body", children: getFirstLastInitials(displayName) || "?" }),
5977
+ /* @__PURE__ */ jsxs26("div", { className: "flex-1 min-w-0 max-w-full", children: [
5978
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2 max-w-full mb-1 min-w-0", children: [
5979
+ /* @__PURE__ */ jsx30("span", { className: "text-[14px] md:text-[15px] font-bold leading-[1.33] text-ods-text-primary font-body tracking-[-0.02em] truncate", children: displayName }),
5980
+ timeLabel && /* @__PURE__ */ jsx30("span", { className: "text-[11px] md:text-[12px] font-medium leading-[1.43] text-ods-text-secondary font-body flex-shrink-0", children: timeLabel })
5912
5981
  ] }),
5913
- hasBody && /* @__PURE__ */ jsx28("div", { className: "text-[12px] md:text-[14px] font-medium leading-[1.43] text-ods-text-primary font-body whitespace-pre-wrap break-words min-w-0 max-w-full", children: body }),
5982
+ hasBody && /* @__PURE__ */ jsx30("div", { className: "text-[12px] md:text-[14px] font-medium leading-[1.43] text-ods-text-primary font-body whitespace-pre-wrap break-words min-w-0 max-w-full", children: body }),
5914
5983
  footer
5915
5984
  ] })
5916
5985
  ] });
5917
5986
  }
5918
5987
  function ChatMessageRowSkeleton() {
5919
- return /* @__PURE__ */ jsxs24("div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
5920
- /* @__PURE__ */ jsx28("div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 bg-ods-border animate-pulse" }),
5921
- /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-0", children: [
5922
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2 mb-1", children: [
5923
- /* @__PURE__ */ jsx28("div", { className: "h-[15px] md:h-[20px] w-24 md:w-32 bg-ods-border rounded animate-pulse" }),
5924
- /* @__PURE__ */ jsx28("div", { className: "h-[12px] md:h-[16px] w-12 md:w-16 bg-ods-border rounded animate-pulse" })
5988
+ return /* @__PURE__ */ jsxs26("div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
5989
+ /* @__PURE__ */ jsx30("div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 bg-ods-border animate-pulse" }),
5990
+ /* @__PURE__ */ jsxs26("div", { className: "flex-1 min-w-0", children: [
5991
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2 mb-1", children: [
5992
+ /* @__PURE__ */ jsx30("div", { className: "h-[15px] md:h-[20px] w-24 md:w-32 bg-ods-border rounded animate-pulse" }),
5993
+ /* @__PURE__ */ jsx30("div", { className: "h-[12px] md:h-[16px] w-12 md:w-16 bg-ods-border rounded animate-pulse" })
5925
5994
  ] }),
5926
- /* @__PURE__ */ jsx28("div", { className: "h-[14px] md:h-[18px] w-full bg-ods-border rounded animate-pulse" }),
5927
- /* @__PURE__ */ jsx28("div", { className: "h-[14px] md:h-[18px] w-3/4 bg-ods-border rounded animate-pulse mt-1" })
5995
+ /* @__PURE__ */ jsx30("div", { className: "h-[14px] md:h-[18px] w-full bg-ods-border rounded animate-pulse" }),
5996
+ /* @__PURE__ */ jsx30("div", { className: "h-[14px] md:h-[18px] w-3/4 bg-ods-border rounded animate-pulse mt-1" })
5928
5997
  ] })
5929
5998
  ] });
5930
5999
  }
@@ -5933,7 +6002,7 @@ function ChatMessageRowSkeleton() {
5933
6002
  init_cn();
5934
6003
  import * as React10 from "react";
5935
6004
  import { ChevronRight } from "lucide-react";
5936
- import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
6005
+ import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
5937
6006
  var ChatQuickAction = React10.forwardRef(
5938
6007
  ({ className, text, onAction, onClick, isHintActive, onHintInteraction, disabled = false, ...props }, ref) => {
5939
6008
  const handleClick = React10.useCallback((e) => {
@@ -5947,7 +6016,7 @@ var ChatQuickAction = React10.forwardRef(
5947
6016
  onClick(e);
5948
6017
  }
5949
6018
  }, [text, onAction, onClick, onHintInteraction]);
5950
- return /* @__PURE__ */ jsxs25(
6019
+ return /* @__PURE__ */ jsxs27(
5951
6020
  "button",
5952
6021
  {
5953
6022
  ref,
@@ -5968,8 +6037,8 @@ var ChatQuickAction = React10.forwardRef(
5968
6037
  ),
5969
6038
  ...props,
5970
6039
  children: [
5971
- /* @__PURE__ */ jsx29("span", { className: "text-sm font-medium", children: text }),
5972
- /* @__PURE__ */ jsx29(ChevronRight, { className: "h-4 w-4 text-ods-text-secondary flex-shrink-0" })
6040
+ /* @__PURE__ */ jsx31("span", { className: "text-sm font-medium", children: text }),
6041
+ /* @__PURE__ */ jsx31(ChevronRight, { className: "h-4 w-4 text-ods-text-secondary flex-shrink-0" })
5973
6042
  ]
5974
6043
  }
5975
6044
  );
@@ -5988,13 +6057,13 @@ import * as React11 from "react";
5988
6057
  var FAE_AVATAR_DATA_URI = "data:image/png;base64,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";
5989
6058
 
5990
6059
  // src/components/agent-mark.tsx
5991
- import { jsx as jsx30 } from "react/jsx-runtime";
6060
+ import { jsx as jsx32 } from "react/jsx-runtime";
5992
6061
  function AgentMark({ agent, className = "", faeAvatarSrc = FAE_AVATAR_DATA_URI }) {
5993
- return agent === "mingo" ? /* @__PURE__ */ jsx30(MingoIcon, { className, "aria-hidden": "true", focusable: "false" }) : /* @__PURE__ */ jsx30("img", { src: faeAvatarSrc, alt: "", className });
6062
+ return agent === "mingo" ? /* @__PURE__ */ jsx32(MingoIcon, { className, "aria-hidden": "true", focusable: "false" }) : /* @__PURE__ */ jsx32("img", { src: faeAvatarSrc, alt: "", className });
5994
6063
  }
5995
6064
 
5996
6065
  // src/components/icon-display.tsx
5997
- import { jsx as jsx31 } from "react/jsx-runtime";
6066
+ import { jsx as jsx33 } from "react/jsx-runtime";
5998
6067
  var BRAND_MARK_NAMES = /* @__PURE__ */ new Set(["fae", "mingo"]);
5999
6068
  function EntityIcon({
6000
6069
  icon,
@@ -6002,7 +6071,7 @@ function EntityIcon({
6002
6071
  className
6003
6072
  }) {
6004
6073
  if (icon?.url) {
6005
- return /* @__PURE__ */ jsx31(
6074
+ return /* @__PURE__ */ jsx33(
6006
6075
  "img",
6007
6076
  {
6008
6077
  src: icon.url,
@@ -6015,21 +6084,21 @@ function EntityIcon({
6015
6084
  );
6016
6085
  }
6017
6086
  if (icon?.name && BRAND_MARK_NAMES.has(icon.name)) {
6018
- return /* @__PURE__ */ jsx31(
6087
+ return /* @__PURE__ */ jsx33(
6019
6088
  "span",
6020
6089
  {
6021
6090
  className: `inline-flex${className ? ` ${className}` : ""}`,
6022
6091
  style: className ? void 0 : { width: size2, height: size2 },
6023
- children: /* @__PURE__ */ jsx31(AgentMark, { agent: icon.name, className: "w-full h-full" })
6092
+ children: /* @__PURE__ */ jsx33(AgentMark, { agent: icon.name, className: "w-full h-full" })
6024
6093
  }
6025
6094
  );
6026
6095
  }
6027
6096
  const Glyph = resolveIcon(icon?.name ?? void 0);
6028
- return /* @__PURE__ */ jsx31(Glyph, { size: size2, className, ...icon?.props ?? {} });
6097
+ return /* @__PURE__ */ jsx33(Glyph, { size: size2, className, ...icon?.props ?? {} });
6029
6098
  }
6030
6099
 
6031
6100
  // src/components/chat/quick-action-chip.tsx
6032
- import { Fragment as Fragment7, jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
6101
+ import { Fragment as Fragment7, jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
6033
6102
  function getAgentAccent(slug) {
6034
6103
  if (slug === "fae") return "pink";
6035
6104
  if (slug === "mingo") return "cyan";
@@ -6051,7 +6120,7 @@ function renderQuickActionIcon(icon) {
6051
6120
  if (!spec.name && !spec.url) return void 0;
6052
6121
  const accentClass = spec.accent ? ACCENT_CLASS[spec.accent] : void 0;
6053
6122
  const props = spec.accent && !accentClass ? { color: spec.accent, ...spec.props ?? {} } : spec.props;
6054
- return /* @__PURE__ */ jsx32(
6123
+ return /* @__PURE__ */ jsx34(
6055
6124
  EntityIcon,
6056
6125
  {
6057
6126
  icon: { name: spec.name, url: spec.url, props },
@@ -6062,8 +6131,8 @@ function renderQuickActionIcon(icon) {
6062
6131
  }
6063
6132
  function composeChipLabel(label, lozenge) {
6064
6133
  if (!lozenge) return label;
6065
- return /* @__PURE__ */ jsxs26(Fragment7, { children: [
6066
- /* @__PURE__ */ jsx32(
6134
+ return /* @__PURE__ */ jsxs28(Fragment7, { children: [
6135
+ /* @__PURE__ */ jsx34(
6067
6136
  "span",
6068
6137
  {
6069
6138
  className: cn(
@@ -6083,18 +6152,18 @@ function composeChipLabel(label, lozenge) {
6083
6152
  ] });
6084
6153
  }
6085
6154
  function ChipSkelBar({ className, style }) {
6086
- return /* @__PURE__ */ jsx32("span", { "aria-hidden": true, className: cn("animate-pulse rounded-md bg-ods-border", className), style });
6155
+ return /* @__PURE__ */ jsx34("span", { "aria-hidden": true, className: cn("animate-pulse rounded-md bg-ods-border", className), style });
6087
6156
  }
6088
6157
  function QuickActionChipSkeleton({ labelCh = 16, icon = true, lozenge = false, className }) {
6089
- return /* @__PURE__ */ jsx32(
6158
+ return /* @__PURE__ */ jsx34(
6090
6159
  Tag,
6091
6160
  {
6092
6161
  variant: "outline",
6093
6162
  className,
6094
- icon: icon ? /* @__PURE__ */ jsx32(ChipSkelBar, { className: "block size-4" }) : void 0,
6095
- label: /* @__PURE__ */ jsxs26(Fragment7, { children: [
6096
- lozenge && /* @__PURE__ */ jsx32(ChipSkelBar, { className: "mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" }),
6097
- /* @__PURE__ */ jsx32(ChipSkelBar, { className: "inline-block h-[0.9em] translate-y-[0.08em]", style: { width: `${labelCh}ch` } })
6163
+ icon: icon ? /* @__PURE__ */ jsx34(ChipSkelBar, { className: "block size-4" }) : void 0,
6164
+ label: /* @__PURE__ */ jsxs28(Fragment7, { children: [
6165
+ lozenge && /* @__PURE__ */ jsx34(ChipSkelBar, { className: "mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" }),
6166
+ /* @__PURE__ */ jsx34(ChipSkelBar, { className: "inline-block h-[0.9em] translate-y-[0.08em]", style: { width: `${labelCh}ch` } })
6098
6167
  ] })
6099
6168
  }
6100
6169
  );
@@ -6113,9 +6182,9 @@ function QuickActionChipButton({
6113
6182
  const resolvedIcon = renderQuickActionIcon(icon);
6114
6183
  const resolvedLabel = composeChipLabel(label, lozenge);
6115
6184
  if (!interactive) {
6116
- return /* @__PURE__ */ jsx32(Tag, { variant, icon: resolvedIcon, label: resolvedLabel, className });
6185
+ return /* @__PURE__ */ jsx34(Tag, { variant, icon: resolvedIcon, label: resolvedLabel, className });
6117
6186
  }
6118
- return /* @__PURE__ */ jsx32(
6187
+ return /* @__PURE__ */ jsx34(
6119
6188
  "button",
6120
6189
  {
6121
6190
  type: "button",
@@ -6128,15 +6197,15 @@ function QuickActionChipButton({
6128
6197
  "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
6129
6198
  className
6130
6199
  ),
6131
- children: /* @__PURE__ */ jsx32(Tag, { variant, icon: resolvedIcon, label: resolvedLabel })
6200
+ children: /* @__PURE__ */ jsx34(Tag, { variant, icon: resolvedIcon, label: resolvedLabel })
6132
6201
  }
6133
6202
  );
6134
6203
  }
6135
6204
 
6136
6205
  // src/components/chat/chat-quick-action-row.tsx
6137
- import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
6206
+ import { jsx as jsx35, jsxs as jsxs29 } from "react/jsx-runtime";
6138
6207
  function ChipButton({ chip }) {
6139
- return /* @__PURE__ */ jsx33(
6208
+ return /* @__PURE__ */ jsx35(
6140
6209
  QuickActionChipButton,
6141
6210
  {
6142
6211
  label: chip.label,
@@ -6162,12 +6231,12 @@ function ChatQuickActionRow({
6162
6231
  const hiddenChips = chips.slice(auto.visibleCount);
6163
6232
  if (!leading && chips.length === 0) return null;
6164
6233
  if (wrap) {
6165
- return /* @__PURE__ */ jsxs27("div", { className: cn("flex shrink-0 flex-wrap items-center gap-1", className), children: [
6234
+ return /* @__PURE__ */ jsxs29("div", { className: cn("flex shrink-0 flex-wrap items-center gap-1", className), children: [
6166
6235
  leading,
6167
- chips.map((chip) => /* @__PURE__ */ jsx33(ChipButton, { chip }, chip.id))
6236
+ chips.map((chip) => /* @__PURE__ */ jsx35(ChipButton, { chip }, chip.id))
6168
6237
  ] });
6169
6238
  }
6170
- return /* @__PURE__ */ jsxs27(
6239
+ return /* @__PURE__ */ jsxs29(
6171
6240
  "div",
6172
6241
  {
6173
6242
  className: cn("relative flex shrink-0 items-center gap-1", className),
@@ -6175,14 +6244,14 @@ function ChatQuickActionRow({
6175
6244
  leading,
6176
6245
  chips.length > 0 && // Measured zone: `flex-1 min-w-0 overflow-hidden` so it claims the width
6177
6246
  // left by the pinned `leading` slot and clips anything past the fit.
6178
- /* @__PURE__ */ jsxs27(
6247
+ /* @__PURE__ */ jsxs29(
6179
6248
  "div",
6180
6249
  {
6181
6250
  ref: auto.middleRef,
6182
6251
  className: "flex flex-1 min-w-0 items-center gap-1 overflow-hidden",
6183
6252
  children: [
6184
- visibleChips.map((chip) => /* @__PURE__ */ jsx33(ChipButton, { chip }, chip.id)),
6185
- hiddenChips.length > 0 && /* @__PURE__ */ jsx33(
6253
+ visibleChips.map((chip) => /* @__PURE__ */ jsx35(ChipButton, { chip }, chip.id)),
6254
+ hiddenChips.length > 0 && /* @__PURE__ */ jsx35(
6186
6255
  ActionsMenuDropdown,
6187
6256
  {
6188
6257
  triggerAriaLabel: "More quick actions",
@@ -6197,14 +6266,14 @@ function ChatQuickActionRow({
6197
6266
  }))
6198
6267
  }
6199
6268
  ],
6200
- customTrigger: /* @__PURE__ */ jsx33(
6269
+ customTrigger: /* @__PURE__ */ jsx35(
6201
6270
  "button",
6202
6271
  {
6203
6272
  ref: auto.badgeRef,
6204
6273
  type: "button",
6205
6274
  "aria-label": "More quick actions",
6206
6275
  className: "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
6207
- children: /* @__PURE__ */ jsx33(Tag, { variant: "outline", label: /* @__PURE__ */ jsx33(Ellipsis01Icon, { size: 16 }) })
6276
+ children: /* @__PURE__ */ jsx35(Tag, { variant: "outline", label: /* @__PURE__ */ jsx35(Ellipsis01Icon, { size: 16 }) })
6208
6277
  }
6209
6278
  )
6210
6279
  }
@@ -6212,13 +6281,13 @@ function ChatQuickActionRow({
6212
6281
  ]
6213
6282
  }
6214
6283
  ),
6215
- /* @__PURE__ */ jsx33(
6284
+ /* @__PURE__ */ jsx35(
6216
6285
  "div",
6217
6286
  {
6218
6287
  ref: auto.measureRef,
6219
6288
  "aria-hidden": true,
6220
6289
  className: "pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-1",
6221
- children: chips.map((chip) => /* @__PURE__ */ jsx33(
6290
+ children: chips.map((chip) => /* @__PURE__ */ jsx35(
6222
6291
  Tag,
6223
6292
  {
6224
6293
  variant: chip.variant ?? "outline",
@@ -6235,7 +6304,7 @@ function ChatQuickActionRow({
6235
6304
  }
6236
6305
  var SKELETON_CHIP_WIDTHS = ["w-28", "w-32", "w-24", "w-36", "w-20"];
6237
6306
  function ChatQuickActionRowSkeleton({ className, count = 3, ...props }) {
6238
- return /* @__PURE__ */ jsx33("div", { "aria-hidden": true, className: cn("flex shrink-0 items-center gap-1", className), ...props, children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx33(
6307
+ return /* @__PURE__ */ jsx35("div", { "aria-hidden": true, className: cn("flex shrink-0 items-center gap-1", className), ...props, children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx35(
6239
6308
  Skeleton,
6240
6309
  {
6241
6310
  className: cn("h-8 shrink-0 rounded-md", SKELETON_CHIP_WIDTHS[i % SKELETON_CHIP_WIDTHS.length])
@@ -6247,7 +6316,7 @@ function ChatQuickActionRowSkeleton({ className, count = 3, ...props }) {
6247
6316
  // src/components/chat/quick-action-marquee.tsx
6248
6317
  init_cn();
6249
6318
  import * as React12 from "react";
6250
- import { jsx as jsx34 } from "react/jsx-runtime";
6319
+ import { jsx as jsx36 } from "react/jsx-runtime";
6251
6320
  var MIN_TRACK_ITEMS = 6;
6252
6321
  function QuickActionMarquee({
6253
6322
  items,
@@ -6263,7 +6332,7 @@ function QuickActionMarquee({
6263
6332
  return { track: [...padded, ...padded], half: padded.length };
6264
6333
  }, [items]);
6265
6334
  if (items.length === 0) return null;
6266
- return /* @__PURE__ */ jsx34("div", { className: cn("group overflow-hidden", className), children: /* @__PURE__ */ jsx34(
6335
+ return /* @__PURE__ */ jsx36("div", { className: cn("group overflow-hidden", className), children: /* @__PURE__ */ jsx36(
6267
6336
  "div",
6268
6337
  {
6269
6338
  className: cn(
@@ -6274,7 +6343,7 @@ function QuickActionMarquee({
6274
6343
  style: { "--qa-marquee-duration": `${duration}s` },
6275
6344
  children: track.map((item, index) => {
6276
6345
  const isHiddenCopy = index >= half;
6277
- return /* @__PURE__ */ jsx34("span", { "aria-hidden": isHiddenCopy || void 0, children: /* @__PURE__ */ jsx34(
6346
+ return /* @__PURE__ */ jsx36("span", { "aria-hidden": isHiddenCopy || void 0, children: /* @__PURE__ */ jsx36(
6278
6347
  QuickActionChipButton,
6279
6348
  {
6280
6349
  label: item.label,
@@ -6296,11 +6365,11 @@ import * as React14 from "react";
6296
6365
  init_cn();
6297
6366
  import * as React13 from "react";
6298
6367
  import { ChevronRight as ChevronRight2 } from "lucide-react";
6299
- import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
6368
+ import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
6300
6369
  var ChatTicketItem = React13.forwardRef(
6301
6370
  ({ className, ticket, onClick, isLoading = false, ...props }, ref) => {
6302
6371
  if (isLoading) {
6303
- return /* @__PURE__ */ jsxs28(
6372
+ return /* @__PURE__ */ jsxs30(
6304
6373
  "div",
6305
6374
  {
6306
6375
  "aria-hidden": true,
@@ -6310,12 +6379,12 @@ var ChatTicketItem = React13.forwardRef(
6310
6379
  className
6311
6380
  ),
6312
6381
  children: [
6313
- /* @__PURE__ */ jsxs28("div", { className: "flex flex-col justify-center flex-1 min-w-0 gap-1", children: [
6314
- /* @__PURE__ */ jsx35(Skeleton, { className: "h-5 w-1/2" }),
6315
- /* @__PURE__ */ jsx35(Skeleton, { className: "h-4 w-1/3" })
6382
+ /* @__PURE__ */ jsxs30("div", { className: "flex flex-col justify-center flex-1 min-w-0 gap-1", children: [
6383
+ /* @__PURE__ */ jsx37(Skeleton, { className: "h-5 w-1/2" }),
6384
+ /* @__PURE__ */ jsx37(Skeleton, { className: "h-4 w-1/3" })
6316
6385
  ] }),
6317
- /* @__PURE__ */ jsx35(Skeleton, { className: "h-8 w-20 rounded-r-md shrink-0" }),
6318
- /* @__PURE__ */ jsx35(Skeleton, { className: "size-12 rounded-md shrink-0" })
6386
+ /* @__PURE__ */ jsx37(Skeleton, { className: "h-8 w-20 rounded-r-md shrink-0" }),
6387
+ /* @__PURE__ */ jsx37(Skeleton, { className: "size-12 rounded-md shrink-0" })
6319
6388
  ]
6320
6389
  }
6321
6390
  );
@@ -6329,7 +6398,7 @@ var ChatTicketItem = React13.forwardRef(
6329
6398
  });
6330
6399
  const isResolved = ticket.statusKind === "RESOLVED" || resolveTicketStatus(ticket.status) === "RESOLVED";
6331
6400
  const subtitle = [ticket.ticketNumber, ticket.category, ticket.timeAgo].filter(Boolean).join(" \u2022 ");
6332
- return /* @__PURE__ */ jsxs28(
6401
+ return /* @__PURE__ */ jsxs30(
6333
6402
  "button",
6334
6403
  {
6335
6404
  ref,
@@ -6350,8 +6419,8 @@ var ChatTicketItem = React13.forwardRef(
6350
6419
  ),
6351
6420
  ...props,
6352
6421
  children: [
6353
- /* @__PURE__ */ jsxs28("div", { className: "flex flex-col justify-center flex-1 min-w-0 text-left", children: [
6354
- /* @__PURE__ */ jsx35(
6422
+ /* @__PURE__ */ jsxs30("div", { className: "flex flex-col justify-center flex-1 min-w-0 text-left", children: [
6423
+ /* @__PURE__ */ jsx37(
6355
6424
  "p",
6356
6425
  {
6357
6426
  className: cn(
@@ -6362,19 +6431,19 @@ var ChatTicketItem = React13.forwardRef(
6362
6431
  children: ticket.title
6363
6432
  }
6364
6433
  ),
6365
- subtitle && /* @__PURE__ */ jsx35("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
6434
+ subtitle && /* @__PURE__ */ jsx37("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
6366
6435
  ] }),
6367
- ticket.linkedTaskLabel && /* @__PURE__ */ jsx35(
6436
+ ticket.linkedTaskLabel && /* @__PURE__ */ jsx37(
6368
6437
  Tag,
6369
6438
  {
6370
6439
  label: ticket.linkedTaskLabel,
6371
6440
  variant: "outline",
6372
- icon: /* @__PURE__ */ jsx35(WrenchIcon, { size: 14, color: "var(--ods-text-secondary)" }),
6441
+ icon: /* @__PURE__ */ jsx37(WrenchIcon, { size: 14, color: "var(--ods-text-secondary)" }),
6373
6442
  className: "shrink-0 hidden sm:inline-flex"
6374
6443
  }
6375
6444
  ),
6376
- (statusTagProps.status || statusTagProps.label) && /* @__PURE__ */ jsx35(TicketStatusTag, { ...statusTagProps }),
6377
- /* @__PURE__ */ jsx35("div", { className: "flex items-center justify-center shrink-0 size-12 rounded-md bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx35(ChevronRight2, { className: "size-6 text-ods-text-secondary" }) })
6445
+ (statusTagProps.status || statusTagProps.label) && /* @__PURE__ */ jsx37(TicketStatusTag, { ...statusTagProps }),
6446
+ /* @__PURE__ */ jsx37("div", { className: "flex items-center justify-center shrink-0 size-12 rounded-md bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx37(ChevronRight2, { className: "size-6 text-ods-text-secondary" }) })
6378
6447
  ]
6379
6448
  }
6380
6449
  );
@@ -6383,7 +6452,7 @@ var ChatTicketItem = React13.forwardRef(
6383
6452
  ChatTicketItem.displayName = "ChatTicketItem";
6384
6453
 
6385
6454
  // src/components/chat/chat-ticket-list.tsx
6386
- import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
6455
+ import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
6387
6456
  var ChatTicketList = React14.forwardRef(
6388
6457
  ({ className, tickets, onTicketClick, isLoading = false, skeletonCount = 5, ...props }, ref) => {
6389
6458
  const scrollRef = React14.useRef(null);
@@ -6400,18 +6469,18 @@ var ChatTicketList = React14.forwardRef(
6400
6469
  updateFade();
6401
6470
  }, [ticketCount, updateFade]);
6402
6471
  if (isLoading) {
6403
- return /* @__PURE__ */ jsxs29("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
6404
- /* @__PURE__ */ jsx36("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
6405
- /* @__PURE__ */ jsx36("div", { className: "border border-ods-border rounded-md flex-1 min-h-0 overflow-hidden", children: Array.from({ length: skeletonCount }).map((_, i) => (
6472
+ return /* @__PURE__ */ jsxs31("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
6473
+ /* @__PURE__ */ jsx38("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
6474
+ /* @__PURE__ */ jsx38("div", { className: "border border-ods-border rounded-md flex-1 min-h-0 overflow-hidden", children: Array.from({ length: skeletonCount }).map((_, i) => (
6406
6475
  // eslint-disable-next-line react/no-array-index-key
6407
- /* @__PURE__ */ jsx36(ChatTicketItem, { isLoading: true }, i)
6476
+ /* @__PURE__ */ jsx38(ChatTicketItem, { isLoading: true }, i)
6408
6477
  )) })
6409
6478
  ] });
6410
6479
  }
6411
6480
  if (tickets.length === 0) return null;
6412
- return /* @__PURE__ */ jsxs29("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
6413
- /* @__PURE__ */ jsx36("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
6414
- /* @__PURE__ */ jsxs29(
6481
+ return /* @__PURE__ */ jsxs31("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
6482
+ /* @__PURE__ */ jsx38("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
6483
+ /* @__PURE__ */ jsxs31(
6415
6484
  "div",
6416
6485
  {
6417
6486
  className: cn(
@@ -6420,7 +6489,7 @@ var ChatTicketList = React14.forwardRef(
6420
6489
  !fadeBottom && "border-b rounded-b-md"
6421
6490
  ),
6422
6491
  children: [
6423
- /* @__PURE__ */ jsx36("div", { ref: scrollRef, className: "overflow-y-auto h-full", onScroll: updateFade, children: tickets.map((ticket) => /* @__PURE__ */ jsx36(
6492
+ /* @__PURE__ */ jsx38("div", { ref: scrollRef, className: "overflow-y-auto h-full", onScroll: updateFade, children: tickets.map((ticket) => /* @__PURE__ */ jsx38(
6424
6493
  ChatTicketItem,
6425
6494
  {
6426
6495
  ticket,
@@ -6428,7 +6497,7 @@ var ChatTicketList = React14.forwardRef(
6428
6497
  },
6429
6498
  ticket.id
6430
6499
  )) }),
6431
- /* @__PURE__ */ jsx36(
6500
+ /* @__PURE__ */ jsx38(
6432
6501
  "div",
6433
6502
  {
6434
6503
  "aria-hidden": true,
@@ -6439,7 +6508,7 @@ var ChatTicketList = React14.forwardRef(
6439
6508
  style: { background: "linear-gradient(0deg, transparent 0%, var(--color-bg) 100%)" }
6440
6509
  }
6441
6510
  ),
6442
- /* @__PURE__ */ jsx36(
6511
+ /* @__PURE__ */ jsx38(
6443
6512
  "div",
6444
6513
  {
6445
6514
  "aria-hidden": true,
@@ -6460,7 +6529,7 @@ ChatTicketList.displayName = "ChatTicketList";
6460
6529
 
6461
6530
  // src/components/chat/mingo-onboarding-card-skeleton.tsx
6462
6531
  init_cn();
6463
- import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
6532
+ import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
6464
6533
  function MingoOnboardingCardSkeleton({
6465
6534
  titleWidth = "w-32",
6466
6535
  slashWidth = "w-20",
@@ -6469,25 +6538,25 @@ function MingoOnboardingCardSkeleton({
6469
6538
  className
6470
6539
  }) {
6471
6540
  const hasChips = chipWidths.length > 0;
6472
- return /* @__PURE__ */ jsx37(
6541
+ return /* @__PURE__ */ jsx39(
6473
6542
  "div",
6474
6543
  {
6475
6544
  className: cn(
6476
6545
  "flex w-full items-start p-[var(--spacing-system-s)] bg-ods-card border-b border-ods-border last:border-b-0",
6477
6546
  className
6478
6547
  ),
6479
- children: /* @__PURE__ */ jsxs30("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
6480
- /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
6481
- /* @__PURE__ */ jsx37(Skeleton, { className: "size-4 shrink-0 rounded-sm" }),
6482
- /* @__PURE__ */ jsx37(Skeleton, { className: cn("h-3.5 rounded-sm", titleWidth) }),
6483
- /* @__PURE__ */ jsx37("span", { className: "flex-1" }),
6484
- /* @__PURE__ */ jsx37(Skeleton, { className: cn("h-3.5 rounded-sm shrink-0", slashWidth) })
6548
+ children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
6549
+ /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
6550
+ /* @__PURE__ */ jsx39(Skeleton, { className: "size-4 shrink-0 rounded-sm" }),
6551
+ /* @__PURE__ */ jsx39(Skeleton, { className: cn("h-3.5 rounded-sm", titleWidth) }),
6552
+ /* @__PURE__ */ jsx39("span", { className: "flex-1" }),
6553
+ /* @__PURE__ */ jsx39(Skeleton, { className: cn("h-3.5 rounded-sm shrink-0", slashWidth) })
6485
6554
  ] }),
6486
- /* @__PURE__ */ jsxs30("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
6487
- /* @__PURE__ */ jsx37(Skeleton, { className: "h-3.5 w-full rounded-sm" }),
6488
- descriptionLines === 2 ? /* @__PURE__ */ jsx37(Skeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
6555
+ /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
6556
+ /* @__PURE__ */ jsx39(Skeleton, { className: "h-3.5 w-full rounded-sm" }),
6557
+ descriptionLines === 2 ? /* @__PURE__ */ jsx39(Skeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
6489
6558
  ] }),
6490
- hasChips ? /* @__PURE__ */ jsx37("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ jsx37(Skeleton, { className: cn("h-7 rounded-md", w) }, i)) }) : null
6559
+ hasChips ? /* @__PURE__ */ jsx39("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ jsx39(Skeleton, { className: cn("h-7 rounded-md", w) }, i)) }) : null
6491
6560
  ] })
6492
6561
  }
6493
6562
  );
@@ -6496,7 +6565,7 @@ function MingoOnboardingListSkeleton({
6496
6565
  rows = 6,
6497
6566
  className
6498
6567
  }) {
6499
- return /* @__PURE__ */ jsx37(
6568
+ return /* @__PURE__ */ jsx39(
6500
6569
  "div",
6501
6570
  {
6502
6571
  role: "status",
@@ -6508,7 +6577,7 @@ function MingoOnboardingListSkeleton({
6508
6577
  ),
6509
6578
  children: Array.from({ length: rows }).map((_, i) => {
6510
6579
  const variant = ROW_VARIANTS[i % ROW_VARIANTS.length];
6511
- return /* @__PURE__ */ jsx37(
6580
+ return /* @__PURE__ */ jsx39(
6512
6581
  MingoOnboardingCardSkeleton,
6513
6582
  {
6514
6583
  titleWidth: variant.titleWidth,
@@ -6538,7 +6607,7 @@ import * as React16 from "react";
6538
6607
  init_cn();
6539
6608
  import * as React15 from "react";
6540
6609
  init_button2();
6541
- import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
6610
+ import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
6542
6611
  function dialogTime(d) {
6543
6612
  if (!d.timestamp) return null;
6544
6613
  const t = typeof d.timestamp === "string" ? Date.parse(d.timestamp) : d.timestamp.getTime();
@@ -6590,7 +6659,7 @@ function MingoChatHistoryRow({
6590
6659
  onClick: () => onRequestArchive(dialog)
6591
6660
  }
6592
6661
  ].filter(Boolean);
6593
- return /* @__PURE__ */ jsxs31(
6662
+ return /* @__PURE__ */ jsxs33(
6594
6663
  "div",
6595
6664
  {
6596
6665
  className: cn(
@@ -6599,7 +6668,7 @@ function MingoChatHistoryRow({
6599
6668
  isActive && "bg-ods-bg-hover"
6600
6669
  ),
6601
6670
  children: [
6602
- /* @__PURE__ */ jsxs31(
6671
+ /* @__PURE__ */ jsxs33(
6603
6672
  "div",
6604
6673
  {
6605
6674
  role: "button",
@@ -6613,8 +6682,8 @@ function MingoChatHistoryRow({
6613
6682
  },
6614
6683
  className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-s)] cursor-pointer focus:outline-none focus-visible:bg-ods-bg-hover",
6615
6684
  children: [
6616
- unread > 0 ? /* @__PURE__ */ jsx38("span", { className: "flex h-8 min-w-8 shrink-0 items-center justify-center rounded-md bg-ods-accent px-[var(--spacing-system-xsf)] text-h5 text-ods-text-on-accent", children: unread > 99 ? "99+" : unread }) : null,
6617
- /* @__PURE__ */ jsx38(
6685
+ unread > 0 ? /* @__PURE__ */ jsx40("span", { className: "flex h-8 min-w-8 shrink-0 items-center justify-center rounded-md bg-ods-accent px-[var(--spacing-system-xsf)] text-h5 text-ods-text-on-accent", children: unread > 99 ? "99+" : unread }) : null,
6686
+ /* @__PURE__ */ jsx40(
6618
6687
  "span",
6619
6688
  {
6620
6689
  className: "min-w-0 flex-1 truncate text-h4 text-ods-text-primary",
@@ -6630,7 +6699,7 @@ function MingoChatHistoryRow({
6630
6699
  // right edge, free of the content's left padding. Revealed on row
6631
6700
  // hover/focus; kept visible while its menu is open. Hidden on mobile —
6632
6701
  // it's a hover affordance (no hover on touch).
6633
- /* @__PURE__ */ jsx38(
6702
+ /* @__PURE__ */ jsx40(
6634
6703
  "span",
6635
6704
  {
6636
6705
  onClick: (e) => e.stopPropagation(),
@@ -6642,7 +6711,7 @@ function MingoChatHistoryRow({
6642
6711
  "self-stretch shrink-0 transition-opacity max-md:hidden",
6643
6712
  menuOpen ? "opacity-100" : "opacity-0 group-hover/row:opacity-100 focus-within:opacity-100"
6644
6713
  ),
6645
- children: /* @__PURE__ */ jsx38(
6714
+ children: /* @__PURE__ */ jsx40(
6646
6715
  ActionsMenuDropdown,
6647
6716
  {
6648
6717
  triggerAriaLabel: "Chat actions",
@@ -6650,14 +6719,14 @@ function MingoChatHistoryRow({
6650
6719
  open: menuOpen,
6651
6720
  onOpenChange: setMenuOpen,
6652
6721
  onCloseAutoFocus: (e) => e.preventDefault(),
6653
- customTrigger: /* @__PURE__ */ jsx38(
6722
+ customTrigger: /* @__PURE__ */ jsx40(
6654
6723
  Button,
6655
6724
  {
6656
6725
  variant: "transparent",
6657
6726
  size: "icon",
6658
6727
  "aria-label": "Chat actions",
6659
6728
  className: "h-full md:h-full rounded-none p-0 text-ods-text-secondary hover:text-ods-text-primary",
6660
- children: /* @__PURE__ */ jsx38(Ellipsis01Icon, {})
6729
+ children: /* @__PURE__ */ jsx40(Ellipsis01Icon, {})
6661
6730
  }
6662
6731
  )
6663
6732
  }
@@ -6677,7 +6746,7 @@ function MingoChatHistorySkeleton({
6677
6746
  { withBadge: 2, widths: ["w-3/5", "w-4/5", "w-2/5", "w-3/4"] },
6678
6747
  { withBadge: 0, widths: ["w-1/2", "w-3/5", "w-2/3"] }
6679
6748
  ];
6680
- return /* @__PURE__ */ jsxs31(
6749
+ return /* @__PURE__ */ jsxs33(
6681
6750
  "div",
6682
6751
  {
6683
6752
  "aria-hidden": true,
@@ -6686,19 +6755,19 @@ function MingoChatHistorySkeleton({
6686
6755
  className
6687
6756
  ),
6688
6757
  children: [
6689
- searchable && /* @__PURE__ */ jsxs31("div", { className: "flex h-11 md:h-12 shrink-0 items-center gap-2 rounded-[6px] border border-ods-border bg-ods-card px-3", children: [
6690
- /* @__PURE__ */ jsx38("div", { className: "size-4 md:size-6 shrink-0 animate-pulse rounded bg-ods-border" }),
6691
- /* @__PURE__ */ jsx38("div", { className: "h-4 w-32 animate-pulse rounded bg-ods-border" })
6758
+ searchable && /* @__PURE__ */ jsxs33("div", { className: "flex h-11 md:h-12 shrink-0 items-center gap-2 rounded-[6px] border border-ods-border bg-ods-card px-3", children: [
6759
+ /* @__PURE__ */ jsx40("div", { className: "size-4 md:size-6 shrink-0 animate-pulse rounded bg-ods-border" }),
6760
+ /* @__PURE__ */ jsx40("div", { className: "h-4 w-32 animate-pulse rounded bg-ods-border" })
6692
6761
  ] }),
6693
- groups.map((group, g) => /* @__PURE__ */ jsxs31("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
6694
- /* @__PURE__ */ jsx38("div", { className: "h-3 w-16 animate-pulse rounded bg-ods-border" }),
6695
- /* @__PURE__ */ jsx38("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.widths.map((w, i) => /* @__PURE__ */ jsxs31(
6762
+ groups.map((group, g) => /* @__PURE__ */ jsxs33("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
6763
+ /* @__PURE__ */ jsx40("div", { className: "h-3 w-16 animate-pulse rounded bg-ods-border" }),
6764
+ /* @__PURE__ */ jsx40("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.widths.map((w, i) => /* @__PURE__ */ jsxs33(
6696
6765
  "div",
6697
6766
  {
6698
6767
  className: "flex h-12 items-center gap-[var(--spacing-system-xsf)] bg-ods-bg border-b border-ods-border px-[var(--spacing-system-s)] last:border-b-0",
6699
6768
  children: [
6700
- i < group.withBadge && /* @__PURE__ */ jsx38("div", { className: "h-8 w-8 shrink-0 animate-pulse rounded-md bg-ods-border" }),
6701
- /* @__PURE__ */ jsx38("div", { className: cn("h-4 animate-pulse rounded bg-ods-border", w) })
6769
+ i < group.withBadge && /* @__PURE__ */ jsx40("div", { className: "h-8 w-8 shrink-0 animate-pulse rounded-md bg-ods-border" }),
6770
+ /* @__PURE__ */ jsx40("div", { className: cn("h-4 animate-pulse rounded bg-ods-border", w) })
6702
6771
  ]
6703
6772
  },
6704
6773
  i
@@ -6720,7 +6789,7 @@ function DialogSearchBar({
6720
6789
  lastEmitted.current = debounced;
6721
6790
  onSearchChange(debounced);
6722
6791
  }, [debounced, onSearchChange]);
6723
- return /* @__PURE__ */ jsx38(
6792
+ return /* @__PURE__ */ jsx40(
6724
6793
  Input,
6725
6794
  {
6726
6795
  type: "text",
@@ -6728,7 +6797,7 @@ function DialogSearchBar({
6728
6797
  onChange: (e) => setValue(e.target.value),
6729
6798
  placeholder: "Search for Chats",
6730
6799
  "aria-label": "Search chats",
6731
- startAdornment: /* @__PURE__ */ jsx38(SearchIcon, {}),
6800
+ startAdornment: /* @__PURE__ */ jsx40(SearchIcon, {}),
6732
6801
  className: "shrink-0"
6733
6802
  }
6734
6803
  );
@@ -6786,23 +6855,23 @@ function MingoChatHistory({
6786
6855
  io.observe(sentinel);
6787
6856
  return () => io.disconnect();
6788
6857
  }, [hasMore]);
6789
- return /* @__PURE__ */ jsxs31("div", { className: cn("relative flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)]", className), children: [
6790
- onSearchChange ? /* @__PURE__ */ jsx38(DialogSearchBar, { initialValue: searchQuery, onSearchChange }) : null,
6791
- /* @__PURE__ */ jsxs31("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
6792
- /* @__PURE__ */ jsxs31(
6858
+ return /* @__PURE__ */ jsxs33("div", { className: cn("relative flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)]", className), children: [
6859
+ onSearchChange ? /* @__PURE__ */ jsx40(DialogSearchBar, { initialValue: searchQuery, onSearchChange }) : null,
6860
+ /* @__PURE__ */ jsxs33("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
6861
+ /* @__PURE__ */ jsxs33(
6793
6862
  "div",
6794
6863
  {
6795
6864
  ref: scrollRef,
6796
6865
  onScroll: updateFade,
6797
6866
  className: "flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)] overflow-y-auto",
6798
6867
  children: [
6799
- noSearchResults ? /* @__PURE__ */ jsx38("p", { className: "py-[var(--spacing-system-m)] text-center text-h5 text-ods-text-secondary", children: "No chats found" }) : groups.map((group) => /* @__PURE__ */ jsxs31(
6868
+ noSearchResults ? /* @__PURE__ */ jsx40("p", { className: "py-[var(--spacing-system-m)] text-center text-h5 text-ods-text-secondary", children: "No chats found" }) : groups.map((group) => /* @__PURE__ */ jsxs33(
6800
6869
  "div",
6801
6870
  {
6802
6871
  className: "flex flex-col gap-[var(--spacing-system-xxs)]",
6803
6872
  children: [
6804
- /* @__PURE__ */ jsx38("p", { className: "text-h5 text-ods-text-secondary", children: group.label }),
6805
- /* @__PURE__ */ jsx38("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.items.map((dialog) => /* @__PURE__ */ jsx38(
6873
+ /* @__PURE__ */ jsx40("p", { className: "text-h5 text-ods-text-secondary", children: group.label }),
6874
+ /* @__PURE__ */ jsx40("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.items.map((dialog) => /* @__PURE__ */ jsx40(
6806
6875
  MingoChatHistoryRow,
6807
6876
  {
6808
6877
  dialog,
@@ -6817,11 +6886,11 @@ function MingoChatHistory({
6817
6886
  },
6818
6887
  group.key
6819
6888
  )),
6820
- hasMore ? /* @__PURE__ */ jsx38("div", { ref: sentinelRef, className: "h-px shrink-0" }) : null
6889
+ hasMore ? /* @__PURE__ */ jsx40("div", { ref: sentinelRef, className: "h-px shrink-0" }) : null
6821
6890
  ]
6822
6891
  }
6823
6892
  ),
6824
- /* @__PURE__ */ jsx38(
6893
+ /* @__PURE__ */ jsx40(
6825
6894
  "div",
6826
6895
  {
6827
6896
  "aria-hidden": true,
@@ -6834,7 +6903,7 @@ function MingoChatHistory({
6834
6903
  }
6835
6904
  }
6836
6905
  ),
6837
- /* @__PURE__ */ jsx38(
6906
+ /* @__PURE__ */ jsx40(
6838
6907
  "div",
6839
6908
  {
6840
6909
  "aria-hidden": true,
@@ -6853,27 +6922,27 @@ function MingoChatHistory({
6853
6922
 
6854
6923
  // src/components/chat/mingo-welcome.tsx
6855
6924
  init_button2();
6856
- import { Fragment as Fragment8, jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
6925
+ import { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
6857
6926
  var DEFAULT_SUBTITLE = "Ready to help with your technical tasks. What can I do for you?";
6858
6927
  var DEFAULT_FEATURE_CARDS = [
6859
6928
  {
6860
6929
  id: "answers",
6861
- icon: /* @__PURE__ */ jsx39(Rocket01Icon, { size: 16 }),
6930
+ icon: /* @__PURE__ */ jsx41(Rocket01Icon, { size: 16 }),
6862
6931
  text: "Get instant answers about\ndevices, tickets, and clients"
6863
6932
  },
6864
6933
  {
6865
6934
  id: "scripts",
6866
- icon: /* @__PURE__ */ jsx39(BracketCurlyIcon, { size: 16 }),
6935
+ icon: /* @__PURE__ */ jsx41(BracketCurlyIcon, { size: 16 }),
6867
6936
  text: "Run scripts and queries\nthrough natural language"
6868
6937
  },
6869
6938
  {
6870
6939
  id: "summarize",
6871
- icon: /* @__PURE__ */ jsx39(SearchIcon, { size: 16 }),
6940
+ icon: /* @__PURE__ */ jsx41(SearchIcon, { size: 16 }),
6872
6941
  text: "Summarize long ticket\nthreads or activity history"
6873
6942
  },
6874
6943
  {
6875
6944
  id: "delegate",
6876
- icon: /* @__PURE__ */ jsx39(LayersIcon, { size: 16 }),
6945
+ icon: /* @__PURE__ */ jsx41(LayersIcon, { size: 16 }),
6877
6946
  text: "Delegate tasks, let Mingo\nwork in the background"
6878
6947
  }
6879
6948
  ];
@@ -6943,7 +7012,7 @@ function MingoWelcome({
6943
7012
  const cellCount = featureCards.length;
6944
7013
  const lastRowStart = cellCount - (cellCount % 2 || 2);
6945
7014
  const showPinnedRegion = !!dialogHistory || !isLoadingHistory && !loadError;
6946
- return /* @__PURE__ */ jsxs32(
7015
+ return /* @__PURE__ */ jsxs34(
6947
7016
  "div",
6948
7017
  {
6949
7018
  className: cn(
@@ -6954,32 +7023,32 @@ function MingoWelcome({
6954
7023
  className
6955
7024
  ),
6956
7025
  children: [
6957
- dialogHistory ?? (loadError ? /* @__PURE__ */ jsxs32("div", { className: "flex flex-1 min-h-0 flex-col items-center justify-center gap-[var(--spacing-system-m)] text-center", children: [
6958
- /* @__PURE__ */ jsx39(AlertCircleIcon, { className: "h-8 w-8 text-ods-text-secondary shrink-0" }),
6959
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
6960
- /* @__PURE__ */ jsx39("p", { className: "text-h4 text-ods-text-primary", children: "Couldn\u2019t load your chats" }),
6961
- /* @__PURE__ */ jsx39("p", { className: "text-body-sm text-ods-text-secondary", children: "Something went wrong reaching the server. Check your connection and try again." })
7026
+ dialogHistory ?? (loadError ? /* @__PURE__ */ jsxs34("div", { className: "flex flex-1 min-h-0 flex-col items-center justify-center gap-[var(--spacing-system-m)] text-center", children: [
7027
+ /* @__PURE__ */ jsx41(AlertCircleIcon, { className: "h-8 w-8 text-ods-text-secondary shrink-0" }),
7028
+ /* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
7029
+ /* @__PURE__ */ jsx41("p", { className: "text-h4 text-ods-text-primary", children: "Couldn\u2019t load your chats" }),
7030
+ /* @__PURE__ */ jsx41("p", { className: "text-body-sm text-ods-text-secondary", children: "Something went wrong reaching the server. Check your connection and try again." })
6962
7031
  ] }),
6963
- onRetry && /* @__PURE__ */ jsx39(
7032
+ onRetry && /* @__PURE__ */ jsx41(
6964
7033
  Button,
6965
7034
  {
6966
7035
  variant: "outline",
6967
7036
  size: "small",
6968
- leftIcon: /* @__PURE__ */ jsx39(Refresh01RightIcon, {}),
7037
+ leftIcon: /* @__PURE__ */ jsx41(Refresh01RightIcon, {}),
6969
7038
  onClick: onRetry,
6970
7039
  children: "Try again"
6971
7040
  }
6972
7041
  )
6973
- ] }) : isLoadingHistory ? /* @__PURE__ */ jsx39(MingoChatHistorySkeleton, { searchable: historySearchable }) : /* @__PURE__ */ jsx39(Fragment8, { children: /* @__PURE__ */ jsxs32("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
6974
- /* @__PURE__ */ jsxs32(
7042
+ ] }) : isLoadingHistory ? /* @__PURE__ */ jsx41(MingoChatHistorySkeleton, { searchable: historySearchable }) : /* @__PURE__ */ jsx41(Fragment8, { children: /* @__PURE__ */ jsxs34("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
7043
+ /* @__PURE__ */ jsxs34(
6975
7044
  "div",
6976
7045
  {
6977
7046
  ref: scrollRef,
6978
7047
  onScroll: updateScrollFade,
6979
7048
  className: "flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)] overflow-y-auto",
6980
7049
  children: [
6981
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-l)] px-[var(--spacing-system-l)] py-[var(--spacing-system-xxl)] text-center", children: [
6982
- /* @__PURE__ */ jsx39(
7050
+ /* @__PURE__ */ jsxs34("div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-l)] px-[var(--spacing-system-l)] py-[var(--spacing-system-xxl)] text-center", children: [
7051
+ /* @__PURE__ */ jsx41(
6983
7052
  MingoIcon,
6984
7053
  {
6985
7054
  className: "h-12 w-12",
@@ -6988,12 +7057,12 @@ function MingoWelcome({
6988
7057
  cornerColor: "var(--ods-flamingo-cyan-base)"
6989
7058
  }
6990
7059
  ),
6991
- /* @__PURE__ */ jsxs32("div", { className: "flex w-full flex-col gap-1", children: [
6992
- /* @__PURE__ */ jsx39("p", { className: "text-h4 text-ods-text-primary", children: heading }),
6993
- /* @__PURE__ */ jsx39("p", { className: "text-h6 text-ods-text-secondary", children: subtitle })
7060
+ /* @__PURE__ */ jsxs34("div", { className: "flex w-full flex-col gap-1", children: [
7061
+ /* @__PURE__ */ jsx41("p", { className: "text-h4 text-ods-text-primary", children: heading }),
7062
+ /* @__PURE__ */ jsx41("p", { className: "text-h6 text-ods-text-secondary", children: subtitle })
6994
7063
  ] })
6995
7064
  ] }),
6996
- cellCount > 0 && /* @__PURE__ */ jsx39("div", { className: "grid shrink-0 grid-cols-2 overflow-hidden rounded-md border border-ods-border bg-ods-card", children: featureCards.map((card, i) => /* @__PURE__ */ jsxs32(
7065
+ cellCount > 0 && /* @__PURE__ */ jsx41("div", { className: "grid shrink-0 grid-cols-2 overflow-hidden rounded-md border border-ods-border bg-ods-card", children: featureCards.map((card, i) => /* @__PURE__ */ jsxs34(
6997
7066
  "div",
6998
7067
  {
6999
7068
  className: cn(
@@ -7002,8 +7071,8 @@ function MingoWelcome({
7002
7071
  i < lastRowStart && "border-b border-ods-border"
7003
7072
  ),
7004
7073
  children: [
7005
- card.icon ? /* @__PURE__ */ jsx39("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-primary", children: card.icon }) : null,
7006
- /* @__PURE__ */ jsx39("p", { className: "text-h4 text-ods-text-secondary whitespace-pre-line", children: card.text })
7074
+ card.icon ? /* @__PURE__ */ jsx41("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-primary", children: card.icon }) : null,
7075
+ /* @__PURE__ */ jsx41("p", { className: "text-h4 text-ods-text-secondary whitespace-pre-line", children: card.text })
7007
7076
  ]
7008
7077
  },
7009
7078
  card.id
@@ -7011,7 +7080,7 @@ function MingoWelcome({
7011
7080
  ]
7012
7081
  }
7013
7082
  ),
7014
- /* @__PURE__ */ jsx39(
7083
+ /* @__PURE__ */ jsx41(
7015
7084
  "div",
7016
7085
  {
7017
7086
  "aria-hidden": true,
@@ -7024,7 +7093,7 @@ function MingoWelcome({
7024
7093
  }
7025
7094
  }
7026
7095
  ),
7027
- /* @__PURE__ */ jsx39(
7096
+ /* @__PURE__ */ jsx41(
7028
7097
  "div",
7029
7098
  {
7030
7099
  "aria-hidden": true,
@@ -7038,32 +7107,32 @@ function MingoWelcome({
7038
7107
  }
7039
7108
  )
7040
7109
  ] }) })),
7041
- showPinnedRegion && /* @__PURE__ */ jsxs32("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-m)]", children: [
7042
- resolvedPromo && !promoDismissed && /* @__PURE__ */ jsxs32("div", { className: "relative shrink-0 flex items-center gap-[var(--spacing-system-m)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-m)] pr-[var(--spacing-system-xl)]", children: [
7043
- /* @__PURE__ */ jsx39("span", { className: "hidden @2xl:flex size-4 shrink-0 items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ jsx39(Arrow01DownIcon, { size: 16 }) }),
7044
- /* @__PURE__ */ jsxs32("div", { className: "flex min-w-0 flex-col items-start gap-1", children: [
7045
- /* @__PURE__ */ jsx39("span", { className: "text-h3 text-ods-text-primary", children: resolvedPromo.title }),
7046
- /* @__PURE__ */ jsx39("span", { className: "text-h6 text-ods-text-secondary", children: resolvedPromo.description })
7110
+ showPinnedRegion && /* @__PURE__ */ jsxs34("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-m)]", children: [
7111
+ resolvedPromo && !promoDismissed && /* @__PURE__ */ jsxs34("div", { className: "relative shrink-0 flex items-center gap-[var(--spacing-system-m)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-m)] pr-[var(--spacing-system-xl)]", children: [
7112
+ /* @__PURE__ */ jsx41("span", { className: "hidden @2xl:flex size-4 shrink-0 items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ jsx41(Arrow01DownIcon, { size: 16 }) }),
7113
+ /* @__PURE__ */ jsxs34("div", { className: "flex min-w-0 flex-col items-start gap-1", children: [
7114
+ /* @__PURE__ */ jsx41("span", { className: "text-h3 text-ods-text-primary", children: resolvedPromo.title }),
7115
+ /* @__PURE__ */ jsx41("span", { className: "text-h6 text-ods-text-secondary", children: resolvedPromo.description })
7047
7116
  ] }),
7048
- /* @__PURE__ */ jsx39(
7117
+ /* @__PURE__ */ jsx41(
7049
7118
  "button",
7050
7119
  {
7051
7120
  type: "button",
7052
7121
  onClick: dismissPromo,
7053
7122
  "aria-label": "Dismiss",
7054
7123
  className: "absolute right-2 top-2 text-ods-text-secondary transition-colors hover:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent rounded-sm",
7055
- children: /* @__PURE__ */ jsx39(XmarkIcon, { size: 16 })
7124
+ children: /* @__PURE__ */ jsx41(XmarkIcon, { size: 16 })
7056
7125
  }
7057
7126
  )
7058
7127
  ] }),
7059
- (onStartGuideChat || quickActions && quickActions.length > 0) && /* @__PURE__ */ jsx39(
7128
+ (onStartGuideChat || quickActions && quickActions.length > 0) && /* @__PURE__ */ jsx41(
7060
7129
  ChatQuickActionRow,
7061
7130
  {
7062
- leading: onStartGuideChat && /* @__PURE__ */ jsx39(
7131
+ leading: onStartGuideChat && /* @__PURE__ */ jsx41(
7063
7132
  QuickActionChipButton,
7064
7133
  {
7065
7134
  label: "Start Guide Chat",
7066
- icon: /* @__PURE__ */ jsx39(CompassIcon, { size: 16 }),
7135
+ icon: /* @__PURE__ */ jsx41(CompassIcon, { size: 16 }),
7067
7136
  variant: hasExistingChats ? "outline" : "primary",
7068
7137
  onSelect: onStartGuideChat
7069
7138
  }
@@ -7088,7 +7157,7 @@ function MingoWelcome({
7088
7157
  // src/components/chat/guide-welcome.tsx
7089
7158
  init_cn();
7090
7159
  import * as React17 from "react";
7091
- import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
7160
+ import { jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
7092
7161
  var DEFAULT_TITLE = "Guide Mode Chat";
7093
7162
  function GuideWelcome({
7094
7163
  title = DEFAULT_TITLE,
@@ -7142,7 +7211,7 @@ function GuideWelcome({
7142
7211
  })),
7143
7212
  [quickActions, icon, onQuickAction, onQuickActionHover, onQuickActionHoverEnd]
7144
7213
  );
7145
- return /* @__PURE__ */ jsxs33(
7214
+ return /* @__PURE__ */ jsxs35(
7146
7215
  "div",
7147
7216
  {
7148
7217
  className: cn(
@@ -7150,20 +7219,20 @@ function GuideWelcome({
7150
7219
  className
7151
7220
  ),
7152
7221
  children: [
7153
- /* @__PURE__ */ jsxs33("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
7154
- /* @__PURE__ */ jsxs33(
7222
+ /* @__PURE__ */ jsxs35("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
7223
+ /* @__PURE__ */ jsxs35(
7155
7224
  "div",
7156
7225
  {
7157
7226
  ref: scrollRef,
7158
7227
  onScroll: updateScrollFade,
7159
7228
  className: "flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)] overflow-y-auto",
7160
7229
  children: [
7161
- /* @__PURE__ */ jsxs33("div", { className: "flex flex-1 flex-col items-center gap-[var(--spacing-system-l)] px-[var(--spacing-system-l)] py-[var(--spacing-system-xxl)] text-center", children: [
7230
+ /* @__PURE__ */ jsxs35("div", { className: "flex flex-1 flex-col items-center gap-[var(--spacing-system-l)] px-[var(--spacing-system-l)] py-[var(--spacing-system-xxl)] text-center", children: [
7162
7231
  icon && (icon.name || icon.url) ? (
7163
7232
  // Agent-mode identity glyph (chat-config Identity tab). Sized to
7164
7233
  // match the default Mingo mark (48px).
7165
- /* @__PURE__ */ jsx40(EntityIcon, { icon: { name: icon.name, url: icon.url, props: icon.props }, size: 48 })
7166
- ) : /* @__PURE__ */ jsx40(
7234
+ /* @__PURE__ */ jsx42(EntityIcon, { icon: { name: icon.name, url: icon.url, props: icon.props }, size: 48 })
7235
+ ) : /* @__PURE__ */ jsx42(
7167
7236
  MingoIcon,
7168
7237
  {
7169
7238
  className: "h-12 w-12",
@@ -7172,16 +7241,16 @@ function GuideWelcome({
7172
7241
  cornerColor: "var(--ods-flamingo-cyan-base)"
7173
7242
  }
7174
7243
  ),
7175
- /* @__PURE__ */ jsxs33("div", { className: "flex w-full flex-col gap-1", children: [
7176
- /* @__PURE__ */ jsx40("p", { className: "text-h4 text-ods-text-primary", children: title }),
7177
- subtitle ? /* @__PURE__ */ jsx40("p", { className: "text-h6 text-ods-text-secondary", children: subtitle }) : subtitleLoading ? /* @__PURE__ */ jsx40("div", { className: "flex w-full justify-center", children: /* @__PURE__ */ jsx40(Skeleton, { className: "h-4 w-3/4 max-w-80 rounded-sm" }) }) : null
7244
+ /* @__PURE__ */ jsxs35("div", { className: "flex w-full flex-col gap-1", children: [
7245
+ /* @__PURE__ */ jsx42("p", { className: "text-h4 text-ods-text-primary", children: title }),
7246
+ subtitle ? /* @__PURE__ */ jsx42("p", { className: "text-h6 text-ods-text-secondary", children: subtitle }) : subtitleLoading ? /* @__PURE__ */ jsx42("div", { className: "flex w-full justify-center", children: /* @__PURE__ */ jsx42(Skeleton, { className: "h-4 w-3/4 max-w-80 rounded-sm" }) }) : null
7178
7247
  ] })
7179
7248
  ] }),
7180
7249
  children
7181
7250
  ]
7182
7251
  }
7183
7252
  ),
7184
- /* @__PURE__ */ jsx40(
7253
+ /* @__PURE__ */ jsx42(
7185
7254
  "div",
7186
7255
  {
7187
7256
  "aria-hidden": true,
@@ -7194,7 +7263,7 @@ function GuideWelcome({
7194
7263
  }
7195
7264
  }
7196
7265
  ),
7197
- /* @__PURE__ */ jsx40(
7266
+ /* @__PURE__ */ jsx42(
7198
7267
  "div",
7199
7268
  {
7200
7269
  "aria-hidden": true,
@@ -7208,7 +7277,7 @@ function GuideWelcome({
7208
7277
  }
7209
7278
  )
7210
7279
  ] }),
7211
- quickActions.length > 0 && /* @__PURE__ */ jsx40(
7280
+ quickActions.length > 0 && /* @__PURE__ */ jsx42(
7212
7281
  ChatQuickActionRow,
7213
7282
  {
7214
7283
  wrap: true,
@@ -7221,65 +7290,6 @@ function GuideWelcome({
7221
7290
  );
7222
7291
  }
7223
7292
 
7224
- // src/components/chat/msp-organization-card.tsx
7225
- init_cn();
7226
- init_button2();
7227
- import { jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
7228
- function MspOrganizationCard({
7229
- name,
7230
- website,
7231
- logoUrl,
7232
- title,
7233
- href,
7234
- onOpenWebsite,
7235
- className
7236
- }) {
7237
- const actionLabel = website ? `Open ${website}` : "Open organization website";
7238
- return /* @__PURE__ */ jsxs34(
7239
- "div",
7240
- {
7241
- className: cn(
7242
- // Inset ring (box-shadow) instead of `border` so the 1px stroke does not
7243
- // add to the box height — matches Figma's 80px frame (16 + 48 + 16) with
7244
- // its inside-aligned stroke. A real border would render 82px.
7245
- "flex items-start gap-[var(--spacing-system-m)] rounded-md bg-ods-bg p-[var(--spacing-system-m)] ring-1 ring-inset ring-ods-border",
7246
- className
7247
- ),
7248
- children: [
7249
- /* @__PURE__ */ jsx41(SquareAvatar, { src: logoUrl, alt: name, fallback: name, size: "lg", variant: "square" }),
7250
- /* @__PURE__ */ jsxs34("div", { className: "flex min-w-0 flex-1 flex-col", children: [
7251
- /* @__PURE__ */ jsx41("span", { className: "truncate text-h3 text-ods-text-primary", children: title ?? `Your IT is managed by ${name}` }),
7252
- website ? /* @__PURE__ */ jsx41("span", { className: "truncate text-h4 text-ods-text-secondary", children: website }) : null
7253
- ] }),
7254
- href ? /* @__PURE__ */ jsx41(Button, { asChild: true, variant: "outline", size: "icon", "aria-label": actionLabel, children: /* @__PURE__ */ jsx41("a", { href, target: "_blank", rel: "noreferrer noopener", children: /* @__PURE__ */ jsx41(ExternalLinkIcon, {}) }) }) : onOpenWebsite ? /* @__PURE__ */ jsx41(Button, { variant: "outline", size: "icon", "aria-label": actionLabel, onClick: onOpenWebsite, children: /* @__PURE__ */ jsx41(ExternalLinkIcon, {}) }) : null
7255
- ]
7256
- }
7257
- );
7258
- }
7259
-
7260
- // src/components/chat/msp-organization-card-skeleton.tsx
7261
- init_cn();
7262
- import { jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
7263
- function MspOrganizationCardSkeleton({ className }) {
7264
- return /* @__PURE__ */ jsxs35(
7265
- "div",
7266
- {
7267
- className: cn(
7268
- "flex items-start gap-[var(--spacing-system-m)] rounded-md bg-ods-bg p-[var(--spacing-system-m)] ring-1 ring-inset ring-ods-border",
7269
- className
7270
- ),
7271
- children: [
7272
- /* @__PURE__ */ jsx42(Skeleton, { className: "size-12 shrink-0 rounded-md" }),
7273
- /* @__PURE__ */ jsxs35("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-2 self-stretch", children: [
7274
- /* @__PURE__ */ jsx42(Skeleton, { className: "h-5 w-3/5 rounded-md" }),
7275
- /* @__PURE__ */ jsx42(Skeleton, { className: "h-4 w-2/5 rounded-md" })
7276
- ] }),
7277
- /* @__PURE__ */ jsx42(Skeleton, { className: "size-12 shrink-0 rounded-md" })
7278
- ]
7279
- }
7280
- );
7281
- }
7282
-
7283
7293
  // src/components/chat/guide-mode-banner.tsx
7284
7294
  init_cn();
7285
7295
 
@@ -24089,7 +24099,7 @@ function OrganizationCard({
24089
24099
 
24090
24100
  // src/components/ui/service-card.tsx
24091
24101
  init_cn();
24092
- import { useMemo as useMemo34, useState as useState85 } from "react";
24102
+ import { useMemo as useMemo35, useState as useState85 } from "react";
24093
24103
  import { ExternalLink as ExternalLink7 } from "lucide-react";
24094
24104
 
24095
24105
  // src/components/providers/dynamic-theme-provider.tsx
@@ -33623,7 +33633,7 @@ function NotificationsHeaderButton({
33623
33633
  }
33624
33634
 
33625
33635
  // src/components/navigation/app-layout.tsx
33626
- import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useState as useState83 } from "react";
33636
+ import { createContext as createContext9, Suspense as Suspense2, useCallback as useCallback35, useContext as useContext9, useMemo as useMemo34, useRef as useRef45, useState as useState83 } from "react";
33627
33637
 
33628
33638
  // src/components/navigation/mobile-burger-menu.tsx
33629
33639
  import React109, { useCallback as useCallback34, useEffect as useEffect64 } from "react";
@@ -33829,6 +33839,10 @@ var AppLayoutDrawerContainerContext = createContext9(null);
33829
33839
  function useAppLayoutDrawerContainer() {
33830
33840
  return useContext9(AppLayoutDrawerContainerContext);
33831
33841
  }
33842
+ var AppLayoutDrawerCoordinationContext = createContext9(null);
33843
+ function useAppLayoutDrawerCoordination() {
33844
+ return useContext9(AppLayoutDrawerCoordinationContext);
33845
+ }
33832
33846
  function AppLayout({
33833
33847
  children,
33834
33848
  sidebarConfig,
@@ -33842,13 +33856,27 @@ function AppLayout({
33842
33856
  }) {
33843
33857
  const [mobileMenuOpen, setMobileMenuOpen] = useState83(false);
33844
33858
  const [drawerContainer, setDrawerContainer] = useState83(null);
33859
+ const mobileMenuOpenRef = useRef45(mobileMenuOpen);
33860
+ mobileMenuOpenRef.current = mobileMenuOpen;
33861
+ const drawerHandlesRef = useRef45(/* @__PURE__ */ new Set());
33845
33862
  const handleToggleMobileMenu = useCallback35(() => {
33846
- setMobileMenuOpen((prev) => !prev);
33863
+ const opening = !mobileMenuOpenRef.current;
33864
+ if (opening) {
33865
+ for (const handle of drawerHandlesRef.current) handle.close();
33866
+ }
33867
+ setMobileMenuOpen(opening);
33847
33868
  }, []);
33848
33869
  const handleCloseMobileMenu = useCallback35(() => {
33849
33870
  setMobileMenuOpen(false);
33850
33871
  }, []);
33851
- return /* @__PURE__ */ jsx262(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsxs207("div", { className: cn("flex h-screen bg-ods-bg", className), children: [
33872
+ const drawerCoordination = useMemo34(() => ({
33873
+ notifyDrawerDidOpen: () => setMobileMenuOpen(false),
33874
+ registerDrawer: (handle) => {
33875
+ drawerHandlesRef.current.add(handle);
33876
+ return () => drawerHandlesRef.current.delete(handle);
33877
+ }
33878
+ }), []);
33879
+ return /* @__PURE__ */ jsx262(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsx262(AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ jsxs207("div", { className: cn("flex h-screen bg-ods-bg", className), children: [
33852
33880
  /* @__PURE__ */ jsx262(NavigationSidebar, { config: sidebarConfig, disabled }),
33853
33881
  /* @__PURE__ */ jsx262(
33854
33882
  MobileBurgerMenu,
@@ -33883,7 +33911,7 @@ function AppLayout({
33883
33911
  }
33884
33912
  )
33885
33913
  ] })
33886
- ] }) });
33914
+ ] }) }) });
33887
33915
  }
33888
33916
 
33889
33917
  // src/components/navigation/app-layout-drawer.tsx
@@ -33911,6 +33939,21 @@ var AppLayoutDrawerRoot = ({
33911
33939
  },
33912
33940
  [isControlled, onOpenChange]
33913
33941
  );
33942
+ const coordination = useAppLayoutDrawerCoordination();
33943
+ const openRef = React110.useRef(open);
33944
+ openRef.current = open;
33945
+ const handleOpenChangeRef = React110.useRef(handleOpenChange);
33946
+ handleOpenChangeRef.current = handleOpenChange;
33947
+ React110.useEffect(() => {
33948
+ if (open) coordination?.notifyDrawerDidOpen();
33949
+ }, [open, coordination]);
33950
+ React110.useEffect(() => {
33951
+ return coordination?.registerDrawer({
33952
+ close: () => {
33953
+ if (openRef.current) handleOpenChangeRef.current(false);
33954
+ }
33955
+ });
33956
+ }, [coordination]);
33914
33957
  return /* @__PURE__ */ jsx263(DrawerOpenContext.Provider, { value: open, children: /* @__PURE__ */ jsx263(
33915
33958
  DialogPrimitive3.Root,
33916
33959
  {
@@ -34906,7 +34949,7 @@ ScriptArguments.displayName = "ScriptArguments";
34906
34949
 
34907
34950
  // src/components/shared/onboarding/onboarding-walkthrough.tsx
34908
34951
  init_button2();
34909
- import React112, { useRef as useRef46, useCallback as useCallback37 } from "react";
34952
+ import React112, { useRef as useRef47, useCallback as useCallback37 } from "react";
34910
34953
 
34911
34954
  // src/components/shared/onboarding/onboarding-step-card.tsx
34912
34955
  import React111 from "react";
@@ -35030,10 +35073,10 @@ function OnboardingWalkthrough({
35030
35073
  allStepsComplete,
35031
35074
  markMultipleComplete
35032
35075
  } = useOnboardingState(storageKey);
35033
- const hasAutoMarkedRef = useRef46(false);
35034
- const autoMarkingInProgressRef = useRef46(false);
35035
- const lastCompletionStatusRef = useRef46(null);
35036
- const actionInProgressRef = useRef46(/* @__PURE__ */ new Set());
35076
+ const hasAutoMarkedRef = useRef47(false);
35077
+ const autoMarkingInProgressRef = useRef47(false);
35078
+ const lastCompletionStatusRef = useRef47(null);
35079
+ const actionInProgressRef = useRef47(/* @__PURE__ */ new Set());
35037
35080
  React112.useEffect(() => {
35038
35081
  if (isLoadingCompletion) {
35039
35082
  hasAutoMarkedRef.current = false;
@@ -35374,7 +35417,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
35374
35417
  function ServiceCardRowItem({ row }) {
35375
35418
  const [revealed, setRevealed] = useState85(false);
35376
35419
  const { copy, copied } = useCopyToClipboard();
35377
- const actions = useMemo34(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
35420
+ const actions = useMemo35(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
35378
35421
  const displayValue = row.isSecret ? /* @__PURE__ */ jsx276(MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ jsx276("span", { children: row.value });
35379
35422
  const handleCopy = () => copy(row.copyValue ?? row.value);
35380
35423
  const openInNewTab = () => {
@@ -35718,7 +35761,7 @@ var ListLoader = (props) => /* @__PURE__ */ jsx281(ContentLoader, { ...props, va
35718
35761
 
35719
35762
  // src/components/ui/table/table.tsx
35720
35763
  init_cn();
35721
- import { useEffect as useEffect67, useRef as useRef48 } from "react";
35764
+ import { useEffect as useEffect67, useRef as useRef49 } from "react";
35722
35765
  init_pagination();
35723
35766
  init_button2();
35724
35767
 
@@ -36478,8 +36521,8 @@ function Table({
36478
36521
  };
36479
36522
  const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
36480
36523
  const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
36481
- const sentinelRef = useRef48(null);
36482
- const onLoadMoreRef = useRef48(infiniteScroll?.onLoadMore);
36524
+ const sentinelRef = useRef49(null);
36525
+ const onLoadMoreRef = useRef49(infiniteScroll?.onLoadMore);
36483
36526
  onLoadMoreRef.current = infiniteScroll?.onLoadMore;
36484
36527
  useEffect67(() => {
36485
36528
  if (!infiniteScroll?.hasNextPage || infiniteScroll.isFetchingNextPage) return;
@@ -36695,11 +36738,11 @@ function TableTimestampCell({
36695
36738
  // src/components/ui/query-report-table/query-report-table.tsx
36696
36739
  init_cn();
36697
36740
  init_button2();
36698
- import { useMemo as useMemo35 } from "react";
36741
+ import { useMemo as useMemo36 } from "react";
36699
36742
 
36700
36743
  // src/components/ui/query-report-table/query-report-table-header.tsx
36701
36744
  init_cn();
36702
- import { useRef as useRef49, useState as useState87, useCallback as useCallback38 } from "react";
36745
+ import { useRef as useRef50, useState as useState87, useCallback as useCallback38 } from "react";
36703
36746
  import { jsx as jsx293, jsxs as jsxs233 } from "react/jsx-runtime";
36704
36747
  function QueryReportTableHeader({
36705
36748
  columns,
@@ -36728,7 +36771,7 @@ function QueryReportTableHeader({
36728
36771
  );
36729
36772
  }
36730
36773
  function TruncatedHeaderCell({ value, width }) {
36731
- const textRef = useRef49(null);
36774
+ const textRef = useRef50(null);
36732
36775
  const [isTruncated, setIsTruncated] = useState87(false);
36733
36776
  const checkTruncation = useCallback38(() => {
36734
36777
  const el = textRef.current;
@@ -36758,7 +36801,7 @@ function TruncatedHeaderCell({ value, width }) {
36758
36801
 
36759
36802
  // src/components/ui/query-report-table/query-report-table-row.tsx
36760
36803
  init_cn();
36761
- import { useRef as useRef50, useState as useState88, useCallback as useCallback39 } from "react";
36804
+ import { useRef as useRef51, useState as useState88, useCallback as useCallback39 } from "react";
36762
36805
  import { jsx as jsx294, jsxs as jsxs234 } from "react/jsx-runtime";
36763
36806
  function QueryReportTableRow({
36764
36807
  row,
@@ -36804,7 +36847,7 @@ function QueryReportTableRow({
36804
36847
  );
36805
36848
  }
36806
36849
  function TruncatedCell({ value, className }) {
36807
- const textRef = useRef50(null);
36850
+ const textRef = useRef51(null);
36808
36851
  const [isTruncated, setIsTruncated] = useState88(false);
36809
36852
  const checkTruncation = useCallback39(() => {
36810
36853
  const el = textRef.current;
@@ -36933,7 +36976,7 @@ function QueryReportTable({
36933
36976
  tableClassName
36934
36977
  }) {
36935
36978
  const isCompact = variant === "compact";
36936
- const columns = useMemo35(
36979
+ const columns = useMemo36(
36937
36980
  () => deriveColumns(data, columnOrder),
36938
36981
  [data, columnOrder]
36939
36982
  );
@@ -37069,7 +37112,7 @@ init_cn();
37069
37112
 
37070
37113
  // src/components/ui/data-table/data-table-column-filter.tsx
37071
37114
  init_cn();
37072
- import { useCallback as useCallback40, useMemo as useMemo36 } from "react";
37115
+ import { useCallback as useCallback40, useMemo as useMemo37 } from "react";
37073
37116
 
37074
37117
  // src/components/ui/data-table/utils.ts
37075
37118
  function getHideClasses2(hideAt) {
@@ -37113,7 +37156,7 @@ function DataTableColumnFilter({
37113
37156
  }) {
37114
37157
  const currentValue = column.getFilterValue();
37115
37158
  const activeCount = currentValue?.length ?? 0;
37116
- const sections = useMemo36(
37159
+ const sections = useMemo37(
37117
37160
  () => [
37118
37161
  {
37119
37162
  id: column.id,
@@ -37125,7 +37168,7 @@ function DataTableColumnFilter({
37125
37168
  ],
37126
37169
  [column.id, label, options]
37127
37170
  );
37128
- const currentFilters = useMemo36(
37171
+ const currentFilters = useMemo37(
37129
37172
  () => ({ [column.id]: currentValue ?? EMPTY_ARRAY }),
37130
37173
  [column.id, currentValue]
37131
37174
  );
@@ -37304,7 +37347,7 @@ function DataTableEmpty({ className, ...props }) {
37304
37347
  // src/components/ui/data-table/data-table-row.tsx
37305
37348
  init_next_link();
37306
37349
  init_cn();
37307
- import { memo as memo5, useCallback as useCallback41, useRef as useRef51 } from "react";
37350
+ import { memo as memo5, useCallback as useCallback41, useRef as useRef52 } from "react";
37308
37351
  import { flexRender as flexRender2 } from "@tanstack/react-table";
37309
37352
 
37310
37353
  // src/components/ui/data-table/data-table-skeleton.tsx
@@ -37388,7 +37431,7 @@ function DataTableRowImpl({
37388
37431
  const hasSubRow = subRow != null && subRow !== false;
37389
37432
  const isLinkMode = Boolean(href) && !onClick;
37390
37433
  const isWholeCardLink = isLinkMode && !hasSubRow;
37391
- const containerRef = useRef51(null);
37434
+ const containerRef = useRef52(null);
37392
37435
  const handleClick = useCallback41(
37393
37436
  (e) => {
37394
37437
  const target = e.target;
@@ -37554,7 +37597,7 @@ function DataTableBody({
37554
37597
  }
37555
37598
 
37556
37599
  // src/components/ui/data-table/data-table-infinite-footer.tsx
37557
- import { useEffect as useEffect68, useRef as useRef52 } from "react";
37600
+ import { useEffect as useEffect68, useRef as useRef53 } from "react";
37558
37601
  import { Fragment as Fragment57, jsx as jsx304, jsxs as jsxs242 } from "react/jsx-runtime";
37559
37602
  function DataTableInfiniteFooter({
37560
37603
  hasNextPage,
@@ -37563,8 +37606,8 @@ function DataTableInfiniteFooter({
37563
37606
  skeletonRows = 3,
37564
37607
  rootMargin = "200px"
37565
37608
  }) {
37566
- const sentinelRef = useRef52(null);
37567
- const onLoadMoreRef = useRef52(onLoadMore);
37609
+ const sentinelRef = useRef53(null);
37610
+ const onLoadMoreRef = useRef53(onLoadMore);
37568
37611
  onLoadMoreRef.current = onLoadMore;
37569
37612
  useEffect68(() => {
37570
37613
  if (!hasNextPage || isFetchingNextPage) return;
@@ -38201,7 +38244,7 @@ function FilterList({
38201
38244
  // src/components/ui/tag-search-input.tsx
38202
38245
  import {
38203
38246
  useEffect as useEffect70,
38204
- useRef as useRef54,
38247
+ useRef as useRef55,
38205
38248
  useState as useState90
38206
38249
  } from "react";
38207
38250
  init_cn();
@@ -38236,9 +38279,9 @@ function TagSearchInput({
38236
38279
  limitTags,
38237
38280
  placeholder: currentPlaceholder
38238
38281
  });
38239
- const wrapperRef = useRef54(null);
38240
- const hiddenTagsRef = useRef54(null);
38241
- const hiddenTagsPopupRef = useRef54(null);
38282
+ const wrapperRef = useRef55(null);
38283
+ const hiddenTagsRef = useRef55(null);
38284
+ const hiddenTagsPopupRef = useRef55(null);
38242
38285
  const [showHiddenTags, setShowHiddenTags] = useState90(false);
38243
38286
  useEffect70(() => {
38244
38287
  if (!showHiddenTags) return;
@@ -38395,7 +38438,7 @@ function TagSearchInput({
38395
38438
  }
38396
38439
 
38397
38440
  // src/components/ui/markdown-editor.tsx
38398
- import { useRef as useRef55, useCallback as useCallback42, useState as useState91, useEffect as useEffect71 } from "react";
38441
+ import { useRef as useRef56, useCallback as useCallback42, useState as useState91, useEffect as useEffect71 } from "react";
38399
38442
  init_cn();
38400
38443
  import { Loader2 as Loader29, Upload as Upload8 } from "lucide-react";
38401
38444
  import { jsx as jsx309, jsxs as jsxs247 } from "react/jsx-runtime";
@@ -38450,7 +38493,7 @@ function MarkdownEditor({
38450
38493
  onFileUploaded,
38451
38494
  renderPreview
38452
38495
  }) {
38453
- const fileInputRef = useRef55(null);
38496
+ const fileInputRef = useRef56(null);
38454
38497
  const [isUploading, setIsUploading] = useState91(false);
38455
38498
  const [uploadProgress, setUploadProgress] = useState91("");
38456
38499
  const [defaultExtraCommands, setDefaultExtraCommands] = useState91([]);
@@ -38543,11 +38586,11 @@ function MarkdownEditor({
38543
38586
  }
38544
38587
  } : null;
38545
38588
  const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
38546
- const wrapperRef = useRef55(null);
38547
- const isDraggingRef = useRef55(false);
38548
- const mouseYRef = useRef55(0);
38549
- const rafRef = useRef55(0);
38550
- const scrollParentRef = useRef55(window);
38589
+ const wrapperRef = useRef56(null);
38590
+ const isDraggingRef = useRef56(false);
38591
+ const mouseYRef = useRef56(0);
38592
+ const rafRef = useRef56(0);
38593
+ const scrollParentRef = useRef56(window);
38551
38594
  const EDGE_ZONE = 60;
38552
38595
  const MAX_SCROLL_SPEED = 15;
38553
38596
  const findScrollParent = useCallback42((el) => {
@@ -44125,7 +44168,7 @@ function renderChatInlineEntityCard(chatRef, options = {}) {
44125
44168
  }
44126
44169
 
44127
44170
  // src/components/chat/hooks/use-chunk-catchup.ts
44128
- import { useCallback as useCallback44, useRef as useRef59 } from "react";
44171
+ import { useCallback as useCallback44, useRef as useRef60 } from "react";
44129
44172
  function makeSeqKey(messageType, chunkType, sequenceId) {
44130
44173
  return `${messageType}:${chunkType}:${sequenceId}`;
44131
44174
  }
@@ -44147,20 +44190,20 @@ function useChunkCatchup({
44147
44190
  chatTypes = [CHAT_TYPE.CLIENT],
44148
44191
  fetchChunks
44149
44192
  }) {
44150
- const processedSequenceKeys = useRef59(/* @__PURE__ */ new Set());
44151
- const lastSequenceId = useRef59(null);
44152
- const fetchingInProgress = useRef59(false);
44153
- const lastFetchParams = useRef59(null);
44154
- const chunkBuffer = useRef59([]);
44155
- const bufferUntilInitialCatchupComplete = useRef59(false);
44156
- const hasCompletedInitialCatchup = useRef59(false);
44157
- const dialogIdRef = useRef59(dialogId);
44193
+ const processedSequenceKeys = useRef60(/* @__PURE__ */ new Set());
44194
+ const lastSequenceId = useRef60(null);
44195
+ const fetchingInProgress = useRef60(false);
44196
+ const lastFetchParams = useRef60(null);
44197
+ const chunkBuffer = useRef60([]);
44198
+ const bufferUntilInitialCatchupComplete = useRef60(false);
44199
+ const hasCompletedInitialCatchup = useRef60(false);
44200
+ const dialogIdRef = useRef60(dialogId);
44158
44201
  dialogIdRef.current = dialogId;
44159
- const chatTypesRef = useRef59(chatTypes);
44202
+ const chatTypesRef = useRef60(chatTypes);
44160
44203
  chatTypesRef.current = chatTypes;
44161
- const fetchChunksRef = useRef59(fetchChunks);
44204
+ const fetchChunksRef = useRef60(fetchChunks);
44162
44205
  fetchChunksRef.current = fetchChunks;
44163
- const onChunkReceivedRef = useRef59(onChunkReceived);
44206
+ const onChunkReceivedRef = useRef60(onChunkReceived);
44164
44207
  onChunkReceivedRef.current = onChunkReceived;
44165
44208
  const processChunk = useCallback44((chunk, messageType, forceProcess = false) => {
44166
44209
  if (bufferUntilInitialCatchupComplete.current && !forceProcess) {
@@ -44337,7 +44380,7 @@ function useChunkCatchup({
44337
44380
  }
44338
44381
 
44339
44382
  // src/components/chat/hooks/use-jetstream-dialog-subscription.ts
44340
- import { useEffect as useEffect75, useRef as useRef60, useState as useState101 } from "react";
44383
+ import { useEffect as useEffect75, useRef as useRef61, useState as useState101 } from "react";
44341
44384
  var DEFAULT_INACTIVE_THRESHOLD_MS = 5 * 6e4;
44342
44385
  var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
44343
44386
  function useJetStreamDialogSubscription({
@@ -44360,51 +44403,51 @@ function useJetStreamDialogSubscription({
44360
44403
  const [isSubscribed, setIsSubscribed] = useState101(false);
44361
44404
  const [reconnectionCount, setReconnectionCount] = useState101(0);
44362
44405
  const [currentStreamSeq, setCurrentStreamSeq] = useState101(null);
44363
- const clientRef = useRef60(null);
44364
- const subscriptionRef = useRef60(null);
44365
- const highestStreamSeqRef = useRef60(null);
44366
- const onEventRef = useRef60(onEvent);
44406
+ const clientRef = useRef61(null);
44407
+ const subscriptionRef = useRef61(null);
44408
+ const highestStreamSeqRef = useRef61(null);
44409
+ const onEventRef = useRef61(onEvent);
44367
44410
  useEffect75(() => {
44368
44411
  onEventRef.current = onEvent;
44369
44412
  }, [onEvent]);
44370
- const onConnectRef = useRef60(onConnect);
44413
+ const onConnectRef = useRef61(onConnect);
44371
44414
  useEffect75(() => {
44372
44415
  onConnectRef.current = onConnect;
44373
44416
  }, [onConnect]);
44374
- const onDisconnectRef = useRef60(onDisconnect);
44417
+ const onDisconnectRef = useRef61(onDisconnect);
44375
44418
  useEffect75(() => {
44376
44419
  onDisconnectRef.current = onDisconnect;
44377
44420
  }, [onDisconnect]);
44378
- const onSubscribedRef = useRef60(onSubscribed);
44421
+ const onSubscribedRef = useRef61(onSubscribed);
44379
44422
  useEffect75(() => {
44380
44423
  onSubscribedRef.current = onSubscribed;
44381
44424
  }, [onSubscribed]);
44382
- const onBeforeReconnectRef = useRef60(onBeforeReconnect);
44425
+ const onBeforeReconnectRef = useRef61(onBeforeReconnect);
44383
44426
  useEffect75(() => {
44384
44427
  onBeforeReconnectRef.current = onBeforeReconnect;
44385
44428
  }, [onBeforeReconnect]);
44386
- const getNatsWsUrlRef = useRef60(getNatsWsUrl);
44429
+ const getNatsWsUrlRef = useRef61(getNatsWsUrl);
44387
44430
  useEffect75(() => {
44388
44431
  getNatsWsUrlRef.current = getNatsWsUrl;
44389
44432
  }, [getNatsWsUrl]);
44390
- const reconnectionBackoffRef = useRef60(reconnectionBackoff);
44433
+ const reconnectionBackoffRef = useRef61(reconnectionBackoff);
44391
44434
  useEffect75(() => {
44392
44435
  reconnectionBackoffRef.current = reconnectionBackoff;
44393
44436
  }, [reconnectionBackoff]);
44394
- const optStartSeqRef = useRef60(optStartSeq);
44437
+ const optStartSeqRef = useRef61(optStartSeq);
44395
44438
  useEffect75(() => {
44396
44439
  optStartSeqRef.current = optStartSeq;
44397
44440
  }, [optStartSeq]);
44398
- const inactiveThresholdRef = useRef60(inactiveThresholdMs);
44441
+ const inactiveThresholdRef = useRef61(inactiveThresholdMs);
44399
44442
  useEffect75(() => {
44400
44443
  inactiveThresholdRef.current = inactiveThresholdMs;
44401
44444
  }, [inactiveThresholdMs]);
44402
- const hadConnectionBeforeRef = useRef60(false);
44403
- const clientConfigRef = useRef60(clientConfig);
44445
+ const hadConnectionBeforeRef = useRef61(false);
44446
+ const clientConfigRef = useRef61(clientConfig);
44404
44447
  useEffect75(() => {
44405
44448
  clientConfigRef.current = clientConfig;
44406
44449
  }, [clientConfig]);
44407
- const currentWsUrlRef = useRef60("");
44450
+ const currentWsUrlRef = useRef61("");
44408
44451
  const wsUrl = getNatsWsUrl();
44409
44452
  useEffect75(() => {
44410
44453
  if (!enabled || !wsUrl) {
@@ -44578,7 +44621,7 @@ function useJetStreamDialogSubscription({
44578
44621
  }
44579
44622
 
44580
44623
  // src/components/chat/hooks/use-nats-dialog-subscription.ts
44581
- import { useEffect as useEffect76, useRef as useRef61, useState as useState102 } from "react";
44624
+ import { useEffect as useEffect76, useRef as useRef62, useState as useState102 } from "react";
44582
44625
  function useNatsDialogSubscription({
44583
44626
  enabled,
44584
44627
  dialogId,
@@ -44595,42 +44638,42 @@ function useNatsDialogSubscription({
44595
44638
  const [isConnected, setIsConnected] = useState102(false);
44596
44639
  const [isSubscribed, setIsSubscribed] = useState102(false);
44597
44640
  const [reconnectionCount, setReconnectionCount] = useState102(0);
44598
- const clientRef = useRef61(null);
44599
- const subscriptionRefs = useRef61(/* @__PURE__ */ new Map());
44600
- const onEventRef = useRef61(onEvent);
44641
+ const clientRef = useRef62(null);
44642
+ const subscriptionRefs = useRef62(/* @__PURE__ */ new Map());
44643
+ const onEventRef = useRef62(onEvent);
44601
44644
  useEffect76(() => {
44602
44645
  onEventRef.current = onEvent;
44603
44646
  }, [onEvent]);
44604
- const onConnectRef = useRef61(onConnect);
44647
+ const onConnectRef = useRef62(onConnect);
44605
44648
  useEffect76(() => {
44606
44649
  onConnectRef.current = onConnect;
44607
44650
  }, [onConnect]);
44608
- const onDisconnectRef = useRef61(onDisconnect);
44651
+ const onDisconnectRef = useRef62(onDisconnect);
44609
44652
  useEffect76(() => {
44610
44653
  onDisconnectRef.current = onDisconnect;
44611
44654
  }, [onDisconnect]);
44612
- const onSubscribedRef = useRef61(onSubscribed);
44655
+ const onSubscribedRef = useRef62(onSubscribed);
44613
44656
  useEffect76(() => {
44614
44657
  onSubscribedRef.current = onSubscribed;
44615
44658
  }, [onSubscribed]);
44616
- const onBeforeReconnectRef = useRef61(onBeforeReconnect);
44659
+ const onBeforeReconnectRef = useRef62(onBeforeReconnect);
44617
44660
  useEffect76(() => {
44618
44661
  onBeforeReconnectRef.current = onBeforeReconnect;
44619
44662
  }, [onBeforeReconnect]);
44620
- const hadConnectionBeforeRef = useRef61(false);
44621
- const getNatsWsUrlRef = useRef61(getNatsWsUrl);
44663
+ const hadConnectionBeforeRef = useRef62(false);
44664
+ const getNatsWsUrlRef = useRef62(getNatsWsUrl);
44622
44665
  useEffect76(() => {
44623
44666
  getNatsWsUrlRef.current = getNatsWsUrl;
44624
44667
  }, [getNatsWsUrl]);
44625
- const reconnectionBackoffRef = useRef61(reconnectionBackoff);
44668
+ const reconnectionBackoffRef = useRef62(reconnectionBackoff);
44626
44669
  useEffect76(() => {
44627
44670
  reconnectionBackoffRef.current = reconnectionBackoff;
44628
44671
  }, [reconnectionBackoff]);
44629
- const clientConfigRef = useRef61(clientConfig);
44672
+ const clientConfigRef = useRef62(clientConfig);
44630
44673
  useEffect76(() => {
44631
44674
  clientConfigRef.current = clientConfig;
44632
44675
  }, [clientConfig]);
44633
- const currentWsUrlRef = useRef61("");
44676
+ const currentWsUrlRef = useRef62("");
44634
44677
  const wsUrl = getNatsWsUrl();
44635
44678
  useEffect76(() => {
44636
44679
  if (!enabled || !wsUrl) {
@@ -44714,13 +44757,13 @@ function useNatsDialogSubscription({
44714
44757
  };
44715
44758
  }, [enabled, wsUrl]);
44716
44759
  const topicsKey = topics.join(",");
44717
- const lastSubscribedDialogIdRef = useRef61(null);
44718
- const isConnectedRef = useRef61(isConnected);
44760
+ const lastSubscribedDialogIdRef = useRef62(null);
44761
+ const isConnectedRef = useRef62(isConnected);
44719
44762
  useEffect76(() => {
44720
44763
  isConnectedRef.current = isConnected;
44721
44764
  }, [isConnected]);
44722
- const currentDialogIdRef = useRef61(null);
44723
- const abortControllerRef = useRef61(null);
44765
+ const currentDialogIdRef = useRef62(null);
44766
+ const abortControllerRef = useRef62(null);
44724
44767
  useEffect76(() => {
44725
44768
  currentDialogIdRef.current = dialogId;
44726
44769
  if (!enabled || !dialogId) {
@@ -44852,7 +44895,7 @@ function buildNatsWsUrl(apiBaseUrl, options) {
44852
44895
  }
44853
44896
 
44854
44897
  // src/components/chat/hooks/use-realtime-chunk-processor.ts
44855
- import { useCallback as useCallback45, useRef as useRef62, useEffect as useEffect77 } from "react";
44898
+ import { useCallback as useCallback45, useRef as useRef63, useEffect as useEffect77 } from "react";
44856
44899
 
44857
44900
  // src/components/chat/utils/chunk-parser.ts
44858
44901
  function normalizeToolCalls(raw) {
@@ -45503,13 +45546,13 @@ function useRealtimeChunkProcessor(options) {
45503
45546
  batchApprovalsEnabled = true,
45504
45547
  isDirectMode = false
45505
45548
  } = options;
45506
- const accumulatorRef = useRef62(
45549
+ const accumulatorRef = useRef63(
45507
45550
  createMessageSegmentAccumulator({
45508
45551
  onApprove: callbacks.onApprove,
45509
45552
  onReject: callbacks.onReject
45510
45553
  })
45511
45554
  );
45512
- const hasInitializedWithData = useRef62(false);
45555
+ const hasInitializedWithData = useRef63(false);
45513
45556
  useEffect77(() => {
45514
45557
  if (initialState && !hasInitializedWithData.current) {
45515
45558
  accumulatorRef.current.initializeWithState(initialState);
@@ -45523,14 +45566,14 @@ function useRealtimeChunkProcessor(options) {
45523
45566
  hasInitializedWithData.current = true;
45524
45567
  }
45525
45568
  }, [initialState, callbacks]);
45526
- const isInStreamRef = useRef62(false);
45527
- const hasEverStreamedRef = useRef62(false);
45528
- const directModeFlagRef = useRef62(isDirectMode);
45529
- const sawDirectMessageRef = useRef62(false);
45569
+ const isInStreamRef = useRef63(false);
45570
+ const hasEverStreamedRef = useRef63(false);
45571
+ const directModeFlagRef = useRef63(isDirectMode);
45572
+ const sawDirectMessageRef = useRef63(false);
45530
45573
  useEffect77(() => {
45531
45574
  directModeFlagRef.current = isDirectMode;
45532
45575
  }, [isDirectMode]);
45533
- const pendingEscalatedRef = useRef62(/* @__PURE__ */ new Map());
45576
+ const pendingEscalatedRef = useRef63(/* @__PURE__ */ new Map());
45534
45577
  const processChunk = useCallback45(
45535
45578
  (chunk) => {
45536
45579
  const action = parseChunkToAction(chunk);
@@ -45913,7 +45956,7 @@ function useEmptyStateConfig(emptyStateUrl, options) {
45913
45956
  }
45914
45957
 
45915
45958
  // src/components/chat/hooks/use-chat-attachments.ts
45916
- import { useCallback as useCallback46, useMemo as useMemo39, useRef as useRef63, useState as useState104 } from "react";
45959
+ import { useCallback as useCallback46, useMemo as useMemo40, useRef as useRef64, useState as useState104 } from "react";
45917
45960
  import { fileTypeFromBlob } from "file-type";
45918
45961
  var CHAT_ATTACHMENTS_BUCKET = "chat-attachments";
45919
45962
  var CHAT_ATTACHMENTS_FOLDER = "chat";
@@ -45990,7 +46033,7 @@ function useChatAttachments() {
45990
46033
  const runtime = useRequiredChatRuntime();
45991
46034
  const uploadUrlEndpoint = runtime.endpoints.attachmentUploadUrl;
45992
46035
  const [attachments, setAttachments] = useState104([]);
45993
- const controllersRef = useRef63(/* @__PURE__ */ new Map());
46036
+ const controllersRef = useRef64(/* @__PURE__ */ new Map());
45994
46037
  const updateOne = useCallback46((id, patch) => {
45995
46038
  setAttachments((prev) => prev.map((a) => a.id === id ? { ...a, ...patch } : a));
45996
46039
  }, []);
@@ -46079,7 +46122,7 @@ function useChatAttachments() {
46079
46122
  },
46080
46123
  [uploadUrlEndpoint, updateOne]
46081
46124
  );
46082
- const attachmentsRef = useRef63([]);
46125
+ const attachmentsRef = useRef64([]);
46083
46126
  attachmentsRef.current = attachments;
46084
46127
  const addFiles = useCallback46(
46085
46128
  (files) => {
@@ -46130,7 +46173,7 @@ function useChatAttachments() {
46130
46173
  },
46131
46174
  [uploadOne]
46132
46175
  );
46133
- const readyAttachments = useMemo39(
46176
+ const readyAttachments = useMemo40(
46134
46177
  () => attachments.filter(
46135
46178
  (a) => a.status === "ready" && !!a.storagePath && !!a.viewToken
46136
46179
  ).map((a) => ({
@@ -46156,13 +46199,13 @@ function useChatAttachments() {
46156
46199
  }
46157
46200
 
46158
46201
  // src/components/chat/hooks/use-chat-attachment-image-gallery.tsx
46159
- import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef64, useState as useState105 } from "react";
46202
+ import { useCallback as useCallback47, useEffect as useEffect79, useRef as useRef65, useState as useState105 } from "react";
46160
46203
  import { jsx as jsx333 } from "react/jsx-runtime";
46161
46204
  var CLOSED = { isOpen: false, images: [], initialIndex: 0 };
46162
46205
  function useChatAttachmentImageGallery() {
46163
46206
  const runtime = useRequiredChatRuntime();
46164
46207
  const viewUrlPrefix = runtime.endpoints.attachmentViewUrlPrefix;
46165
- const panelRef = useRef64(null);
46208
+ const panelRef = useRef65(null);
46166
46209
  const [state, setState] = useState105(CLOSED);
46167
46210
  const handleClose = useCallback47(() => setState(CLOSED), []);
46168
46211
  useEffect79(() => {
@@ -46266,10 +46309,10 @@ function useChatIdentity() {
46266
46309
  }
46267
46310
 
46268
46311
  // src/components/chat/hooks/use-close-on-navigation.ts
46269
- import { useEffect as useEffect81, useRef as useRef65 } from "react";
46312
+ import { useEffect as useEffect81, useRef as useRef66 } from "react";
46270
46313
  function useCloseOnNavigation(close, pathname) {
46271
- const prevPathnameRef = useRef65(null);
46272
- const initializedRef = useRef65(false);
46314
+ const prevPathnameRef = useRef66(null);
46315
+ const initializedRef = useRef66(false);
46273
46316
  useEffect81(() => {
46274
46317
  if (!initializedRef.current) {
46275
46318
  initializedRef.current = true;
@@ -46284,14 +46327,14 @@ function useCloseOnNavigation(close, pathname) {
46284
46327
  }
46285
46328
 
46286
46329
  // src/components/chat/hooks/use-chat.ts
46287
- import { useState as useState108, useCallback as useCallback49, useEffect as useEffect82, useRef as useRef67 } from "react";
46330
+ import { useState as useState108, useCallback as useCallback49, useEffect as useEffect82, useRef as useRef68 } from "react";
46288
46331
 
46289
46332
  // src/components/chat/hooks/use-sse.ts
46290
- import { useState as useState107, useCallback as useCallback48, useRef as useRef66 } from "react";
46333
+ import { useState as useState107, useCallback as useCallback48, useRef as useRef67 } from "react";
46291
46334
  function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
46292
46335
  const [isStreaming, setIsStreaming] = useState107(false);
46293
46336
  const [error, setError] = useState107(null);
46294
- const abortControllerRef = useRef66(null);
46337
+ const abortControllerRef = useRef67(null);
46295
46338
  const fallbackStream = useCallback48(async function* () {
46296
46339
  throw new Error(
46297
46340
  "[useSSE] No streamFn provided and `useMock: true` is no longer wired into the lib. Supply a `streamFn` (see `createDocStreamFn` in use-embedded-chat) or migrate the mock to your host code."
@@ -46359,8 +46402,8 @@ function useChat({
46359
46402
  } = {}) {
46360
46403
  const [messages, setMessages] = useState108(() => initialMessages ?? []);
46361
46404
  const [isTyping, setIsTyping] = useState108(false);
46362
- const currentAssistantSegmentsRef = useRef67([]);
46363
- const onMessagesChangeRef = useRef67(onMessagesChange);
46405
+ const currentAssistantSegmentsRef = useRef68([]);
46406
+ const onMessagesChangeRef = useRef68(onMessagesChange);
46364
46407
  onMessagesChangeRef.current = onMessagesChange;
46365
46408
  useEffect82(() => {
46366
46409
  onMessagesChangeRef.current?.(messages);
@@ -46651,7 +46694,7 @@ function useChat({
46651
46694
  }
46652
46695
 
46653
46696
  // src/components/chat/hooks/use-sse-chat-adapter.ts
46654
- import { useState as useState109, useEffect as useEffect83, useCallback as useCallback50, useMemo as useMemo40, useRef as useRef68 } from "react";
46697
+ import { useState as useState109, useEffect as useEffect83, useCallback as useCallback50, useMemo as useMemo41, useRef as useRef69 } from "react";
46655
46698
  function createEmptyTurnMeta() {
46656
46699
  return {
46657
46700
  provider: null,
@@ -46972,24 +47015,24 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
46972
47015
  const runtime = useRequiredChatRuntime();
46973
47016
  const source = runtime.source || DEFAULT_CHAT_SOURCE;
46974
47017
  const tableIdForDocumentType = options?.tableIdForDocumentType ?? defaultTableIdForDocumentType;
46975
- const persistedRef = useRef68(null);
47018
+ const persistedRef = useRef69(null);
46976
47019
  if (persistedRef.current === null) {
46977
47020
  pruneStaleChatStorage(source);
46978
47021
  persistedRef.current = loadPersistedChat(source) || { messages: [], sources: [], sendCount: 0 };
46979
47022
  }
46980
- const sourcesMapRef = useRef68(
47023
+ const sourcesMapRef = useRef69(
46981
47024
  new Map(persistedRef.current.sources)
46982
47025
  );
46983
- const refsMapRef = useRef68(
47026
+ const refsMapRef = useRef69(
46984
47027
  new Map(persistedRef.current.refs ?? [])
46985
47028
  );
46986
- const metaMapRef = useRef68(/* @__PURE__ */ new Map());
46987
- const messagesRef = useRef68(persistedRef.current.messages);
46988
- const sendCountRef = useRef68(persistedRef.current.sendCount);
47029
+ const metaMapRef = useRef69(/* @__PURE__ */ new Map());
47030
+ const messagesRef = useRef69(persistedRef.current.messages);
47031
+ const sendCountRef = useRef69(persistedRef.current.sendCount);
46989
47032
  const [streamingPhase, setStreamingPhase] = useState109("idle");
46990
47033
  const [metaTick, setMetaTick] = useState109(0);
46991
47034
  const bumpMetaTick = useCallback50(() => setMetaTick((t) => t + 1), []);
46992
- const streamFn = useMemo40(
47035
+ const streamFn = useMemo41(
46993
47036
  () => createDocStreamFn(
46994
47037
  source,
46995
47038
  {
@@ -47015,7 +47058,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
47015
47058
  const { commands: slashCommands } = useSlashCommandRegistry(commandsUrl, {
47016
47059
  enabled: active
47017
47060
  });
47018
- const cmdIdByTableId = useMemo40(() => {
47061
+ const cmdIdByTableId = useMemo41(() => {
47019
47062
  const buckets = /* @__PURE__ */ new Map();
47020
47063
  for (const cmd of slashCommands) {
47021
47064
  if (!cmd.primarySourceId) continue;
@@ -47180,7 +47223,7 @@ function useSseChatAdapter(options, runtimeOptions = {}) {
47180
47223
  setStreamingPhase("idle");
47181
47224
  }
47182
47225
  }, [isTyping, isStreaming, streamingPhase]);
47183
- const latestMeta = useMemo40(
47226
+ const latestMeta = useMemo41(
47184
47227
  () => metaMapRef.current.get(sendCountRef.current - 1) ?? metaMapRef.current.get(sendCountRef.current - 2) ?? null,
47185
47228
  [metaTick, streamingPhase]
47186
47229
  );
@@ -47258,8 +47301,8 @@ var noopRejectRequest = async (_id, _reason) => {
47258
47301
  import {
47259
47302
  useCallback as useCallback51,
47260
47303
  useEffect as useEffect84,
47261
- useMemo as useMemo41,
47262
- useRef as useRef69,
47304
+ useMemo as useMemo42,
47305
+ useRef as useRef70,
47263
47306
  useState as useState110
47264
47307
  } from "react";
47265
47308
 
@@ -47801,9 +47844,9 @@ function useNatsChatAdapter(config, options = {}) {
47801
47844
  },
47802
47845
  [rejectRequestCallback]
47803
47846
  );
47804
- const handleApproveRef = useRef69(handleApprove);
47847
+ const handleApproveRef = useRef70(handleApprove);
47805
47848
  handleApproveRef.current = handleApprove;
47806
- const handleRejectRef = useRef69(handleReject);
47849
+ const handleRejectRef = useRef70(handleReject);
47807
47850
  handleRejectRef.current = handleReject;
47808
47851
  const accumApprove = useCallback51((requestId) => {
47809
47852
  if (!requestId) return;
@@ -47813,7 +47856,7 @@ function useNatsChatAdapter(config, options = {}) {
47813
47856
  if (!requestId) return;
47814
47857
  return handleRejectRef.current(requestId);
47815
47858
  }, []);
47816
- const callbacksRef = useRef69({
47859
+ const callbacksRef = useRef70({
47817
47860
  onSegmentsUpdate: (segments) => {
47818
47861
  setMessages((prev) => updateTrailingAssistant(prev, segments));
47819
47862
  },
@@ -47851,7 +47894,7 @@ function useNatsChatAdapter(config, options = {}) {
47851
47894
  onChunkReceived: (chunk) => processChunk(chunk),
47852
47895
  fetchChunks
47853
47896
  });
47854
- const historyLoadSeqRef = useRef69(0);
47897
+ const historyLoadSeqRef = useRef70(0);
47855
47898
  const loadDialogHistory = useCallback51(
47856
47899
  async (id, cursor) => {
47857
47900
  if (!fetchDialogMessages) return;
@@ -47906,7 +47949,7 @@ function useNatsChatAdapter(config, options = {}) {
47906
47949
  accumReject
47907
47950
  ]
47908
47951
  );
47909
- const prevDialogIdRef = useRef69(void 0);
47952
+ const prevDialogIdRef = useRef70(void 0);
47910
47953
  useEffect84(() => {
47911
47954
  if (prevDialogIdRef.current === dialogId) return;
47912
47955
  prevDialogIdRef.current = dialogId;
@@ -47950,7 +47993,7 @@ function useNatsChatAdapter(config, options = {}) {
47950
47993
  }
47951
47994
  setConnectionState("connecting");
47952
47995
  }, [active, dialogId]);
47953
- const initialDialogsLoadedRef = useRef69(false);
47996
+ const initialDialogsLoadedRef = useRef70(false);
47954
47997
  const loadDialogsPage = useCallback51(
47955
47998
  async (cursor) => {
47956
47999
  if (!fetchDialogs) return;
@@ -48140,7 +48183,7 @@ function useNatsChatAdapter(config, options = {}) {
48140
48183
  const isLoading = streamingPhase !== "idle";
48141
48184
  const hasMoreDialogs = dialogsNextCursor != null;
48142
48185
  const hasMoreMessages = messagesNextCursor != null;
48143
- return useMemo41(
48186
+ return useMemo42(
48144
48187
  () => ({
48145
48188
  messages,
48146
48189
  isLoading,
@@ -48223,7 +48266,7 @@ function useNatsChatAdapter(config, options = {}) {
48223
48266
  }
48224
48267
 
48225
48268
  // src/components/chat/hooks/use-unified-chat.ts
48226
- import { useCallback as useCallback52, useMemo as useMemo42, useRef as useRef70 } from "react";
48269
+ import { useCallback as useCallback52, useMemo as useMemo43, useRef as useRef71 } from "react";
48227
48270
  var EMPTY_SSE_OPTIONS = {};
48228
48271
  function createDisabledNatsConfig() {
48229
48272
  return {
@@ -48238,7 +48281,7 @@ function createDisabledNatsConfig() {
48238
48281
  }
48239
48282
  function useUnifiedChat(options) {
48240
48283
  const { modes, activeMode, mingoStateOverride } = options;
48241
- const disabledNatsRef = useRef70(null);
48284
+ const disabledNatsRef = useRef71(null);
48242
48285
  if (disabledNatsRef.current === null) {
48243
48286
  disabledNatsRef.current = createDisabledNatsConfig();
48244
48287
  }
@@ -48252,7 +48295,7 @@ function useUnifiedChat(options) {
48252
48295
  { active: natsActive }
48253
48296
  );
48254
48297
  const activeState = activeMode === "guide" ? sseState : mingoStateOverride ?? natsState;
48255
- const activeStateRef = useRef70(activeState);
48298
+ const activeStateRef = useRef71(activeState);
48256
48299
  activeStateRef.current = activeState;
48257
48300
  const stopMessage = useCallback52(() => activeStateRef.current.stopMessage(), []);
48258
48301
  const clearMessages = useCallback52(
@@ -48311,7 +48354,7 @@ function useUnifiedChat(options) {
48311
48354
  (requestId, reason) => activeStateRef.current.rejectRequest(requestId, reason),
48312
48355
  []
48313
48356
  );
48314
- return useMemo42(
48357
+ return useMemo43(
48315
48358
  () => ({
48316
48359
  messages: activeState.messages,
48317
48360
  isLoading: activeState.isLoading,
@@ -48562,7 +48605,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
48562
48605
  }
48563
48606
 
48564
48607
  // src/components/chat/embeddable-chat.tsx
48565
- import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo44, useRef as useRef71, useState as useState112 } from "react";
48608
+ import { useCallback as useCallback54, useEffect as useEffect85, useMemo as useMemo45, useRef as useRef72, useState as useState112 } from "react";
48566
48609
  import * as DialogPrimitive4 from "@radix-ui/react-dialog";
48567
48610
  import { usePreventScroll } from "@react-aria/overlays";
48568
48611
  import { isIOS } from "@react-aria/utils";
@@ -48643,7 +48686,7 @@ init_button2();
48643
48686
  import { FileText as FileText8, MessageSquare as MessageSquare3 } from "lucide-react";
48644
48687
 
48645
48688
  // src/components/chat/hooks/use-chat-dialog-manager.ts
48646
- import { useCallback as useCallback53, useMemo as useMemo43, useState as useState111 } from "react";
48689
+ import { useCallback as useCallback53, useMemo as useMemo44, useState as useState111 } from "react";
48647
48690
  function useChatDialogManager({
48648
48691
  dialogs,
48649
48692
  activeDialogId,
@@ -48752,7 +48795,7 @@ function useChatDialogManager({
48752
48795
  clearMessages();
48753
48796
  if (wasArchived) setArchiveOpen(true);
48754
48797
  }, [isViewingArchived, selectDialog, clearMessages]);
48755
- const activeDialog = useMemo43(
48798
+ const activeDialog = useMemo44(
48756
48799
  () => dialogs.find((d) => d.id === activeDialogId) ?? archivedDialogs.find((d) => d.id === activeDialogId),
48757
48800
  [dialogs, archivedDialogs, activeDialogId]
48758
48801
  );
@@ -49107,7 +49150,7 @@ function EmbeddableChatInner({
49107
49150
  return !window.matchMedia("(pointer: coarse)").matches;
49108
49151
  });
49109
49152
  usePreventScroll({ isDisabled: !isOpen || shellLess });
49110
- const navigatingAwayRef = useRef71(false);
49153
+ const navigatingAwayRef = useRef72(false);
49111
49154
  useEffect85(() => {
49112
49155
  if (!isOpen) return;
49113
49156
  if (shellLess) return;
@@ -49134,9 +49177,9 @@ function EmbeddableChatInner({
49134
49177
  window.scrollTo(0, scrollY);
49135
49178
  };
49136
49179
  }, [isOpen, shellLess]);
49137
- const chatInputRef = useRef71(null);
49180
+ const chatInputRef = useRef72(null);
49138
49181
  const [quickActionPreview, setQuickActionPreview] = useState112(null);
49139
- const slashCommandsProp = useMemo44(
49182
+ const slashCommandsProp = useMemo45(
49140
49183
  () => ({
49141
49184
  fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
49142
49185
  resolveSourceIcon: (sourceId) => {
@@ -49151,12 +49194,12 @@ function EmbeddableChatInner({
49151
49194
  [commandsUrl]
49152
49195
  );
49153
49196
  const userName = identityUser?.firstName?.trim() || identityUser?.name?.split(" ")[0]?.trim() || void 0;
49154
- const effectiveModes = useMemo44(() => {
49197
+ const effectiveModes = useMemo45(() => {
49155
49198
  if (modes) return modes;
49156
49199
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
49157
49200
  return { guide: guideOptions };
49158
49201
  }, [modes, tableIdForDocumentType]);
49159
- const mingoCaps = useMemo44(() => {
49202
+ const mingoCaps = useMemo45(() => {
49160
49203
  if (mingoState) {
49161
49204
  return {
49162
49205
  canRename: mingoDialogCapabilities?.canRename ?? false,
@@ -49190,7 +49233,7 @@ function EmbeddableChatInner({
49190
49233
  [controlledActiveMode, onActiveModeChange]
49191
49234
  );
49192
49235
  const { commands: commandsList, loaded: commandsLoaded } = useSlashCommandRegistry(commandsUrl, { enabled: activeMode === "guide" });
49193
- const commandsById = useMemo44(() => {
49236
+ const commandsById = useMemo45(() => {
49194
49237
  const map = /* @__PURE__ */ new Map();
49195
49238
  for (const cmd of commandsList) map.set(cmd.id, cmd);
49196
49239
  return map;
@@ -49238,7 +49281,7 @@ function EmbeddableChatInner({
49238
49281
  hasMoreMessages,
49239
49282
  loadMoreMessages
49240
49283
  } = useUnifiedChat({ modes: effectiveModes, activeMode, mingoStateOverride: mingoState });
49241
- const guidePromptSentRef = useRef71(false);
49284
+ const guidePromptSentRef = useRef72(false);
49242
49285
  useEffect85(() => {
49243
49286
  if (!guidePendingPrompt) {
49244
49287
  guidePromptSentRef.current = false;
@@ -49263,23 +49306,23 @@ function EmbeddableChatInner({
49263
49306
  const [contextItems, setContextItems] = useState112([]);
49264
49307
  const [contextPickerOpen, setContextPickerOpen] = useState112(false);
49265
49308
  const [mentionQuery, setMentionQuery] = useState112(null);
49266
- const mentionActiveRef = useRef71(false);
49309
+ const mentionActiveRef = useRef72(false);
49267
49310
  useEffect85(() => {
49268
49311
  mentionActiveRef.current = mentionQuery !== null;
49269
49312
  }, [mentionQuery]);
49270
- const mentionKeysRef = useRef71(/* @__PURE__ */ new Set());
49313
+ const mentionKeysRef = useRef72(/* @__PURE__ */ new Set());
49271
49314
  useEffect85(() => {
49272
49315
  setContextItems([]);
49273
49316
  setMentionQuery(null);
49274
49317
  mentionKeysRef.current.clear();
49275
49318
  }, [activeDialogId, activeMode]);
49276
- const mentionMarkerByType = useMemo44(() => {
49319
+ const mentionMarkerByType = useMemo45(() => {
49277
49320
  const m = /* @__PURE__ */ new Map();
49278
49321
  for (const t of contextPicker?.entityTypes ?? []) if (t.marker) m.set(t.type, t.marker);
49279
49322
  return m;
49280
49323
  }, [contextPicker?.entityTypes]);
49281
49324
  const contextEntityTypes = contextPicker?.entityTypes;
49282
- const resolveContextIcon = useMemo44(() => {
49325
+ const resolveContextIcon = useMemo45(() => {
49283
49326
  const byType = /* @__PURE__ */ new Map();
49284
49327
  for (const t of contextEntityTypes ?? []) byType.set(t.type, t.icon);
49285
49328
  return (item) => byType.get(item.type);
@@ -49346,7 +49389,7 @@ function EmbeddableChatInner({
49346
49389
  navigatingAwayRef.current = true;
49347
49390
  setIsOpen(false);
49348
49391
  }, [setIsOpen]);
49349
- const chatPanelHandle = useMemo44(
49392
+ const chatPanelHandle = useMemo45(
49350
49393
  () => ({ closeChat: handleNavigationClose }),
49351
49394
  [handleNavigationClose]
49352
49395
  );
@@ -49360,14 +49403,14 @@ function EmbeddableChatInner({
49360
49403
  }),
49361
49404
  [discussRef, displayRef, resolvedBaseRoute, chipBasePlatform, extras]
49362
49405
  );
49363
- const mingoAssistantIcon = useMemo44(
49406
+ const mingoAssistantIcon = useMemo45(
49364
49407
  () => /* @__PURE__ */ jsx336(MingoIcon, { className: "h-6 w-6", cornerColor: "var(--ods-flamingo-cyan-base)" }),
49365
49408
  []
49366
49409
  );
49367
- const timestampCacheRef = useRef71(/* @__PURE__ */ new Map());
49410
+ const timestampCacheRef = useRef72(/* @__PURE__ */ new Map());
49368
49411
  const guideUserName = activeMode === "guide" ? [identityUser?.firstName, identityUser?.lastName].filter(Boolean).join(" ").trim() || identityUser?.name?.trim() || void 0 : void 0;
49369
49412
  const guideUserAvatar = activeMode === "guide" ? identityUser?.avatarUrl?.trim() || void 0 : void 0;
49370
- const messages = useMemo44(() => {
49413
+ const messages = useMemo45(() => {
49371
49414
  const cache = timestampCacheRef.current;
49372
49415
  const seenIds = /* @__PURE__ */ new Set();
49373
49416
  const mapped = rawMessages.map((m) => {
@@ -49427,7 +49470,7 @@ function EmbeddableChatInner({
49427
49470
  },
49428
49471
  [sendMessage, readyAttachments, viewUrlPrefix, clearAttachments, contextItems]
49429
49472
  );
49430
- const guideSuggestedActions = useMemo44(
49473
+ const guideSuggestedActions = useMemo45(
49431
49474
  () => {
49432
49475
  if (effectiveQuickActions.length > 0) {
49433
49476
  return effectiveQuickActions.map((qa) => ({
@@ -49512,11 +49555,11 @@ function EmbeddableChatInner({
49512
49555
  }, [isQuickActionEmpty]);
49513
49556
  const guideCanReturnToMingo = isGuideEmpty && hasMingoMode;
49514
49557
  const sourceLabel = source === "flamingo" ? "Knowledge Base" : "Data Room";
49515
- const enabledSet = useMemo44(
49558
+ const enabledSet = useMemo45(
49516
49559
  () => effectiveEnabledRagTableIds ? new Set(effectiveEnabledRagTableIds) : null,
49517
49560
  [effectiveEnabledRagTableIds]
49518
49561
  );
49519
- const chipCommands = useMemo44(() => {
49562
+ const chipCommands = useMemo45(() => {
49520
49563
  const out = [];
49521
49564
  for (const cmd of commandsById.values()) {
49522
49565
  if (cmd.displayOrder === void 0) continue;
@@ -49533,7 +49576,7 @@ function EmbeddableChatInner({
49533
49576
  return out;
49534
49577
  }, [commandsById, enabledSet]);
49535
49578
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
49536
- const lastSources = useMemo44(() => {
49579
+ const lastSources = useMemo45(() => {
49537
49580
  if (chatLoading) return void 0;
49538
49581
  const sources = lastAssistantMsg?.sources;
49539
49582
  if (!sources || sources.length === 0) return void 0;
@@ -50139,6 +50182,8 @@ export {
50139
50182
  SimpleMarkdownRenderer,
50140
50183
  ThinkingDisplay,
50141
50184
  ErrorMessageDisplay,
50185
+ MspOrganizationCard,
50186
+ MspOrganizationCardSkeleton,
50142
50187
  ChatContainer,
50143
50188
  ChatHeader,
50144
50189
  ChatContent,
@@ -50204,8 +50249,6 @@ export {
50204
50249
  MingoChatHistory,
50205
50250
  MingoWelcome,
50206
50251
  GuideWelcome,
50207
- MspOrganizationCard,
50208
- MspOrganizationCardSkeleton,
50209
50252
  TooltipProvider,
50210
50253
  Tooltip,
50211
50254
  TooltipTrigger,
@@ -50800,4 +50843,4 @@ export {
50800
50843
  LogsList,
50801
50844
  assets
50802
50845
  };
50803
- //# sourceMappingURL=chunk-DDI7FFA5.js.map
50846
+ //# sourceMappingURL=chunk-4YVGGC75.js.map