@epam/ai-dial-chat-shared 1.2.0-dev.102 → 1.2.0-dev.106

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.
@@ -1,22 +1,28 @@
1
1
  import { MarkdownRenderer as e } from "./MarkdownRenderer.js";
2
2
  import { DEFAULT_MARKDOWN_CLASS_NAMES as t } from "./markdown-class-names.js";
3
- import { memo as n } from "react";
4
- import { jsx as r } from "react/jsx-runtime";
3
+ import { PlainTextRenderer as n } from "./PlainTextRenderer.js";
4
+ import { memo as r } from "react";
5
+ import { jsx as i } from "react/jsx-runtime";
5
6
  //#region src/components/MarkdownRenderer/MDMessageViewer.tsx
6
- var i = n(({ content: n, isStreaming: i, thinkingLabel: a, components: o, urlTransform: s, codeBlockCopyLabel: c, codeBlockCopiedLabel: l, codeBlockTheme: u, tableActionLabels: d, tableDownloadFilename: f, tableOnOpenInCanvas: p, tableScrollRegionAriaLabel: m, classNames: h = t }) => /* @__PURE__ */ r(e, {
7
- content: n,
8
- isStreaming: i,
9
- thinkingLabel: a,
10
- components: o,
11
- urlTransform: s,
12
- codeBlockCopyLabel: c,
13
- codeBlockCopiedLabel: l,
14
- codeBlockTheme: u,
15
- tableActionLabels: d,
16
- tableDownloadFilename: f,
17
- tableOnOpenInCanvas: p,
18
- tableScrollRegionAriaLabel: m,
19
- classNames: h
7
+ var a = r(({ content: r, isPlainText: a, isStreaming: o, thinkingLabel: s, components: c, urlTransform: l, codeBlockCopyLabel: u, codeBlockCopiedLabel: d, codeBlockTheme: f, tableActionLabels: p, tableDownloadFilename: m, tableOnOpenInCanvas: h, tableScrollRegionAriaLabel: g, classNames: _ = t }) => a ? /* @__PURE__ */ i(n, {
8
+ content: r,
9
+ isStreaming: o,
10
+ thinkingLabel: s,
11
+ classNames: _
12
+ }) : /* @__PURE__ */ i(e, {
13
+ content: r,
14
+ isStreaming: o,
15
+ thinkingLabel: s,
16
+ components: c,
17
+ urlTransform: l,
18
+ codeBlockCopyLabel: u,
19
+ codeBlockCopiedLabel: d,
20
+ codeBlockTheme: f,
21
+ tableActionLabels: p,
22
+ tableDownloadFilename: m,
23
+ tableOnOpenInCanvas: h,
24
+ tableScrollRegionAriaLabel: g,
25
+ classNames: _
20
26
  }));
21
27
  //#endregion
22
- export { i as MDMessageViewer };
28
+ export { a as MDMessageViewer };
@@ -8,20 +8,21 @@ import { MarkdownMathBlock as o } from "./Math/MarkdownMathBlock.js";
8
8
  import s from "./Table/MarkdownTable.module.scss.js";
9
9
  import { MarkdownTable as c } from "./Table/MarkdownTable.js";
10
10
  import { MarkdownTaskCheckbox as l } from "./TaskCheckbox/MarkdownTaskCheckbox.js";
11
- import u from "remark-gfm";
12
- import { memo as d, useEffect as f, useMemo as p, useState as m } from "react";
13
- import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
14
- import v, { defaultUrlTransform as y } from "react-markdown";
15
- import b from "rehype-raw";
16
- import x, { defaultSchema as S } from "rehype-sanitize";
17
- import C from "remark-breaks";
18
- import w from "remark-math";
11
+ import { ThinkingShimmer as u } from "./ThinkingShimmer.js";
12
+ import d from "remark-gfm";
13
+ import { memo as f, useEffect as p, useMemo as m, useState as h } from "react";
14
+ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
15
+ import y, { defaultUrlTransform as b } from "react-markdown";
16
+ import x from "rehype-raw";
17
+ import S, { defaultSchema as C } from "rehype-sanitize";
18
+ import w from "remark-breaks";
19
+ import T from "remark-math";
19
20
  //#region src/components/MarkdownRenderer/MarkdownRenderer.tsx
20
- var T = [
21
- u,
22
- C,
23
- [w, { singleDollarTextMath: !1 }]
24
- ], E = /* @__PURE__ */ "math.maction.annotation.annotation-xml.menclose.merror.mfenced.mfrac.mi.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.semantics.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover".split("."), D = {
21
+ var E = [
22
+ d,
23
+ w,
24
+ [T, { singleDollarTextMath: !1 }]
25
+ ], D = /* @__PURE__ */ "math.maction.annotation.annotation-xml.menclose.merror.mfenced.mfrac.mi.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.semantics.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover".split("."), O = {
25
26
  math: ["display", "xmlns"],
26
27
  annotation: ["encoding"],
27
28
  mfrac: ["linethickness"],
@@ -50,93 +51,93 @@ var T = [
50
51
  "width"
51
52
  ],
52
53
  mtd: ["width"]
53
- }, O = [b], k = [x, {
54
- ...S,
54
+ }, k = [x], A = [S, {
55
+ ...C,
55
56
  tagNames: [
56
- ...S.tagNames ?? [],
57
- ...E,
57
+ ...C.tagNames ?? [],
58
+ ...D,
58
59
  "cit"
59
60
  ],
60
61
  attributes: {
61
- ...S.attributes,
62
- ...D,
63
- code: [...S.attributes?.code ?? [], ["className"]],
62
+ ...C.attributes,
63
+ ...O,
64
+ code: [...C.attributes?.code ?? [], ["className"]],
64
65
  cit: ["dataId"],
65
- span: [...S.attributes?.span ?? [], [
66
+ span: [...C.attributes?.span ?? [], [
66
67
  "className",
67
68
  "katex",
68
69
  "katex-error"
69
70
  ]]
70
71
  }
71
- }], A = [], j = /\$\$|\\\(|\\\[/, M = (e) => j.test(e), N = {}, P = (e) => e == null ? y : (t) => y(e(t)), F = {
72
- li: ({ children: e }) => /* @__PURE__ */ g("li", {
72
+ }], j = [], M = /\$\$|\\\(|\\\[/, N = (e) => M.test(e), P = {}, F = (e) => e == null ? b : (t) => b(e(t)), I = {
73
+ li: ({ children: e }) => /* @__PURE__ */ _("li", {
73
74
  className: "mb-1.5 last:mb-0",
74
75
  children: e
75
76
  }),
76
- cit: ({ children: e, ...t }) => /* @__PURE__ */ _(h, { children: [
77
+ cit: ({ children: e, ...t }) => /* @__PURE__ */ v(g, { children: [
77
78
  t["data-id"] == null ? "<cit>" : `<cit data-id="${t["data-id"]}">`,
78
79
  e,
79
80
  "</cit>"
80
81
  ] })
81
- }, I = (e) => {
82
+ }, L = (e) => {
82
83
  let t = e?.properties?.className;
83
84
  return !Array.isArray(t) || !t.includes("katex") ? !1 : (e?.children ?? []).some((e) => e.type === "element" && e.tagName === "math" && e.properties?.display === "block");
84
- }, L = {
85
+ }, R = {
85
86
  left: "text-start",
86
87
  center: "text-center",
87
88
  right: "text-end"
88
- }, R = (e) => {
89
+ }, z = (e) => {
89
90
  let t = e?.properties?.align;
90
- return typeof t == "string" ? L[t] : void 0;
91
- }, z = (e) => e ? e.type === "text" ? e.value ?? "" : (e.children ?? []).map(z).join("") : "", B = (t, { isStreaming: n, codeBlockCopyLabel: r, codeBlockCopiedLabel: u, codeBlockTheme: d, tableActionLabels: f, tableDownloadFilename: p, tableOnOpenInCanvas: m, tableScrollRegionAriaLabel: _, mathScrollRegionAriaLabel: v }) => ({
92
- h1: ({ children: e }) => /* @__PURE__ */ g("h1", {
91
+ return typeof t == "string" ? R[t] : void 0;
92
+ }, B = (e) => e ? e.type === "text" ? e.value ?? "" : (e.children ?? []).map(B).join("") : "", V = (t, { isStreaming: n, codeBlockCopyLabel: r, codeBlockCopiedLabel: u, codeBlockTheme: d, tableActionLabels: f, tableDownloadFilename: p, tableOnOpenInCanvas: m, tableScrollRegionAriaLabel: h, mathScrollRegionAriaLabel: v }) => ({
93
+ h1: ({ children: e }) => /* @__PURE__ */ _("h1", {
93
94
  className: t.h1,
94
95
  children: e
95
96
  }),
96
- h2: ({ children: e }) => /* @__PURE__ */ g("h2", {
97
+ h2: ({ children: e }) => /* @__PURE__ */ _("h2", {
97
98
  className: t.h2,
98
99
  children: e
99
100
  }),
100
- h3: ({ children: e }) => /* @__PURE__ */ g("h3", {
101
+ h3: ({ children: e }) => /* @__PURE__ */ _("h3", {
101
102
  className: t.h3,
102
103
  children: e
103
104
  }),
104
- h4: ({ children: e }) => /* @__PURE__ */ g("h4", {
105
+ h4: ({ children: e }) => /* @__PURE__ */ _("h4", {
105
106
  className: t.h4,
106
107
  children: e
107
108
  }),
108
- h5: ({ children: e }) => /* @__PURE__ */ g("h5", {
109
+ h5: ({ children: e }) => /* @__PURE__ */ _("h5", {
109
110
  className: t.h5,
110
111
  children: e
111
112
  }),
112
- h6: ({ children: n }) => /* @__PURE__ */ g("h6", {
113
+ h6: ({ children: n }) => /* @__PURE__ */ _("h6", {
113
114
  className: e(a.h6, t.h6),
114
115
  children: n
115
116
  }),
116
- p: ({ children: n }) => /* @__PURE__ */ g("p", {
117
+ p: ({ children: n }) => /* @__PURE__ */ _("p", {
117
118
  className: e("break-words", t.p),
118
119
  children: n
119
120
  }),
120
- ul: ({ children: n }) => /* @__PURE__ */ g("ul", {
121
+ ul: ({ children: n }) => /* @__PURE__ */ _("ul", {
121
122
  className: e("list-disc ps-[2em]", t.ul),
122
123
  children: n
123
124
  }),
124
- ol: ({ children: n }) => /* @__PURE__ */ g("ol", {
125
+ ol: ({ children: n }) => /* @__PURE__ */ _("ol", {
125
126
  className: e("list-decimal ps-[2em]", t.ol),
126
127
  children: n
127
128
  }),
128
- strong: ({ children: e }) => /* @__PURE__ */ g("strong", {
129
+ strong: ({ children: e }) => /* @__PURE__ */ _("strong", {
129
130
  className: t.strong ?? "dial-body-paragraph-semi-text",
130
131
  children: e
131
132
  }),
132
- em: ({ children: e }) => /* @__PURE__ */ g("em", {
133
+ em: ({ children: e }) => /* @__PURE__ */ _("em", {
133
134
  className: t.em ?? "italic",
134
135
  children: e
135
136
  }),
136
- pre: ({ children: e }) => /* @__PURE__ */ g(h, { children: e }),
137
+ pre: ({ children: e }) => /* @__PURE__ */ _(g, { children: e }),
137
138
  code: ({ children: o, className: s }) => {
138
139
  let c = /language-(\w+)/.exec(s ?? "")?.[1] ?? "", l = String(o);
139
- return c || l.includes("\n") ? /* @__PURE__ */ g(i, {
140
+ return c || l.includes("\n") ? /* @__PURE__ */ _(i, {
140
141
  language: c,
141
142
  value: l.replace(/\n$/, ""),
142
143
  isStreaming: n,
@@ -146,64 +147,64 @@ var T = [
146
147
  containerClassName: t.codeBlockContainer,
147
148
  headerClassName: t.codeBlockHeader,
148
149
  codeClassName: t.codeFont
149
- }) : /* @__PURE__ */ g("code", {
150
+ }) : /* @__PURE__ */ _("code", {
150
151
  className: e("rounded px-1 py-0.5", a.codeInline, t.codeInlineFont ?? "dial-code-text", t.codeInline),
151
152
  children: o
152
153
  });
153
154
  },
154
- blockquote: ({ children: n }) => /* @__PURE__ */ g("blockquote", {
155
+ blockquote: ({ children: n }) => /* @__PURE__ */ _("blockquote", {
155
156
  className: e("border-s-2 py-1 ps-4", a.blockquote, t.blockquote),
156
157
  children: n
157
158
  }),
158
- a: ({ href: n, children: r }) => /* @__PURE__ */ g("a", {
159
+ a: ({ href: n, children: r }) => /* @__PURE__ */ _("a", {
159
160
  href: n,
160
161
  target: "_blank",
161
162
  rel: "noopener noreferrer",
162
163
  className: e("decoration-current/60 break-words underline underline-offset-2 hover:decoration-current focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2", a.link, t.link),
163
164
  children: r
164
165
  }),
165
- hr: () => /* @__PURE__ */ g("hr", { className: e("my-5 border-t", a.secondaryBorder, t.hr) }),
166
- del: ({ children: n }) => /* @__PURE__ */ g("del", {
166
+ hr: () => /* @__PURE__ */ _("hr", { className: e("my-5 border-t", a.secondaryBorder, t.hr) }),
167
+ del: ({ children: n }) => /* @__PURE__ */ _("del", {
167
168
  className: e("opacity-75", t.del),
168
169
  children: n
169
170
  }),
170
- input: ({ type: e, checked: t }) => e === "checkbox" ? /* @__PURE__ */ g(l, { checked: t ?? !1 }) : null,
171
- span: ({ children: e, node: n, ...r }) => I(n) ? /* @__PURE__ */ g(o, {
171
+ input: ({ type: e, checked: t }) => e === "checkbox" ? /* @__PURE__ */ _(l, { checked: t ?? !1 }) : null,
172
+ span: ({ children: e, node: n, ...r }) => L(n) ? /* @__PURE__ */ _(o, {
172
173
  className: t.mathBlock,
173
174
  scrollRegionAriaLabel: v,
174
175
  children: e
175
- }) : /* @__PURE__ */ g("span", {
176
+ }) : /* @__PURE__ */ _("span", {
176
177
  ...r,
177
178
  children: e
178
179
  }),
179
- table: ({ children: e }) => /* @__PURE__ */ g(c, {
180
+ table: ({ children: e }) => /* @__PURE__ */ _(c, {
180
181
  classNames: t,
181
182
  actionLabels: f,
182
183
  downloadFilename: p,
183
184
  onOpenInCanvas: m,
184
185
  isStreaming: n,
185
- scrollRegionAriaLabel: _,
186
+ scrollRegionAriaLabel: h,
186
187
  children: e
187
188
  }),
188
189
  tr: ({ children: t, node: n }) => {
189
- let r = n?.children.filter((e) => e.type === "element") ?? [], i = r.some((e) => e.tagName === "th"), a = r.filter((e) => z(e).trim().length > 0).length, o = !i && r.length > 1 && a === 1;
190
- return /* @__PURE__ */ g("tr", {
190
+ let r = n?.children.filter((e) => e.type === "element") ?? [], i = r.some((e) => e.tagName === "th"), a = r.filter((e) => B(e).trim().length > 0).length, o = !i && r.length > 1 && a === 1;
191
+ return /* @__PURE__ */ _("tr", {
191
192
  className: e(s.row, o && s.sectionRow),
192
193
  children: t
193
194
  });
194
195
  },
195
- th: ({ children: n, node: r }) => /* @__PURE__ */ g("th", {
196
+ th: ({ children: n, node: r }) => /* @__PURE__ */ _("th", {
196
197
  scope: "col",
197
- className: e("sticky top-0 z-[2] max-w-96 whitespace-normal break-words px-3 py-2.5 text-start", R(r), s.rowDivider, s.tableHeaderCell, t.tableHeaderFont ?? "dial-tiny-lead-semi-text", t.tableCell, t.tableHeader),
198
+ className: e("sticky top-0 z-[2] max-w-96 whitespace-normal break-words px-3 py-2.5 text-start", z(r), s.rowDivider, s.tableHeaderCell, t.tableHeaderFont ?? "dial-tiny-lead-semi-text", t.tableCell, t.tableHeader),
198
199
  children: n
199
200
  }),
200
- td: ({ children: n, node: r }) => /* @__PURE__ */ g("td", {
201
- className: e("max-w-96 whitespace-normal px-3 py-[7px] align-top [overflow-wrap:anywhere]", R(r), s.rowDivider, t.tableBodyCell, t.tableCell),
201
+ td: ({ children: n, node: r }) => /* @__PURE__ */ _("td", {
202
+ className: e("max-w-96 whitespace-normal px-3 py-[7px] align-top [overflow-wrap:anywhere]", z(r), s.rowDivider, t.tableBodyCell, t.tableCell),
202
203
  children: n
203
204
  })
204
- }), V = d(({ content: e, containerClassName: i, isStreaming: o, streamCharactersPerSecond: s, classNames: c = N, components: l, urlTransform: u, rehypePlugins: d = A, thinkingLabel: h = "Thinking", codeBlockCopyLabel: _, codeBlockCopiedLabel: y, codeBlockTheme: b, colors: x, tableActionLabels: S, tableDownloadFilename: C, tableOnOpenInCanvas: w, tableScrollRegionAriaLabel: E, mathScrollRegionAriaLabel: D }) => {
205
- let j = n(e, o, s), I = p(() => r(j), [j]), L = p(() => M(I), [I]), [R, z] = m(null);
206
- f(() => {
205
+ }), H = f(({ content: e, containerClassName: i, isStreaming: a, streamCharactersPerSecond: o, classNames: s = P, components: c, urlTransform: l, rehypePlugins: d = j, thinkingLabel: f = "Thinking", codeBlockCopyLabel: g, codeBlockCopiedLabel: v, codeBlockTheme: b, colors: x, tableActionLabels: S, tableDownloadFilename: C, tableOnOpenInCanvas: w, tableScrollRegionAriaLabel: T, mathScrollRegionAriaLabel: D }) => {
206
+ let O = n(e, a, o), M = m(() => r(O), [O]), L = m(() => N(M), [M]), [R, z] = h(null);
207
+ p(() => {
207
208
  if (!L || R) return;
208
209
  let e = !1;
209
210
  return (async () => {
@@ -216,14 +217,12 @@ var T = [
216
217
  e = !0;
217
218
  };
218
219
  }, [L, R]);
219
- let V = p(() => [
220
- ...O,
220
+ let B = m(() => [
221
+ ...k,
221
222
  ...R ? [R] : [],
222
- k,
223
+ A,
223
224
  ...d
224
225
  ], [R, d]), H = t({
225
- "--cm-thinking-inverted": x?.thinkingPrimary,
226
- "--cm-thinking-secondary": x?.thinkingSecondary,
227
226
  "--cm-markdown-border": x?.border,
228
227
  "--cm-blockquote-border": x?.blockquoteBorder,
229
228
  "--cm-blockquote-text": x?.blockquoteText,
@@ -233,48 +232,47 @@ var T = [
233
232
  "--cm-h6-text": x?.headingSixText,
234
233
  "--cm-code-inline-bg": x?.inlineCodeBackground,
235
234
  "--cm-code-inline-text": x?.inlineCodeText
236
- }), U = p(() => P(u), [u]), W = p(() => ({
237
- ...B(c, {
238
- isStreaming: o,
239
- codeBlockCopyLabel: _,
240
- codeBlockCopiedLabel: y,
235
+ }), U = m(() => F(l), [l]), W = m(() => ({
236
+ ...V(s, {
237
+ isStreaming: a,
238
+ codeBlockCopyLabel: g,
239
+ codeBlockCopiedLabel: v,
241
240
  codeBlockTheme: b,
242
241
  tableActionLabels: S,
243
242
  tableDownloadFilename: C,
244
243
  tableOnOpenInCanvas: w,
245
- tableScrollRegionAriaLabel: E,
244
+ tableScrollRegionAriaLabel: T,
246
245
  mathScrollRegionAriaLabel: D
247
246
  }),
248
- ...F,
249
- ...l
247
+ ...I,
248
+ ...c
250
249
  }), [
251
- c,
252
- o,
253
- _,
254
- y,
250
+ s,
251
+ a,
252
+ g,
253
+ v,
255
254
  b,
256
255
  S,
257
256
  C,
258
257
  w,
259
- E,
258
+ T,
260
259
  D,
261
- l
260
+ c
262
261
  ]);
263
- return o && !j ? /* @__PURE__ */ g("span", {
264
- className: a.thinking,
265
- style: H,
266
- children: h
267
- }) : /* @__PURE__ */ g("div", {
262
+ return a && !O ? /* @__PURE__ */ _(u, {
263
+ label: f,
264
+ colors: x
265
+ }) : /* @__PURE__ */ _("div", {
268
266
  style: H,
269
267
  className: i,
270
- children: /* @__PURE__ */ g(v, {
271
- remarkPlugins: T,
272
- rehypePlugins: V,
268
+ children: /* @__PURE__ */ _(y, {
269
+ remarkPlugins: E,
270
+ rehypePlugins: B,
273
271
  components: W,
274
272
  urlTransform: U,
275
- children: I
273
+ children: M
276
274
  })
277
275
  });
278
276
  });
279
277
  //#endregion
280
- export { V as MarkdownRenderer, F as defaultMarkdownComponents };
278
+ export { H as MarkdownRenderer, I as defaultMarkdownComponents };
@@ -0,0 +1,21 @@
1
+ import { mergeClasses as e } from "../../utils/merge-class.js";
2
+ import { useStreamedMarkdownContent as t } from "../../hooks/useStreamedMarkdownContent.js";
3
+ import { ThinkingShimmer as n } from "./ThinkingShimmer.js";
4
+ import { memo as r } from "react";
5
+ import { jsx as i } from "react/jsx-runtime";
6
+ //#region src/components/MarkdownRenderer/PlainTextRenderer.tsx
7
+ var a = {}, o = r(({ content: r, containerClassName: o, isStreaming: s, streamCharactersPerSecond: c, classNames: l = a, thinkingLabel: u = "Thinking", colors: d }) => {
8
+ let f = t(r, s, c);
9
+ return s && !f ? /* @__PURE__ */ i(n, {
10
+ label: u,
11
+ colors: d
12
+ }) : /* @__PURE__ */ i("div", {
13
+ className: o,
14
+ children: /* @__PURE__ */ i("p", {
15
+ className: e(l.p, "whitespace-pre-wrap break-words [overflow-wrap:anywhere]"),
16
+ children: f
17
+ })
18
+ });
19
+ });
20
+ //#endregion
21
+ export { o as PlainTextRenderer };
@@ -0,0 +1,14 @@
1
+ import { buildCssVars as e } from "../../utils/build-css-vars.js";
2
+ import t from "./MarkdownRenderer.module.scss.js";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region src/components/MarkdownRenderer/ThinkingShimmer.tsx
5
+ var r = ({ label: r, colors: i }) => /* @__PURE__ */ n("span", {
6
+ className: t.thinking,
7
+ style: e({
8
+ "--cm-thinking-inverted": i?.thinkingPrimary,
9
+ "--cm-thinking-secondary": i?.thinkingSecondary
10
+ }),
11
+ children: r
12
+ });
13
+ //#endregion
14
+ export { r as ThinkingShimmer };
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
1
  ._agentIconBadge_1ger8_1{background:var(--di-icon-bg,var(--bg-layer-sunken,#eef1f7))}._badge_1ko75_1{background:var(--ia-bg,var(--bg-visual-green-1,#cde8e5))}._initials_1ko75_5{color:var(--ia-fg,var(--text-visual-green-2,#0d6e72))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._container_sqe5k_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._containerLight_sqe5k_6{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc))}._header_sqe5k_10{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._languageLabel_sqe5k_15{color:var(--cm-code-block-language,var(--text-secondary,#57647a))}._copiedIcon_sqe5k_19{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_sqe5k_23 .token.table,._scrollContainer_sqe5k_23 .token.table-header-row,._scrollContainer_sqe5k_23 .token.table-line,._scrollContainer_sqe5k_23 .token.table-data-rows{display:inline}._scrollContainer_sqe5k_23{scrollbar-width:thin;scrollbar-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_sqe5k_23::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_sqe5k_23::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_sqe5k_23::-webkit-scrollbar-thumb{background-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}@keyframes _cm-shimmer_1g29w_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1g29w_9{background:linear-gradient(270deg, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 0%, var(--cm-thinking-secondary,var(--text-secondary,#57647a)) 40%, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 80%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite _cm-shimmer_1g29w_1}._h6_1g29w_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1g29w_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1g29w_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1g29w_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1g29w_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1g29w_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus-black,#161b2d))}._scrollContainer_1f433_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1f433_1::-webkit-scrollbar{height:4px}._scrollContainer_1f433_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1f433_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_1f433_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus-black,#161b2d));outline-offset:2px}._mathContent_1f433_24{width:max-content;min-width:100%;display:block}._tableContainer_1fwnj_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._tableContainerLight_1fwnj_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._copiedIcon_1fwnj_10{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_1fwnj_14{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1fwnj_14::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_1fwnj_14::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1fwnj_14::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_1fwnj_30{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));height:3rem;color:var(--cm-table-header-text,var(--text-secondary,#57647a))}._sectionRow_1fwnj_37 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_1fwnj_41{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_1fwnj_41:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}[dir=rtl] ._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}._tableScrollFadeBoth_1fwnj_67{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableHeader_1qvg8_1{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._label_12p89_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._row_1csuq_1{border-color:var(--rs-border,var(--stroke-tertiary,#e0e6f0));background:var(--rs-bg,var(--bg-layer-sunken,#eef1f7))}._versionTag_1csuq_7{border-color:var(--rs-version-tag-border,var(--stroke-tertiary,#e0e6f0))!important;background:var(--rs-version-tag-bg,var(--bg-control-accent-alpha,#2764d90f))!important;color:var(--rs-version-tag-text,var(--text-accent,#1d4ed8))!important}
2
- /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-full{height:100%;width:100%}.\!h-\[min\(800px\2c 100dvh\)\]{height:min(800px,100dvh)!important}.\!h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-0{height:0}.h-\[24px\]{height:24px}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-\[7px\]{padding-bottom:7px;padding-top:7px}.ps-4{padding-inline-start:1rem}.ps-\[2em\]{padding-inline-start:2em}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-secondary{color:var(--text-secondary,#57647a)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-chat-button{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--shadow-xs-1,#2764d933),0 2px 6px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color),0 2px 6px 0 var(--tw-shadow-color)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933),0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[overflow\:clip\]{overflow:clip}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:decoration-current:hover{text-decoration-color:currentColor}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.group\/table:hover .group-hover\/table\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:\!w-full{width:100%!important}}@media (min-width:1280px){.desktop\:\!max-h-\[693px\]{max-height:693px!important}.desktop\:p-4{padding:1rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}
2
+ /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-full{height:100%;width:100%}.\!h-\[min\(800px\2c 100dvh\)\]{height:min(800px,100dvh)!important}.\!h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-0{height:0}.h-\[24px\]{height:24px}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-\[7px\]{padding-bottom:7px;padding-top:7px}.ps-4{padding-inline-start:1rem}.ps-\[2em\]{padding-inline-start:2em}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-secondary{color:var(--text-secondary,#57647a)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-chat-button{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--shadow-xs-1,#2764d933),0 2px 6px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color),0 2px 6px 0 var(--tw-shadow-color)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933),0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[overflow\:clip\]{overflow:clip}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:decoration-current:hover{text-decoration-color:currentColor}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.group\/table:hover .group-hover\/table\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:\!w-full{width:100%!important}}@media (min-width:1280px){.desktop\:\!max-h-\[693px\]{max-height:693px!important}.desktop\:p-4{padding:1rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}
package/index.d.ts CHANGED
@@ -1330,6 +1330,9 @@ export declare const isAudioTranscriptionSupported: (types?: string[]) => boolea
1330
1330
  /** Returns true when any path segment starts with a dot (hidden file or folder). */
1331
1331
  export declare const isHiddenPath: (path: string) => boolean;
1332
1332
 
1333
+ /** Whether a selected skill lacks explicitly confirmed support. */
1334
+ export declare const isSkillSelectionUnsupported: (skillUrl: string | null | undefined, isSkillsSupported: boolean | undefined) => boolean;
1335
+
1333
1336
  /** Returns `true` when `msg` is a `StatusMessage`. */
1334
1337
  export declare const isStatusMessage: (msg: Message | StatusMessage) => msg is StatusMessage;
1335
1338
 
@@ -1658,13 +1661,20 @@ export declare interface MarkdownWithPlaceholdersProps {
1658
1661
  headingClassName?: string;
1659
1662
  }
1660
1663
 
1661
- /** Renders assistant message content as formatted markdown. */
1664
+ /** Renders assistant message content as formatted markdown, or as escaped plain text when `isPlainText` is set. */
1662
1665
  export declare const MDMessageViewer: FC<MDMessageViewerProps>;
1663
1666
 
1664
1667
  /** Props for the {@link MDMessageViewer} markdown renderer. */
1665
1668
  declare interface MDMessageViewerProps {
1666
1669
  /** Raw markdown string to render. */
1667
1670
  content: string;
1671
+ /**
1672
+ * Renders `content` verbatim as escaped plain text instead of running the
1673
+ * Markdown pipeline — the conversation's `plain_text` response format.
1674
+ * Markdown-only props (`components`, `urlTransform`, the code-block and
1675
+ * table labels) do not apply while it is set. Defaults to `false`.
1676
+ */
1677
+ isPlainText?: boolean;
1668
1678
  /** Enables gradual reveal for appended streaming content. */
1669
1679
  isStreaming?: boolean;
1670
1680
  /**
@@ -2020,6 +2030,44 @@ export declare interface PdfBBoxSelector {
2020
2030
  /** Returns a deterministic colour-pair for the given display name. */
2021
2031
  export declare const pickAvatarColor: (name: string) => AvatarColorEntry;
2022
2032
 
2033
+ /**
2034
+ * Renders message text as plain text: no Markdown pipeline, no raw HTML, no
2035
+ * syntax highlighting. The text is a React text child, so it is escaped by
2036
+ * construction — a table, a heading, or `**bold**` reaches the reader exactly
2037
+ * as the model emitted it, which is what a conversation's `plain_text`
2038
+ * response format promises.
2039
+ *
2040
+ * Lives beside {@link MarkdownRenderer} because it is the other half of the
2041
+ * same choice: both render an assistant message body, and both are selected
2042
+ * by `MDMessageViewer` from the conversation's response format.
2043
+ */
2044
+ export declare const PlainTextRenderer: FC<PlainTextRendererProps>;
2045
+
2046
+ /** Props for {@link PlainTextRenderer}. */
2047
+ export declare interface PlainTextRendererProps {
2048
+ /** Message text. Rendered verbatim — never parsed as Markdown or HTML. */
2049
+ content: string;
2050
+ /** Classes applied to the renderer root. */
2051
+ containerClassName?: string;
2052
+ /** When true, appended content is revealed gradually for smoother streaming updates. */
2053
+ isStreaming?: boolean;
2054
+ /** Reveal speed used while `isStreaming` is true. Defaults to 120 characters per second. */
2055
+ streamCharactersPerSecond?: number;
2056
+ /**
2057
+ * Typography classes. Only `p` is read — the single paragraph the renderer
2058
+ * emits — so the same object a Markdown message is styled with keeps both
2059
+ * formats on one type scale.
2060
+ */
2061
+ classNames?: Pick<MarkdownRendererClassNames, 'p'>;
2062
+ /**
2063
+ * Label shown with a shimmer animation while `isStreaming` is true and no
2064
+ * content has arrived yet. Defaults to `'Thinking'`.
2065
+ */
2066
+ thinkingLabel?: string;
2067
+ /** Color overrides applied as CSS custom properties. */
2068
+ colors?: Pick<MarkdownRendererColors, 'thinkingPrimary' | 'thinkingSecondary'>;
2069
+ }
2070
+
2023
2071
  /**
2024
2072
  * Selector that targets a character range inside a single shape on one PPTX
2025
2073
  * slide. Confirmed against captured DIAL Core responses: unlike
package/index.js CHANGED
@@ -50,15 +50,17 @@ import { DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME as Ue, MARKDOWN_TABLE_CSV_MIME
50
50
  import { MarkdownTable as qe } from "./components/MarkdownRenderer/Table/MarkdownTable.js";
51
51
  import { MarkdownRenderer as Je, defaultMarkdownComponents as Ye } from "./components/MarkdownRenderer/MarkdownRenderer.js";
52
52
  import { COMPACT_MARKDOWN_CLASS_NAMES as Xe, DEFAULT_MARKDOWN_CLASS_NAMES as Ze } from "./components/MarkdownRenderer/markdown-class-names.js";
53
- import { MDMessageViewer as Qe } from "./components/MarkdownRenderer/MDMessageViewer.js";
54
- import { MarkdownWithPlaceholders as $e } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
55
- import { useCollapsedText as et } from "./hooks/useCollapsedText.js";
56
- import { useAvailableHeightCap as tt } from "./hooks/useAvailableHeightCap.js";
57
- import { useIsMobile as nt } from "./hooks/useIsMobile.js";
58
- import { DialFileManagerActionProfile as rt, DialFileManagerVariant as it } from "./file-manager/file-manager-variant.js";
59
- import { getParentFolderPath as at, isHiddenPath as ot } from "./file-manager/path.js";
60
- import { FileUploadStatus as st } from "./file-manager/upload-batch.js";
61
- import { useGridEditingScroll as ct } from "./file-manager/useGridEditingScroll/useGridEditingScroll.js";
62
- import { OperationLoaderModal as lt } from "./file-manager/OperationLoaderModal/OperationLoaderModal.js";
63
- import { UploadProgressModal as ut } from "./file-manager/UploadProgressModal/UploadProgressModal.js";
64
- export { f as AttachmentErrorReason, p as AttachmentType, fe as BASE_LG_ICON_PROPS, pe as BASE_MD_ICON_PROPS, ze as CHAT_SHARED_CLASS, Xe as COMPACT_MARKDOWN_CLASS_NAMES, m as CatalogEntityType, _ as CodeBlockTheme, e as ConversationTransferErrorCode, t as ConversationTransferJobStatus, n as ConversationTransferSubjectKind, r as ConversationTransferUnitKind, i as ConversationTransferWarningCode, Ae as CopyButton, je as CopyIconButton, Ze as DEFAULT_MARKDOWN_CLASS_NAMES, Ue as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, Se as DESKTOP_BREAKPOINT_PX, Ce as DESKTOP_MEDIA_QUERY, ke as DeploymentIcon, rt as DialFileManagerActionProfile, it as DialFileManagerVariant, ne as ENTITY_TYPE_BG_COLOR, re as ENTITY_TYPE_COLOR, Ie as EntityHeader, Pe as EntityTypeLabel, Fe as FeaturedChip, h as FileExtension, st as FileUploadStatus, a as FilterTab, me as HIDDEN_FILE, Oe as InitialsAvatar, Ne as ItemHeader, ge as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, ye as MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME, We as MARKDOWN_TABLE_CSV_MIME_TYPE, Qe as MDMessageViewer, g as MIMEType, v as MIME_TYPE_ALIASES, y as MIME_TYPE_AUDIO_PREFIX, b as MIME_TYPE_EXT_MAP, x as MIME_TYPE_WILDCARD, we as MOBILE_MAX_WIDTH_PX, Te as MOBILE_MEDIA_QUERY, He as MarkdownCodeBlock, Je as MarkdownRenderer, qe as MarkdownTable, Ge as MarkdownTableCopyFormat, $e as MarkdownWithPlaceholders, o as MessageRating, s as MessageRole, lt as OperationLoaderModal, A as PROHIBITED_CONVERSATION_NAME_CHARS_RE, ie as PROMPT_PARAM_DEFAULT_SEPARATOR, ae as PROMPT_PARAM_PATTERN, oe as PROMPT_VARIABLE_CLASS_NAME, Me as PanelEmptyState, _e as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, ve as RESIZABLE_TEXTAREA_CLASS_NAME, c as RequestStatus, Le as ResourceSummary, d as ResponseFormat, be as SELECT_LIST_MAX_HEIGHT_CLASS_NAME, xe as SELECT_LIST_MAX_HEIGHT_PX, l as StageStatus, u as StatusEvent, he as TAG_INPUT_TAG_CLASS_NAME, Re as TableHeader, ut as UploadProgressModal, Y as base64ToBlob, I as buildCssVars, se as buildPromptParamDefaults, V as copyMarkdownAsRichText, H as copyToClipboard, Ye as defaultMarkdownComponents, X as downloadTextFile, Z as ensureDownloadFilename, De as extractInitials, ce as extractPromptParams, K as formatCost, G as formatFileSize, W as formatLastUsed, q as formatPrice, J as formatUnitPrice, de as generateUUID, S as getAttachmentTypeFromMime, C as getBaseMimeType, Q as getFileExtensionForLanguage, at as getParentFolderPath, j as getUtf8ByteLength, w as inferMimeTypeFromPath, D as isAnnotationSelector, B as isAudioTranscriptionSupported, ot as isHiddenPath, L as isStatusMessage, U as markdownToRichTextHtml, F as mergeClasses, R as messageAttachmentToDisplayAttachment, z as messageAttachmentsToDisplayAttachments, T as normalizeMimeType, O as normalizePersistedHtmlTagAttachmentType, k as normalizeRawAnnotations, Ee as pickAvatarColor, le as rehypePromptVariables, ue as resolvePromptParams, Ve as restrainedSyntaxTheme, M as sanitizeConversationName, Ke as serializeMarkdownTableRows, N as stripTrailingDots, E as stripUrlQueryAndFragment, $ as triggerAnchorDownload, ee as triggerBlobDownload, P as truncateToUtf8Bytes, te as tryBase64ToBytes, tt as useAvailableHeightCap, Be as useCodeCopy, et as useCollapsedText, ct as useGridEditingScroll, nt as useIsMobile };
53
+ import { PlainTextRenderer as Qe } from "./components/MarkdownRenderer/PlainTextRenderer.js";
54
+ import { MDMessageViewer as $e } from "./components/MarkdownRenderer/MDMessageViewer.js";
55
+ import { MarkdownWithPlaceholders as et } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
56
+ import { useCollapsedText as tt } from "./hooks/useCollapsedText.js";
57
+ import { useAvailableHeightCap as nt } from "./hooks/useAvailableHeightCap.js";
58
+ import { useIsMobile as rt } from "./hooks/useIsMobile.js";
59
+ import { DialFileManagerActionProfile as it, DialFileManagerVariant as at } from "./file-manager/file-manager-variant.js";
60
+ import { getParentFolderPath as ot, isHiddenPath as st } from "./file-manager/path.js";
61
+ import { FileUploadStatus as ct } from "./file-manager/upload-batch.js";
62
+ import { useGridEditingScroll as lt } from "./file-manager/useGridEditingScroll/useGridEditingScroll.js";
63
+ import { OperationLoaderModal as ut } from "./file-manager/OperationLoaderModal/OperationLoaderModal.js";
64
+ import { UploadProgressModal as dt } from "./file-manager/UploadProgressModal/UploadProgressModal.js";
65
+ import { isSkillSelectionUnsupported as ft } from "./utils/is-skill-selection-unsupported.js";
66
+ export { f as AttachmentErrorReason, p as AttachmentType, fe as BASE_LG_ICON_PROPS, pe as BASE_MD_ICON_PROPS, ze as CHAT_SHARED_CLASS, Xe as COMPACT_MARKDOWN_CLASS_NAMES, m as CatalogEntityType, _ as CodeBlockTheme, e as ConversationTransferErrorCode, t as ConversationTransferJobStatus, n as ConversationTransferSubjectKind, r as ConversationTransferUnitKind, i as ConversationTransferWarningCode, Ae as CopyButton, je as CopyIconButton, Ze as DEFAULT_MARKDOWN_CLASS_NAMES, Ue as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, Se as DESKTOP_BREAKPOINT_PX, Ce as DESKTOP_MEDIA_QUERY, ke as DeploymentIcon, it as DialFileManagerActionProfile, at as DialFileManagerVariant, ne as ENTITY_TYPE_BG_COLOR, re as ENTITY_TYPE_COLOR, Ie as EntityHeader, Pe as EntityTypeLabel, Fe as FeaturedChip, h as FileExtension, ct as FileUploadStatus, a as FilterTab, me as HIDDEN_FILE, Oe as InitialsAvatar, Ne as ItemHeader, ge as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, ye as MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME, We as MARKDOWN_TABLE_CSV_MIME_TYPE, $e as MDMessageViewer, g as MIMEType, v as MIME_TYPE_ALIASES, y as MIME_TYPE_AUDIO_PREFIX, b as MIME_TYPE_EXT_MAP, x as MIME_TYPE_WILDCARD, we as MOBILE_MAX_WIDTH_PX, Te as MOBILE_MEDIA_QUERY, He as MarkdownCodeBlock, Je as MarkdownRenderer, qe as MarkdownTable, Ge as MarkdownTableCopyFormat, et as MarkdownWithPlaceholders, o as MessageRating, s as MessageRole, ut as OperationLoaderModal, A as PROHIBITED_CONVERSATION_NAME_CHARS_RE, ie as PROMPT_PARAM_DEFAULT_SEPARATOR, ae as PROMPT_PARAM_PATTERN, oe as PROMPT_VARIABLE_CLASS_NAME, Me as PanelEmptyState, Qe as PlainTextRenderer, _e as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, ve as RESIZABLE_TEXTAREA_CLASS_NAME, c as RequestStatus, Le as ResourceSummary, d as ResponseFormat, be as SELECT_LIST_MAX_HEIGHT_CLASS_NAME, xe as SELECT_LIST_MAX_HEIGHT_PX, l as StageStatus, u as StatusEvent, he as TAG_INPUT_TAG_CLASS_NAME, Re as TableHeader, dt as UploadProgressModal, Y as base64ToBlob, I as buildCssVars, se as buildPromptParamDefaults, V as copyMarkdownAsRichText, H as copyToClipboard, Ye as defaultMarkdownComponents, X as downloadTextFile, Z as ensureDownloadFilename, De as extractInitials, ce as extractPromptParams, K as formatCost, G as formatFileSize, W as formatLastUsed, q as formatPrice, J as formatUnitPrice, de as generateUUID, S as getAttachmentTypeFromMime, C as getBaseMimeType, Q as getFileExtensionForLanguage, ot as getParentFolderPath, j as getUtf8ByteLength, w as inferMimeTypeFromPath, D as isAnnotationSelector, B as isAudioTranscriptionSupported, st as isHiddenPath, ft as isSkillSelectionUnsupported, L as isStatusMessage, U as markdownToRichTextHtml, F as mergeClasses, R as messageAttachmentToDisplayAttachment, z as messageAttachmentsToDisplayAttachments, T as normalizeMimeType, O as normalizePersistedHtmlTagAttachmentType, k as normalizeRawAnnotations, Ee as pickAvatarColor, le as rehypePromptVariables, ue as resolvePromptParams, Ve as restrainedSyntaxTheme, M as sanitizeConversationName, Ke as serializeMarkdownTableRows, N as stripTrailingDots, E as stripUrlQueryAndFragment, $ as triggerAnchorDownload, ee as triggerBlobDownload, P as truncateToUtf8Bytes, te as tryBase64ToBytes, nt as useAvailableHeightCap, Be as useCodeCopy, tt as useCollapsedText, lt as useGridEditingScroll, rt as useIsMobile };
package/markdown.d.ts CHANGED
@@ -317,13 +317,20 @@ export declare interface MarkdownWithPlaceholdersProps {
317
317
  headingClassName?: string;
318
318
  }
319
319
 
320
- /** Renders assistant message content as formatted markdown. */
320
+ /** Renders assistant message content as formatted markdown, or as escaped plain text when `isPlainText` is set. */
321
321
  export declare const MDMessageViewer: FC<MDMessageViewerProps>;
322
322
 
323
323
  /** Props for the {@link MDMessageViewer} markdown renderer. */
324
324
  declare interface MDMessageViewerProps {
325
325
  /** Raw markdown string to render. */
326
326
  content: string;
327
+ /**
328
+ * Renders `content` verbatim as escaped plain text instead of running the
329
+ * Markdown pipeline — the conversation's `plain_text` response format.
330
+ * Markdown-only props (`components`, `urlTransform`, the code-block and
331
+ * table labels) do not apply while it is set. Defaults to `false`.
332
+ */
333
+ isPlainText?: boolean;
327
334
  /** Enables gradual reveal for appended streaming content. */
328
335
  isStreaming?: boolean;
329
336
  /**
@@ -363,6 +370,44 @@ declare interface MDMessageViewerProps {
363
370
  classNames?: MarkdownRendererClassNames;
364
371
  }
365
372
 
373
+ /**
374
+ * Renders message text as plain text: no Markdown pipeline, no raw HTML, no
375
+ * syntax highlighting. The text is a React text child, so it is escaped by
376
+ * construction — a table, a heading, or `**bold**` reaches the reader exactly
377
+ * as the model emitted it, which is what a conversation's `plain_text`
378
+ * response format promises.
379
+ *
380
+ * Lives beside {@link MarkdownRenderer} because it is the other half of the
381
+ * same choice: both render an assistant message body, and both are selected
382
+ * by `MDMessageViewer` from the conversation's response format.
383
+ */
384
+ export declare const PlainTextRenderer: FC<PlainTextRendererProps>;
385
+
386
+ /** Props for {@link PlainTextRenderer}. */
387
+ export declare interface PlainTextRendererProps {
388
+ /** Message text. Rendered verbatim — never parsed as Markdown or HTML. */
389
+ content: string;
390
+ /** Classes applied to the renderer root. */
391
+ containerClassName?: string;
392
+ /** When true, appended content is revealed gradually for smoother streaming updates. */
393
+ isStreaming?: boolean;
394
+ /** Reveal speed used while `isStreaming` is true. Defaults to 120 characters per second. */
395
+ streamCharactersPerSecond?: number;
396
+ /**
397
+ * Typography classes. Only `p` is read — the single paragraph the renderer
398
+ * emits — so the same object a Markdown message is styled with keeps both
399
+ * formats on one type scale.
400
+ */
401
+ classNames?: Pick<MarkdownRendererClassNames, 'p'>;
402
+ /**
403
+ * Label shown with a shimmer animation while `isStreaming` is true and no
404
+ * content has arrived yet. Defaults to `'Thinking'`.
405
+ */
406
+ thinkingLabel?: string;
407
+ /** Color overrides applied as CSS custom properties. */
408
+ colors?: Pick<MarkdownRendererColors, 'thinkingPrimary' | 'thinkingSecondary'>;
409
+ }
410
+
366
411
  /** Style map consumed by `react-syntax-highlighter`'s `Prism` renderer. */
367
412
  declare type PrismStyleMap = Record<string, CSSProperties>;
368
413
 
package/markdown.js CHANGED
@@ -6,7 +6,8 @@ import { DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME as i, MARKDOWN_TABLE_CSV_MIME_
6
6
  import { MarkdownTable as c } from "./components/MarkdownRenderer/Table/MarkdownTable.js";
7
7
  import { MarkdownRenderer as l, defaultMarkdownComponents as u } from "./components/MarkdownRenderer/MarkdownRenderer.js";
8
8
  import { COMPACT_MARKDOWN_CLASS_NAMES as d, DEFAULT_MARKDOWN_CLASS_NAMES as f } from "./components/MarkdownRenderer/markdown-class-names.js";
9
- import { MDMessageViewer as p } from "./components/MarkdownRenderer/MDMessageViewer.js";
10
- import { MarkdownWithPlaceholders as m } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
11
- import { useCollapsedText as h } from "./hooks/useCollapsedText.js";
12
- export { e as CHAT_SHARED_CLASS, d as COMPACT_MARKDOWN_CLASS_NAMES, f as DEFAULT_MARKDOWN_CLASS_NAMES, i as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, a as MARKDOWN_TABLE_CSV_MIME_TYPE, p as MDMessageViewer, r as MarkdownCodeBlock, l as MarkdownRenderer, c as MarkdownTable, o as MarkdownTableCopyFormat, m as MarkdownWithPlaceholders, u as defaultMarkdownComponents, n as restrainedSyntaxTheme, s as serializeMarkdownTableRows, t as useCodeCopy, h as useCollapsedText };
9
+ import { PlainTextRenderer as p } from "./components/MarkdownRenderer/PlainTextRenderer.js";
10
+ import { MDMessageViewer as m } from "./components/MarkdownRenderer/MDMessageViewer.js";
11
+ import { MarkdownWithPlaceholders as h } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
12
+ import { useCollapsedText as g } from "./hooks/useCollapsedText.js";
13
+ export { e as CHAT_SHARED_CLASS, d as COMPACT_MARKDOWN_CLASS_NAMES, f as DEFAULT_MARKDOWN_CLASS_NAMES, i as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, a as MARKDOWN_TABLE_CSV_MIME_TYPE, m as MDMessageViewer, r as MarkdownCodeBlock, l as MarkdownRenderer, c as MarkdownTable, o as MarkdownTableCopyFormat, h as MarkdownWithPlaceholders, p as PlainTextRenderer, u as defaultMarkdownComponents, n as restrainedSyntaxTheme, s as serializeMarkdownTableRows, t as useCodeCopy, g as useCollapsedText };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-chat-shared",
3
3
  "description": "Shared domain models, utilities, and UI components for AI DIAL Chat libraries",
4
- "version": "1.2.0-dev.102",
4
+ "version": "1.2.0-dev.106",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "sideEffects": [
@@ -0,0 +1,4 @@
1
+ //#region src/utils/is-skill-selection-unsupported.ts
2
+ var e = (e, t) => !!e?.trim() && t !== !0;
3
+ //#endregion
4
+ export { e as isSkillSelectionUnsupported };