@epam/ai-dial-chat-hooks 1.3.0-dev.118 → 1.3.0-dev.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/api-error/api-error.js +2 -2
  2. package/api-transport/create-unauthorized-middleware.js +4 -1
  3. package/attachment/useAttachmentAction/useAttachmentAction.js +5 -8
  4. package/catalog/map-entity-details-to-catalog.js +1 -1
  5. package/catalog/map-skill-to-catalog-item.js +1 -5
  6. package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js +1 -1
  7. package/catalog/usePublishFolders/usePublishFolders.js +1 -1
  8. package/catalog/useSkillItemDetails.js +3 -3
  9. package/conversation/conversation-draft/conversation-draft-store.js +40 -40
  10. package/conversation/conversation-transfer/import-conversation.js +7 -8
  11. package/conversation/conversation-transfer/progress.js +1 -1
  12. package/conversation/conversation-transfer/zip-export.js +1 -7
  13. package/conversation/conversation-transfer/zip-import.js +1 -1
  14. package/conversation/create-chat-stream-api.js +1 -5
  15. package/conversation/useAttachmentUpload/useAttachmentUpload.js +4 -1
  16. package/conversation/useConversationComposerDraft/useConversationComposerDraft.js +1 -5
  17. package/conversation/useConversationExport/useConversationExport.js +11 -12
  18. package/conversation/useConversationHandlers/message-utils.js +2 -2
  19. package/conversation/useConversationHandlers/useConversationHandlers.js +2 -2
  20. package/conversation/useConversationImport/useConversationImport.js +24 -24
  21. package/conversation/useConversationScroll/useConversationScroll.js +2 -6
  22. package/conversation/useConversationStream/conversation-path.js +2 -2
  23. package/conversation/useConversationStream/frame-scheduler.js +17 -17
  24. package/conversation/useConversationStream/generation-resume.js +11 -21
  25. package/conversation/useConversationStream/useConversationStream.js +39 -60
  26. package/conversation/useMessageSelectionReply/useMessageSelectionReply.js +4 -10
  27. package/conversation-overlay.js +1 -2
  28. package/conversation-sources.js +1 -2
  29. package/file-manager-canvas.js +1 -2
  30. package/files/attachment-types.js +1 -1
  31. package/files/create-upload-file-with-progress.js +5 -12
  32. package/files/dial-file-manager-mapping.util.js +7 -7
  33. package/files/dial-file-to-attachment.js +3 -3
  34. package/files/source-content.js +1 -1
  35. package/files/useDialFileListing/useDialFileListing.js +46 -61
  36. package/files/useDialFileManagerSections/useDialFileManagerSections.js +70 -86
  37. package/files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js +1 -1
  38. package/files/useDialFileMetadata/useDialFileMetadata.js +3 -3
  39. package/files/useDialFileUploadBatch/useDialFileUploadBatch.js +1 -1
  40. package/files/useFileAttachmentPicker/useFileAttachmentPicker.js +2 -2
  41. package/mcp-apps/useMcpAppTools/useMcpAppTools.js +3 -6
  42. package/oauth/authorize-url.js +1 -1
  43. package/oauth/handshake.js +3 -10
  44. package/oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js +2 -5
  45. package/oauth/useToolsetLogin/useToolsetLogin.js +2 -1
  46. package/offline-credentials/useOfflineCredentialsGate/useOfflineCredentialsGate.js +1 -1
  47. package/offline-credentials/useOfflineCredentialsLogin/useOfflineCredentialsLogin.js +13 -13
  48. package/package.json +16 -16
  49. package/scheduled-task/scheduled-task-description.js +1 -1
  50. package/scheduled-task/scheduled-task-trigger.js +1 -1
  51. package/scheduled-task/use-scheduled-task-runs.js +6 -18
  52. package/scheduled-task/use-scheduled-tasks.js +1 -1
  53. package/scroll-anchoring.js +1 -2
  54. package/shared/application-schema.js +3 -3
  55. package/shared/cron-day-of-month.js +10 -10
  56. package/shared/locale.js +2 -2
  57. package/skill/skill-file-batch-validation.js +18 -17
  58. package/skill/skill-types.js +1 -1
  59. package/skill/skill.js +12 -15
  60. package/skill/useSkillArchiveImport/useSkillArchiveImport.js +1 -7
  61. package/skill/useSkillEditorSubmit.js +1 -5
  62. package/skills-state.js +1 -2
  63. package/source-content.js +1 -2
  64. package/usage/useUsageLimitBanner/useUsageLimitBanner.js +1 -1
  65. package/usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js +1 -1
  66. package/usePageFileDrag/usePageFileDrag.js +3 -3
@@ -8,11 +8,11 @@ var e = (e) => typeof e == "object" && !!e, t = (t) => {
8
8
  let t = r.exec(e);
9
9
  if (!t) return;
10
10
  let [, n, o] = t;
11
- if (!(n === i || o === a)) return n;
11
+ if (n !== i && o !== a) return n;
12
12
  }, s = (t) => {
13
13
  if (!e(t)) return;
14
14
  let n = t.response;
15
- if (!(!e(n) || typeof n.json != "function")) return n;
15
+ if (e(n) && typeof n.json == "function") return n;
16
16
  }, c = (e) => {
17
17
  let t = s(e);
18
18
  return t?.status ? t.status === 404 : !1;
@@ -32,7 +32,10 @@ var e = async (e) => {
32
32
  if (t.response.status === 401) throw r.notifyUnauthorized(t.url), r.createUnauthorizedError(t.url);
33
33
  if (t.response.status === 403) {
34
34
  let n = await e(t.response);
35
- if (r.isInvalidCsrfErrorBody(n)) return a(t, await i(t));
35
+ if (r.isInvalidCsrfErrorBody(n)) {
36
+ let e = await i(t);
37
+ return a(t, e);
38
+ }
36
39
  }
37
40
  return t.response;
38
41
  } };
@@ -8,9 +8,9 @@ var u = (t) => t.url != null && e(t.url) || t.data != null, d = (t, n) => {
8
8
  let { url: c, name: l, contentType: u, data: d } = t;
9
9
  if (c != null && e(c)) {
10
10
  let e = n(c);
11
- return e == null ? !1 : (o(e, a(l, c, u)), !0);
11
+ return e != null && (o(e, a(l, c, u)), !0);
12
12
  }
13
- return d == null ? !1 : (s(i(d, u || r.Plain), a(l, c, u)), !0);
13
+ return d != null && (s(i(d, u || r.Plain), a(l, c, u)), !0);
14
14
  }, f = (t, n) => {
15
15
  let { url: r } = t;
16
16
  if (r == null) return;
@@ -18,7 +18,8 @@ var u = (t) => t.url != null && e(t.url) || t.data != null, d = (t, n) => {
18
18
  if (e(i)) {
19
19
  let e = n(i);
20
20
  if (e == null) return;
21
- o(e, a(t.title ?? i.split("/").pop() ?? "", i, t.type));
21
+ let r = t.title ?? i.split("/").pop() ?? "";
22
+ o(e, a(r, i, t.type));
22
23
  } else window.open(r, "_blank", "noopener,noreferrer");
23
24
  }, p = (n, r) => {
24
25
  let i = c(n.url);
@@ -63,11 +64,7 @@ var u = (t) => t.url != null && e(t.url) || t.data != null, d = (t, n) => {
63
64
  url: i,
64
65
  title: o
65
66
  }, c = p(s, e);
66
- if (c) {
67
- t(c, o);
68
- return;
69
- }
70
- f(s, e);
67
+ c ? t(c, o) : f(s, e);
71
68
  }, [t, e]) };
72
69
  };
73
70
  //#endregion
@@ -354,7 +354,7 @@ var c = (e) => e >= 1e6 ? `${e / 1e6}M tokens` : e >= 1e3 ? `${e / 1e3}K tokens`
354
354
  }, M = (t) => t === e.None || t === e.ApiKey || t === e.OAuth, N = (e) => {
355
355
  if (e == null) return;
356
356
  let { globalAuthStatus: t, appLevelAuthStatus: n, userLevelAuthStatus: r, scopesSupported: i, authorizationEndpoint: a, tokenEndpoint: o, apiKeyHeader: s } = e;
357
- if (!(t == null && n == null && r == null && a == null && o == null && s == null && !i?.length)) return {
357
+ if (t != null || n != null || r != null || a != null || o != null || s != null || i?.length) return {
358
358
  global: t,
359
359
  appLevel: n,
360
360
  userLevel: r,
@@ -106,11 +106,7 @@ var l = {
106
106
  continue;
107
107
  }
108
108
  let o = e.lastIndexOf("/"), l = o === -1 ? "" : e.slice(0, o);
109
- if (a.name === r) {
110
- b(l, n, i);
111
- continue;
112
- }
113
- b(l, n, i).push({
109
+ a.name === r ? b(l, n, i) : b(l, n, i).push({
114
110
  type: s.File,
115
111
  id: a.path,
116
112
  name: a.name
@@ -9,7 +9,7 @@ var i = /* @__PURE__ */ function(e) {
9
9
  return (async () => {
10
10
  try {
11
11
  let t = await i();
12
- e.value || s(new Set([
12
+ e.value || s(/* @__PURE__ */ new Set([
13
13
  ...t.deployments,
14
14
  ...t.toolsets,
15
15
  ...t.prompts,
@@ -48,7 +48,7 @@ var c = "Production", l = 50, u = (e, t, n) => {
48
48
  return b((e) => e.includes(n) ? e : [...e, n]), Promise.resolve();
49
49
  }, []), T = e((e) => {
50
50
  let t = s(e), n = Array.isArray(d) ? d : [];
51
- !t || n[0] === t || f?.([t, ...n.filter((e) => e !== t)].slice(0, l));
51
+ t && n[0] !== t && f?.([t, ...n.filter((e) => e !== t)].slice(0, l));
52
52
  }, [d, f]), E = e((e) => !e.includes(c), []);
53
53
  return {
54
54
  folderItems: n(() => {
@@ -22,7 +22,7 @@ var d = ({ api: d, skills: f, skillOverviewLabels: p }) => {
22
22
  }),
23
23
  d.getSkillMetadata(l, u)
24
24
  ]), v = h.status === "fulfilled" && h.value != null ? c(h.value) : void 0, y = _.status === "fulfilled" ? _.value : f.find((e) => e.url === i.id), b = g.status === "fulfilled" ? r(y, g.value.items, v?.about, p) : void 0, x = g.status === "fulfilled" ? n(g.value.items, u) : [], S = g.status === "fulfilled" ? s(g.value.items, u) : e;
25
- if (!(v == null && b == null)) return {
25
+ if (v != null || b != null) return {
26
26
  ...v == null ? {} : { promptContent: {
27
27
  content: v.body,
28
28
  ...v.description == null ? {} : { description: v.description },
@@ -41,8 +41,8 @@ var d = ({ api: d, skills: f, skillOverviewLabels: p }) => {
41
41
  if (t == null) return;
42
42
  let n = o(e, t.path);
43
43
  if (n == null) return;
44
- let r = await a(await d.downloadSkillFile(t.bucket, t.path, n));
45
- if (r != null) return n === "SKILL.md" ? c(r).body : r;
44
+ let r = await d.downloadSkillFile(t.bucket, t.path, n), i = await a(r);
45
+ if (i != null) return n === "SKILL.md" ? c(i).body : i;
46
46
  }, [d]),
47
47
  onLoadSkillDetailsFile: l(async (e) => {
48
48
  let t = m.current;
@@ -1,79 +1,79 @@
1
1
  //#region src/conversation/conversation-draft/conversation-draft-store.ts
2
- var e = 50, t = 1, n = (e) => e, r = (e) => e.text.trim() === "" && e.skills.length === 0, i = (e) => {
2
+ var e = (e) => e, t = (e) => e.text.trim() === "" && e.skills.length === 0, n = (e) => {
3
3
  if (typeof e != "object" || !e) return !1;
4
4
  let t = e;
5
5
  return typeof t.text == "string" && Array.isArray(t.skills) && typeof t.updatedAt == "number";
6
- }, a = (e, t) => Object.hasOwn(e, t) ? e[t] : void 0, o = (e) => Object.keys(e).sort((t, n) => e[t].updatedAt - e[n].updatedAt), s = (e, t) => {
7
- let n = o(e), r = n.length - Math.max(t, 0);
6
+ }, r = (e, t) => Object.hasOwn(e, t) ? e[t] : void 0, i = (e) => Object.keys(e).sort((t, n) => e[t].updatedAt - e[n].updatedAt), a = (e, t) => {
7
+ let n = i(e), r = n.length - Math.max(t, 0);
8
8
  if (r <= 0) return e;
9
- let i = { ...e };
10
- return n.slice(0, r).forEach((e) => delete i[e]), i;
11
- }, c = (e, t, n, i) => {
12
9
  let a = { ...e };
13
- return r(n) ? (delete a[t], a) : (a[t] = n, s(a, i));
14
- }, l = (e) => e instanceof DOMException && (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED"), u = ({ getStorage: r, storageKey: u, maxEntries: d = e, normalizeId: f = n }) => {
15
- let p = () => {
10
+ return n.slice(0, r).forEach((e) => delete a[e]), a;
11
+ }, o = (e, n, r, i) => {
12
+ let o = { ...e };
13
+ return t(r) ? (delete o[n], o) : (o[n] = r, a(o, i));
14
+ }, s = (e) => e instanceof DOMException && (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED"), c = ({ getStorage: t, storageKey: c, maxEntries: l = 50, normalizeId: u = e }) => {
15
+ let d = () => {
16
16
  try {
17
- return r();
17
+ return t();
18
18
  } catch {
19
19
  return;
20
20
  }
21
- }, m = () => {
21
+ }, f = () => {
22
22
  try {
23
- let e = p()?.getItem(u);
23
+ let e = d()?.getItem(c);
24
24
  if (!e) return {};
25
- let n = JSON.parse(e);
26
- return n == null || n.version !== t || n.drafts == null || typeof n.drafts != "object" ? {} : Object.fromEntries(Object.entries(n.drafts).filter(([, e]) => i(e)));
25
+ let t = JSON.parse(e);
26
+ return t == null || t.version !== 1 || t.drafts == null || typeof t.drafts != "object" ? {} : Object.fromEntries(Object.entries(t.drafts).filter(([, e]) => n(e)));
27
27
  } catch {
28
28
  return {};
29
29
  }
30
- }, h = (e, n) => {
31
- if (Object.keys(n).length === 0) {
32
- e.removeItem(u);
30
+ }, p = (e, t) => {
31
+ if (Object.keys(t).length === 0) {
32
+ e.removeItem(c);
33
33
  return;
34
34
  }
35
- let r = {
36
- version: t,
37
- drafts: n
35
+ let n = {
36
+ version: 1,
37
+ drafts: t
38
38
  };
39
- e.setItem(u, JSON.stringify(r));
40
- }, g = (e) => {
41
- let t = p();
39
+ e.setItem(c, JSON.stringify(n));
40
+ }, m = (e) => {
41
+ let t = d();
42
42
  if (t) try {
43
- h(t, e);
43
+ p(t, e);
44
44
  } catch (n) {
45
- if (!l(n)) return;
45
+ if (!s(n)) return;
46
46
  try {
47
- let n = o(e);
48
- h(t, s(e, Math.floor(n.length / 2)));
47
+ let n = i(e);
48
+ p(t, a(e, Math.floor(n.length / 2)));
49
49
  } catch {}
50
50
  }
51
51
  };
52
52
  return {
53
- read: (e) => a(m(), f(e)),
54
- write: (e, t) => g(c(m(), f(e), t, d)),
53
+ read: (e) => r(f(), u(e)),
54
+ write: (e, t) => m(o(f(), u(e), t, l)),
55
55
  remove: (e) => {
56
- let t = m(), n = f(e);
57
- Object.hasOwn(t, n) && (delete t[n], g(t));
56
+ let t = f(), n = u(e);
57
+ Object.hasOwn(t, n) && (delete t[n], m(t));
58
58
  },
59
59
  clear: () => {
60
60
  try {
61
- p()?.removeItem(u);
61
+ d()?.removeItem(c);
62
62
  } catch {}
63
63
  }
64
64
  };
65
- }, d = ({ maxEntries: t = e, normalizeId: r = n } = {}) => {
65
+ }, l = ({ maxEntries: t = 50, normalizeId: n = e } = {}) => {
66
66
  let i = {};
67
67
  return {
68
- read: (e) => a(i, r(e)),
69
- write: (e, n) => {
70
- i = c(i, r(e), n, t);
68
+ read: (e) => r(i, n(e)),
69
+ write: (e, r) => {
70
+ i = o(i, n(e), r, t);
71
71
  },
72
72
  remove: (e) => {
73
- let t = r(e);
73
+ let t = n(e);
74
74
  if (!Object.hasOwn(i, t)) return;
75
- let n = { ...i };
76
- delete n[t], i = n;
75
+ let r = { ...i };
76
+ delete r[t], i = r;
77
77
  },
78
78
  clear: () => {
79
79
  i = {};
@@ -81,4 +81,4 @@ var e = 50, t = 1, n = (e) => e, r = (e) => e.text.trim() === "" && e.skills.len
81
81
  };
82
82
  };
83
83
  //#endregion
84
- export { d as createMemoryConversationDraftStore, u as createWebStorageConversationDraftStore };
84
+ export { l as createMemoryConversationDraftStore, c as createWebStorageConversationDraftStore };
@@ -20,7 +20,10 @@ var c = class extends Error {
20
20
  history: t.history,
21
21
  folders: n
22
22
  };
23
- }, f = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, p = "__", m = 255, h = "applications", g = /[-+]/, _ = /^\d+$/, v = (e) => e ? e.split(g)[0].split(".").every((e) => _.test(e)) : !1, y = (e) => o(s(e.replace(/\r\n|\r/g, "\n").split("\n").map((e) => a(e).trim()).filter(Boolean)[0] ?? "", m)).trimEnd(), b = (e, t, n) => {
23
+ }, f = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, p = "__", m = 255, h = "applications", g = /[-+]/, _ = /^\d+$/, v = (e) => e ? e.split(g)[0].split(".").every((e) => _.test(e)) : !1, y = (e) => {
24
+ let t = e.replace(/\r\n|\r/g, "\n").split("\n").map((e) => a(e).trim()).filter(Boolean)[0] ?? "";
25
+ return o(s(t, m)).trimEnd();
26
+ }, b = (e, t, n) => {
24
27
  let r = e.split(p);
25
28
  if (r.length < 2) return [e, i()].join(p);
26
29
  let a = n && v(r[1]) ? r.slice(0, 2) : r.slice(0, 1), o = a.length > 1 ? f.test(r[r.length - 1]) : r.length >= 3, s = r.slice(a.length, o ? -1 : void 0).join(p);
@@ -110,7 +113,7 @@ var c = class extends Error {
110
113
  }), j = (e, i) => {
111
114
  if (!e) return;
112
115
  let a = n(t(e).fileId);
113
- if (!(!a || a.bucket === i || a.bucket === r)) return a.path.split("/").pop() || a.path;
116
+ if (a && a.bucket !== i && a.bucket !== r) return a.path.split("/").pop() || a.path;
114
117
  }, M = (e, t, n) => e.flatMap((e) => {
115
118
  let r = j(e.url, t);
116
119
  if (r != null) return n.push(r), [];
@@ -165,16 +168,12 @@ var c = class extends Error {
165
168
  continue;
166
169
  }
167
170
  let t = e.path.split("/").pop() ?? e.path, c = r.get(e.path);
168
- if (!c) {
169
- o.push(t);
170
- continue;
171
- }
172
- a.push({
171
+ c ? a.push({
173
172
  fileId: s.fileId,
174
173
  bytes: c,
175
174
  originalFileName: t,
176
175
  allocated: i.allocate(t)
177
- });
176
+ }) : o.push(t);
178
177
  }
179
178
  return {
180
179
  plan: a,
@@ -36,4 +36,4 @@ var e = /* @__PURE__ */ function(e) {
36
36
  units: t
37
37
  });
38
38
  //#endregion
39
- export { t as ConversationTransferKind, e as ConversationTransferPhase, o as buildTransferProgress };
39
+ export { t as ConversationTransferKind, e as ConversationTransferPhase, n as TRANSFER_PHASE_WEIGHTS, o as buildTransferProgress, a as computeTransferPercent };
@@ -2,13 +2,7 @@ import { strToU8 as e, zipSync as t } from "fflate";
2
2
  //#region src/conversation/conversation-transfer/zip-export.ts
3
3
  var n = e("", !0).constructor, r = (e) => e instanceof n ? e : new n(e), i = (e) => e.length > 0 && e.split("/").every((e) => e !== "" && e !== "." && e !== ".."), a = (n, a) => {
4
4
  let o = [], s = { "conversation.json": r(e(JSON.stringify(n, null, 2))) };
5
- for (let e of a) {
6
- if (!i(e.path)) {
7
- o.push(e.path);
8
- continue;
9
- }
10
- s[`res/${e.path}`] = r(e.data);
11
- }
5
+ for (let e of a) i(e.path) ? s[`res/${e.path}`] = r(e.data) : o.push(e.path);
12
6
  let c = t(s);
13
7
  return {
14
8
  blob: new Blob([new Uint8Array(c)], { type: "application/zip" }),
@@ -18,7 +18,7 @@ var a = "conversation.json", o = /^conversations\/.*\.json$/, s = "res/", c = (e
18
18
  for (let e of d) {
19
19
  if (e.endsWith("/") || !e.startsWith(s)) continue;
20
20
  let t = e.slice(4);
21
- !t || !n(t) || m.set(t, u[e]);
21
+ t && n(t) && m.set(t, u[e]);
22
22
  }
23
23
  return {
24
24
  envelope: p,
@@ -26,11 +26,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
26
26
  let n = Date.now(), r, i = !1, a = () => {
27
27
  if (i) return;
28
28
  let o = Date.now() - n;
29
- if (o >= e) {
30
- t();
31
- return;
32
- }
33
- clearTimeout(r), r = setTimeout(a, e - o);
29
+ o >= e ? t() : (clearTimeout(r), r = setTimeout(a, e - o));
34
30
  }, o = () => {
35
31
  document.visibilityState === "visible" && a();
36
32
  }, s = typeof window < "u" && typeof document < "u";
@@ -4,7 +4,10 @@ import { createUploadPathAllocator as n } from "../conversation-transfer/build-u
4
4
  import { AttachmentErrorReason as r } from "@epam/ai-dial-chat-shared";
5
5
  import { useCallback as i, useRef as a } from "react";
6
6
  //#region src/conversation/useAttachmentUpload/useAttachmentUpload.ts
7
- var o = 700, s = 5, c = (e) => t(e.split("/").filter(Boolean).pop() ?? "file").replace(/\.\.+/g, ".").replace(/^\.+/, "") || "file", l = (e) => typeof e == "object" && !!e && "response" in e && e.response?.status === 409, u = ({ filesApi: t, bucket: u, onNetworkError: d, debounceMs: f = o }) => {
7
+ var o = 700, s = 5, c = (e) => {
8
+ let n = e.split("/").filter(Boolean).pop() ?? "file";
9
+ return t(n).replace(/\.\.+/g, ".").replace(/^\.+/, "") || "file";
10
+ }, l = (e) => typeof e == "object" && !!e && "response" in e && e.response?.status === 409, u = ({ filesApi: t, bucket: u, onNetworkError: d, debounceMs: f = o }) => {
8
11
  let p = a([]), m = a(null), h = a(null), g = i((t, r) => {
9
12
  let i = `${t}|${e(r)}`;
10
13
  return h.current?.key !== i && (h.current = {
@@ -54,11 +54,7 @@ var r = 300, i = {
54
54
  }
55
55
  if (!u || !s || (e.isRestored = !0, e.hasUserInput)) return;
56
56
  let t = s.read(c);
57
- if (t) {
58
- e.text = t.text, e.skills = t.skills, g.current(t);
59
- return;
60
- }
61
- m.current && g.current(i);
57
+ t ? (e.text = t.text, e.skills = t.skills, g.current(t)) : m.current && g.current(i);
62
58
  }, [
63
59
  s,
64
60
  c,
@@ -10,7 +10,7 @@ import { ConversationTransferErrorCode as g, ConversationTransferSubjectKind as
10
10
  import { useCallback as b } from "react";
11
11
  import { ResponseError as x } from "@epam/ai-dial-chat-api-client";
12
12
  //#region src/conversation/useConversationExport/useConversationExport.ts
13
- var S = 5, C = 512 * 1024 * 1024, w = 429, T = 5, E = 2e3, D = (e) => e instanceof x && e.response.status === w, O = (e, t) => {
13
+ var S = 5, C = 536870912, w = 429, T = 5, E = 2e3, D = (e) => e instanceof x && e.response.status === w, O = (e, t) => {
14
14
  let n = Number(e.response.headers.get("Retry-After"));
15
15
  return Number.isFinite(n) && n > 0 ? n * 1e3 : E * t;
16
16
  }, k = (e, t) => new Promise((n) => {
@@ -38,11 +38,8 @@ var S = 5, C = 512 * 1024 * 1024, w = 429, T = 5, E = 2e3, D = (e) => e instance
38
38
  entries: await u(e, S, async (e) => {
39
39
  if (t.aborted || i) return;
40
40
  let n = l(e.fileId);
41
- if (!n) {
42
- r = !0, o();
43
- return;
44
- }
45
- try {
41
+ if (!n) r = !0, o();
42
+ else try {
46
43
  let e = await w.downloadFileRaw({
47
44
  bucket: n.bucket,
48
45
  path: n.path
@@ -93,7 +90,8 @@ var S = 5, C = 512 * 1024 * 1024, w = 429, T = 5, E = 2e3, D = (e) => e instance
93
90
  }));
94
91
  try {
95
92
  if (l === e.WithoutAttachments) {
96
- y(o(i([s(_)], [])), u), k?.({
93
+ let e = i([s(_)], []), t = o(e);
94
+ y(t, u), k?.({
97
95
  jobId: n,
98
96
  titles: [a]
99
97
  }), I.succeedJob(n);
@@ -134,14 +132,14 @@ var S = 5, C = 512 * 1024 * 1024, w = 429, T = 5, E = 2e3, D = (e) => e instance
134
132
  }), I.failJob(n, g.FileTooLarge), console.error(`Refused to build an export archive of ${C} bytes: over the ${O}-byte limit`);
135
133
  return;
136
134
  }
137
- let { blob: w, skippedPaths: T } = h(i([_], []), b), E = x || T.length > 0;
138
- E && P?.({
135
+ let w = i([_], []), { blob: T, skippedPaths: E } = h(w, b), D = x || E.length > 0;
136
+ D && P?.({
139
137
  jobId: n,
140
138
  code: t.AttachmentSkipped
141
- }), y(w, u), k?.({
139
+ }), y(T, u), k?.({
142
140
  jobId: n,
143
141
  titles: [a]
144
- }), E ? I.warnJob(n, t.AttachmentSkipped) : I.succeedJob(n);
142
+ }), D ? I.warnJob(n, t.AttachmentSkipped) : I.succeedJob(n);
145
143
  } catch (e) {
146
144
  if (d.aborted) return;
147
145
  let t = M(e) ? g.FileTooLarge : g.Unknown, r = await D(e);
@@ -250,7 +248,8 @@ var S = 5, C = 512 * 1024 * 1024, w = 429, T = 5, E = 2e3, D = (e) => e instance
250
248
  }
251
249
  }
252
250
  if (!n.aborted) try {
253
- y(o(i(l.map(s), [])), t), k?.({ jobId: e }), I.succeedJob(e);
251
+ let n = i(l.map(s), []), r = o(n);
252
+ y(r, t), k?.({ jobId: e }), I.succeedJob(e);
254
253
  } catch (t) {
255
254
  let n = M(t) ? g.FileTooLarge : g.Unknown, r = await D(t);
256
255
  F?.({
@@ -3,10 +3,10 @@ import { MessageRole as e } from "@epam/ai-dial-chat-shared";
3
3
  var t = (e) => e != null && Object.keys(e).length > 0, n = (e, n) => t(n) ? {
4
4
  ...e,
5
5
  configuration_value: n
6
- } : e, r = (e, t) => (e?.length ?? 0) === (t?.length ?? 0) ? (e ?? []).some((e, n) => e.url !== t?.[n]?.url) : !0, i = (e, t, n, i, a) => {
6
+ } : e, r = (e, t) => (e?.length ?? 0) !== (t?.length ?? 0) || (e ?? []).some((e, n) => e.url !== t?.[n]?.url), i = (e, t, n, i, a) => {
7
7
  if (t !== e.content || i.length > 0) return !0;
8
8
  let o = e.custom_content?.attachments?.length ?? 0;
9
- return n.length === o ? a != null && r(e.custom_content?.skills, a) : !0;
9
+ return n.length !== o || a != null && r(e.custom_content?.skills, a);
10
10
  }, a = (t) => t == null || t.role !== e.Assistant || !!t.wasStoppedByUser || t.streamErrorMessage != null, o = (e, t, n, r, o, s) => {
11
11
  let c = e[t];
12
12
  return c ? i(c, n, r, o, s) || a(e[t + 1]) : !1;
@@ -184,7 +184,7 @@ var m = ({ conversation: m, conversationId: h, bucket: g, isStreaming: _, startS
184
184
  handleRateMessage: z,
185
185
  handleButtonSelect: d((e, t, n) => {
186
186
  let r = b.current;
187
- !h || !r || _ || (e["dial:widgetOptions"].confirmationMessage ? N({
187
+ h && r && !_ && (e["dial:widgetOptions"].confirmationMessage ? N({
188
188
  starter: e,
189
189
  propertyKey: t,
190
190
  description: n
@@ -201,7 +201,7 @@ var m = ({ conversation: m, conversationId: h, bucket: g, isStreaming: _, startS
201
201
  N(null), B(e, t, n);
202
202
  }, [M, B]),
203
203
  handleStartEdit: d((e) => {
204
- j((t) => new Set([...t, e]));
204
+ j((t) => /* @__PURE__ */ new Set([...t, e]));
205
205
  }, []),
206
206
  handleCancelEdit: d((e) => {
207
207
  j((t) => {
@@ -21,8 +21,9 @@ var x = 5, S = 5, C = (e) => /\.(dial|zip)$/i.test(e.name), w = (e) => new Promi
21
21
  isArchive: !0
22
22
  };
23
23
  }
24
+ let t = await w(e);
24
25
  return {
25
- history: a(await w(e)).history,
26
+ history: a(t).history,
26
27
  attachments: /* @__PURE__ */ new Map(),
27
28
  isArchive: !1
28
29
  };
@@ -168,32 +169,31 @@ var x = 5, S = 5, C = (e) => /\.(dial|zip)$/i.test(e.name), w = (e) => new Promi
168
169
  k(A.length + j.length);
169
170
  }
170
171
  if (!m.aborted) {
171
- if (N) {
172
- D?.({
172
+ if (N) D?.({
173
+ jobId: n,
174
+ code: g.Unauthorized
175
+ }), O.failJob(n, g.Unauthorized);
176
+ else {
177
+ if (A.length > 0) {
178
+ try {
179
+ await h?.();
180
+ } catch {}
181
+ C?.({
182
+ jobId: n,
183
+ titles: A
184
+ });
185
+ }
186
+ j.length > 0 && D?.({
173
187
  jobId: n,
174
- code: g.Unauthorized
175
- }), O.failJob(n, g.Unauthorized);
176
- return;
177
- }
178
- if (A.length > 0) {
179
- try {
180
- await h?.();
181
- } catch {}
182
- C?.({
188
+ code: g.Unknown,
189
+ titles: j,
190
+ traceId: P
191
+ }), M.size > 0 && w?.({
183
192
  jobId: n,
184
- titles: A
185
- });
193
+ code: t.AttachmentSkipped,
194
+ names: [...M]
195
+ }), j.length > 0 ? O.failJob(n, g.Unknown) : M.size > 0 ? O.warnJob(n, t.AttachmentSkipped, [...M]) : O.succeedJob(n);
186
196
  }
187
- j.length > 0 && D?.({
188
- jobId: n,
189
- code: g.Unknown,
190
- titles: j,
191
- traceId: P
192
- }), M.size > 0 && w?.({
193
- jobId: n,
194
- code: t.AttachmentSkipped,
195
- names: [...M]
196
- }), j.length > 0 ? O.failJob(n, g.Unknown) : M.size > 0 ? O.warnJob(n, t.AttachmentSkipped, [...M]) : O.succeedJob(n);
197
197
  }
198
198
  }, [
199
199
  u,
@@ -47,7 +47,7 @@ var a = 80, o = 1, s = ({ messages: s, isAssistantTyping: c, conversationId: l }
47
47
  return e == null || t == null ? null : Math.max(e, t);
48
48
  }, [j]), N = e(() => {
49
49
  let e = f.current, t = M();
50
- !e || t == null || e.scrollTop > t + o && (e.scrollTop = t);
50
+ e && t != null && e.scrollTop > t + o && (e.scrollTop = t);
51
51
  }, [M]), P = e((e) => {
52
52
  let t = m.current, n = j();
53
53
  if (!t || n == null) return;
@@ -72,11 +72,7 @@ var a = 80, o = 1, s = ({ messages: s, isAssistantTyping: c, conversationId: l }
72
72
  };
73
73
  t && w();
74
74
  let r = x.current;
75
- if (r != null && y.current.has(r)) {
76
- x.current = null, F(r), n();
77
- return;
78
- }
79
- c || ((e || t) && E(!1), n());
75
+ r != null && y.current.has(r) ? (x.current = null, F(r), n()) : c || ((e || t) && E(!1), n());
80
76
  }, [
81
77
  s,
82
78
  c,
@@ -1,8 +1,8 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
2
  //#region src/conversation/useConversationStream/conversation-path.ts
3
3
  var t = (t) => {
4
- let n = t.indexOf("/");
5
- return e(n === -1 ? t : t.substring(n + 1));
4
+ let n = t.indexOf("/"), r = n === -1 ? t : t.substring(n + 1);
5
+ return e(r);
6
6
  };
7
7
  //#endregion
8
8
  export { t as getConversationPath };
@@ -1,19 +1,19 @@
1
1
  //#region src/conversation/useConversationStream/frame-scheduler.ts
2
- var e = 16, t = (t) => {
2
+ var e = (e) => {
3
3
  if (typeof requestAnimationFrame == "function") {
4
- let e = requestAnimationFrame(t);
5
- return () => cancelAnimationFrame(e);
4
+ let t = requestAnimationFrame(e);
5
+ return () => cancelAnimationFrame(t);
6
6
  }
7
- let n = setTimeout(t, e);
8
- return () => clearTimeout(n);
9
- }, n = () => {
10
- let e = /* @__PURE__ */ new Map(), n = (t) => {
11
- let n = e.get(t);
12
- n && (e.delete(t), n.task());
7
+ let t = setTimeout(e, 16);
8
+ return () => clearTimeout(t);
9
+ }, t = () => {
10
+ let t = /* @__PURE__ */ new Map(), n = (e) => {
11
+ let n = t.get(e);
12
+ n && (t.delete(e), n.task());
13
13
  };
14
14
  return {
15
15
  schedule: (r, i) => {
16
- let a = e.get(r);
16
+ let a = t.get(r);
17
17
  if (a) {
18
18
  a.task = i;
19
19
  return;
@@ -22,18 +22,18 @@ var e = 16, t = (t) => {
22
22
  task: i,
23
23
  cancelFrame: () => void 0
24
24
  };
25
- e.set(r, o), o.cancelFrame = t(() => n(r));
25
+ t.set(r, o), o.cancelFrame = e(() => n(r));
26
26
  },
27
- flush: (t) => {
28
- e.get(t)?.cancelFrame(), n(t);
27
+ flush: (e) => {
28
+ t.get(e)?.cancelFrame(), n(e);
29
29
  },
30
- cancel: (t) => {
31
- e.get(t)?.cancelFrame(), e.delete(t);
30
+ cancel: (e) => {
31
+ t.get(e)?.cancelFrame(), t.delete(e);
32
32
  },
33
33
  cancelAll: () => {
34
- e.forEach((e) => e.cancelFrame()), e.clear();
34
+ t.forEach((e) => e.cancelFrame()), t.clear();
35
35
  }
36
36
  };
37
37
  };
38
38
  //#endregion
39
- export { n as createFrameScheduler };
39
+ export { t as createFrameScheduler };