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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-FHT7SMA7.cjs → chunk-35BJY5RR.cjs} +47 -47
  3. package/dist/{chunk-ALPRQ3ZX.cjs → chunk-3GG3QAPT.cjs} +15 -15
  4. package/dist/{chunk-34TWK3JE.cjs → chunk-5E6JHOGX.cjs} +3 -3
  5. package/dist/{chunk-OFO75R2O.cjs → chunk-7Z4EQOIX.cjs} +174 -174
  6. package/dist/{chunk-C6LPOYDM.cjs → chunk-AG4HR6Z6.cjs} +8 -8
  7. package/dist/{chunk-XJ3J4UIS.cjs → chunk-B27XV2TC.cjs} +19 -19
  8. package/dist/{chunk-MJFTWHV6.cjs → chunk-C6JHDRK3.cjs} +6 -6
  9. package/dist/{chunk-2YXOD2KL.cjs → chunk-H3RYUTND.cjs} +5 -0
  10. package/dist/{chunk-53I4YHRT.cjs → chunk-ITQZK3UT.cjs} +3 -3
  11. package/dist/{chunk-H52GKJ36.cjs → chunk-J3E5UN2O.cjs} +19 -19
  12. package/dist/{chunk-5WC535NJ.cjs → chunk-JLAYELWS.cjs} +40 -40
  13. package/dist/{chunk-UGCRLRCT.cjs → chunk-NO5UJLLQ.cjs} +2 -5
  14. package/dist/{chunk-5P7WBA2U.cjs → chunk-QXQHCX2R.cjs} +4 -4
  15. package/dist/{chunk-ESRA7NUI.cjs → chunk-R45NJ5ZA.cjs} +90 -90
  16. package/dist/{chunk-CVBHB4OZ.cjs → chunk-RGYLC3US.cjs} +7 -7
  17. package/dist/{chunk-TPH4SRR2.cjs → chunk-SDF5UUTE.cjs} +800 -659
  18. package/dist/{chunk-3TELPOVH.cjs → chunk-T4BBZ5ST.cjs} +2 -2
  19. package/dist/{chunk-CLAJIQ7E.cjs → chunk-UNRNLSG4.cjs} +19 -19
  20. package/dist/{chunk-NOUROZYH.cjs → chunk-UVTJT5BK.cjs} +24 -24
  21. package/dist/{chunk-77IKUBSH.cjs → chunk-W77VPNBJ.cjs} +12 -12
  22. package/dist/{chunk-DGEB5GUZ.cjs → chunk-WBOHLXFC.cjs} +2 -2
  23. package/dist/{chunk-X4LAMJHD.cjs → chunk-WIT36ZTN.cjs} +113 -113
  24. package/dist/{chunk-QOONZMSQ.cjs → chunk-XSOGT6DF.cjs} +28 -28
  25. package/dist/{chunk-LIGDPFDM.cjs → chunk-XW6WSW36.cjs} +771 -771
  26. package/dist/{chunk-4WNBVNGP.cjs → chunk-Y7AZCDLZ.cjs} +20 -20
  27. package/dist/{chunk-SDOCZTST.cjs → chunk-Z6TUOE6L.cjs} +41 -41
  28. package/dist/{chunk-RVLQHSID.cjs → chunk-ZGADZHLD.cjs} +101 -101
  29. package/dist/{chunk-MU7FFN6M.cjs → chunk-ZJ77IOMY.cjs} +83 -83
  30. package/dist/{cloud-tenants-JDPC2DYF.cjs → cloud-tenants-7LTS4DAP.cjs} +11 -11
  31. package/dist/components/case-studies/index.cjs +24 -24
  32. package/dist/components/chat/chat-dialog-menu-items.js +6 -6
  33. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  34. package/dist/components/chat/chat-message-enhanced.js +3 -0
  35. package/dist/components/chat/chat-panel-context.d.ts +3 -0
  36. package/dist/components/chat/chat-panel-context.d.ts.map +1 -1
  37. package/dist/components/chat/embeddable-chat.d.ts +20 -0
  38. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  39. package/dist/components/chat/embeddable-chat.js +78 -8
  40. package/dist/components/chat/hooks/index.d.ts +1 -0
  41. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  42. package/dist/components/chat/hooks/index.js +1 -0
  43. package/dist/components/chat/hooks/use-what-to-ask.d.ts +69 -0
  44. package/dist/components/chat/hooks/use-what-to-ask.d.ts.map +1 -0
  45. package/dist/components/chat/hooks/use-what-to-ask.js +106 -0
  46. package/dist/components/chat/index.cjs +15 -7
  47. package/dist/components/chat/index.d.ts +1 -0
  48. package/dist/components/chat/index.d.ts.map +1 -1
  49. package/dist/components/chat/index.js +1 -0
  50. package/dist/components/chat/mingo-chat-header.d.ts +4 -2
  51. package/dist/components/chat/mingo-chat-header.d.ts.map +1 -1
  52. package/dist/components/chat/mingo-chat-header.js +7 -2
  53. package/dist/components/chat/suggestions-display.d.ts +11 -0
  54. package/dist/components/chat/suggestions-display.d.ts.map +1 -0
  55. package/dist/components/chat/suggestions-display.js +27 -0
  56. package/dist/components/chat/types/message.types.d.ts +27 -1
  57. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  58. package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
  59. package/dist/components/chat/utils/extract-incomplete-message-state.js +2 -0
  60. package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
  61. package/dist/components/chat/utils/message-segment-accumulator.js +3 -0
  62. package/dist/components/contact/index.cjs +12 -12
  63. package/dist/components/docs/index.cjs +15 -15
  64. package/dist/components/embeds/index.cjs +12 -12
  65. package/dist/components/faq/index.cjs +13 -13
  66. package/dist/components/features/index.cjs +11 -11
  67. package/dist/components/help-center-pages/index.cjs +112 -112
  68. package/dist/components/index.cjs +69 -61
  69. package/dist/components/loading/loading-region.d.ts.map +1 -1
  70. package/dist/components/loading/loading-region.js +2 -5
  71. package/dist/components/loading/unified-skeleton.d.ts +2 -0
  72. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  73. package/dist/components/loading/unified-skeleton.js +5 -0
  74. package/dist/components/meeting-scheduler/index.cjs +72 -72
  75. package/dist/components/navigation/index.cjs +14 -14
  76. package/dist/components/onboarding-guides/index.cjs +14 -14
  77. package/dist/components/product-demo/index.cjs +12 -12
  78. package/dist/components/related-content/index.cjs +7 -7
  79. package/dist/components/tickets/index.cjs +17 -17
  80. package/dist/components/ui/file-manager/index.cjs +30 -30
  81. package/dist/components/ui/index.cjs +19 -11
  82. package/dist/{devices-ADQWD37J.cjs → devices-CGDJAYRB.cjs} +12 -12
  83. package/dist/{embeddable-chat-7YF2JMPS.cjs → embeddable-chat-CMEHSDV7.cjs} +165 -93
  84. package/dist/index.cjs +23 -15
  85. package/dist/{knowledge-TNS64EGK.cjs → knowledge-X5I4QJKV.cjs} +12 -12
  86. package/dist/{logs-754MDDE4.cjs → logs-GDGIRJFI.cjs} +19 -19
  87. package/dist/{policies-Q23DPIH6.cjs → policies-2UOCENDX.cjs} +15 -15
  88. package/dist/{remote-session-ZKP2W3IS.cjs → remote-session-57DGC4X3.cjs} +6 -6
  89. package/dist/{scripts-DCYLK2RZ.cjs → scripts-AS4GEG6L.cjs} +18 -18
  90. package/dist/{software-update-XCMGUIER.cjs → software-update-ADPUFMFY.cjs} +15 -15
  91. package/dist/{tickets-board-BNW4AYFL.cjs → tickets-board-EP6L3BSV.cjs} +7 -7
  92. package/package.json +1 -1
  93. package/src/components/chat/chat-dialog-menu-items.tsx +6 -6
  94. package/src/components/chat/chat-message-enhanced.tsx +3 -0
  95. package/src/components/chat/chat-panel-context.tsx +3 -0
  96. package/src/components/chat/embeddable-chat.tsx +132 -9
  97. package/src/components/chat/hooks/index.ts +1 -0
  98. package/src/components/chat/hooks/use-what-to-ask.ts +203 -0
  99. package/src/components/chat/index.ts +1 -0
  100. package/src/components/chat/mingo-chat-header.tsx +11 -4
  101. package/src/components/chat/suggestions-display.tsx +41 -0
  102. package/src/components/chat/types/message.types.ts +31 -1
  103. package/src/components/chat/utils/extract-incomplete-message-state.ts +2 -0
  104. package/src/components/chat/utils/message-segment-accumulator.ts +4 -0
  105. package/src/components/loading/loading-region.tsx +4 -9
  106. package/src/components/loading/unified-skeleton.tsx +13 -0
@@ -4,16 +4,16 @@
4
4
  var _chunkDTKGIG4Acjs = require('../../chunk-DTKGIG4A.cjs');
5
5
 
6
6
 
7
- var _chunkNOUROZYHcjs = require('../../chunk-NOUROZYH.cjs');
7
+ var _chunkUVTJT5BKcjs = require('../../chunk-UVTJT5BK.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkLIGDPFDMcjs = require('../../chunk-LIGDPFDM.cjs');
14
- require('../../chunk-C6LPOYDM.cjs');
13
+ var _chunkXW6WSW36cjs = require('../../chunk-XW6WSW36.cjs');
14
+ require('../../chunk-AG4HR6Z6.cjs');
15
15
  require('../../chunk-NTGIQP7O.cjs');
16
- require('../../chunk-ALPRQ3ZX.cjs');
16
+ require('../../chunk-3GG3QAPT.cjs');
17
17
  require('../../chunk-HQQE74RO.cjs');
18
18
  require('../../chunk-DEY6XXGO.cjs');
19
19
  require('../../chunk-VUWPLQBY.cjs');
@@ -21,13 +21,13 @@ require('../../chunk-LU7TD6QS.cjs');
21
21
  require('../../chunk-24I6RFVU.cjs');
22
22
  require('../../chunk-A6P6DHEZ.cjs');
23
23
  require('../../chunk-MZ4KBSH7.cjs');
24
- require('../../chunk-3TELPOVH.cjs');
24
+ require('../../chunk-T4BBZ5ST.cjs');
25
25
  require('../../chunk-YUMFVQIN.cjs');
26
- require('../../chunk-X4LAMJHD.cjs');
26
+ require('../../chunk-WIT36ZTN.cjs');
27
27
 
28
28
 
29
29
 
30
- var _chunkTPH4SRR2cjs = require('../../chunk-TPH4SRR2.cjs');
30
+ var _chunkSDF5UUTEcjs = require('../../chunk-SDF5UUTE.cjs');
31
31
  require('../../chunk-LVO7FALW.cjs');
32
32
  require('../../chunk-3RFQPQ7Z.cjs');
33
33
  require('../../chunk-YRULLK7N.cjs');
@@ -1838,12 +1838,12 @@ require('../../chunk-7DNL734S.cjs');
1838
1838
  require('../../chunk-WWUSFOJ7.cjs');
1839
1839
  require('../../chunk-SKI6NKOE.cjs');
1840
1840
  require('../../chunk-EWPR7662.cjs');
1841
- require('../../chunk-XJ3J4UIS.cjs');
1841
+ require('../../chunk-B27XV2TC.cjs');
1842
1842
 
1843
1843
 
1844
1844
 
1845
1845
 
1846
- var _chunkOFO75R2Ocjs = require('../../chunk-OFO75R2O.cjs');
1846
+ var _chunk7Z4EQOIXcjs = require('../../chunk-7Z4EQOIX.cjs');
1847
1847
  require('../../chunk-QYLIHZKZ.cjs');
1848
1848
  require('../../chunk-63N4FN5V.cjs');
1849
1849
  require('../../chunk-L2IQESTQ.cjs');
@@ -1869,7 +1869,7 @@ require('../../chunk-K6VWTUCH.cjs');
1869
1869
  require('../../chunk-MGF3FUKD.cjs');
1870
1870
  require('../../chunk-Z74QE57T.cjs');
1871
1871
  require('../../chunk-XZJCBIYR.cjs');
1872
- require('../../chunk-UGCRLRCT.cjs');
1872
+ require('../../chunk-NO5UJLLQ.cjs');
1873
1873
  require('../../chunk-2QMBXGMQ.cjs');
1874
1874
  require('../../chunk-V45KLJQP.cjs');
1875
1875
  require('../../chunk-KHKPLOU4.cjs');
@@ -1877,12 +1877,12 @@ require('../../chunk-L4UI63K6.cjs');
1877
1877
  require('../../chunk-OF336YWG.cjs');
1878
1878
  require('../../chunk-3LU4UFPS.cjs');
1879
1879
  require('../../chunk-RB6BSE3O.cjs');
1880
- require('../../chunk-2YXOD2KL.cjs');
1880
+ require('../../chunk-H3RYUTND.cjs');
1881
1881
  require('../../chunk-3ATAYP36.cjs');
1882
1882
 
1883
1883
  // src/components/case-studies/share-experience-section.tsx
1884
1884
  var _jsxruntime = require('react/jsx-runtime');
1885
- var DEFAULT_TITLE = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOFO75R2Ocjs.HeadingLines, { children: [
1885
+ var DEFAULT_TITLE = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.HeadingLines, { children: [
1886
1886
  "Share Your Experience",
1887
1887
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1888
1888
  "with Fellow MSPs",
@@ -1919,7 +1919,7 @@ function ShareExperienceSection({
1919
1919
  } = {}) {
1920
1920
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "section", { className: `flex flex-col gap-10${className ? ` ${className}` : ""}`, children: [
1921
1921
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-ods-text-primary", children: [
1922
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h1", children: _chunkOFO75R2Ocjs.accentSentenceMarks.call(void 0, title) }),
1922
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h1", children: _chunk7Z4EQOIXcjs.accentSentenceMarks.call(void 0, title) }),
1923
1923
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mt-6 max-w-[765px] text-h4", children: subtitle })
1924
1924
  ] }),
1925
1925
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rounded-md border border-ods-border bg-ods-bg p-10", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-10", children: [
@@ -1927,9 +1927,9 @@ function ShareExperienceSection({
1927
1927
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h2", children: howItWorksTitle }),
1928
1928
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: howItWorksBody })
1929
1929
  ] }),
1930
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkLIGDPFDMcjs.BenefitCardGrid, { columns: 4, children: [
1930
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkXW6WSW36cjs.BenefitCardGrid, { columns: 4, children: [
1931
1931
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1932
- _chunkLIGDPFDMcjs.BenefitCard,
1932
+ _chunkXW6WSW36cjs.BenefitCard,
1933
1933
  {
1934
1934
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMJQLBIZMcjs.G2Icon, { color: "var(--social-g2)", size: 24 }) }),
1935
1935
  title: "G2",
@@ -1938,7 +1938,7 @@ function ShareExperienceSection({
1938
1938
  }
1939
1939
  ),
1940
1940
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1941
- _chunkLIGDPFDMcjs.BenefitCard,
1941
+ _chunkXW6WSW36cjs.BenefitCard,
1942
1942
  {
1943
1943
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA2VKPXOBcjs.CapterraIcon, { size: 24 }) }),
1944
1944
  title: "Capterra",
@@ -1947,7 +1947,7 @@ function ShareExperienceSection({
1947
1947
  }
1948
1948
  ),
1949
1949
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1950
- _chunkLIGDPFDMcjs.BenefitCard,
1950
+ _chunkXW6WSW36cjs.BenefitCard,
1951
1951
  {
1952
1952
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTLKSZG3Dcjs.TrustpilotIcon, { size: 24 }) }),
1953
1953
  title: "TrustPilot",
@@ -1956,7 +1956,7 @@ function ShareExperienceSection({
1956
1956
  }
1957
1957
  ),
1958
1958
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1959
- _chunkLIGDPFDMcjs.BenefitCard,
1959
+ _chunkXW6WSW36cjs.BenefitCard,
1960
1960
  {
1961
1961
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkILYW6BQNcjs.GetappIcon, { size: 24 }) }),
1962
1962
  title: "GetApp",
@@ -1965,7 +1965,7 @@ function ShareExperienceSection({
1965
1965
  }
1966
1966
  )
1967
1967
  ] }),
1968
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNOUROZYHcjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
1968
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUVTJT5BKcjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
1969
1969
  ] }) })
1970
1970
  ] });
1971
1971
  }
@@ -1975,7 +1975,7 @@ function ShareExperienceSection({
1975
1975
  function EntityQuotesPanel({ quotes, className }) {
1976
1976
  if (!quotes || quotes.length === 0) return null;
1977
1977
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1978
- _chunkLIGDPFDMcjs.StackedRowsPanel,
1978
+ _chunkXW6WSW36cjs.StackedRowsPanel,
1979
1979
  {
1980
1980
  className,
1981
1981
  title: `${_chunkDTKGIG4Acjs.ENTITY_QUOTES_TITLE} \xB7 ${quotes.length}`,
@@ -2004,7 +2004,7 @@ function EntityQuotesPanel({ quotes, className }) {
2004
2004
  function QuoteCardsStrip({ quotes, className }) {
2005
2005
  if (quotes.length === 0) return null;
2006
2006
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2007
- _chunkTPH4SRR2cjs.CardsStrip,
2007
+ _chunkSDF5UUTEcjs.CardsStrip,
2008
2008
  {
2009
2009
  className,
2010
2010
  showTitle: false,
@@ -2012,15 +2012,15 @@ function QuoteCardsStrip({ quotes, className }) {
2012
2012
  items: [...quotes],
2013
2013
  itemKey: (quote) => quote.key,
2014
2014
  renderCard: (quote, ctx) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
2015
- _chunkOFO75R2Ocjs.Card,
2015
+ _chunk7Z4EQOIXcjs.Card,
2016
2016
  {
2017
2017
  "aria-hidden": ctx.isClone || void 0,
2018
2018
  onPointerEnter: ctx.isTouch ? void 0 : () => ctx.onActivate(ctx.cardKey),
2019
2019
  onPointerLeave: ctx.isTouch ? void 0 : () => ctx.onDeactivate(ctx.cardKey),
2020
2020
  className: "relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover",
2021
2021
  children: [
2022
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLIGDPFDMcjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
2023
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTPH4SRR2cjs.CardHitLayer, { href: quote.href, label: `${quote.text}, ${quote.attribution}`, decorative: ctx.isClone })
2022
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXW6WSW36cjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
2023
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSDF5UUTEcjs.CardHitLayer, { href: quote.href, label: `${quote.text}, ${quote.attribution}`, decorative: ctx.isClone })
2024
2024
  ]
2025
2025
  },
2026
2026
  ctx.cardKey
@@ -9,18 +9,18 @@ function chatDialogMenuItems({
9
9
  onArchive
10
10
  }) {
11
11
  const items = [
12
- onCopyLink && {
13
- id: "copy-link",
14
- label: "Copy Chat Link",
15
- icon: /* @__PURE__ */ jsx(Link01HorizontalIcon, { className: chatMenuIconClassName }),
16
- onClick: onCopyLink
17
- },
18
12
  onRename && {
19
13
  id: "rename",
20
14
  label: "Rename Chat",
21
15
  icon: /* @__PURE__ */ jsx(PenEditIcon, { className: chatMenuIconClassName }),
22
16
  onClick: onRename
23
17
  },
18
+ onCopyLink && {
19
+ id: "copy-link",
20
+ label: "Copy Chat Link",
21
+ icon: /* @__PURE__ */ jsx(Link01HorizontalIcon, { className: chatMenuIconClassName }),
22
+ onClick: onCopyLink
23
+ },
24
24
  onCompact && {
25
25
  id: "compact",
26
26
  label: "Compact Chat Memory",
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message-enhanced.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-message-enhanced.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AA4B5F,OAAO,KAAK,EAA8C,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAusBpG,QAAA,MAAM,2BAA2B,4FAiC/B,CAAC;AAIH,OAAO,EAAE,2BAA2B,IAAI,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"chat-message-enhanced.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-message-enhanced.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuE,MAAM,OAAO,CAAC;AA6B5F,OAAO,KAAK,EAA8C,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAysBpG,QAAA,MAAM,2BAA2B,4FAiC/B,CAAC;AAIH,OAAO,EAAE,2BAA2B,IAAI,mBAAmB,EAAE,CAAC"}
@@ -21,6 +21,7 @@ import { EscalationOfferMessage } from "./escalation-offer-message.js";
21
21
  import { remarkCardLinks } from "./remark-card-links.js";
22
22
  import { remarkMentionChips } from "./remark-mention-chips.js";
23
23
  import { remarkStripCitations } from "./remark-strip-citations.js";
24
+ import { SuggestionsDisplay } from "./suggestions-display.js";
24
25
  import { SystemEventMessage } from "./system-event-message.js";
25
26
  import { ThinkingDisplay } from "./thinking-display.js";
26
27
  import { TicketEscalatedMessage } from "./ticket-escalated-message.js";
@@ -324,6 +325,8 @@ const ChatMessageEnhanced = forwardRef(
324
325
  const run = askRuns.get(index);
325
326
  if (!run) return null;
326
327
  return /* @__PURE__ */ jsx(AskDisplay, { cards: run, onSelect: onAskSelect }, index);
328
+ } else if (segment.type === "suggestions") {
329
+ return /* @__PURE__ */ jsx(SuggestionsDisplay, { segment }, index);
327
330
  } else if (segment.type === "tool_execution") {
328
331
  return /* @__PURE__ */ jsx(
329
332
  ToolExecutionDisplay,
@@ -2,6 +2,9 @@ export interface ChatPanelHandle {
2
2
  /** Close the chat panel. Called by inline cards' nav click handler
3
3
  * ONLY when the resolved navigation is same-tab. */
4
4
  closeChat: () => void;
5
+ /** Send `text` in the panel's open chat (a new chat: the send creates it),
6
+ * leaving the composer's draft alone. Used by `suggestions` chips. */
7
+ sendPrompt?: (text: string) => void;
5
8
  }
6
9
  export declare const ChatPanelContext: import("react").Context<ChatPanelHandle | null>;
7
10
  /** Optional consumer — returns `null` when no provider mounted. */
@@ -1 +1 @@
1
- {"version":3,"file":"chat-panel-context.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-panel-context.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC9B;yDACqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,iDAA8C,CAAC;AAE5E,mEAAmE;AACnE,wBAAgB,YAAY,IAAI,eAAe,GAAG,IAAI,CAErD"}
1
+ {"version":3,"file":"chat-panel-context.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-panel-context.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC9B;yDACqD;IACrD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;2EACuE;IACvE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,gBAAgB,iDAA8C,CAAC;AAE5E,mEAAmE;AACnE,wBAAgB,YAAY,IAAI,eAAe,GAAG,IAAI,CAErD"}
@@ -1,8 +1,10 @@
1
1
  import React from 'react';
2
+ import { type ActionsMenuItem } from '../ui/actions-menu';
2
3
  import { type ChatComposerLock } from './chat-composer';
3
4
  import type { ChatCardDispatchExtras } from './entity-cards/dispatch';
4
5
  import { type GuideWelcomeProps } from './guide-welcome';
5
6
  import { type ChatMode, type UseUnifiedChatModes } from './hooks/use-unified-chat';
7
+ import { type WhatToAskContent } from './hooks/use-what-to-ask';
6
8
  import { type MingoDialogStatus } from './mingo-chat-rail';
7
9
  import { type MingoWelcomeProps } from './mingo-welcome';
8
10
  import { type ChatAppearance } from './types/chat.types';
@@ -320,6 +322,24 @@ export interface EmbeddableChatProps {
320
322
  * guided tour in a conversation of its own) points it there instead.
321
323
  */
322
324
  onWhatToAsk?: () => void;
325
+ /**
326
+ * v2: the "What to ask?" exchange the list's entry shows (when no
327
+ * `onWhatToAsk` takes it over): added at the end of the open conversation,
328
+ * or a new chat opens with it. Local - never sent, never stored. Picking a
329
+ * chip sends its prompt in that chat, like a quick action.
330
+ *
331
+ * A function is called on each click and the exchange appears, whole, once
332
+ * its promise settles (prompts built from live data, e.g. the workspace's
333
+ * devices); clicks while one is pending are ignored. It should not reject:
334
+ * a rejection is logged and shows nothing.
335
+ */
336
+ whatToAsk?: WhatToAskContent | (() => Promise<WhatToAskContent>);
337
+ /**
338
+ * v2: items in the chat's ⋯ menu after its own, past a separator - actions
339
+ * that are not about the chat (e.g. the host's onboarding reset). Shown in
340
+ * every chat that is not archived, a new one included.
341
+ */
342
+ chatMenuExtraItems?: ActionsMenuItem[];
323
343
  }
324
344
  /**
325
345
  * EmbeddableChat — the floating "Ask AI" button + Mingo chat panel.
@@ -1 +1 @@
1
- {"version":3,"file":"embeddable-chat.d.ts","sourceRoot":"","sources":["../../../src/components/chat/embeddable-chat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddable-chat.d.ts","sourceRoot":"","sources":["../../../src/components/chat/embeddable-chat.tsx"],"names":[],"mappings":"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"}
@@ -55,6 +55,7 @@ import { useCloseOnNavigation } from "./hooks/use-close-on-navigation.js";
55
55
  import { useEmptyStateConfig } from "./hooks/use-empty-state-config.js";
56
56
  import { fetchSlashCommands, useSlashCommandRegistry } from "./hooks/use-slash-commands.js";
57
57
  import { useUnifiedChat } from "./hooks/use-unified-chat.js";
58
+ import { awaitsDecision, useWhatToAsk } from "./hooks/use-what-to-ask.js";
58
59
  import { MingoArchiveList } from "./mingo-archive-list.js";
59
60
  import { MingoChatHeader } from "./mingo-chat-header.js";
60
61
  import { ChatDialogModals } from "./mingo-chat-modals.js";
@@ -66,7 +67,7 @@ import { MingoWelcome } from "./mingo-welcome.js";
66
67
  import { NavLinkAnchorViaRuntime } from "./nav-link-anchor-via-runtime.js";
67
68
  import { accentFromIdentityIcon, getAgentAccent } from "./quick-action-chip.js";
68
69
  import { SourceActionButton } from "./source-action-button.js";
69
- import { CHAT_APPEARANCE } from "./types/chat.types.js";
70
+ import { AUTHOR_TYPE, CHAT_APPEARANCE } from "./types/chat.types.js";
70
71
  import { ASK_AI_OPEN_EVENT, ASK_AI_OPEN_WITH_REF_EVENT, chatListensForAskAiOpens } from "./utils/ask-ai-events.js";
71
72
  import { formatChatAttachmentMarkdownForBubble } from "./utils/chat-attachment-markdown.js";
72
73
  import { resolveHrefForRuntime } from "./utils/chat-nav-resolution.js";
@@ -441,6 +442,8 @@ function EmbeddableChatInner({
441
442
  contextMemory,
442
443
  aboveComposer,
443
444
  onWhatToAsk,
445
+ whatToAsk: whatToAskContent,
446
+ chatMenuExtraItems,
444
447
  handleRef
445
448
  }) {
446
449
  const shellLess = shell !== "drawer";
@@ -747,8 +750,13 @@ function EmbeddableChatInner({
747
750
  navigatingAwayRef.current = true;
748
751
  setIsOpen(false);
749
752
  }, [setIsOpen]);
753
+ const sendPromptRef = useRef(() => {
754
+ });
750
755
  const chatPanelHandle = useMemo(
751
- () => ({ closeChat: handleNavigationClose }),
756
+ () => ({
757
+ closeChat: handleNavigationClose,
758
+ sendPrompt: (text) => sendPromptRef.current(text)
759
+ }),
752
760
  [handleNavigationClose]
753
761
  );
754
762
  const askAboutRef = useRef(discussRef);
@@ -770,15 +778,29 @@ function EmbeddableChatInner({
770
778
  const [timestampCache] = useState(() => /* @__PURE__ */ new Map());
771
779
  const guideUserName = activeMode === "guide" ? [identityUser?.firstName, identityUser?.lastName].filter(Boolean).join(" ").trim() || identityUser?.name?.trim() || void 0 : void 0;
772
780
  const guideUserAvatar = activeMode === "guide" ? identityUser?.avatarUrl?.trim() || void 0 : void 0;
773
- const messages = useMemo(() => {
781
+ const hostMessages = useMemo(() => {
774
782
  const options = { userName: guideUserName, userAvatar: guideUserAvatar, timestampCache };
775
783
  const mapped = rawMessages.map((m) => mapHostMessage(m, options));
776
784
  pruneTimestampCache(timestampCache, new Set(rawMessages.map((m) => m.id)));
777
785
  return mapped;
778
786
  }, [rawMessages, guideUserName, guideUserAvatar, timestampCache]);
787
+ const whatToAsk = useWhatToAsk({
788
+ dialogId: activeDialogId,
789
+ content: typeof whatToAskContent === "function" ? void 0 : whatToAskContent,
790
+ user: {
791
+ name: headerUserName ?? "You",
792
+ avatar: identityUser?.avatarUrl?.trim() || userAvatarUrl?.trim() || null,
793
+ authorType: AUTHOR_TYPE.ADMIN
794
+ },
795
+ assistant: { name: "Mingo", assistantType: "mingo" }
796
+ });
797
+ const noteWhatToAskSend = whatToAsk.noteSend;
798
+ const messages = whatToAsk.withExchanges(hostMessages);
799
+ const isWhatToAskDraft = activeDialogId == null && hostMessages.length === 0 && messages.length > 0;
779
800
  const handleSend = useCallback(
780
801
  (text) => {
781
802
  if (composerLock) return;
803
+ noteWhatToAskSend();
782
804
  let augmentedText = text;
783
805
  if (readyAttachments.length > 0) {
784
806
  const markdown = readyAttachments.map((att) => formatChatAttachmentMarkdownForBubble(att, viewUrlPrefix)).join("");
@@ -797,7 +819,7 @@ function EmbeddableChatInner({
797
819
  setContextItems([]);
798
820
  }
799
821
  },
800
- [composerLock, sendMessage, readyAttachments, viewUrlPrefix, clearAttachments, contextItems]
822
+ [composerLock, noteWhatToAskSend, sendMessage, readyAttachments, viewUrlPrefix, clearAttachments, contextItems]
801
823
  );
802
824
  const handleAskSelect = useCallback(
803
825
  (label) => {
@@ -1021,7 +1043,11 @@ function EmbeddableChatInner({
1021
1043
  const freshConversationTitle = isGuideEmpty ? headerAssistantName ?? "Mingo Guide" : "New Chat";
1022
1044
  const headerTitle = hasConversation ? activeDialog?.title || freshConversationTitle : isGuideEmpty ? freshConversationTitle : "Current Chats";
1023
1045
  const headerBackAriaLabel = hasConversation ? isViewingArchived ? "Back to archive" : "Back" : "Back to Mingo";
1024
- const headerOnBack = hasConversation ? handleBack : () => handleActiveModeChange("mingo");
1046
+ const clearWhatToAskDraft = whatToAsk.clearDraft;
1047
+ const headerOnBack = hasConversation ? () => {
1048
+ if (activeDialogId == null) clearWhatToAskDraft();
1049
+ handleBack();
1050
+ } : () => handleActiveModeChange("mingo");
1025
1051
  const headerOnRestore = isViewingArchived && unarchiveDialog && activeDialog ? () => setRestoreTarget(activeDialog) : void 0;
1026
1052
  const headerOnRename = activeDialogId && activeDialog && mingoCaps.canRename ? () => setRenameTarget(activeDialog) : void 0;
1027
1053
  const headerOnArchive = activeDialogId && activeDialog && mingoCaps.canArchive ? () => setArchiveTarget(activeDialog) : void 0;
@@ -1033,8 +1059,50 @@ function EmbeddableChatInner({
1033
1059
  const headerPersonAvatarUrl = headerOwner ? headerOwner.avatarUrl?.trim() || void 0 : identityUser?.avatarUrl?.trim() || userAvatarUrl?.trim() || void 0;
1034
1060
  const headerAvatar = headerPersonName || headerPersonAvatarUrl ? { name: headerPersonName, avatarUrl: headerPersonAvatarUrl } : void 0;
1035
1061
  const handleNewChat = useCallback(() => {
1062
+ clearWhatToAskDraft();
1036
1063
  resetToNewChat();
1037
- }, [resetToNewChat]);
1064
+ }, [clearWhatToAskDraft, resetToNewChat]);
1065
+ const activeDialogStatus = activeDialog && dialogStatusOf ? dialogStatusOf(activeDialog) : void 0;
1066
+ const isChatBlocked = !!composerLock || chatLoading || activeDialogStatus === "working" || activeDialogStatus === "approval" || (pendingApprovals?.length ?? 0) > 0 || awaitsDecision(hostMessages);
1067
+ const showWhatToAsk = (content) => {
1068
+ if (activeDialogId && hasConversation && !isViewingArchived && !isMessagesLoading && !isChatBlocked) {
1069
+ whatToAsk.ask("current", content);
1070
+ return;
1071
+ }
1072
+ const isUnsentNewChat = activeDialogId == null && hostMessages.length === 0 && !isViewingArchived;
1073
+ if (!isUnsentNewChat) {
1074
+ whatToAsk.clearDraft();
1075
+ resetToNewChat();
1076
+ }
1077
+ setComposeOpen(true);
1078
+ whatToAsk.ask("draft", content);
1079
+ };
1080
+ useEffect(() => {
1081
+ sendPromptRef.current = (text) => {
1082
+ if (isChatBlocked) return;
1083
+ noteWhatToAskSend();
1084
+ void sendMessage(text).catch((err) => {
1085
+ console.error("[EmbeddableChat] sendPrompt failed:", err);
1086
+ });
1087
+ };
1088
+ });
1089
+ const showWhatToAskRef = useRef(showWhatToAsk);
1090
+ useEffect(() => {
1091
+ showWhatToAskRef.current = showWhatToAsk;
1092
+ });
1093
+ const whatToAskPendingRef = useRef(false);
1094
+ const requestWhatToAsk = () => {
1095
+ if (!whatToAskContent) return;
1096
+ if (typeof whatToAskContent !== "function") {
1097
+ showWhatToAsk(whatToAskContent);
1098
+ return;
1099
+ }
1100
+ if (whatToAskPendingRef.current) return;
1101
+ whatToAskPendingRef.current = true;
1102
+ whatToAskContent().then((content) => showWhatToAskRef.current(content)).catch((err) => console.error("[EmbeddableChat] whatToAsk failed:", err)).finally(() => {
1103
+ whatToAskPendingRef.current = false;
1104
+ });
1105
+ };
1038
1106
  const queuedAskRef = useRef(null);
1039
1107
  useEffect(() => {
1040
1108
  askAboutRef.current = (reference) => {
@@ -1146,13 +1214,14 @@ function EmbeddableChatInner({
1146
1214
  dialogs,
1147
1215
  activeDialogId: activeDialogId ?? void 0,
1148
1216
  // Beside a new chat (wide only: narrow, the list is its own screen).
1149
- draftTitle: wideMingo && !hasConversation && !archiveOpen ? freshConversationTitle : void 0,
1217
+ // A new chat holding only "What to ask?" exchanges is still that new chat.
1218
+ draftTitle: wideMingo && (!hasConversation || isWhatToAskDraft) && !archiveOpen ? freshConversationTitle : void 0,
1150
1219
  onSelectDialog: (id) => leaveArchiveThen(() => handleSelectDialog(id))(),
1151
1220
  onNewChat: leaveArchiveThen(handleNewChat),
1152
1221
  onOpenArchive: headerOnOpenArchive && (archiveOpen ? closeArchive : headerOnOpenArchive),
1153
1222
  archiveActive: archiveOpen,
1154
1223
  // The suggestions a new chat opens on, unless the host has a surface of its own.
1155
- onWhatToAsk: leaveArchiveThen(onWhatToAsk ?? handleNewChat),
1224
+ onWhatToAsk: () => leaveArchiveThen(onWhatToAsk ?? (whatToAskContent ? requestWhatToAsk : handleNewChat))(),
1156
1225
  statusOf: dialogStatusOf,
1157
1226
  onRequestRename: mingoCaps.canRename ? setRenameTarget : void 0,
1158
1227
  onRequestArchive: mingoCaps.canArchive ? setArchiveTarget : void 0,
@@ -1180,6 +1249,7 @@ function EmbeddableChatInner({
1180
1249
  onToggleList: wideMingo ? toggleRailCollapsed : headerShowBack ? headerOnBack : () => setComposeOpen(false),
1181
1250
  listOpen: splitActive,
1182
1251
  menuItems: headerShowBack && !isViewingArchived ? splitHeaderMenuItems : [],
1252
+ extraMenuItems: isViewingArchived || archiveOpen ? void 0 : chatMenuExtraItems,
1183
1253
  onRestore: isViewingArchived ? headerOnRestore : void 0,
1184
1254
  onCollapse: wideMingo && onCollapse ? () => {
1185
1255
  if (collapseTo === "list" && hasConversation) headerOnBack();
@@ -10,6 +10,7 @@ export * from './use-chat-attachment-image-gallery';
10
10
  export * from './use-chat-identity';
11
11
  export * from './use-chat-card-item';
12
12
  export * from './use-close-on-navigation';
13
+ export * from './use-what-to-ask';
13
14
  export * from './use-chat';
14
15
  export * from './use-sse';
15
16
  export * from './use-sse-chat-adapter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/hooks/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAK1C,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAM1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAMpC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/hooks/index.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAKlC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAM1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AAMpC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC"}
@@ -10,6 +10,7 @@ export * from "./use-chat-attachment-image-gallery.js";
10
10
  export * from "./use-chat-identity.js";
11
11
  export * from "./use-chat-card-item.js";
12
12
  export * from "./use-close-on-navigation.js";
13
+ export * from "./use-what-to-ask.js";
13
14
  export * from "./use-chat.js";
14
15
  export * from "./use-sse.js";
15
16
  export * from "./use-sse-chat-adapter.js";
@@ -0,0 +1,69 @@
1
+ import type { AssistantType, AuthorType } from '../types/chat.types';
2
+ import type { Message, SuggestionGroup } from '../types/message.types';
3
+ /**
4
+ * The "What to ask?" exchange: the question the user is shown asking, and the
5
+ * assistant's answer, a line of text over grouped prompt chips.
6
+ */
7
+ export interface WhatToAskContent {
8
+ /** The user's side, e.g. "What can I ask you?". */
9
+ question: string;
10
+ /** The answer's text (markdown), above the chips. */
11
+ reply: string;
12
+ groups: SuggestionGroup[];
13
+ /** A line under the chips, e.g. how picking one works. */
14
+ note?: string;
15
+ }
16
+ /** Who a side of the exchange is shown as. */
17
+ export interface WhatToAskAuthor {
18
+ name?: string;
19
+ avatar?: string | null;
20
+ authorType?: AuthorType;
21
+ assistantType?: AssistantType;
22
+ }
23
+ export interface UseWhatToAskOptions {
24
+ /** The open conversation; `null` for a new chat that has no dialog yet. */
25
+ dialogId: string | null | undefined;
26
+ /** What an exchange shows unless `ask` is handed its own. */
27
+ content?: WhatToAskContent;
28
+ user?: WhatToAskAuthor;
29
+ assistant?: WhatToAskAuthor;
30
+ /** Where a picked prompt goes (typically: sent). Absent: sent in the surrounding chat panel. */
31
+ onPick?: (prompt: string) => void;
32
+ }
33
+ export interface WhatToAsk {
34
+ /**
35
+ * Show the exchange: at the end of the open conversation (`'current'`), or
36
+ * in the new chat (`'draft'`), which then reads as a conversation until it
37
+ * is sent or left. `content` overrides the hook's for this exchange (e.g.
38
+ * prompts built from live data); each exchange keeps what it was shown
39
+ * with. No-op without either.
40
+ */
41
+ ask: (target: 'current' | 'draft', content?: WhatToAskContent) => void;
42
+ /** The thread with the exchanges of the open conversation (or the new chat) merged in by time. */
43
+ withExchanges: (messages: Message[]) => Message[];
44
+ /** Call before sending: a new chat's exchanges then move into the dialog the send creates. */
45
+ noteSend: () => void;
46
+ /** Drop the new chat's exchanges (the user started over or left it). */
47
+ clearDraft: () => void;
48
+ }
49
+ /**
50
+ * Local "What to ask?" exchanges, per conversation: never sent, never stored,
51
+ * gone on reload. Each is a user message and an assistant message carrying a
52
+ * `suggestions` segment, built at render from the exchange's content. A new chat holds its
53
+ * own until a send gives it a dialog (they move there) or the user opens
54
+ * another conversation (they are dropped).
55
+ */
56
+ export declare function useWhatToAsk({ dialogId, content, user, assistant, onPick }: UseWhatToAskOptions): WhatToAsk;
57
+ /**
58
+ * Whether the thread waits on the user before it can go on: an approval or an
59
+ * escalation offer nobody has answered. "What to ask?" opens a new chat then,
60
+ * rather than adding prompts to a conversation that cannot take them.
61
+ */
62
+ export declare function awaitsDecision(messages: readonly Message[]): boolean;
63
+ /**
64
+ * Places each local message before the first thread message that is later
65
+ * than it, keeping the thread's own order. A thread message without a time
66
+ * never moves anything past it.
67
+ */
68
+ export declare function mergeByTime(thread: Message[], local: Message[]): Message[];
69
+ //# sourceMappingURL=use-what-to-ask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-what-to-ask.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/hooks/use-what-to-ask.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,gGAAgG;IAChG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB;;;;;;OAMG;IACH,GAAG,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvE,kGAAkG;IAClG,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;IAClD,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,wEAAwE;IACxE,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAWD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,mBAAmB,GAAG,SAAS,CA0D3G;AAmCD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAYpE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAa1E"}