@epam/ai-dial-chat-hooks 1.1.0-dev.443 → 1.1.0-dev.444

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,11 +1,36 @@
1
1
  //#region src/conversation/conversation-transfer/attachment-refs.ts
2
- var e = (e) => e.startsWith("files/"), t = (t) => {
3
- let n = /* @__PURE__ */ new Set();
4
- for (let r of t.messages) for (let t of r.custom_content?.attachments ?? []) {
5
- let r = t.url ?? t.reference_url;
6
- r != null && e(r) && n.add(r);
2
+ var e = (e) => e.startsWith("files/"), t = /^#[\w.=%-]*$/, n = (e) => {
3
+ let n = e.indexOf("#");
4
+ if (n < 0) return {
5
+ fileId: e,
6
+ anchor: ""
7
+ };
8
+ let r = e.slice(n);
9
+ return {
10
+ fileId: e.slice(0, n),
11
+ anchor: t.test(r) ? r : ""
12
+ };
13
+ }, r = (e, t) => {
14
+ for (let n of e.messages) {
15
+ let e = n.custom_content;
16
+ if (e) {
17
+ for (let n of e.attachments ?? []) t(n);
18
+ for (let n of e.stages ?? []) for (let e of n.attachments ?? []) t(e);
19
+ for (let n of e.annotations ?? []) {
20
+ let e = n.body?.source?.attachment;
21
+ e && t(e);
22
+ }
23
+ }
7
24
  }
8
- return Array.from(n, (e) => ({ fileId: e }));
25
+ }, i = (t) => {
26
+ let i = /* @__PURE__ */ new Set(), a = (t) => {
27
+ if (t == null) return;
28
+ let { fileId: r } = n(t);
29
+ e(r) && i.add(r);
30
+ };
31
+ return r(t, (e) => {
32
+ a(e.url), a(e.reference_url);
33
+ }), Array.from(i, (e) => ({ fileId: e }));
9
34
  };
10
35
  //#endregion
11
- export { t as collectAttachmentRefs };
36
+ export { i as collectAttachmentRefs, n as splitFileIdAnchor };
@@ -1,88 +1,130 @@
1
- import { collectAttachmentRefs as e } from "./attachment-refs.js";
2
- import { resolveDialFileBucketAndPath as t } from "./dial-file-resolve.js";
3
- import { generateUUID as n, sanitizeConversationName as r, stripTrailingDots as i, truncateToUtf8Bytes as a } from "@epam/ai-dial-chat-shared";
1
+ import { collectAttachmentRefs as e, splitFileIdAnchor as t } from "./attachment-refs.js";
2
+ import { resolveDialFileBucketAndPath as n } from "./dial-file-resolve.js";
3
+ import { generateUUID as r, sanitizeConversationName as i, stripTrailingDots as a, truncateToUtf8Bytes as o } from "@epam/ai-dial-chat-shared";
4
4
  //#region src/conversation/conversation-transfer/import-conversation.ts
5
- var o = class extends Error {
5
+ var s = class extends Error {
6
6
  constructor(e) {
7
7
  super(e), this.name = "UnsupportedImportFormatError";
8
8
  }
9
- }, s = (e) => typeof e == "object" && !!e, c = 5, l = (e) => {
9
+ }, c = (e) => typeof e == "object" && !!e, l = 5, u = (e) => {
10
10
  let t;
11
11
  try {
12
12
  t = JSON.parse(e);
13
13
  } catch {
14
- throw new o("Import file is not valid JSON");
14
+ throw new s("Import file is not valid JSON");
15
15
  }
16
- if (!s(t) || t.version !== c || !Array.isArray(t.history)) throw new o("Import file is not a supported export format");
16
+ if (!c(t) || t.version !== l || !Array.isArray(t.history)) throw new s("Import file is not a supported export format");
17
17
  let n = Array.isArray(t.folders) ? t.folders : [];
18
18
  return {
19
- version: c,
19
+ version: l,
20
20
  history: t.history,
21
21
  folders: n
22
22
  };
23
- }, u = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, d = "__", f = 255, p = "applications", m = /[-+]/, h = /^\d+$/, g = (e) => e ? e.split(m)[0].split(".").every((e) => h.test(e)) : !1, _ = (e) => i(a(e.replace(/\r\n|\r/g, "\n").split("\n").map((e) => r(e).trim()).filter(Boolean)[0] ?? "", f)).trimEnd(), v = (e, t, r) => {
24
- let i = e.split(d);
25
- if (i.length < 2) return [e, n()].join(d);
26
- let a = r && g(i[1]) ? i.slice(0, 2) : i.slice(0, 1), o = a.length > 1 ? u.test(i[i.length - 1]) : i.length >= 3, s = i.slice(a.length, o ? -1 : void 0).join(d);
23
+ }, d = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, f = "__", p = 255, m = "applications", h = /[-+]/, g = /^\d+$/, _ = (e) => e ? e.split(h)[0].split(".").every((e) => g.test(e)) : !1, v = (e) => a(o(e.replace(/\r\n|\r/g, "\n").split("\n").map((e) => i(e).trim()).filter(Boolean)[0] ?? "", p)).trimEnd(), y = (e, t, n) => {
24
+ let i = e.split(f);
25
+ if (i.length < 2) return [e, r()].join(f);
26
+ let a = n && _(i[1]) ? i.slice(0, 2) : i.slice(0, 1), o = a.length > 1 ? d.test(i[i.length - 1]) : i.length >= 3, s = i.slice(a.length, o ? -1 : void 0).join(f);
27
27
  return [
28
28
  ...a,
29
29
  t || s,
30
- n()
31
- ].join(d);
32
- }, y = "conversations/", b = (e) => e.startsWith(y) ? e.slice(14) : e, x = (e, t) => {
33
- let n = b(e.id), r = n.split("/"), i = b(e.folderId), a = r[0], o = i.startsWith(`${a}/`) ? i.slice(a.length + 1).split("/").filter(Boolean) : [], s = r.slice(1).slice(o.length), c = s.slice(0, -1), l = s.at(-1) ?? r.at(-1) ?? n, u = [...o, ...c], d = _(e.name), f = v(l, d, u[0] === p), m = [...u, f].join("/"), h = o.length ? `${t}/${o.join("/")}` : t;
30
+ r()
31
+ ].join(f);
32
+ }, b = "conversations/", x = (e) => e.startsWith(b) ? e.slice(14) : e, S = (e, t) => {
33
+ let n = x(e.id), r = n.split("/"), i = x(e.folderId), a = r[0], o = i.startsWith(`${a}/`) ? i.slice(a.length + 1).split("/").filter(Boolean) : [], s = r.slice(1).slice(o.length), c = s.slice(0, -1), l = s.at(-1) ?? r.at(-1) ?? n, u = [...o, ...c], d = v(e.name), f = y(l, d, u[0] === m), p = [...u, f].join("/"), h = o.length ? `${t}/${o.join("/")}` : t;
34
34
  return {
35
35
  conversation: {
36
36
  ...e,
37
37
  ...d ? { name: d } : {},
38
- id: `${t}/${m}`,
38
+ id: `${t}/${p}`,
39
39
  folderId: h
40
40
  },
41
- subPath: m
41
+ subPath: p
42
42
  };
43
- }, S = (e) => {
44
- let t = b(e.folderId).split("/").filter(Boolean).slice(1);
43
+ }, C = (e) => {
44
+ let t = x(e.folderId).split("/").filter(Boolean).slice(1);
45
45
  return t.length ? t.join(" / ") : void 0;
46
- }, C = (e) => e.map((e) => `"${e}"`).join(", "), w = (e, t) => ({
46
+ }, w = (e) => e.map((e) => `"${e}"`).join(", "), T = (e, n) => {
47
+ if (!e) return;
48
+ let { fileId: r, anchor: i } = t(e), a = n.get(r);
49
+ if (a != null) return {
50
+ ...a,
51
+ url: `${a.url}${i}`
52
+ };
53
+ }, E = (e, t) => {
54
+ let n = T(e.url, t), r = T(e.reference_url, t);
55
+ if (n == null && r == null) return;
56
+ let i = n?.title ?? r?.title;
57
+ return {
58
+ ...n == null ? {} : { url: n.url },
59
+ ...r == null ? {} : { reference_url: r.url },
60
+ ...i == null ? {} : { title: i }
61
+ };
62
+ }, D = (e, t) => e.map((e) => e.attachments?.length ? {
63
+ ...e,
64
+ attachments: e.attachments.map((e) => {
65
+ let n = E(e, t);
66
+ return n ? {
67
+ ...e,
68
+ ...n
69
+ } : e;
70
+ })
71
+ } : e), O = (e, t) => e.map((e) => {
72
+ let n = e.body?.source;
73
+ if (n?.attachment == null) return e;
74
+ let r = E(n.attachment, t);
75
+ return r == null ? e : {
76
+ ...e,
77
+ body: {
78
+ ...e.body,
79
+ source: {
80
+ ...n,
81
+ attachment: {
82
+ ...n.attachment,
83
+ ...r
84
+ }
85
+ }
86
+ }
87
+ };
88
+ }), k = (e, t) => ({
47
89
  ...e,
48
90
  messages: e.messages.map((e) => {
49
- let n = e.custom_content?.attachments;
50
- return n?.length ? {
91
+ let n = e.custom_content;
92
+ if (!n) return e;
93
+ let { attachments: r, stages: i, annotations: a } = n;
94
+ return !r?.length && !i?.length && !a?.length ? e : {
51
95
  ...e,
52
96
  custom_content: {
53
- ...e.custom_content,
54
- attachments: n.map((e) => {
55
- let n = e.url ? t.get(e.url) : void 0, r = e.reference_url ? t.get(e.reference_url) : void 0;
56
- if (n == null && r == null) return e;
57
- let i = n?.title ?? r?.title;
58
- return {
97
+ ...n,
98
+ ...r?.length ? { attachments: r.map((e) => {
99
+ let n = E(e, t);
100
+ return n ? {
59
101
  ...e,
60
- ...n == null ? {} : { url: n.url },
61
- ...r == null ? {} : { reference_url: r.url },
62
- ...i == null ? {} : { title: i }
63
- };
64
- })
102
+ ...n
103
+ } : e;
104
+ }) } : {},
105
+ ...i?.length ? { stages: D(i, t) } : {},
106
+ ...a?.length ? { annotations: O(a, t) } : {}
65
107
  }
66
- } : e;
108
+ };
67
109
  })
68
- }), T = (e) => e.split("/").pop() || e, E = (n, r, i) => {
110
+ }), A = (e) => e.split("/").pop() || e, j = (t, r, i) => {
69
111
  let a = [], o = [];
70
- for (let s of e(n)) {
71
- let e = t(s.fileId);
112
+ for (let s of e(t)) {
113
+ let e = n(s.fileId);
72
114
  if (!e) {
73
- o.push(T(s.fileId));
115
+ o.push(A(s.fileId));
74
116
  continue;
75
117
  }
76
- let n = e.path.split("/").pop() ?? e.path, c = r.get(e.path);
118
+ let t = e.path.split("/").pop() ?? e.path, c = r.get(e.path);
77
119
  if (!c) {
78
- o.push(n);
120
+ o.push(t);
79
121
  continue;
80
122
  }
81
123
  a.push({
82
124
  fileId: s.fileId,
83
125
  bytes: c,
84
- originalFileName: n,
85
- allocated: i.allocate(n)
126
+ originalFileName: t,
127
+ allocated: i.allocate(t)
86
128
  });
87
129
  }
88
130
  return {
@@ -91,4 +133,4 @@ var o = class extends Error {
91
133
  };
92
134
  };
93
135
  //#endregion
94
- export { o as UnsupportedImportFormatError, C as formatQuotedNameList, S as getFolderBreadcrumb, l as parseImportEnvelope, E as planAttachmentUploads, x as rebaseConversationId, w as rewriteAttachmentUrls };
136
+ export { s as UnsupportedImportFormatError, w as formatQuotedNameList, C as getFolderBreadcrumb, u as parseImportEnvelope, j as planAttachmentUploads, S as rebaseConversationId, k as rewriteAttachmentUrls };
@@ -4,6 +4,7 @@ var i = (t, n, r, i) => i && n === r - 1 && t.role === e.Assistant, a = (e) => {
4
4
  for (let t = e.length - 1; t >= 0; t--) {
5
5
  let i = e[t];
6
6
  if (r(i) && i.custom_content?.event_type === n.ModelChanged) return i.custom_content.new_deployment_id;
7
+ if (i.deploymentId) return i.deploymentId;
7
8
  }
8
9
  return null;
9
10
  }, o = (t) => t.role === e.Assistant && (t.custom_content?.stages?.length ?? 0) > 0, s = (t) => {
@@ -3,9 +3,9 @@ import { getStarterPopulateText as e } from "../starter-option.js";
3
3
  var t = (t, n) => {
4
4
  let { populateText: r } = t["dial:widgetOptions"];
5
5
  return r == null && n ? n : e(t);
6
- }, n = (t, n) => {
7
- let { populateText: r, submit: i } = t["dial:widgetOptions"];
8
- return i && r == null ? "" : n ?? e(t);
9
- };
6
+ }, n = (e, n) => {
7
+ let { populateText: r, submit: i } = e["dial:widgetOptions"];
8
+ return i && r == null ? "" : t(e, n);
9
+ }, r = (e, t) => n(e, t) || e.title;
10
10
  //#endregion
11
- export { t as getStarterConversationText, n as getStarterSubmitText };
11
+ export { t as getStarterConversationText, r as getStarterDisplayText, n as getStarterSubmitText };
@@ -2,49 +2,49 @@ import { useAttachmentUpload as e } from "../useAttachmentUpload/useAttachmentUp
2
2
  import { attachmentsToDtos as t } from "./attachment-to-dto.js";
3
3
  import { createMessagePair as n } from "./message-factory.js";
4
4
  import { hasActiveToolConfig as r, shouldRerunGenerationOnEdit as i } from "./message-utils.js";
5
- import { getStarterSubmitText as a } from "./starter-option.js";
6
- import { getConversationPath as o } from "../useConversationStream/conversation-path.js";
7
- import { MessageRole as s, generateUUID as c } from "@epam/ai-dial-chat-shared";
8
- import { useCallback as l, useState as u } from "react";
9
- import { SendCompletionDtoModeEnum as d } from "@epam/ai-dial-chat-api-client";
5
+ import { getStarterDisplayText as a, getStarterSubmitText as o } from "./starter-option.js";
6
+ import { getConversationPath as s } from "../useConversationStream/conversation-path.js";
7
+ import { MessageRole as c, generateUUID as l } from "@epam/ai-dial-chat-shared";
8
+ import { useCallback as u, useState as d } from "react";
9
+ import { SendCompletionDtoModeEnum as f } from "@epam/ai-dial-chat-api-client";
10
10
  //#region src/conversation/useConversationHandlers/useConversationHandlers.ts
11
- var f = ({ conversation: f, conversationId: p, bucket: m, isStreaming: h, startStream: g, state: { setConversation: _, conversationRef: v }, filesApi: y, conversationsApi: b, rateApi: x, resolveModelId: S, onConversationDeleted: C, showNetworkError: w, toolConfigurationValue: T }) => {
12
- let [E, D] = u(null), [O, k] = u(/* @__PURE__ */ new Set()), [A, j] = u(null), { handleUploadAttachment: M } = e({
13
- filesApi: y,
14
- bucket: m,
15
- onNetworkError: w
16
- }), N = l(async (e, i) => {
17
- if (!p || !f) return;
18
- let a = t(i), o = r(T), s = a?.length || o ? {
11
+ var p = ({ conversation: p, conversationId: m, bucket: h, isStreaming: g, startStream: _, state: { setConversation: v, conversationRef: y }, filesApi: b, conversationsApi: x, rateApi: S, resolveModelId: C, onConversationDeleted: w, showNetworkError: T, toolConfigurationValue: E }) => {
12
+ let [D, O] = d(null), [k, A] = d(/* @__PURE__ */ new Set()), [j, M] = d(null), { handleUploadAttachment: N } = e({
13
+ filesApi: b,
14
+ bucket: h,
15
+ onNetworkError: T
16
+ }), P = u(async (e, i) => {
17
+ if (!m || !p) return;
18
+ let a = t(i), o = r(E), s = a?.length || o ? {
19
19
  ...a?.length ? { attachments: a } : {},
20
- ...o ? { configuration_value: T } : {}
21
- } : void 0, l = S(), { userMessage: u, assistantMessage: m } = n(e, s, l);
22
- _((e) => {
20
+ ...o ? { configuration_value: E } : {}
21
+ } : void 0, c = C(), { userMessage: u, assistantMessage: d } = n(e, s, c);
22
+ v((e) => {
23
23
  if (!e) return e;
24
24
  let t = {
25
25
  ...e,
26
26
  messages: [
27
27
  ...e.messages,
28
28
  u,
29
- m
29
+ d
30
30
  ]
31
31
  };
32
- return v.current = t, t;
33
- }), g(p, e, f.messages.length + 1, l, s, c(), d.Append);
32
+ return y.current = t, t;
33
+ }), _(m, e, p.messages.length + 1, c, s, l(), f.Append);
34
34
  }, [
35
- f,
36
35
  p,
36
+ m,
37
+ y,
38
+ C,
37
39
  v,
38
- S,
39
40
  _,
40
- g,
41
- T
42
- ]), P = l((e) => {
43
- if (h || !p || !f || e === -1 || f.messages[e]?.role !== s.Assistant) return;
44
- let t = f.messages[e - 1];
45
- if (!t || t.role !== s.User) return;
46
- let n = S();
47
- _((t) => {
41
+ E
42
+ ]), F = u((e) => {
43
+ if (g || !m || !p || e === -1 || p.messages[e]?.role !== c.Assistant) return;
44
+ let t = p.messages[e - 1];
45
+ if (!t || t.role !== c.User) return;
46
+ let n = C();
47
+ v((t) => {
48
48
  if (!t) return t;
49
49
  let r = {
50
50
  ...t.messages[e],
@@ -58,76 +58,76 @@ var f = ({ conversation: f, conversationId: p, bucket: m, isStreaming: h, startS
58
58
  ...t,
59
59
  messages: [...t.messages.slice(0, e), r]
60
60
  };
61
- return v.current = i, i;
62
- }), k((t) => new Set([...t].filter((t) => t < e))), g(p, t.content, e, n, t.custom_content, c(), d.Regenerate);
61
+ return y.current = i, i;
62
+ }), A((t) => new Set([...t].filter((t) => t < e))), _(m, t.content, e, n, t.custom_content, l(), f.Regenerate);
63
63
  }, [
64
- f,
65
64
  p,
65
+ m,
66
+ y,
67
+ g,
68
+ C,
66
69
  v,
67
- h,
68
- S,
69
- _,
70
- g
71
- ]), F = l((e) => {
72
- h || D(e);
73
- }, [h]), I = l(() => {
74
- if (!p || E == null) return;
75
- let e = E;
76
- D(null);
77
- let t = v.current;
70
+ _
71
+ ]), I = u((e) => {
72
+ g || O(e);
73
+ }, [g]), L = u(() => {
74
+ if (!m || D == null) return;
75
+ let e = D;
76
+ O(null);
77
+ let t = y.current;
78
78
  if (!t || e === -1) return;
79
- let n = o(p), r = t.messages[e + 1]?.role === s.Assistant ? t.messages.filter((t, n) => n !== e && n !== e + 1) : t.messages.filter((t, n) => n !== e);
80
- if (r.length === 0 || r.length === 1 && r[0].role === s.Status) {
81
- b.deleteConversation({ path: n }), C?.();
79
+ let n = s(m), r = t.messages[e + 1]?.role === c.Assistant ? t.messages.filter((t, n) => n !== e && n !== e + 1) : t.messages.filter((t, n) => n !== e);
80
+ if (r.length === 0 || r.length === 1 && r[0].role === c.Status) {
81
+ x.deleteConversation({ path: n }), w?.();
82
82
  return;
83
83
  }
84
84
  let i = {
85
85
  ...t,
86
86
  messages: r
87
87
  };
88
- v.current = i, _(i), b.saveConversation({
88
+ y.current = i, v(i), x.saveConversation({
89
89
  path: n,
90
90
  saveConversationBodyDto: { conversation: i }
91
91
  });
92
92
  }, [
93
- p,
94
- v,
95
- b,
96
- C,
97
- E,
98
- _
99
- ]), L = l(async (e, t, n) => {
100
- if (!p || !f) return !1;
101
- let r = f.messages[e];
93
+ m,
94
+ y,
95
+ x,
96
+ w,
97
+ D,
98
+ v
99
+ ]), R = u(async (e, t, n) => {
100
+ if (!m || !p) return !1;
101
+ let r = p.messages[e];
102
102
  if (!r) return !1;
103
103
  let i = r.rating, a = {
104
- ...f,
105
- messages: f.messages.map((n, r) => r === e ? {
104
+ ...p,
105
+ messages: p.messages.map((n, r) => r === e ? {
106
106
  ...n,
107
107
  rating: t ?? void 0
108
108
  } : n)
109
109
  };
110
- _(() => (v.current = a, a));
111
- let s = o(p), c = () => {
112
- _((t) => t && {
110
+ v(() => (y.current = a, a));
111
+ let o = s(m), c = () => {
112
+ v((t) => t && {
113
113
  ...t,
114
114
  messages: t.messages.map((t, n) => n === e ? {
115
115
  ...t,
116
116
  rating: i
117
117
  } : t)
118
118
  });
119
- }, l = () => b.saveConversation({
120
- path: s,
119
+ }, l = () => x.saveConversation({
120
+ path: o,
121
121
  saveConversationBodyDto: { conversation: a }
122
122
  });
123
123
  if (t != null) {
124
124
  let e = r.responseId;
125
125
  if (!e) return c(), !1;
126
126
  try {
127
- return await x.rateMessage({ rateMessageDto: {
128
- conversationId: f.id,
127
+ return await S.rateMessage({ rateMessageDto: {
128
+ conversationId: p.id,
129
129
  responseId: e,
130
- modelId: f.model.id,
130
+ modelId: p.model.id,
131
131
  rate: t,
132
132
  ...n ? { comment: n } : {}
133
133
  } }), await l(), !0;
@@ -140,124 +140,124 @@ var f = ({ conversation: f, conversationId: p, bucket: m, isStreaming: h, startS
140
140
  return c(), !1;
141
141
  }
142
142
  }, [
143
- f,
144
143
  p,
145
- v,
146
- b,
144
+ m,
145
+ y,
147
146
  x,
148
- _
149
- ]), R = l((e, t, i) => {
150
- if (!p || !f) return;
151
- let o = i ?? e.title, s = a(e, i), l = t ? { [t]: e.const } : void 0, u = r(T), m = l || u ? {
152
- ...l ? { form_value: l } : {},
153
- ...u ? { configuration_value: T } : {}
154
- } : void 0, h = S(), { userMessage: y, assistantMessage: b } = n(o, m, h);
155
- _((e) => {
147
+ S,
148
+ v
149
+ ]), z = u((e, t, i) => {
150
+ if (!m || !p) return;
151
+ let s = a(e, i), c = o(e, i), u = t ? { [t]: e.const } : void 0, d = r(E), h = u || d ? {
152
+ ...u ? { form_value: u } : {},
153
+ ...d ? { configuration_value: E } : {}
154
+ } : void 0, g = C(), { userMessage: b, assistantMessage: x } = n(s, h, g);
155
+ v((e) => {
156
156
  if (!e) return e;
157
157
  let t = {
158
158
  ...e,
159
159
  messages: [
160
160
  ...e.messages,
161
- y,
162
- b
161
+ b,
162
+ x
163
163
  ]
164
164
  };
165
- return v.current = t, t;
166
- }), g(p, s, f.messages.length + 1, h, m, c(), d.Append);
165
+ return y.current = t, t;
166
+ }), _(m, c, p.messages.length + 1, g, h, l(), f.Append);
167
167
  }, [
168
- f,
169
168
  p,
169
+ m,
170
+ y,
171
+ C,
170
172
  v,
171
- S,
172
173
  _,
173
- g,
174
- T
174
+ E
175
175
  ]);
176
176
  return {
177
- handleSend: N,
178
- handleUploadAttachment: M,
179
- handleRegenerateMessage: P,
180
- handleDeleteMessage: F,
181
- handleConfirmDelete: I,
182
- handleRateMessage: L,
183
- handleButtonSelect: l((e, t, n) => {
184
- !p || !f || h || (e["dial:widgetOptions"].confirmationMessage ? j({
177
+ handleSend: P,
178
+ handleUploadAttachment: N,
179
+ handleRegenerateMessage: F,
180
+ handleDeleteMessage: I,
181
+ handleConfirmDelete: L,
182
+ handleRateMessage: R,
183
+ handleButtonSelect: u((e, t, n) => {
184
+ !m || !p || g || (e["dial:widgetOptions"].confirmationMessage ? M({
185
185
  starter: e,
186
186
  propertyKey: t,
187
187
  description: n
188
- }) : R(e, t, n));
188
+ }) : z(e, t, n));
189
189
  }, [
190
- f,
191
190
  p,
192
- h,
193
- R
191
+ m,
192
+ g,
193
+ z
194
194
  ]),
195
- handleConfirmStarter: l(() => {
196
- if (!A) return;
197
- let { starter: e, propertyKey: t, description: n } = A;
198
- j(null), R(e, t, n);
199
- }, [A, R]),
200
- handleStartEdit: l((e) => {
201
- k((t) => new Set([...t, e]));
195
+ handleConfirmStarter: u(() => {
196
+ if (!j) return;
197
+ let { starter: e, propertyKey: t, description: n } = j;
198
+ M(null), z(e, t, n);
199
+ }, [j, z]),
200
+ handleStartEdit: u((e) => {
201
+ A((t) => new Set([...t, e]));
202
202
  }, []),
203
- handleCancelEdit: l((e) => {
204
- k((t) => {
203
+ handleCancelEdit: u((e) => {
204
+ A((t) => {
205
205
  let n = new Set(t);
206
206
  return n.delete(e), n;
207
207
  });
208
208
  }, []),
209
- handleEditMessage: l(async (e, n, r, a) => {
210
- if (h || !p || !f) return;
209
+ handleEditMessage: u(async (e, n, r, a) => {
210
+ if (g || !m || !p) return;
211
211
  let o = e;
212
- if (o === -1 || f.messages[o].role !== s.User) return;
213
- let l = f.messages[o];
214
- if (!i(f.messages, o, n, r, a)) {
215
- k((e) => {
212
+ if (o === -1 || p.messages[o].role !== c.User) return;
213
+ let s = p.messages[o];
214
+ if (!i(p.messages, o, n, r, a)) {
215
+ A((e) => {
216
216
  let t = new Set(e);
217
217
  return t.delete(o), t;
218
218
  });
219
219
  return;
220
220
  }
221
- let u = t(a), m = new Set(r.map((e) => e.id)), y = [...(l.custom_content?.attachments ?? []).filter((e) => {
221
+ let u = t(a), d = new Set(r.map((e) => e.id)), h = [...(s.custom_content?.attachments ?? []).filter((e) => {
222
222
  let t = e.url ?? e.data ?? e.title;
223
- return m.has(t);
224
- }), ...u ?? []], { attachments: b, ...x } = l.custom_content ?? {}, C = y.length > 0 ? {
223
+ return d.has(t);
224
+ }), ...u ?? []], { attachments: b, ...x } = s.custom_content ?? {}, S = h.length > 0 ? {
225
225
  ...x,
226
- attachments: y
226
+ attachments: h
227
227
  } : Object.keys(x).length > 0 ? x : void 0, w = {
228
- ...l,
228
+ ...s,
229
229
  content: n,
230
- custom_content: C
230
+ custom_content: S
231
231
  }, T = Date.now(), E = {
232
- role: s.Assistant,
232
+ role: c.Assistant,
233
233
  content: "",
234
234
  timestamp: new Date(T).toISOString()
235
235
  }, D = [
236
- ...f.messages.slice(0, o),
236
+ ...p.messages.slice(0, o),
237
237
  w,
238
238
  E
239
239
  ], O = {
240
- ...f,
240
+ ...p,
241
241
  messages: D
242
242
  };
243
- v.current = O, _(O);
244
- let A = S();
245
- g(p, n, D.length - 1, A, C, c(), d.Edit), k(/* @__PURE__ */ new Set());
243
+ y.current = O, v(O);
244
+ let k = C();
245
+ _(m, n, D.length - 1, k, S, l(), f.Edit), A(/* @__PURE__ */ new Set());
246
246
  }, [
247
- f,
248
247
  p,
248
+ m,
249
+ y,
250
+ g,
251
+ C,
249
252
  v,
250
- h,
251
- S,
252
- _,
253
- g
253
+ _
254
254
  ]),
255
- editingMessageIndexes: O,
256
- pendingDeleteIndex: E,
257
- setPendingDeleteIndex: D,
258
- pendingStarterContext: A,
259
- setPendingStarterContext: j
255
+ editingMessageIndexes: k,
256
+ pendingDeleteIndex: D,
257
+ setPendingDeleteIndex: O,
258
+ pendingStarterContext: j,
259
+ setPendingStarterContext: M
260
260
  };
261
261
  };
262
262
  //#endregion
263
- export { f as useConversationHandlers };
263
+ export { p as useConversationHandlers };
package/conversation.d.ts CHANGED
@@ -359,8 +359,18 @@ export declare const getConversationPath: (conversationId: string) => string;
359
359
  export declare const getConversationSource: (item: Pick<ConversationListItemDto, "sharedWithMe" | "publishedWithMe">) => FilterTab;
360
360
 
361
361
  /**
362
- * Returns the `new_deployment_id` from the last `model_changed` status message
363
- * in the list, or `null` if none exists.
362
+ * Returns the deployment the conversation was last running on: scanning
363
+ * backwards, the `new_deployment_id` of a `model_changed` status message or
364
+ * the `deploymentId` a message carries in its own right, whichever comes
365
+ * later. `null` when neither is present.
366
+ *
367
+ * Reading only the status messages loses the switch whenever a regenerate or
368
+ * an edit truncates past one: the marker is appended at the end of the
369
+ * timeline, so truncating at an earlier message drops it, and the model the
370
+ * user picked reverted on the next page load even though the answer had been
371
+ * regenerated on it (issue #8712). The assistant message the backend writes
372
+ * carries the deployment that produced it, which survives that truncation
373
+ * because it *is* the regenerated message.
364
374
  */
365
375
  export declare const getLastDeploymentId: (messages: Message[]) => string | null;
366
376
 
@@ -409,6 +419,13 @@ export declare const getQuickAppConversationStarters: (conversationStarters: unk
409
419
  */
410
420
  export declare const getStarterConversationText: (starter: StarterOption, description?: string) => string;
411
421
 
422
+ /**
423
+ * Returns the text shown in the user's message bubble for a selected
424
+ * starter/form button. Falls back to the button label for submit buttons that
425
+ * send no text of their own.
426
+ */
427
+ export declare const getStarterDisplayText: (starter: StarterOption, description?: string) => string;
428
+
412
429
  /**
413
430
  * Returns the text to populate in the input when a starter button is selected.
414
431
  * Falls back to the button title if `populateText` is empty.
@@ -433,6 +450,10 @@ export declare const getStartersFromSchema: (schema: DeploymentConfigurationSche
433
450
  /**
434
451
  * Returns submitted text for DIAL starter/form buttons.
435
452
  * For submit buttons, `populateText: null` explicitly means "submit no text".
453
+ * `description` (the schema property's shared intro/question text) is used only
454
+ * as a fallback when the starter carries no text of its own — it must never
455
+ * override a starter's own configured prompt, or every button in a group would
456
+ * submit the same message.
436
457
  */
437
458
  export declare const getStarterSubmitText: (starter: StarterOption, description?: string) => string;
438
459
 
package/conversation.js CHANGED
@@ -21,11 +21,11 @@ import { useTranscribeAudio as N } from "./conversation/useTranscribeAudio/useTr
21
21
  import { attachmentToDto as P, attachmentsToDtos as F } from "./conversation/useConversationHandlers/attachment-to-dto.js";
22
22
  import { createMessagePair as I } from "./conversation/useConversationHandlers/message-factory.js";
23
23
  import { hasActiveToolConfig as L, isAnswerIncomplete as R, isMessageChanged as z, shouldRerunGenerationOnEdit as B } from "./conversation/useConversationHandlers/message-utils.js";
24
- import { getStarterConversationText as V, getStarterSubmitText as H } from "./conversation/useConversationHandlers/starter-option.js";
25
- import { getConversationPath as U } from "./conversation/useConversationStream/conversation-path.js";
26
- import { useConversationHandlers as W } from "./conversation/useConversationHandlers/useConversationHandlers.js";
27
- import { isAwaitingGenerationResume as G } from "./conversation/useConversationStream/generation-resume.js";
28
- import { useConversationStream as K } from "./conversation/useConversationStream/useConversationStream.js";
29
- import { useChatSettingsFormConfig as q } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
30
- import { useToolsMenu as J } from "./useToolsMenu/useToolsMenu.js";
31
- export { j as AudioTranscriptionError, M as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as GenerationConflictError, P as attachmentToDto, F as attachmentsToDtos, e as buildAnnouncementSignature, s as createChatStreamApi, p as createDeploymentChangedMessage, I as createMessagePair, C as deriveConversationRowActionState, l as formatAppVersion, U as getConversationPath, D as getConversationSource, m as getLastDeploymentId, h as getLastUserMessageToolConfiguration, d as getModelIdFromConversationId, b as getQuickAppConversationStarters, V as getStarterConversationText, x as getStarterPopulateText, H as getStarterSubmitText, S as getStartersFromSchema, f as getTimeOfDayGreeting, L as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, R as isAnswerIncomplete, G as isAwaitingGenerationResume, z as isMessageChanged, g as isMessageStreaming, _ as messageHasStages, v as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, u as sanitizeFooterHtml, B as shouldRerunGenerationOnEdit, c as shouldWatchForDisplayNameUpdate, y as toOverlayMessages, w as useActiveConversationSync, T as useAsyncConfirmDialog, A as useAttachmentUpload, q as useChatSettingsFormConfig, W as useConversationHandlers, E as useConversationLookupMaps, O as useConversationPanelItems, K as useConversationStream, k as useImportFilePicker, J as useToolsMenu, N as useTranscribeAudio };
24
+ import { getStarterConversationText as V, getStarterDisplayText as H, getStarterSubmitText as U } from "./conversation/useConversationHandlers/starter-option.js";
25
+ import { getConversationPath as W } from "./conversation/useConversationStream/conversation-path.js";
26
+ import { useConversationHandlers as G } from "./conversation/useConversationHandlers/useConversationHandlers.js";
27
+ import { isAwaitingGenerationResume as K } from "./conversation/useConversationStream/generation-resume.js";
28
+ import { useConversationStream as q } from "./conversation/useConversationStream/useConversationStream.js";
29
+ import { useChatSettingsFormConfig as J } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
30
+ import { useToolsMenu as Y } from "./useToolsMenu/useToolsMenu.js";
31
+ export { j as AudioTranscriptionError, M as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as GenerationConflictError, P as attachmentToDto, F as attachmentsToDtos, e as buildAnnouncementSignature, s as createChatStreamApi, p as createDeploymentChangedMessage, I as createMessagePair, C as deriveConversationRowActionState, l as formatAppVersion, W as getConversationPath, D as getConversationSource, m as getLastDeploymentId, h as getLastUserMessageToolConfiguration, d as getModelIdFromConversationId, b as getQuickAppConversationStarters, V as getStarterConversationText, H as getStarterDisplayText, x as getStarterPopulateText, U as getStarterSubmitText, S as getStartersFromSchema, f as getTimeOfDayGreeting, L as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, R as isAnswerIncomplete, K as isAwaitingGenerationResume, z as isMessageChanged, g as isMessageStreaming, _ as messageHasStages, v as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, u as sanitizeFooterHtml, B as shouldRerunGenerationOnEdit, c as shouldWatchForDisplayNameUpdate, y as toOverlayMessages, w as useActiveConversationSync, T as useAsyncConfirmDialog, A as useAttachmentUpload, J as useChatSettingsFormConfig, G as useConversationHandlers, E as useConversationLookupMaps, O as useConversationPanelItems, q as useConversationStream, k as useImportFilePicker, Y as useToolsMenu, N as useTranscribeAudio };
package/index.d.ts CHANGED
@@ -1659,8 +1659,18 @@ export declare const getConversationSource: (item: Pick<ConversationListItemDto,
1659
1659
  export declare const getExternalServiceFallbackName: (serviceName: string) => string;
1660
1660
 
1661
1661
  /**
1662
- * Returns the `new_deployment_id` from the last `model_changed` status message
1663
- * in the list, or `null` if none exists.
1662
+ * Returns the deployment the conversation was last running on: scanning
1663
+ * backwards, the `new_deployment_id` of a `model_changed` status message or
1664
+ * the `deploymentId` a message carries in its own right, whichever comes
1665
+ * later. `null` when neither is present.
1666
+ *
1667
+ * Reading only the status messages loses the switch whenever a regenerate or
1668
+ * an edit truncates past one: the marker is appended at the end of the
1669
+ * timeline, so truncating at an earlier message drops it, and the model the
1670
+ * user picked reverted on the next page load even though the answer had been
1671
+ * regenerated on it (issue #8712). The assistant message the backend writes
1672
+ * carries the deployment that produced it, which survives that truncation
1673
+ * because it *is* the regenerated message.
1664
1674
  */
1665
1675
  export declare const getLastDeploymentId: (messages: Message[]) => string | null;
1666
1676
 
@@ -1726,6 +1736,13 @@ export declare const getRemainingCharacters: (value: string, maxLength: number)
1726
1736
  */
1727
1737
  export declare const getStarterConversationText: (starter: StarterOption, description?: string) => string;
1728
1738
 
1739
+ /**
1740
+ * Returns the text shown in the user's message bubble for a selected
1741
+ * starter/form button. Falls back to the button label for submit buttons that
1742
+ * send no text of their own.
1743
+ */
1744
+ export declare const getStarterDisplayText: (starter: StarterOption, description?: string) => string;
1745
+
1729
1746
  /**
1730
1747
  * Returns the text to populate in the input when a starter button is selected.
1731
1748
  * Falls back to the button title if `populateText` is empty.
@@ -1750,6 +1767,10 @@ export declare const getStartersFromSchema: (schema: DeploymentConfigurationSche
1750
1767
  /**
1751
1768
  * Returns submitted text for DIAL starter/form buttons.
1752
1769
  * For submit buttons, `populateText: null` explicitly means "submit no text".
1770
+ * `description` (the schema property's shared intro/question text) is used only
1771
+ * as a fallback when the starter carries no text of its own — it must never
1772
+ * override a starter's own configured prompt, or every button in a group would
1773
+ * submit the same message.
1753
1774
  */
1754
1775
  export declare const getStarterSubmitText: (starter: StarterOption, description?: string) => string;
1755
1776
 
package/index.js CHANGED
@@ -84,53 +84,53 @@ import { DEFAULT_MAX_ARCHIVE_BYTES as qn, useConversationExport as Jn } from "./
84
84
  import { attachmentToDto as Yn, attachmentsToDtos as Xn } from "./conversation/useConversationHandlers/attachment-to-dto.js";
85
85
  import { createMessagePair as Zn } from "./conversation/useConversationHandlers/message-factory.js";
86
86
  import { hasActiveToolConfig as Qn, isAnswerIncomplete as $n, isMessageChanged as er, shouldRerunGenerationOnEdit as tr } from "./conversation/useConversationHandlers/message-utils.js";
87
- import { getStarterConversationText as nr, getStarterSubmitText as rr } from "./conversation/useConversationHandlers/starter-option.js";
88
- import { getConversationPath as ir } from "./conversation/useConversationStream/conversation-path.js";
89
- import { useConversationHandlers as ar } from "./conversation/useConversationHandlers/useConversationHandlers.js";
90
- import { useConversationImport as or } from "./conversation/useConversationImport/useConversationImport.js";
91
- import { useConversationScroll as sr } from "./conversation/useConversationScroll/useConversationScroll.js";
92
- import { isAwaitingGenerationResume as cr } from "./conversation/useConversationStream/generation-resume.js";
93
- import { useConversationStream as lr } from "./conversation/useConversationStream/useConversationStream.js";
94
- import { useConversationSources as ur } from "./conversation-sources/useConversationSources/useConversationSources.js";
95
- import { DialFilesApiUploadMode as dr } from "./files/dial-files-api.js";
96
- import { FileManagerNotificationReason as fr, FileNameValidationErrorReason as pr, FileOperationKind as mr } from "./files/dial-file-manager.types.js";
97
- import { COLUMNS_WITHOUT_AUTHOR as hr, COLUMNS_WITH_AUTHOR as gr, CORE_PERMISSION_MAP as _r, DATE_OPTIONS as vr, PATH_SEPARATOR_REGEXP as yr, RESERVED_MARKER_NAME as br, UPLOAD_CONCURRENCY as xr } from "./files/dial-file-manager.model.js";
98
- import { DialFileManagerActionProfile as Sr, DialFileManagerVariant as Cr, deriveActionProfile as wr } from "./files/file-manager-variant.js";
99
- import { buildSharedItemVirtualPath as Tr, dialCorePathToRelative as Er, findDialFileByPath as Dr, findFolderByVirtualPath as Or, formatOperationFolderName as kr, getVirtualPathName as Ar, hasDialFileWritePermission as jr, hasForbiddenNameSymbols as Mr, isCopyMoveDuplicateAllowed as Nr, isShareActionsAllowed as Pr, normalizeVirtualPath as Fr, parseNewFolderVirtualPath as Ir, resolveOwnerCoords as Lr } from "./files/dial-file-manager-path.util.js";
100
- import { getParentFolderPath as Rr, resolveDialFileApiPath as zr, virtualPathToApiPath as Br } from "./files/resolve-dial-file-api-path.js";
101
- import { prepareCopyItems as Vr, prepareMoveRenameItems as Hr } from "./files/dial-file-manager-copy-move.util.js";
102
- import { buildFromCache as Ur, fetchByTab as Wr, fetchForSearch as Gr, findFirstSuccessfulCopyMoveItem as Kr, mapCorePermissions as qr, mapFileMetadataToDialFile as Jr, mapSearchItem as Yr, mergeCreatedFolderIntoCache as Xr, updateEntry as Zr } from "./files/dial-file-manager-mapping.util.js";
103
- import { createFilesApiClient as Qr } from "./files/create-files-api.js";
104
- import { createUploadFileWithProgress as $r } from "./files/create-upload-file-with-progress.js";
105
- import { openAnnotationAttachment as ei } from "./files/annotation.js";
106
- import { annotationToOoxmlCanvasContent as ti, annotationToPdfCanvasContent as ni, clearAttachmentCache as ri, hasAttachmentTextSource as ii, referenceAttachmentToPdfCanvasContent as ai, resolveCodeCanvasContent as oi, resolveHtmlCanvasContent as si, resolveImageCanvasContent as ci, resolveJsonCanvasContent as li, resolveMarkdownCanvasContent as ui, resolveOoxmlCanvasContent as di, resolvePdfCanvasContent as fi, resolveTextCanvasContent as pi, resolveVisualizerCanvasContent as mi } from "./files/attachment-canvas.js";
107
- import { getUrlFileName as hi, isExternalSourcePreviewable as gi, resolveExternalSourceContentType as _i } from "./files/source-content.js";
108
- import { annotationToDisplayAttachment as vi, attachmentDtoToDisplayAttachment as yi, attachmentDtosToDisplayAttachments as bi } from "./files/attachment-dto-to-display.js";
109
- import { dialFileToAttachment as xi, dialFilesToAttachments as Si, dialFolderPathToAttachment as Ci } from "./files/dial-file-to-attachment.js";
110
- import { DownloadDestinationType as wi } from "./files/download-destination.js";
111
- import { prepareDownloadDestination as Ti } from "./files/prepare-download-destination.js";
112
- import { useDialFileListing as Ei } from "./files/useDialFileListing/useDialFileListing.js";
113
- import { useDialFileMetadata as Di } from "./files/useDialFileMetadata/useDialFileMetadata.js";
114
- import { useDialFileMutations as Oi } from "./files/useDialFileMutations/useDialFileMutations.js";
115
- import { useDialFileSharing as ki } from "./files/useDialFileSharing/useDialFileSharing.js";
116
- import { useDialFileUploadBatch as Ai } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
117
- import { useDialFileManager as ji } from "./files/useDialFileManager/useDialFileManager.js";
118
- import { useDialFileManagerTabConfig as Mi } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
119
- import { isCustomAppSchema as Ni, isQuickAppSchema as Pi } from "./shared/application-schema.js";
120
- import { getBrowserTimezone as Fi } from "./shared/browser-timezone.js";
121
- import { isValidAbsoluteUrl as Ii, isValidFeaturesData as Li, parseFeaturesData as Ri } from "./shared/custom-apps.js";
122
- import { buildExternalServiceScopeId as zi, getExternalServiceFallbackName as Bi, parseExternalServiceUrl as Vi } from "./shared/external-services.js";
123
- import { useChatSettingsFormConfig as Hi } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
124
- import { usePageFileDrag as Ui } from "./usePageFileDrag/usePageFileDrag.js";
125
- import { useViewportWidth as Wi } from "./useViewportWidth/useViewportWidth.js";
126
- import { usePanelMaxWidth as Gi } from "./usePanelMaxWidth/usePanelMaxWidth.js";
127
- import { useShareLink as Ki } from "./useShareLink/useShareLink.js";
128
- import { useToolsMenu as qi } from "./useToolsMenu/useToolsMenu.js";
129
- import { useUsageData as Ji } from "./usage/useUsageData/useUsageData.js";
130
- import { McpAppResourceFetchError as Yi, createMcpAppsApiClient as Xi } from "./mcp-apps/mcp-apps-api-client.js";
131
- import { useMcpAppTools as Zi } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
132
- import { useMcpAppHostContext as Qi } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
133
- import { useMcpAppHostAdapter as $i } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
134
- import { useOpenMcpAppCanvas as ea } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
135
- import { useGridEditingScroll as ta } from "@epam/ai-dial-chat-shared";
136
- export { b as AttachmentValidationErrorReason, Wn as AudioTranscriptionError, Gn as AudioTranscriptionErrorReason, L as AuthenticationType, hr as COLUMNS_WITHOUT_AUTHOR, gr as COLUMNS_WITH_AUTHOR, _r as CORE_PERMISSION_MAP, Ze as CatalogPrimaryActionType, w as ConversationExportMode, T as ConversationTransferErrorCode, E as ConversationTransferWarningCode, vr as DATE_OPTIONS, It as DEFAULT_GENERATION_CONFLICT_MESSAGE, qn as DEFAULT_MAX_ARCHIVE_BYTES, Sr as DialFileManagerActionProfile, Cr as DialFileManagerVariant, dr as DialFilesApiUploadMode, wi as DownloadDestinationType, O as EXPORT_APP_NAME, D as ExportFileNameKind, Ot as FavoriteEntityType, fr as FileManagerNotificationReason, pr as FileNameValidationErrorReason, mr as FileOperationKind, Lt as GenerationConflictError, Yi as McpAppResourceFetchError, Ie as McpResourceKind, it as OAuthResourceKind, yr as PATH_SEPARATOR_REGEXP, an as PROMPT_CONTENT_MAX_LENGTH, on as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, sn as PROMPT_DESCRIPTION_MAX_LENGTH, cn as PROMPT_NAME_MAX_LENGTH, Ce as PUBLIC_SKILL_BUCKET, ln as PromptFieldError, ie as PromptSource, br as RESERVED_MARKER_NAME, jn as RecipientsCountStatus, le as SKILL_FILE_UPLOAD_MAX_BYTES, we as SKILL_LISTING_MAX_PAGES, Te as SKILL_LISTING_PAGE_SIZE, ue as SKILL_MANIFEST_FILE, Ee as SKILL_MANIFEST_MAX_BYTES, de as SKILL_UPLOAD_MAX_FILES, fe as SKILL_UPLOAD_MAX_TOTAL_BYTES, wn as SkillEditorLoadState, On as SkillPreviewErrorKind, De as SkillSource, at as TOOLSET_REDIRECT_STATE_KEY, ot as ToolsetAuthStatus, st as ToolsetAuthTypes, ct as ToolsetCredentialsLevel, wt as ToolsetLoginOutcomeType, lt as ToolsetOAuthCallbackQuery, ut as ToolsetOAuthChannelControlType, dt as ToolsetOAuthFailureReason, ft as ToolsetOAuthInitiationResultType, pt as ToolsetOAuthResultType, xr as UPLOAD_CONCURRENCY, gn as UnsupportedTriggerReason, mt as WithLogin, vi as annotationToDisplayAttachment, ti as annotationToOoxmlCanvasContent, ni as annotationToPdfCanvasContent, _n as apSchedulerDayToJsDay, U as appendLocaleCode, yi as attachmentDtoToDisplayAttachment, bi as attachmentDtosToDisplayAttachments, Yn as attachmentToDto, Xn as attachmentsToDtos, W as buildAdditionalLocaleOptions, jt as buildAnnouncementSignature, Le as buildApplicationMcpUrl, M as buildChatCompletionsUrl, Re as buildConnectApi, N as buildDeploymentConnectApi, zi as buildExternalServiceScopeId, Ur as buildFromCache, tn as buildPromptExportEnvelope, nn as buildPromptExportFileName, oe as buildPromptOverview, un as buildPromptPath, P as buildResponsesUrl, Tr as buildSharedItemVirtualPath, ke as buildSkillContentTree, pe as buildSkillFilesPayload, me as buildSkillManifest, he as buildSkillManifestForSubmit, ge as buildSkillManifestFromFrontmatter, Ae as buildSkillOverview, yt as buildToolsetAuthorizeUrl, ze as buildToolsetMcpUrl, ri as clearAttachmentCache, G as composeLocalePayload, Rt as createChatStreamApi, i as createCsrfMiddleware, Wt as createDeploymentChangedMessage, Qr as createFilesApiClient, Xi as createMcpAppsApiClient, Zn as createMessagePair, A as createPublishApiClient, a as createUnauthorizedMiddleware, $r as createUploadFileWithProgress, B as decodeToolsetId, K as decomposeLocalizedFields, wr as deriveActionProfile, Ke as deriveAvailableTabIds, Nn as deriveConversationRowActionState, qe as deriveFavoriteItems, Er as dialCorePathToRelative, xi as dialFileToAttachment, Si as dialFilesToAttachments, Ci as dialFolderPathToAttachment, p as downloadAttachment, ht as emitToolsetLoginSuccess, F as encodeDeploymentId, V as encodeToolsetId, Wr as fetchByTab, Gr as fetchForSearch, tt as fetchSkillDescription, Je as filterCatalogItemsBySelector, Ye as filterHiddenOwnedItems, I as findDeploymentByIdOrReference, Dr as findDialFileByPath, Kr as findFirstSuccessfulCopyMoveItem, Or as findFolderByVirtualPath, Bt as formatAppVersion, Y as formatCalendarDate, S as formatDateYM, C as formatDateYMD, kr as formatOperationFolderName, k as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Fi as getBrowserTimezone, ir as getConversationPath, Ln as getConversationSource, Bi as getExternalServiceFallbackName, Gt as getLastDeploymentId, Kt as getLastUserMessageToolConfiguration, Ht as getModelIdFromConversationId, Rr as getParentFolderPath, Ve as getPublicCatalogEntityFolderPath, Zt as getQuickAppConversationStarters, dn as getRemainingCharacters, nr as getStarterConversationText, Qt as getStarterPopulateText, rr as getStarterSubmitText, $t as getStartersFromSchema, Ut as getTimeOfDayGreeting, _t as getToolsetOAuthChannelName, bt as getToolsetRedirectUri, hi as getUrlFileName, Ar as getVirtualPathName, Qn as hasActiveToolConfig, Mt as hasAnnouncementContent, ii as hasAttachmentTextSource, jr as hasDialFileWritePermission, Mr as hasForbiddenNameSymbols, Nt as hasStructuredAnnouncement, o as includesIgnoreCase, xt as initiateOAuthLogin, $n as isAnswerIncomplete, cr as isAwaitingGenerationResume, r as isConversationNotFoundError, Nr as isCopyMoveDuplicateAllowed, Ni as isCustomAppSchema, g as isDialFileAcceptType, u as isDialFileId, m as isDownloadableAttachment, gi as isExternalSourcePreviewable, er as isMessageChanged, qt as isMessageStreaming, se as isOrganisationPromptItem, He as isPublicCatalogEntityId, H as isPublicToolsetId, Pi as isQuickAppSchema, Pr as isShareActionsAllowed, Ii as isValidAbsoluteUrl, Li as isValidFeaturesData, _e as isValidSkillRelativePath, vn as jsDayToApSchedulerDay, qr as mapCorePermissions, Z as mapDeploymentDetailsDtoToEntityDetails, R as mapDeploymentLimitsDtoToCatalogLimits, z as mapDeploymentLimitsToInput, ee as mapDeploymentToCatalogItem, te as mapDeploymentToolsetCredentials, Q as mapEntityDetailsToCatalogDetails, Jr as mapFileMetadataToDialFile, yn as mapFormValuesToCreateBody, bn as mapFormValuesToUpdateBody, ce as mapPromptToCatalogItem, Ue as mapPublishConversationResultDto, We as mapPublishHistoryEntryDto, xn as mapScheduledTaskDtoToFormValues, Yr as mapSearchItem, je as mapSkillToCatalogItem, $ as mapToolsetCredentials, ne as mapToolsetToCatalogItem, Xr as mergeCreatedFolderIntoCache, Jt as messageHasStages, _ as mimeTypesToAttachmentExtensionLabels, v as mimeTypesToDialFileAcceptTypes, y as mimeTypesToFileAccept, ve as nameFromPath, St as navigateToolsetOAuthPopup, Yt as normalizeResponseFormat, ye as normalizeSkillName, Fr as normalizeVirtualPath, ei as openAnnotationAttachment, Ct as openToolsetOAuthPopup, X as padTwoDigits, Vi as parseExternalServiceUrl, Ri as parseFeaturesData, Ir as parseNewFolderVirtualPath, ae as parsePromptResourceUrl, be as parseSkillManifest, et as parseSkillManifestDocument, Oe as parseSkillResourceUrl, Vr as prepareCopyItems, Ti as prepareDownloadDestination, Hr as prepareMoveRenameItems, Me as readSkillFileBytes, Ne as readSkillManifest, Xe as reconcileFilterTopics, ai as referenceAttachmentToPdfCanvasContent, Qe as resolveCatalogPrimaryAction, oi as resolveCodeCanvasContent, re as resolveDeploymentFolder, zr as resolveDialFileApiPath, d as resolveDialFileBucketAndPath, _i as resolveExternalSourceContentType, si as resolveHtmlCanvasContent, ci as resolveImageCanvasContent, li as resolveJsonCanvasContent, q as resolveLocalizedText, ui as resolveMarkdownCanvasContent, Be as resolveMcpResourceKind, di as resolveOoxmlCanvasContent, Lr as resolveOwnerCoords, fi as resolvePdfCanvasContent, f as resolveRelativeDialFilePath, Pe as resolveSkillFileDownloadPath, Fe as resolveSkillManifestFileId, pi as resolveTextCanvasContent, mi as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Pt as sanitizeAnnouncementHtml, Ft as sanitizeAnnouncementMessageHtml, Bn as sanitizeFileName, Vt as sanitizeFooterHtml, rn as serializePromptExport, tr as shouldRerunGenerationOnEdit, zt as shouldWatchForDisplayNameUpdate, xe as skillFileBytesToBlob, Cn as skillFileToAttachment, Vn as splitFileNameExtension, l as stripSurroundingSlashes, gt as subscribeToolsetLoginSuccess, J as toBaseLocale, Xt as toOverlayMessages, Ge as toPublishEntityType, j as toPublishRuleDto, Hn as trimFileNameToByteLimit, Se as unpackSkillArchive, Zr as updateEntry, Pn as useActiveConversationSync, Fn as useAsyncConfirmDialog, h as useAttachmentAction, Un as useAttachmentUpload, x as useAttachmentValidation, $e as useCatalogEditNavigation, rt as useCatalogItemDetails, Et as useCatalogToolsetCredentials, Hi as useChatSettingsFormConfig, Jn as useConversationExport, ar as useConversationHandlers, or as useConversationImport, In as useConversationLookupMaps, Rn as useConversationPanelItems, sr as useConversationScroll, ur as useConversationSources, lr as useConversationStream, Ei as useDialFileListing, ji as useDialFileManager, Mi as useDialFileManagerTabConfig, Di as useDialFileMetadata, Oi as useDialFileMutations, ki as useDialFileSharing, Ai as useDialFileUploadBatch, kt as useFavoriteEntitiesState, ta as useGridEditingScroll, zn as useImportFilePicker, $i as useMcpAppHostAdapter, Qi as useMcpAppHostContext, Zi as useMcpAppTools, en as useOAuthCallbackCompletion, ea as useOpenMcpAppCanvas, Ui as usePageFileDrag, Gi as usePanelMaxWidth, hn as usePromptsState, At as usePublishFolders, Ki as useShareLink, Mn as useShareRecipientsCount, Dt as useSkillDetailsPanelData, Tn as useSkillEditorLoad, En as useSkillEditorSubmit, Dn as useSkillFileActions, kn as useSkillFilePreview, nt as useSkillItemDetails, An as useSkillsState, qi as useToolsMenu, Tt as useToolsetLogin, Kn as useTranscribeAudio, Ji as useUsageData, Wi as useViewportWidth, fn as validatePromptContent, pn as validatePromptDescription, mn as validatePromptName, Sn as validateSkillFileBatch, Br as virtualPathToApiPath, vt as waitForToolsetOAuthResult };
87
+ import { getStarterConversationText as nr, getStarterDisplayText as rr, getStarterSubmitText as ir } from "./conversation/useConversationHandlers/starter-option.js";
88
+ import { getConversationPath as ar } from "./conversation/useConversationStream/conversation-path.js";
89
+ import { useConversationHandlers as or } from "./conversation/useConversationHandlers/useConversationHandlers.js";
90
+ import { useConversationImport as sr } from "./conversation/useConversationImport/useConversationImport.js";
91
+ import { useConversationScroll as cr } from "./conversation/useConversationScroll/useConversationScroll.js";
92
+ import { isAwaitingGenerationResume as lr } from "./conversation/useConversationStream/generation-resume.js";
93
+ import { useConversationStream as ur } from "./conversation/useConversationStream/useConversationStream.js";
94
+ import { useConversationSources as dr } from "./conversation-sources/useConversationSources/useConversationSources.js";
95
+ import { DialFilesApiUploadMode as fr } from "./files/dial-files-api.js";
96
+ import { FileManagerNotificationReason as pr, FileNameValidationErrorReason as mr, FileOperationKind as hr } from "./files/dial-file-manager.types.js";
97
+ import { COLUMNS_WITHOUT_AUTHOR as gr, COLUMNS_WITH_AUTHOR as _r, CORE_PERMISSION_MAP as vr, DATE_OPTIONS as yr, PATH_SEPARATOR_REGEXP as br, RESERVED_MARKER_NAME as xr, UPLOAD_CONCURRENCY as Sr } from "./files/dial-file-manager.model.js";
98
+ import { DialFileManagerActionProfile as Cr, DialFileManagerVariant as wr, deriveActionProfile as Tr } from "./files/file-manager-variant.js";
99
+ import { buildSharedItemVirtualPath as Er, dialCorePathToRelative as Dr, findDialFileByPath as Or, findFolderByVirtualPath as kr, formatOperationFolderName as Ar, getVirtualPathName as jr, hasDialFileWritePermission as Mr, hasForbiddenNameSymbols as Nr, isCopyMoveDuplicateAllowed as Pr, isShareActionsAllowed as Fr, normalizeVirtualPath as Ir, parseNewFolderVirtualPath as Lr, resolveOwnerCoords as Rr } from "./files/dial-file-manager-path.util.js";
100
+ import { getParentFolderPath as zr, resolveDialFileApiPath as Br, virtualPathToApiPath as Vr } from "./files/resolve-dial-file-api-path.js";
101
+ import { prepareCopyItems as Hr, prepareMoveRenameItems as Ur } from "./files/dial-file-manager-copy-move.util.js";
102
+ import { buildFromCache as Wr, fetchByTab as Gr, fetchForSearch as Kr, findFirstSuccessfulCopyMoveItem as qr, mapCorePermissions as Jr, mapFileMetadataToDialFile as Yr, mapSearchItem as Xr, mergeCreatedFolderIntoCache as Zr, updateEntry as Qr } from "./files/dial-file-manager-mapping.util.js";
103
+ import { createFilesApiClient as $r } from "./files/create-files-api.js";
104
+ import { createUploadFileWithProgress as ei } from "./files/create-upload-file-with-progress.js";
105
+ import { openAnnotationAttachment as ti } from "./files/annotation.js";
106
+ import { annotationToOoxmlCanvasContent as ni, annotationToPdfCanvasContent as ri, clearAttachmentCache as ii, hasAttachmentTextSource as ai, referenceAttachmentToPdfCanvasContent as oi, resolveCodeCanvasContent as si, resolveHtmlCanvasContent as ci, resolveImageCanvasContent as li, resolveJsonCanvasContent as ui, resolveMarkdownCanvasContent as di, resolveOoxmlCanvasContent as fi, resolvePdfCanvasContent as pi, resolveTextCanvasContent as mi, resolveVisualizerCanvasContent as hi } from "./files/attachment-canvas.js";
107
+ import { getUrlFileName as gi, isExternalSourcePreviewable as _i, resolveExternalSourceContentType as vi } from "./files/source-content.js";
108
+ import { annotationToDisplayAttachment as yi, attachmentDtoToDisplayAttachment as bi, attachmentDtosToDisplayAttachments as xi } from "./files/attachment-dto-to-display.js";
109
+ import { dialFileToAttachment as Si, dialFilesToAttachments as Ci, dialFolderPathToAttachment as wi } from "./files/dial-file-to-attachment.js";
110
+ import { DownloadDestinationType as Ti } from "./files/download-destination.js";
111
+ import { prepareDownloadDestination as Ei } from "./files/prepare-download-destination.js";
112
+ import { useDialFileListing as Di } from "./files/useDialFileListing/useDialFileListing.js";
113
+ import { useDialFileMetadata as Oi } from "./files/useDialFileMetadata/useDialFileMetadata.js";
114
+ import { useDialFileMutations as ki } from "./files/useDialFileMutations/useDialFileMutations.js";
115
+ import { useDialFileSharing as Ai } from "./files/useDialFileSharing/useDialFileSharing.js";
116
+ import { useDialFileUploadBatch as ji } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
117
+ import { useDialFileManager as Mi } from "./files/useDialFileManager/useDialFileManager.js";
118
+ import { useDialFileManagerTabConfig as Ni } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
119
+ import { isCustomAppSchema as Pi, isQuickAppSchema as Fi } from "./shared/application-schema.js";
120
+ import { getBrowserTimezone as Ii } from "./shared/browser-timezone.js";
121
+ import { isValidAbsoluteUrl as Li, isValidFeaturesData as Ri, parseFeaturesData as zi } from "./shared/custom-apps.js";
122
+ import { buildExternalServiceScopeId as Bi, getExternalServiceFallbackName as Vi, parseExternalServiceUrl as Hi } from "./shared/external-services.js";
123
+ import { useChatSettingsFormConfig as Ui } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
124
+ import { usePageFileDrag as Wi } from "./usePageFileDrag/usePageFileDrag.js";
125
+ import { useViewportWidth as Gi } from "./useViewportWidth/useViewportWidth.js";
126
+ import { usePanelMaxWidth as Ki } from "./usePanelMaxWidth/usePanelMaxWidth.js";
127
+ import { useShareLink as qi } from "./useShareLink/useShareLink.js";
128
+ import { useToolsMenu as Ji } from "./useToolsMenu/useToolsMenu.js";
129
+ import { useUsageData as Yi } from "./usage/useUsageData/useUsageData.js";
130
+ import { McpAppResourceFetchError as Xi, createMcpAppsApiClient as Zi } from "./mcp-apps/mcp-apps-api-client.js";
131
+ import { useMcpAppTools as Qi } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
132
+ import { useMcpAppHostContext as $i } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
133
+ import { useMcpAppHostAdapter as ea } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
134
+ import { useOpenMcpAppCanvas as ta } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
135
+ import { useGridEditingScroll as na } from "@epam/ai-dial-chat-shared";
136
+ export { b as AttachmentValidationErrorReason, Wn as AudioTranscriptionError, Gn as AudioTranscriptionErrorReason, L as AuthenticationType, gr as COLUMNS_WITHOUT_AUTHOR, _r as COLUMNS_WITH_AUTHOR, vr as CORE_PERMISSION_MAP, Ze as CatalogPrimaryActionType, w as ConversationExportMode, T as ConversationTransferErrorCode, E as ConversationTransferWarningCode, yr as DATE_OPTIONS, It as DEFAULT_GENERATION_CONFLICT_MESSAGE, qn as DEFAULT_MAX_ARCHIVE_BYTES, Cr as DialFileManagerActionProfile, wr as DialFileManagerVariant, fr as DialFilesApiUploadMode, Ti as DownloadDestinationType, O as EXPORT_APP_NAME, D as ExportFileNameKind, Ot as FavoriteEntityType, pr as FileManagerNotificationReason, mr as FileNameValidationErrorReason, hr as FileOperationKind, Lt as GenerationConflictError, Xi as McpAppResourceFetchError, Ie as McpResourceKind, it as OAuthResourceKind, br as PATH_SEPARATOR_REGEXP, an as PROMPT_CONTENT_MAX_LENGTH, on as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, sn as PROMPT_DESCRIPTION_MAX_LENGTH, cn as PROMPT_NAME_MAX_LENGTH, Ce as PUBLIC_SKILL_BUCKET, ln as PromptFieldError, ie as PromptSource, xr as RESERVED_MARKER_NAME, jn as RecipientsCountStatus, le as SKILL_FILE_UPLOAD_MAX_BYTES, we as SKILL_LISTING_MAX_PAGES, Te as SKILL_LISTING_PAGE_SIZE, ue as SKILL_MANIFEST_FILE, Ee as SKILL_MANIFEST_MAX_BYTES, de as SKILL_UPLOAD_MAX_FILES, fe as SKILL_UPLOAD_MAX_TOTAL_BYTES, wn as SkillEditorLoadState, On as SkillPreviewErrorKind, De as SkillSource, at as TOOLSET_REDIRECT_STATE_KEY, ot as ToolsetAuthStatus, st as ToolsetAuthTypes, ct as ToolsetCredentialsLevel, wt as ToolsetLoginOutcomeType, lt as ToolsetOAuthCallbackQuery, ut as ToolsetOAuthChannelControlType, dt as ToolsetOAuthFailureReason, ft as ToolsetOAuthInitiationResultType, pt as ToolsetOAuthResultType, Sr as UPLOAD_CONCURRENCY, gn as UnsupportedTriggerReason, mt as WithLogin, yi as annotationToDisplayAttachment, ni as annotationToOoxmlCanvasContent, ri as annotationToPdfCanvasContent, _n as apSchedulerDayToJsDay, U as appendLocaleCode, bi as attachmentDtoToDisplayAttachment, xi as attachmentDtosToDisplayAttachments, Yn as attachmentToDto, Xn as attachmentsToDtos, W as buildAdditionalLocaleOptions, jt as buildAnnouncementSignature, Le as buildApplicationMcpUrl, M as buildChatCompletionsUrl, Re as buildConnectApi, N as buildDeploymentConnectApi, Bi as buildExternalServiceScopeId, Wr as buildFromCache, tn as buildPromptExportEnvelope, nn as buildPromptExportFileName, oe as buildPromptOverview, un as buildPromptPath, P as buildResponsesUrl, Er as buildSharedItemVirtualPath, ke as buildSkillContentTree, pe as buildSkillFilesPayload, me as buildSkillManifest, he as buildSkillManifestForSubmit, ge as buildSkillManifestFromFrontmatter, Ae as buildSkillOverview, yt as buildToolsetAuthorizeUrl, ze as buildToolsetMcpUrl, ii as clearAttachmentCache, G as composeLocalePayload, Rt as createChatStreamApi, i as createCsrfMiddleware, Wt as createDeploymentChangedMessage, $r as createFilesApiClient, Zi as createMcpAppsApiClient, Zn as createMessagePair, A as createPublishApiClient, a as createUnauthorizedMiddleware, ei as createUploadFileWithProgress, B as decodeToolsetId, K as decomposeLocalizedFields, Tr as deriveActionProfile, Ke as deriveAvailableTabIds, Nn as deriveConversationRowActionState, qe as deriveFavoriteItems, Dr as dialCorePathToRelative, Si as dialFileToAttachment, Ci as dialFilesToAttachments, wi as dialFolderPathToAttachment, p as downloadAttachment, ht as emitToolsetLoginSuccess, F as encodeDeploymentId, V as encodeToolsetId, Gr as fetchByTab, Kr as fetchForSearch, tt as fetchSkillDescription, Je as filterCatalogItemsBySelector, Ye as filterHiddenOwnedItems, I as findDeploymentByIdOrReference, Or as findDialFileByPath, qr as findFirstSuccessfulCopyMoveItem, kr as findFolderByVirtualPath, Bt as formatAppVersion, Y as formatCalendarDate, S as formatDateYM, C as formatDateYMD, Ar as formatOperationFolderName, k as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Ii as getBrowserTimezone, ar as getConversationPath, Ln as getConversationSource, Vi as getExternalServiceFallbackName, Gt as getLastDeploymentId, Kt as getLastUserMessageToolConfiguration, Ht as getModelIdFromConversationId, zr as getParentFolderPath, Ve as getPublicCatalogEntityFolderPath, Zt as getQuickAppConversationStarters, dn as getRemainingCharacters, nr as getStarterConversationText, rr as getStarterDisplayText, Qt as getStarterPopulateText, ir as getStarterSubmitText, $t as getStartersFromSchema, Ut as getTimeOfDayGreeting, _t as getToolsetOAuthChannelName, bt as getToolsetRedirectUri, gi as getUrlFileName, jr as getVirtualPathName, Qn as hasActiveToolConfig, Mt as hasAnnouncementContent, ai as hasAttachmentTextSource, Mr as hasDialFileWritePermission, Nr as hasForbiddenNameSymbols, Nt as hasStructuredAnnouncement, o as includesIgnoreCase, xt as initiateOAuthLogin, $n as isAnswerIncomplete, lr as isAwaitingGenerationResume, r as isConversationNotFoundError, Pr as isCopyMoveDuplicateAllowed, Pi as isCustomAppSchema, g as isDialFileAcceptType, u as isDialFileId, m as isDownloadableAttachment, _i as isExternalSourcePreviewable, er as isMessageChanged, qt as isMessageStreaming, se as isOrganisationPromptItem, He as isPublicCatalogEntityId, H as isPublicToolsetId, Fi as isQuickAppSchema, Fr as isShareActionsAllowed, Li as isValidAbsoluteUrl, Ri as isValidFeaturesData, _e as isValidSkillRelativePath, vn as jsDayToApSchedulerDay, Jr as mapCorePermissions, Z as mapDeploymentDetailsDtoToEntityDetails, R as mapDeploymentLimitsDtoToCatalogLimits, z as mapDeploymentLimitsToInput, ee as mapDeploymentToCatalogItem, te as mapDeploymentToolsetCredentials, Q as mapEntityDetailsToCatalogDetails, Yr as mapFileMetadataToDialFile, yn as mapFormValuesToCreateBody, bn as mapFormValuesToUpdateBody, ce as mapPromptToCatalogItem, Ue as mapPublishConversationResultDto, We as mapPublishHistoryEntryDto, xn as mapScheduledTaskDtoToFormValues, Xr as mapSearchItem, je as mapSkillToCatalogItem, $ as mapToolsetCredentials, ne as mapToolsetToCatalogItem, Zr as mergeCreatedFolderIntoCache, Jt as messageHasStages, _ as mimeTypesToAttachmentExtensionLabels, v as mimeTypesToDialFileAcceptTypes, y as mimeTypesToFileAccept, ve as nameFromPath, St as navigateToolsetOAuthPopup, Yt as normalizeResponseFormat, ye as normalizeSkillName, Ir as normalizeVirtualPath, ti as openAnnotationAttachment, Ct as openToolsetOAuthPopup, X as padTwoDigits, Hi as parseExternalServiceUrl, zi as parseFeaturesData, Lr as parseNewFolderVirtualPath, ae as parsePromptResourceUrl, be as parseSkillManifest, et as parseSkillManifestDocument, Oe as parseSkillResourceUrl, Hr as prepareCopyItems, Ei as prepareDownloadDestination, Ur as prepareMoveRenameItems, Me as readSkillFileBytes, Ne as readSkillManifest, Xe as reconcileFilterTopics, oi as referenceAttachmentToPdfCanvasContent, Qe as resolveCatalogPrimaryAction, si as resolveCodeCanvasContent, re as resolveDeploymentFolder, Br as resolveDialFileApiPath, d as resolveDialFileBucketAndPath, vi as resolveExternalSourceContentType, ci as resolveHtmlCanvasContent, li as resolveImageCanvasContent, ui as resolveJsonCanvasContent, q as resolveLocalizedText, di as resolveMarkdownCanvasContent, Be as resolveMcpResourceKind, fi as resolveOoxmlCanvasContent, Rr as resolveOwnerCoords, pi as resolvePdfCanvasContent, f as resolveRelativeDialFilePath, Pe as resolveSkillFileDownloadPath, Fe as resolveSkillManifestFileId, mi as resolveTextCanvasContent, hi as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Pt as sanitizeAnnouncementHtml, Ft as sanitizeAnnouncementMessageHtml, Bn as sanitizeFileName, Vt as sanitizeFooterHtml, rn as serializePromptExport, tr as shouldRerunGenerationOnEdit, zt as shouldWatchForDisplayNameUpdate, xe as skillFileBytesToBlob, Cn as skillFileToAttachment, Vn as splitFileNameExtension, l as stripSurroundingSlashes, gt as subscribeToolsetLoginSuccess, J as toBaseLocale, Xt as toOverlayMessages, Ge as toPublishEntityType, j as toPublishRuleDto, Hn as trimFileNameToByteLimit, Se as unpackSkillArchive, Qr as updateEntry, Pn as useActiveConversationSync, Fn as useAsyncConfirmDialog, h as useAttachmentAction, Un as useAttachmentUpload, x as useAttachmentValidation, $e as useCatalogEditNavigation, rt as useCatalogItemDetails, Et as useCatalogToolsetCredentials, Ui as useChatSettingsFormConfig, Jn as useConversationExport, or as useConversationHandlers, sr as useConversationImport, In as useConversationLookupMaps, Rn as useConversationPanelItems, cr as useConversationScroll, dr as useConversationSources, ur as useConversationStream, Di as useDialFileListing, Mi as useDialFileManager, Ni as useDialFileManagerTabConfig, Oi as useDialFileMetadata, ki as useDialFileMutations, Ai as useDialFileSharing, ji as useDialFileUploadBatch, kt as useFavoriteEntitiesState, na as useGridEditingScroll, zn as useImportFilePicker, ea as useMcpAppHostAdapter, $i as useMcpAppHostContext, Qi as useMcpAppTools, en as useOAuthCallbackCompletion, ta as useOpenMcpAppCanvas, Wi as usePageFileDrag, Ki as usePanelMaxWidth, hn as usePromptsState, At as usePublishFolders, qi as useShareLink, Mn as useShareRecipientsCount, Dt as useSkillDetailsPanelData, Tn as useSkillEditorLoad, En as useSkillEditorSubmit, Dn as useSkillFileActions, kn as useSkillFilePreview, nt as useSkillItemDetails, An as useSkillsState, Ji as useToolsMenu, Tt as useToolsetLogin, Kn as useTranscribeAudio, Yi as useUsageData, Gi as useViewportWidth, fn as validatePromptContent, pn as validatePromptDescription, mn as validatePromptName, Sn as validateSkillFileBatch, Vr as virtualPathToApiPath, vt as waitForToolsetOAuthResult };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-chat-hooks",
3
3
  "description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
4
- "version": "1.1.0-dev.443",
4
+ "version": "1.1.0-dev.444",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -104,21 +104,21 @@
104
104
  },
105
105
  "peerDependencies": {
106
106
  "react": "^19.2.6",
107
- "@epam/ai-dial-attachment-canvas": "1.1.0-dev.443",
108
- "@epam/ai-dial-attachment-input": "1.1.0-dev.443",
109
- "@epam/ai-dial-catalog": "1.1.0-dev.443",
110
- "@epam/ai-dial-chat-api-client": "1.1.0-dev.443",
111
- "@epam/ai-dial-chat-overlay": "1.1.0-dev.443",
112
- "@epam/ai-dial-chat-shared": "1.1.0-dev.443",
113
- "@epam/ai-dial-deployment-creation-form": "1.1.0-dev.443",
114
- "@epam/ai-dial-mcp-apps": "1.1.0-dev.443",
115
- "@epam/ai-dial-publish-panel": "1.1.0-dev.443",
116
- "@epam/ai-dial-quotations": "1.1.0-dev.443",
107
+ "@epam/ai-dial-attachment-canvas": "1.1.0-dev.444",
108
+ "@epam/ai-dial-attachment-input": "1.1.0-dev.444",
109
+ "@epam/ai-dial-catalog": "1.1.0-dev.444",
110
+ "@epam/ai-dial-chat-api-client": "1.1.0-dev.444",
111
+ "@epam/ai-dial-chat-overlay": "1.1.0-dev.444",
112
+ "@epam/ai-dial-chat-shared": "1.1.0-dev.444",
113
+ "@epam/ai-dial-deployment-creation-form": "1.1.0-dev.444",
114
+ "@epam/ai-dial-mcp-apps": "1.1.0-dev.444",
115
+ "@epam/ai-dial-publish-panel": "1.1.0-dev.444",
116
+ "@epam/ai-dial-quotations": "1.1.0-dev.444",
117
117
  "@epam/ai-dial-react-file-manager": "*",
118
- "@epam/ai-dial-scheduled-tasks": "1.1.0-dev.443",
119
- "@epam/ai-dial-share": "1.1.0-dev.443",
120
- "@epam/ai-dial-skill-editor": "1.1.0-dev.443",
121
- "@epam/ai-dial-source-panel": "1.1.0-dev.443",
118
+ "@epam/ai-dial-scheduled-tasks": "1.1.0-dev.444",
119
+ "@epam/ai-dial-share": "1.1.0-dev.444",
120
+ "@epam/ai-dial-skill-editor": "1.1.0-dev.444",
121
+ "@epam/ai-dial-source-panel": "1.1.0-dev.444",
122
122
  "@epam/ai-dial-ui-kit": "*",
123
123
  "@modelcontextprotocol/sdk": "^1.27.1",
124
124
  "@epam/pdf-highlighter-kit": ">=0.0.14",