@epam/ai-dial-chat-hooks 1.2.0-dev.133 → 1.2.0-dev.139

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,34 +1,39 @@
1
1
  //#region src/conversation/create-chat-stream-api.ts
2
- var e = { "Content-Type": "application/json" }, t = 409, n = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.", r = class extends Error {
3
- constructor(e = n) {
2
+ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.", r = class extends Error {
3
+ static type = "conversation_save_failed";
4
+ constructor() {
5
+ super(n), this.name = "GenerationPersistenceError";
6
+ }
7
+ }, i = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.", a = class extends Error {
8
+ constructor(e = i) {
4
9
  super(e), this.name = "GenerationConflictError";
5
10
  }
6
- }, i = class extends Error {
11
+ }, o = class extends Error {
7
12
  constructor(e) {
8
13
  super(e), this.name = "StreamUpstreamError";
9
14
  }
10
- }, a = (e, t, n) => {
11
- let r = e.trim();
12
- if (!r || r.startsWith(":") || !r.startsWith("data: ")) return;
13
- let a = r.slice(6);
15
+ }, s = (e, t, n) => {
16
+ let i = e.trim();
17
+ if (!i || i.startsWith(":") || !i.startsWith("data: ")) return;
18
+ let a = i.slice(6);
14
19
  if (a !== "[DONE]") try {
15
20
  let e = JSON.parse(a);
16
21
  if (e.error) {
17
- n(new i(e.error.message));
22
+ n(e.error.type === r.type ? new r() : new o(e.error.message));
18
23
  return;
19
24
  }
20
25
  t(e);
21
26
  } catch {}
22
- }, o = (n) => {
23
- let { completionsBasePath: i } = n, o = (...e) => (n.fetchImpl ?? fetch)(...e);
27
+ }, c = (n) => {
28
+ let { completionsBasePath: r } = n, i = (...e) => (n.fetchImpl ?? fetch)(...e);
24
29
  return {
25
- streamCompletion: (s, c, l, u, d, f, p, m, h) => {
30
+ streamCompletion: (o, c, l, u, d, f, p, m, h) => {
26
31
  let { onChunk: g, onComplete: _, onError: v, signal: y } = u;
27
32
  (async () => {
28
33
  let u;
29
34
  try {
30
35
  let t = n.getTimezone?.();
31
- u = await o(`${i}/completions`, {
36
+ u = await i(`${r}/completions`, {
32
37
  method: "POST",
33
38
  credentials: "include",
34
39
  signal: y,
@@ -38,7 +43,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
38
43
  ...t ? { "X-Timezone": t } : {}
39
44
  },
40
45
  body: JSON.stringify({
41
- path: s,
46
+ path: o,
42
47
  message: c ?? "",
43
48
  model: l,
44
49
  custom_content: d || {},
@@ -56,7 +61,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
56
61
  let b = u.headers.get("x-csrf-token");
57
62
  if (b && n.setCsrfToken(b), !u.ok) {
58
63
  if (u.status === t) {
59
- v(new r());
64
+ v(new a());
60
65
  return;
61
66
  }
62
67
  v(/* @__PURE__ */ Error(`Stream request failed with status ${u.status}`));
@@ -73,13 +78,13 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
73
78
  for (;;) {
74
79
  let { done: e, value: t } = await x.read();
75
80
  if (e) {
76
- C.trim() && a(C, g, T);
81
+ C.trim() && s(C, g, T);
77
82
  break;
78
83
  }
79
84
  C += S.decode(t, { stream: !0 });
80
85
  let n = C.split("\n");
81
86
  C = n.pop() ?? "";
82
- for (let e of n) a(e, g, T);
87
+ for (let e of n) s(e, g, T);
83
88
  }
84
89
  w || _();
85
90
  } catch (e) {
@@ -91,7 +96,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
91
96
  })();
92
97
  },
93
98
  stopCompletion: async (t) => {
94
- let r = await o(`${i}/completions/stop`, {
99
+ let a = await i(`${r}/completions/stop`, {
95
100
  method: "POST",
96
101
  credentials: "include",
97
102
  headers: {
@@ -99,10 +104,10 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
99
104
  ...n.getCsrfToken() == null ? {} : { "X-CSRF-Token": n.getCsrfToken() }
100
105
  },
101
106
  body: JSON.stringify(t)
102
- }), a = r.headers.get("x-csrf-token");
103
- if (a && n.setCsrfToken(a), !r.ok) throw Error(`stopCompletion failed: ${r.status}`);
107
+ }), o = a.headers.get("x-csrf-token");
108
+ if (o && n.setCsrfToken(o), !a.ok) throw Error(`stopCompletion failed: ${a.status}`);
104
109
  }
105
110
  };
106
111
  };
107
112
  //#endregion
108
- export { n as DEFAULT_GENERATION_CONFLICT_MESSAGE, r as GenerationConflictError, i as StreamUpstreamError, o as createChatStreamApi };
113
+ export { i as DEFAULT_GENERATION_CONFLICT_MESSAGE, n as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, a as GenerationConflictError, r as GenerationPersistenceError, o as StreamUpstreamError, c as createChatStreamApi };
@@ -1,16 +1,17 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
- import { getConversationPath as t } from "./conversation-path.js";
3
- import { applyChunkToMessages as n } from "./apply-chunk.js";
4
- import { restoreBufferedMessage as r } from "./buffered-generation.js";
5
- import { MessageRole as i } from "@epam/ai-dial-chat-shared";
2
+ import { DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as t, GenerationPersistenceError as n } from "../create-chat-stream-api.js";
3
+ import { getConversationPath as r } from "./conversation-path.js";
4
+ import { applyChunkToMessages as i } from "./apply-chunk.js";
5
+ import { restoreBufferedMessage as a } from "./buffered-generation.js";
6
+ import { MessageRole as o } from "@epam/ai-dial-chat-shared";
6
7
  //#region src/conversation/useConversationStream/generation-resume.ts
7
- var a = (e) => {
8
+ var s = (e) => {
8
9
  let t = e.custom_content;
9
10
  return !!e.content || e.responseId != null || !!t?.attachments?.length || !!t?.stages?.length || !!t?.annotations?.length || !!t?.form_schema || t?.state != null;
10
- }, o = (e) => {
11
+ }, c = (e) => {
11
12
  let t = e.messages[e.messages.length - 1];
12
- return !!t && t.role === i.Assistant && !a(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
13
- }, s = 300 * 1e3, c = "awaiting-resume", l = async (e, t) => {
13
+ return !!t && t.role === o.Assistant && !s(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
14
+ }, l = 300 * 1e3, u = "awaiting-resume", d = async (e, t) => {
14
15
  let n = e.getReader(), r = new TextDecoder(), i = "";
15
16
  try {
16
17
  for (;;) {
@@ -39,88 +40,99 @@ var a = (e) => {
39
40
  } catch {} finally {
40
41
  n.releaseLock();
41
42
  }
42
- }, u = ({ transport: i, setConversation: a, conversationRef: u, resumingPathsRef: d, bufferedGenerationsRef: f, addStreamingPath: p, removeStreamingPath: m, isPathDisplayed: h }) => (g, _) => {
43
- if (!o(_)) return;
44
- let v = t(g);
45
- if (d.current.has(v)) return;
46
- d.current.add(v), p(v);
47
- let y = _.messages.length - 1, b = (e) => {
48
- d.current.delete(v), m(v), f.current.delete(v), e && h(v) && (a(e), u.current = e);
49
- }, x = async () => {
43
+ }, f = ({ transport: o, setConversation: f, conversationRef: p, resumingPathsRef: m, bufferedGenerationsRef: h, addStreamingPath: g, removeStreamingPath: _, isPathDisplayed: v, generationPersistenceErrorMessage: y = t }) => (t, b) => {
44
+ if (!c(b)) return;
45
+ let x = r(t);
46
+ if (m.current.has(x)) return;
47
+ m.current.add(x), g(x);
48
+ let S = b.messages.length - 1, C = {
49
+ generationId: u,
50
+ messageIndex: S,
51
+ message: b.messages[S]
52
+ };
53
+ h.current.set(x, C);
54
+ let w = () => h.current.get(x) === C, T = (e, t = !1) => {
55
+ if (!w()) return;
56
+ m.current.delete(x), _(x);
57
+ let n = e && e.messages.length - 1 === S && c(e) && s(C.message);
58
+ if (t || n) {
59
+ C.message = {
60
+ ...C.message,
61
+ streamErrorMessage: y
62
+ }, v(x) && f((e) => {
63
+ if (!e || !w() || !v(x)) return e;
64
+ let t = a(e, C);
65
+ return p.current = t, t;
66
+ });
67
+ return;
68
+ }
69
+ h.current.delete(x), e && v(x) && (f(e), p.current = e);
70
+ }, E = async () => {
50
71
  try {
51
- b(await i.getConversation(e(g)));
72
+ T(await o.getConversation(e(t)));
52
73
  } catch {
53
- b();
54
- }
55
- }, S = (e) => {
56
- let t = {
57
- generationId: c,
58
- messageIndex: y,
59
- message: e
60
- };
61
- f.current.set(v, t), h(v) && a((e) => {
62
- if (!e) return e;
63
- let n = r(e, t);
64
- return u.current = n, n;
65
- });
66
- }, C = (e) => {
67
- let t = f.current.get(v);
68
- if (t?.generationId === c) {
69
- let r = n([t.message], 0, e);
70
- r && (t.message = r[0]);
74
+ T(void 0, s(C.message));
71
75
  }
72
- h(v) && a((e) => {
73
- if (!e) return e;
74
- let t = f.current.get(v);
75
- if (t?.generationId !== c) return e;
76
- let n = r(e, t);
77
- return u.current = n, n;
76
+ }, D = (e) => {
77
+ w() && (C.message = e, v(x) && f((e) => {
78
+ if (!e || !w() || !v(x)) return e;
79
+ let t = a(e, C);
80
+ return p.current = t, t;
81
+ }));
82
+ }, O = (e) => {
83
+ if (!w()) return;
84
+ let t = i([C.message], 0, e);
85
+ t && (C.message = t[0]), v(x) && f((e) => {
86
+ if (!e || !w() || !v(x)) return e;
87
+ let t = a(e, C);
88
+ return p.current = t, t;
78
89
  });
79
- }, w = async () => {
80
- let t = new AbortController(), n;
90
+ }, k = async () => {
91
+ let n = new AbortController(), r;
81
92
  try {
82
- n = await i.watchConversation(v, t.signal);
93
+ r = await o.watchConversation(x, n.signal);
83
94
  } catch {
84
- await x();
95
+ await E();
85
96
  return;
86
97
  }
87
- let r = !1, a = window.setTimeout(() => {
88
- t.abort();
89
- }, s);
98
+ let i = !1, a = window.setTimeout(() => {
99
+ n.abort();
100
+ }, l);
90
101
  try {
91
- await l(n, async (t) => {
92
- if (t?.action !== "UPDATE") return !1;
102
+ await d(r, async (n) => {
103
+ if (n?.action !== "UPDATE") return !1;
93
104
  try {
94
- let t = await i.getConversation(e(g));
95
- if (!o(t)) return b(t), r = !0, !0;
105
+ let n = await o.getConversation(e(t));
106
+ if (!c(n)) return T(n), i = !0, !0;
96
107
  } catch {}
97
108
  return !1;
98
109
  });
99
110
  } finally {
100
111
  clearTimeout(a);
101
112
  }
102
- r || await x();
103
- }, T = async () => {
113
+ i || await E();
114
+ }, A = async () => {
104
115
  let e = new AbortController(), t;
105
116
  try {
106
- t = await i.attachToGeneration(v, e.signal);
117
+ t = await o.attachToGeneration(x, e.signal);
107
118
  } catch {
108
119
  return !1;
109
120
  }
110
- let n = !1;
111
- return await l(t, (e) => {
121
+ let r = !1, i = !1;
122
+ return await d(t, (e) => {
123
+ if (!w()) return !0;
112
124
  switch (e.type) {
113
- case "snapshot": return S(e.message), !1;
114
- case "chunk": return C(e.chunk), !1;
125
+ case "snapshot": return D(e.message), !1;
126
+ case "chunk": return O(e.chunk), !1;
115
127
  case "done":
116
128
  case "error":
117
- case "stopped": return n = !0, !0;
129
+ case "stopped": return i = e.type === "error" && e.errorType === n.type, r = !0, !0;
118
130
  }
119
- }), n ? (await x(), !0) : !1;
131
+ }), r ? (i ? T(void 0, !0) : await E(), !0) : !w();
120
132
  };
121
133
  (async () => {
122
- await T() || await w();
134
+ await A() || await k();
123
135
  })();
124
136
  };
125
137
  //#endregion
126
- export { u as createResumeIfAwaitingGeneration, o as isAwaitingGenerationResume };
138
+ export { f as createResumeIfAwaitingGeneration, s as hasGeneratedPayload, c as isAwaitingGenerationResume };
@@ -1,161 +1,195 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, GenerationConflictError as n, StreamUpstreamError as r } from "../create-chat-stream-api.js";
3
- import { getConversationPath as i } from "./conversation-path.js";
4
- import { applyChunkToMessages as a } from "./apply-chunk.js";
5
- import { restoreBufferedMessage as o } from "./buffered-generation.js";
6
- import { createResumeIfAwaitingGeneration as s } from "./generation-resume.js";
7
- import { generateUUID as c } from "@epam/ai-dial-chat-shared";
8
- import { useCallback as l, useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
9
- import { SendCompletionDtoModeEnum as m } from "@epam/ai-dial-chat-api-client";
2
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as n, GenerationConflictError as r, GenerationPersistenceError as i, StreamUpstreamError as a } from "../create-chat-stream-api.js";
3
+ import { getConversationPath as o } from "./conversation-path.js";
4
+ import { applyChunkToMessages as s } from "./apply-chunk.js";
5
+ import { restoreBufferedMessage as c } from "./buffered-generation.js";
6
+ import { createResumeIfAwaitingGeneration as l, hasGeneratedPayload as u, isAwaitingGenerationResume as d } from "./generation-resume.js";
7
+ import { generateUUID as f } from "@epam/ai-dial-chat-shared";
8
+ import { useCallback as p, useEffect as m, useMemo as h, useRef as g, useState as _ } from "react";
9
+ import { SendCompletionDtoModeEnum as v } from "@epam/ai-dial-chat-api-client";
10
10
  //#region src/conversation/useConversationStream/useConversationStream.ts
11
- var h = 2e4, g = (e, t) => e instanceof n ? t : e instanceof r ? e.message : "", _ = ({ conversationId: n, state: { setConversation: r, conversationRef: _ }, transport: v, generation: { startGeneration: y, completeGeneration: b }, channel: x, overlay: S, onStopError: C, generationConflictMessage: w = t, onStreamError: T }) => {
12
- let E = f(T);
13
- u(() => {
14
- E.current = T;
15
- }, [T]);
16
- let [D, O] = p(() => /* @__PURE__ */ new Set()), [k, A] = p(null), j = f(null), M = f(null), N = f(/* @__PURE__ */ new Set()), P = f(/* @__PURE__ */ new Map()), F = f(/* @__PURE__ */ new Set()), I = f(/* @__PURE__ */ new Map()), L = f(n);
17
- u(() => {
18
- L.current = n;
19
- }, [n]);
20
- let R = l((e) => i(L.current ?? "") === e, []), z = l((e) => {
21
- O((t) => {
11
+ var y = 2e4, b = (e, t, n) => e instanceof i ? n : e instanceof r ? t : e instanceof a ? e.message : "", x = ({ conversationId: r, state: { setConversation: a, conversationRef: x }, transport: S, generation: { startGeneration: C, completeGeneration: w }, channel: T, overlay: E, onStopError: D, generationConflictMessage: O = t, generationPersistenceErrorMessage: k = n, onStreamError: A }) => {
12
+ let j = g(A);
13
+ m(() => {
14
+ j.current = A;
15
+ }, [A]);
16
+ let [M, N] = _(() => /* @__PURE__ */ new Set()), [P, F] = _(null), I = g(null), L = g(null), R = g(/* @__PURE__ */ new Set()), z = g(/* @__PURE__ */ new Map()), B = g(/* @__PURE__ */ new Set()), V = g(/* @__PURE__ */ new Map()), H = g(r);
17
+ m(() => {
18
+ H.current = r;
19
+ }, [r]);
20
+ let U = p((e) => o(H.current ?? "") === e, []), W = p((e) => {
21
+ N((t) => {
22
22
  if (t.has(e)) return t;
23
23
  let n = new Set(t);
24
24
  return n.add(e), n;
25
25
  });
26
- }, []), B = l((e) => {
27
- O((t) => {
26
+ }, []), G = p((e) => {
27
+ N((t) => {
28
28
  if (!t.has(e)) return t;
29
29
  let n = new Set(t);
30
30
  return n.delete(e), n;
31
31
  });
32
- }, []), V = l((t, n, s, l, u, d, f = m.Append) => {
33
- let p = d ?? c(), C = i(t);
34
- j.current = p, M.current = C, I.current.set(C, p), A(C);
35
- let T;
36
- f === m.Regenerate ? T = s : f === m.Edit && (T = s - 1);
37
- let D = () => I.current.get(C) !== p, O = y(C, p), k = _.current?.messages[s];
38
- k ? P.current.set(C, {
39
- generationId: p,
40
- messageIndex: s,
41
- message: k
42
- }) : P.current.delete(C), z(C), S?.notifyGenerationStart?.(), x?.ensureConnected();
43
- let N = {
44
- signal: O.signal,
32
+ }, []), K = p((t, n, r, l, p, m, h = v.Append) => {
33
+ let g = m ?? f(), _ = o(t);
34
+ R.current.delete(_), I.current = g, L.current = _, V.current.set(_, g), F(_);
35
+ let D;
36
+ h === v.Regenerate ? D = r : h === v.Edit && (D = r - 1);
37
+ let A = () => V.current.get(_) !== g, M = C(_, g), N = x.current?.messages[r];
38
+ N ? z.current.set(_, {
39
+ generationId: g,
40
+ messageIndex: r,
41
+ message: N
42
+ }) : z.current.delete(_), W(_), E?.notifyGenerationStart?.(), T?.ensureConnected();
43
+ let P = () => {
44
+ if (A()) return;
45
+ let e = z.current.get(_);
46
+ !e || e.generationId !== g || (e.message = {
47
+ ...e.message,
48
+ streamErrorMessage: k
49
+ }, j.current?.(new i()), U(_) && a((t) => {
50
+ if (!t || A() || !U(_)) return t;
51
+ let n = c(t, e);
52
+ return x.current = n, n;
53
+ }));
54
+ }, H = {
55
+ signal: M.signal,
45
56
  onChunk: (e) => {
46
- if (j.current !== p) return;
47
- let t = P.current.get(C);
48
- if (t?.generationId === p) {
49
- let n = a([t.message], 0, e);
57
+ if (I.current !== g) return;
58
+ let t = z.current.get(_);
59
+ if (t?.generationId === g) {
60
+ let n = s([t.message], 0, e);
50
61
  n && (t.message = n[0]);
51
62
  }
52
- R(C) && r((t) => {
63
+ U(_) && a((t) => {
53
64
  if (!t) return t;
54
- let n = P.current.get(C), r;
55
- if (n?.generationId === p) r = o(t, n);
65
+ let n = z.current.get(_), i;
66
+ if (n?.generationId === g) i = c(t, n);
56
67
  else {
57
- let n = a(t.messages, s, e);
68
+ let n = s(t.messages, r, e);
58
69
  if (!n) return t;
59
- r = {
70
+ i = {
60
71
  ...t,
61
72
  messages: n
62
73
  };
63
74
  }
64
- return _.current = r, r;
75
+ return x.current = i, i;
65
76
  });
66
77
  },
67
78
  onComplete: async () => {
68
- if (P.current.get(C)?.generationId === p && P.current.delete(C), D() || B(C), j.current === p && (j.current = null, M.current = null, A(null)), b(C, p), x?.notifyGenerationSettled?.(), F.current.has(p) ? F.current.delete(p) : D() || S?.notifyGenerationEnd?.(), !D() && R(C)) try {
69
- let n = await v.getConversation(e(t));
70
- if (D() || !R(C)) return;
71
- r(n), _.current = n;
72
- } catch {}
79
+ let n = z.current.get(_), r = n?.generationId === g ? n : void 0;
80
+ if (A() || G(_), I.current === g && (I.current = null, L.current = null, F(null)), w(_, g), T?.notifyGenerationSettled?.(), B.current.has(g) ? B.current.delete(g) : A() || E?.notifyGenerationEnd?.(), !A()) {
81
+ if (!U(_)) {
82
+ r && z.current.delete(_);
83
+ return;
84
+ }
85
+ try {
86
+ let n = await S.getConversation(e(t));
87
+ if (A()) return;
88
+ if (!U(_)) {
89
+ r && z.current.delete(_);
90
+ return;
91
+ }
92
+ if (r && r.messageIndex === n.messages.length - 1 && d(n) && u(r.message)) {
93
+ P();
94
+ return;
95
+ }
96
+ r && z.current.delete(_), a(n), x.current = n;
97
+ } catch {
98
+ A() || P();
99
+ }
100
+ }
73
101
  },
74
102
  onError: (e) => {
75
- E.current?.(e);
76
- let t = P.current.get(C), n = t?.generationId === p ? t : void 0;
77
- if (n && P.current.delete(C), D() || B(C), j.current === p && (j.current = null, M.current = null, A(null)), b(C, p), x?.notifyGenerationSettled?.(), D() || !R(C)) return;
78
- let i = g(e, w);
79
- r((e) => {
80
- if (!e) return e;
81
- let t = n?.generationId === p ? o(e, n) : e, r = {
103
+ j.current?.(e);
104
+ let t = z.current.get(_), n = t?.generationId === g ? t : void 0;
105
+ if (n && (e instanceof i ? n.message = {
106
+ ...n.message,
107
+ streamErrorMessage: k
108
+ } : z.current.delete(_)), A() || G(_), I.current === g && (I.current = null, L.current = null, F(null)), w(_, g), T?.notifyGenerationSettled?.(), A() || !U(_)) return;
109
+ let o = b(e, O, k);
110
+ a((e) => {
111
+ if (!e || A() || !U(_)) return e;
112
+ let t = n?.generationId === g ? c(e, n) : e, i = {
82
113
  ...t,
83
- messages: t.messages.map((e, t) => t === s ? {
114
+ messages: t.messages.map((e, t) => t === r ? {
84
115
  ...e,
85
- streamErrorMessage: i
116
+ streamErrorMessage: o
86
117
  } : e)
87
118
  };
88
- return _.current = r, r;
119
+ return x.current = i, i;
89
120
  });
90
121
  }
91
122
  };
92
123
  (async () => {
93
124
  try {
94
- let e = x?.channelId ?? await x?.waitForChannel(h) ?? void 0, t = F.current.has(p);
95
- if (O.signal.aborted || D() || t) {
96
- P.current.get(C)?.generationId === p && P.current.delete(C), D() || B(C), j.current === p && (j.current = null, M.current = null, A(null)), b(C, p), x?.notifyGenerationSettled?.(), t ? F.current.delete(p) : D() || S?.notifyGenerationEnd?.();
125
+ let e = T?.channelId ?? await T?.waitForChannel(y) ?? void 0, t = B.current.has(g);
126
+ if (M.signal.aborted || A() || t) {
127
+ z.current.get(_)?.generationId === g && z.current.delete(_), A() || G(_), I.current === g && (I.current = null, L.current = null, F(null)), w(_, g), T?.notifyGenerationSettled?.(), t ? B.current.delete(g) : A() || E?.notifyGenerationEnd?.();
97
128
  return;
98
129
  }
99
- v.streamCompletion(C, n, l, N, u, p, f, T, e);
130
+ S.streamCompletion(_, n, l, H, p, g, h, D, e);
100
131
  } catch (e) {
101
- N.onError(e instanceof Error ? e : Error(String(e)));
132
+ H.onError(e instanceof Error ? e : Error(String(e)));
102
133
  }
103
134
  })();
104
135
  }, [
105
- y,
106
- b,
107
- z,
108
- B,
109
- R,
110
- x?.channelId,
111
- x?.ensureConnected,
112
- x?.waitForChannel,
113
- x?.notifyGenerationSettled,
136
+ C,
137
+ w,
138
+ W,
139
+ G,
140
+ U,
141
+ T?.channelId,
142
+ T?.ensureConnected,
143
+ T?.waitForChannel,
144
+ T?.notifyGenerationSettled,
145
+ E,
114
146
  S,
115
- v,
116
- w
117
- ]), H = l((e, t) => {
118
- let n = i(e), r = P.current.get(n);
119
- return r ? o(t, r) : t;
120
- }, []), U = l(() => {
121
- let e = j.current;
122
- if (!e || !n) return;
123
- let t = i(n);
124
- M.current === t && (F.current.add(e), S?.notifyStopGenerating?.(), v.stopCompletion({
147
+ O,
148
+ k
149
+ ]), q = p((e, t) => {
150
+ let n = o(e), r = z.current.get(n);
151
+ return r ? c(t, r) : t;
152
+ }, []), J = p(() => {
153
+ let e = I.current;
154
+ if (!e || !r) return;
155
+ let t = o(r);
156
+ L.current === t && (B.current.add(e), E?.notifyStopGenerating?.(), S.stopCompletion({
125
157
  generationId: e,
126
158
  path: t
127
159
  }).catch((e) => {
128
160
  let t = e instanceof Error ? e : Error(String(e));
129
- C?.(t);
161
+ D?.(t);
130
162
  }));
131
163
  }, [
132
- n,
133
- C,
134
- S,
135
- v
136
- ]), W = d(() => s({
137
- transport: v,
138
- setConversation: r,
139
- conversationRef: _,
140
- resumingPathsRef: N,
141
- bufferedGenerationsRef: P,
142
- addStreamingPath: z,
143
- removeStreamingPath: B,
144
- isPathDisplayed: R
164
+ r,
165
+ D,
166
+ E,
167
+ S
168
+ ]), Y = h(() => l({
169
+ transport: S,
170
+ setConversation: a,
171
+ conversationRef: x,
172
+ resumingPathsRef: R,
173
+ bufferedGenerationsRef: z,
174
+ addStreamingPath: W,
175
+ removeStreamingPath: G,
176
+ isPathDisplayed: U,
177
+ generationPersistenceErrorMessage: k
145
178
  }), [
146
- z,
147
- B,
148
- R,
149
- v
150
- ]), G = n != null && D.has(i(n)), K = n == null ? null : i(n);
179
+ W,
180
+ G,
181
+ U,
182
+ S,
183
+ k
184
+ ]), X = r != null && M.has(o(r)), Z = r == null ? null : o(r);
151
185
  return {
152
- startStream: V,
153
- handleStop: U,
154
- resumeIfAwaitingGeneration: W,
155
- restoreBufferedGeneration: H,
156
- isStreaming: G,
157
- canStopStreaming: K != null && k === K
186
+ startStream: K,
187
+ handleStop: J,
188
+ resumeIfAwaitingGeneration: Y,
189
+ restoreBufferedGeneration: q,
190
+ isStreaming: X,
191
+ canStopStreaming: Z != null && P === Z
158
192
  };
159
193
  };
160
194
  //#endregion
161
- export { _ as useConversationStream };
195
+ export { x as useConversationStream };
package/conversation.d.ts CHANGED
@@ -361,6 +361,9 @@ export declare const createMessagePair: (content: string, customContent?: Messag
361
361
  /** Fallback text of a {@link GenerationConflictError} when no message is supplied. */
362
362
  export declare const DEFAULT_GENERATION_CONFLICT_MESSAGE = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.";
363
363
 
364
+ /** Safe fallback for hosts that do not supply a translated persistence warning. */
365
+ export declare const DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.";
366
+
364
367
  /**
365
368
  * Derives the row-action visibility state for a single conversation item.
366
369
  *
@@ -395,6 +398,12 @@ export declare class GenerationConflictError extends Error {
395
398
  constructor(message?: string);
396
399
  }
397
400
 
401
+ /** Identifies a failed terminal save independently of the model's generation outcome. */
402
+ export declare class GenerationPersistenceError extends Error {
403
+ static readonly type = "conversation_save_failed";
404
+ constructor();
405
+ }
406
+
398
407
  /**
399
408
  * Strips the leading bucket segment from a conversation id and decodes any
400
409
  * already-percent-encoded remainder back to raw, so callers that re-encode
@@ -549,8 +558,8 @@ export declare const isAnswerIncomplete: (answer: Message | undefined) => boolea
549
558
  * True when the conversation's last message is an unresolved assistant
550
559
  * placeholder: the backend only persists a conversation at generation start
551
560
  * (empty placeholder) and at generation end (final content, or a partial
552
- * flagged `streamErrorMessage`/`wasStoppedByUser`), so this shape means a
553
- * generation was still active elsewhere when the conversation was loaded.
561
+ * flagged `streamErrorMessage`/`wasStoppedByUser`). This can mean generation
562
+ * is still active elsewhere, or that its terminal save failed.
554
563
  */
555
564
  export declare const isAwaitingGenerationResume: (conversation: Conversation) => boolean;
556
565
 
@@ -1052,7 +1061,7 @@ export declare interface UseConversationPanelItemsResolvers {
1052
1061
  * `transport`/`generation`/`channel`/`overlay` capabilities rather than any
1053
1062
  * app context or `server-api` import.
1054
1063
  */
1055
- export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
1064
+ export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, generationPersistenceErrorMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
1056
1065
 
1057
1066
  /** Parameters for {@link useConversationStream}. */
1058
1067
  export declare interface UseConversationStreamParams {
@@ -1070,6 +1079,8 @@ export declare interface UseConversationStreamParams {
1070
1079
  * {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
1071
1080
  */
1072
1081
  generationConflictMessage?: string;
1082
+ /** Host-translated warning shown when the received answer could not be saved. */
1083
+ generationPersistenceErrorMessage?: string;
1073
1084
  /**
1074
1085
  * Receives the original error of every failed stream. The hook shows only
1075
1086
  * host-supplied or upstream-supplied text on the message bubble and hides
package/conversation.js CHANGED
@@ -1,32 +1,32 @@
1
1
  import { buildAnnouncementSignature as e, hasAnnouncementContent as t, hasStructuredAnnouncement as n, sanitizeAnnouncementHtml as r, sanitizeAnnouncementMessageHtml as i } from "./conversation/announcement-message.js";
2
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as a, GenerationConflictError as o, StreamUpstreamError as s, createChatStreamApi as c } from "./conversation/create-chat-stream-api.js";
3
- import { shouldWatchForDisplayNameUpdate as l } from "./conversation/display-name-watch.js";
4
- import { formatAppVersion as u, sanitizeFooterHtml as d } from "./conversation/footer-message.js";
5
- import { getModelIdFromConversationId as f } from "./conversation/get-model-id-from-conversation-id.js";
6
- import { getTimeOfDayGreeting as p } from "./conversation/greeting.js";
7
- import { createDeploymentChangedMessage as m } from "./conversation/message-factory.js";
8
- import { getLastDeploymentId as h, getLastUserMessageToolConfiguration as g, isMessageStreaming as _, messageHasStages as v, normalizeResponseFormat as y } from "./conversation/message-utils.js";
9
- import { getQuickAppConversationStarters as b } from "./conversation/quick-app-conversation-starters.js";
10
- import { mapStages as x, toStage as S } from "./conversation/stage.js";
11
- import { getStarterPopulateText as C, getStartersFromSchema as w } from "./conversation/starter-option.js";
12
- import { deriveConversationRowActionState as T } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
13
- import { useActiveConversationSync as E } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
14
- import { useAsyncConfirmDialog as D } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
15
- import { useConversationLookupMaps as O } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
16
- import { getConversationSource as k, useConversationPanelItems as A } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
17
- import { useImportFilePicker as j } from "./conversation/useImportFilePicker/useImportFilePicker.js";
18
- import { useAttachmentUpload as M } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
19
- import { AudioTranscriptionError as N, AudioTranscriptionErrorReason as P } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
20
- import { useTranscribeAudio as F } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
21
- import { attachmentToDto as I, attachmentsToDtos as L } from "./conversation/useConversationHandlers/attachment-to-dto.js";
22
- import { createMessagePair as R } from "./conversation/useConversationHandlers/message-factory.js";
23
- import { hasActiveToolConfig as z, isAnswerIncomplete as B, isMessageChanged as V, shouldRerunGenerationOnEdit as H } from "./conversation/useConversationHandlers/message-utils.js";
24
- import { getStarterConversationText as U, getStarterDisplayText as W, getStarterSubmitText as G } from "./conversation/useConversationHandlers/starter-option.js";
25
- import { getConversationPath as K } from "./conversation/useConversationStream/conversation-path.js";
26
- import { useConversationHandlers as q } from "./conversation/useConversationHandlers/useConversationHandlers.js";
27
- import { applyChunkToMessages as J, mergeStages as Y } from "./conversation/useConversationStream/apply-chunk.js";
28
- import { isAwaitingGenerationResume as X } from "./conversation/useConversationStream/generation-resume.js";
29
- import { useConversationStream as Z } from "./conversation/useConversationStream/useConversationStream.js";
30
- import { useChatSettingsFormConfig as Q } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
31
- import { useToolsMenu as $ } from "./useToolsMenu/useToolsMenu.js";
32
- export { N as AudioTranscriptionError, P as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as GenerationConflictError, s as StreamUpstreamError, J as applyChunkToMessages, I as attachmentToDto, L as attachmentsToDtos, e as buildAnnouncementSignature, c as createChatStreamApi, m as createDeploymentChangedMessage, R as createMessagePair, T as deriveConversationRowActionState, u as formatAppVersion, K as getConversationPath, k as getConversationSource, h as getLastDeploymentId, g as getLastUserMessageToolConfiguration, f as getModelIdFromConversationId, b as getQuickAppConversationStarters, U as getStarterConversationText, W as getStarterDisplayText, C as getStarterPopulateText, G as getStarterSubmitText, w as getStartersFromSchema, p as getTimeOfDayGreeting, z as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, B as isAnswerIncomplete, X as isAwaitingGenerationResume, V as isMessageChanged, _ as isMessageStreaming, x as mapStages, Y as mergeStages, v as messageHasStages, y as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, d as sanitizeFooterHtml, H as shouldRerunGenerationOnEdit, l as shouldWatchForDisplayNameUpdate, S as toStage, E as useActiveConversationSync, D as useAsyncConfirmDialog, M as useAttachmentUpload, Q as useChatSettingsFormConfig, q as useConversationHandlers, O as useConversationLookupMaps, A as useConversationPanelItems, Z as useConversationStream, j as useImportFilePicker, $ as useToolsMenu, F as useTranscribeAudio };
2
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as a, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as o, GenerationConflictError as s, GenerationPersistenceError as c, StreamUpstreamError as l, createChatStreamApi as u } from "./conversation/create-chat-stream-api.js";
3
+ import { shouldWatchForDisplayNameUpdate as d } from "./conversation/display-name-watch.js";
4
+ import { formatAppVersion as f, sanitizeFooterHtml as p } from "./conversation/footer-message.js";
5
+ import { getModelIdFromConversationId as m } from "./conversation/get-model-id-from-conversation-id.js";
6
+ import { getTimeOfDayGreeting as h } from "./conversation/greeting.js";
7
+ import { createDeploymentChangedMessage as g } from "./conversation/message-factory.js";
8
+ import { getLastDeploymentId as _, getLastUserMessageToolConfiguration as v, isMessageStreaming as y, messageHasStages as b, normalizeResponseFormat as x } from "./conversation/message-utils.js";
9
+ import { getQuickAppConversationStarters as S } from "./conversation/quick-app-conversation-starters.js";
10
+ import { mapStages as C, toStage as w } from "./conversation/stage.js";
11
+ import { getStarterPopulateText as T, getStartersFromSchema as E } from "./conversation/starter-option.js";
12
+ import { deriveConversationRowActionState as D } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
13
+ import { useActiveConversationSync as O } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
14
+ import { useAsyncConfirmDialog as k } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
15
+ import { useConversationLookupMaps as A } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
16
+ import { getConversationSource as j, useConversationPanelItems as M } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
17
+ import { useImportFilePicker as N } from "./conversation/useImportFilePicker/useImportFilePicker.js";
18
+ import { useAttachmentUpload as P } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
19
+ import { AudioTranscriptionError as F, AudioTranscriptionErrorReason as I } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
20
+ import { useTranscribeAudio as L } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
21
+ import { attachmentToDto as R, attachmentsToDtos as z } from "./conversation/useConversationHandlers/attachment-to-dto.js";
22
+ import { createMessagePair as B } from "./conversation/useConversationHandlers/message-factory.js";
23
+ import { hasActiveToolConfig as V, isAnswerIncomplete as H, isMessageChanged as U, shouldRerunGenerationOnEdit as W } from "./conversation/useConversationHandlers/message-utils.js";
24
+ import { getStarterConversationText as G, getStarterDisplayText as K, getStarterSubmitText as q } from "./conversation/useConversationHandlers/starter-option.js";
25
+ import { getConversationPath as J } from "./conversation/useConversationStream/conversation-path.js";
26
+ import { useConversationHandlers as Y } from "./conversation/useConversationHandlers/useConversationHandlers.js";
27
+ import { applyChunkToMessages as X, mergeStages as Z } from "./conversation/useConversationStream/apply-chunk.js";
28
+ import { isAwaitingGenerationResume as Q } from "./conversation/useConversationStream/generation-resume.js";
29
+ import { useConversationStream as $ } from "./conversation/useConversationStream/useConversationStream.js";
30
+ import { useChatSettingsFormConfig as ee } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
31
+ import { useToolsMenu as te } from "./useToolsMenu/useToolsMenu.js";
32
+ export { F as AudioTranscriptionError, I as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, s as GenerationConflictError, c as GenerationPersistenceError, l as StreamUpstreamError, X as applyChunkToMessages, R as attachmentToDto, z as attachmentsToDtos, e as buildAnnouncementSignature, u as createChatStreamApi, g as createDeploymentChangedMessage, B as createMessagePair, D as deriveConversationRowActionState, f as formatAppVersion, J as getConversationPath, j as getConversationSource, _ as getLastDeploymentId, v as getLastUserMessageToolConfiguration, m as getModelIdFromConversationId, S as getQuickAppConversationStarters, G as getStarterConversationText, K as getStarterDisplayText, T as getStarterPopulateText, q as getStarterSubmitText, E as getStartersFromSchema, h as getTimeOfDayGreeting, V as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, H as isAnswerIncomplete, Q as isAwaitingGenerationResume, U as isMessageChanged, y as isMessageStreaming, C as mapStages, Z as mergeStages, b as messageHasStages, x as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, p as sanitizeFooterHtml, W as shouldRerunGenerationOnEdit, d as shouldWatchForDisplayNameUpdate, w as toStage, O as useActiveConversationSync, k as useAsyncConfirmDialog, P as useAttachmentUpload, ee as useChatSettingsFormConfig, Y as useConversationHandlers, A as useConversationLookupMaps, M as useConversationPanelItems, $ as useConversationStream, N as useImportFilePicker, te as useToolsMenu, L as useTranscribeAudio };
package/index.d.ts CHANGED
@@ -1107,6 +1107,9 @@ export declare const decomposeLocalizedFields: (displayName: LocalizedText | und
1107
1107
  /** Fallback text of a {@link GenerationConflictError} when no message is supplied. */
1108
1108
  export declare const DEFAULT_GENERATION_CONFLICT_MESSAGE = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.";
1109
1109
 
1110
+ /** Safe fallback for hosts that do not supply a translated persistence warning. */
1111
+ export declare const DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.";
1112
+
1110
1113
  /**
1111
1114
  * Default ceiling on the summed byte length of an export's attachments.
1112
1115
  *
@@ -1723,6 +1726,12 @@ export declare class GenerationConflictError extends Error {
1723
1726
  constructor(message?: string);
1724
1727
  }
1725
1728
 
1729
+ /** Identifies a failed terminal save independently of the model's generation outcome. */
1730
+ export declare class GenerationPersistenceError extends Error {
1731
+ static readonly type = "conversation_save_failed";
1732
+ constructor();
1733
+ }
1734
+
1726
1735
  /** Normalizes any API error into a `{ status?, message, traceId?, code? }` shape. */
1727
1736
  export declare const getApiErrorDetails: (error: unknown) => Promise<ApiErrorDetails>;
1728
1737
 
@@ -2008,8 +2017,8 @@ export declare const isAnswerIncomplete: (answer: Message | undefined) => boolea
2008
2017
  * True when the conversation's last message is an unresolved assistant
2009
2018
  * placeholder: the backend only persists a conversation at generation start
2010
2019
  * (empty placeholder) and at generation end (final content, or a partial
2011
- * flagged `streamErrorMessage`/`wasStoppedByUser`), so this shape means a
2012
- * generation was still active elsewhere when the conversation was loaded.
2020
+ * flagged `streamErrorMessage`/`wasStoppedByUser`). This can mean generation
2021
+ * is still active elsewhere, or that its terminal save failed.
2013
2022
  */
2014
2023
  export declare const isAwaitingGenerationResume: (conversation: Conversation) => boolean;
2015
2024
 
@@ -5002,7 +5011,7 @@ export declare interface UseConversationSourcesResult {
5002
5011
  * `transport`/`generation`/`channel`/`overlay` capabilities rather than any
5003
5012
  * app context or `server-api` import.
5004
5013
  */
5005
- export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
5014
+ export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, generationPersistenceErrorMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
5006
5015
 
5007
5016
  /** Parameters for {@link useConversationStream}. */
5008
5017
  export declare interface UseConversationStreamParams {
@@ -5020,6 +5029,8 @@ export declare interface UseConversationStreamParams {
5020
5029
  * {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
5021
5030
  */
5022
5031
  generationConflictMessage?: string;
5032
+ /** Host-translated warning shown when the received answer could not be saved. */
5033
+ generationPersistenceErrorMessage?: string;
5023
5034
  /**
5024
5035
  * Receives the original error of every failed stream. The hook shows only
5025
5036
  * host-supplied or upstream-supplied text on the message bubble and hides
package/index.js CHANGED
@@ -46,103 +46,103 @@ import { useSkillDetailsPanelData as At } from "./catalog/useSkillDetailsPanelDa
46
46
  import { FavoriteEntityType as jt, useFavoriteEntitiesState as Mt } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
47
47
  import { usePublishFolders as Nt } from "./catalog/usePublishFolders/usePublishFolders.js";
48
48
  import { buildAnnouncementSignature as Pt, hasAnnouncementContent as Ft, hasStructuredAnnouncement as It, sanitizeAnnouncementHtml as Lt, sanitizeAnnouncementMessageHtml as Rt } from "./conversation/announcement-message.js";
49
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as zt, GenerationConflictError as Bt, StreamUpstreamError as Vt, createChatStreamApi as Ht } from "./conversation/create-chat-stream-api.js";
50
- import { shouldWatchForDisplayNameUpdate as Ut } from "./conversation/display-name-watch.js";
51
- import { formatAppVersion as Wt, sanitizeFooterHtml as Gt } from "./conversation/footer-message.js";
52
- import { getModelIdFromConversationId as Kt } from "./conversation/get-model-id-from-conversation-id.js";
53
- import { getTimeOfDayGreeting as qt } from "./conversation/greeting.js";
54
- import { createDeploymentChangedMessage as Jt } from "./conversation/message-factory.js";
55
- import { getLastDeploymentId as Yt, getLastUserMessageToolConfiguration as Xt, isMessageStreaming as Zt, messageHasStages as Qt, normalizeResponseFormat as $t } from "./conversation/message-utils.js";
56
- import { toOverlayMessages as en } from "./conversation/overlay-messages.js";
57
- import { getQuickAppConversationStarters as tn } from "./conversation/quick-app-conversation-starters.js";
58
- import { mapStages as nn, toStage as rn } from "./conversation/stage.js";
59
- import { getStarterPopulateText as an, getStartersFromSchema as on } from "./conversation/starter-option.js";
60
- import { useOAuthCallbackCompletion as sn } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
61
- import { buildPromptExportEnvelope as cn, buildPromptExportFileName as ln, serializePromptExport as un } from "./prompt/export-prompt.js";
62
- import { PROMPT_CONTENT_MAX_LENGTH as dn, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as fn, PROMPT_DESCRIPTION_MAX_LENGTH as pn, PROMPT_NAME_MAX_LENGTH as mn, PromptFieldError as hn, buildPromptPath as gn, getRemainingCharacters as _n, validatePromptContent as vn, validatePromptDescription as yn, validatePromptName as bn } from "./prompt/prompt.js";
63
- import { usePromptsState as xn } from "./prompt/usePromptsState/usePromptsState.js";
64
- import { UnsupportedTriggerReason as Sn } from "./scheduled-task/scheduled-task-mapping.js";
65
- import { ScheduledTaskTriggerDescriptionKind as Cn, describeScheduledTaskTrigger as wn } from "./scheduled-task/scheduled-task-description.js";
66
- import { apSchedulerDayToJsDay as Tn, jsDayToApSchedulerDay as En } from "./shared/cron-weekday.js";
67
- import { mapFormValuesToCreateBody as Dn, mapFormValuesToUpdateBody as On, mapScheduledTaskDtoToFormValues as kn } from "./scheduled-task/scheduled-task-trigger.js";
68
- import { prepareScheduledTaskCreateBody as An, prepareScheduledTaskUpdateBody as jn } from "./scheduled-task/scheduled-task-preparation.js";
69
- import { createScheduledTasksApiClient as Mn } from "./scheduled-task/scheduled-tasks-api-client.js";
70
- import { useScheduledTasks as Nn } from "./scheduled-task/use-scheduled-tasks.js";
71
- import { useScheduledTaskRuns as Pn } from "./scheduled-task/use-scheduled-task-runs.js";
72
- import { validateSkillFileBatch as Fn } from "./skill/skill-file-batch-validation.js";
73
- import { skillFileToAttachment as In } from "./skill/skill-file-preview.js";
74
- import { SkillEditorLoadState as Ln, useSkillEditorLoad as Rn } from "./skill/useSkillEditorLoad.js";
75
- import { useSkillEditorSubmit as zn } from "./skill/useSkillEditorSubmit.js";
76
- import { useSkillFileActions as Bn } from "./skill/useSkillFileActions.js";
77
- import { SkillPreviewErrorKind as Vn, useSkillFilePreview as Hn } from "./skill/useSkillFilePreview.js";
78
- import { useSkillsState as Un } from "./skill/useSkillsState/useSkillsState.js";
79
- import { SkillArchiveImportErrorKind as Wn, SkillArchiveImportStatus as Gn, SkillArchiveSelectionRejectionReason as Kn, classifySkillArchiveImportError as qn, useSkillArchiveImport as Jn } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
80
- import { RecipientsCountStatus as Yn, useShareRecipientsCount as Xn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
81
- import { deriveConversationRowActionState as Zn } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
82
- import { useActiveConversationSync as Qn } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
83
- import { useAsyncConfirmDialog as $n } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
84
- import { useConversationLookupMaps as er } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
85
- import { getConversationSource as tr, useConversationPanelItems as nr } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
86
- import { useImportFilePicker as rr } from "./conversation/useImportFilePicker/useImportFilePicker.js";
87
- import { sanitizeFileName as ir, splitFileNameExtension as ar, trimFileNameToByteLimit as or } from "./files/file-name.js";
88
- import { useAttachmentUpload as sr } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
89
- import { AudioTranscriptionError as cr, AudioTranscriptionErrorReason as lr } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
90
- import { useTranscribeAudio as ur } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
91
- import { DEFAULT_MAX_ARCHIVE_BYTES as dr, useConversationExport as fr } from "./conversation/useConversationExport/useConversationExport.js";
92
- import { attachmentToDto as pr, attachmentsToDtos as mr } from "./conversation/useConversationHandlers/attachment-to-dto.js";
93
- import { createMessagePair as hr } from "./conversation/useConversationHandlers/message-factory.js";
94
- import { hasActiveToolConfig as gr, isAnswerIncomplete as _r, isMessageChanged as vr, shouldRerunGenerationOnEdit as yr } from "./conversation/useConversationHandlers/message-utils.js";
95
- import { getStarterConversationText as br, getStarterDisplayText as xr, getStarterSubmitText as Sr } from "./conversation/useConversationHandlers/starter-option.js";
96
- import { getConversationPath as Cr } from "./conversation/useConversationStream/conversation-path.js";
97
- import { useConversationHandlers as wr } from "./conversation/useConversationHandlers/useConversationHandlers.js";
98
- import { useConversationImport as Tr } from "./conversation/useConversationImport/useConversationImport.js";
99
- import { useConversationScroll as Er } from "./conversation/useConversationScroll/useConversationScroll.js";
100
- import { applyChunkToMessages as Dr, mergeStages as Or } from "./conversation/useConversationStream/apply-chunk.js";
101
- import { isAwaitingGenerationResume as kr } from "./conversation/useConversationStream/generation-resume.js";
102
- import { useConversationStream as Ar } from "./conversation/useConversationStream/useConversationStream.js";
103
- import { useConversationSources as jr } from "./conversation-sources/useConversationSources/useConversationSources.js";
104
- import { DialFilesApiUploadMode as Mr } from "./files/dial-files-api.js";
105
- import { FileManagerNotificationReason as Nr, FileNameValidationErrorReason as Pr, FileOperationKind as Fr } from "./files/dial-file-manager.types.js";
106
- import { COLUMNS_WITHOUT_AUTHOR as Ir, COLUMNS_WITH_AUTHOR as Lr, CORE_PERMISSION_MAP as Rr, DATE_OPTIONS as zr, PATH_SEPARATOR_REGEXP as Br, RESERVED_MARKER_NAME as Vr, UPLOAD_CONCURRENCY as Hr } from "./files/dial-file-manager.model.js";
107
- import { DialFileManagerActionProfile as Ur, DialFileManagerVariant as Wr, deriveActionProfile as Gr } from "./files/file-manager-variant.js";
108
- import { buildSharedItemVirtualPath as Kr, dialCorePathToRelative as qr, findDialFileByPath as Jr, findFolderByVirtualPath as Yr, formatOperationFolderName as Xr, getVirtualPathName as Zr, hasDialFileWritePermission as Qr, hasForbiddenNameSymbols as $r, isCopyMoveDuplicateAllowed as ei, isShareActionsAllowed as ti, normalizeVirtualPath as ni, parseNewFolderVirtualPath as ri, resolveOwnerCoords as ii } from "./files/dial-file-manager-path.util.js";
109
- import { getParentFolderPath as ai, resolveDialFileApiPath as oi, virtualPathToApiPath as si } from "./files/resolve-dial-file-api-path.js";
110
- import { prepareCopyItems as ci, prepareMoveRenameItems as li } from "./files/dial-file-manager-copy-move.util.js";
111
- import { buildFromCache as ui, fetchByTab as di, fetchForSearch as fi, findFirstSuccessfulCopyMoveItem as pi, mapCorePermissions as mi, mapFileMetadataToDialFile as hi, mapSearchItem as gi, mergeCreatedFolderIntoCache as _i, updateEntry as vi } from "./files/dial-file-manager-mapping.util.js";
112
- import { createFilesApiClient as yi } from "./files/create-files-api.js";
113
- import { createUploadFileWithProgress as bi } from "./files/create-upload-file-with-progress.js";
114
- import { openAnnotationAttachment as xi } from "./files/annotation.js";
115
- import { annotationToOoxmlCanvasContent as Si, annotationToPdfCanvasContent as Ci, clearAttachmentCache as wi, hasAttachmentTextSource as Ti, referenceAttachmentToPdfCanvasContent as Ei, resolveCodeCanvasContent as Di, resolveGroupedVisualizerCanvasContent as Oi, resolveHtmlCanvasContent as ki, resolveImageCanvasContent as Ai, resolveJsonCanvasContent as ji, resolveMarkdownCanvasContent as Mi, resolveOoxmlCanvasContent as Ni, resolvePdfCanvasContent as Pi, resolveTextCanvasContent as Fi, resolveVisualizerCanvasContent as Ii } from "./files/attachment-canvas.js";
116
- import { getUrlFileName as Li, isExternalSourcePreviewable as Ri, resolveExternalSourceContentType as zi } from "./files/source-content.js";
117
- import { annotationToDisplayAttachment as Bi, attachmentDtoToDisplayAttachment as Vi, attachmentDtosToDisplayAttachments as Hi } from "./files/attachment-dto-to-display.js";
118
- import { dialFileToAttachment as Ui, dialFilesToAttachments as Wi, dialFolderPathToAttachment as Gi } from "./files/dial-file-to-attachment.js";
119
- import { DownloadDestinationType as Ki } from "./files/download-destination.js";
120
- import { prepareDownloadDestination as qi } from "./files/prepare-download-destination.js";
121
- import { useDialFileListing as Ji } from "./files/useDialFileListing/useDialFileListing.js";
122
- import { useDialFileMetadata as Yi } from "./files/useDialFileMetadata/useDialFileMetadata.js";
123
- import { useDialFileMutations as Xi } from "./files/useDialFileMutations/useDialFileMutations.js";
124
- import { useDialFileSharing as Zi } from "./files/useDialFileSharing/useDialFileSharing.js";
125
- import { useDialFileUploadBatch as Qi } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
126
- import { useDialFileManager as $i } from "./files/useDialFileManager/useDialFileManager.js";
127
- import { useDialFileManagerTabConfig as ea } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
128
- import { useFileAttachmentPicker as ta } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
129
- import { isCustomAppSchema as na, isQuickAppSchema as ra } from "./shared/application-schema.js";
130
- import { getBrowserTimezone as ia } from "./shared/browser-timezone.js";
131
- import { isValidAbsoluteUrl as aa, isValidFeaturesData as oa, parseFeaturesData as sa } from "./shared/custom-apps.js";
132
- import { buildExternalServiceScopeId as ca, getExternalServiceFallbackName as la, parseExternalServiceUrl as ua } from "./shared/external-services.js";
133
- import { useChatSettingsFormConfig as da } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
134
- import { usePageFileDrag as fa } from "./usePageFileDrag/usePageFileDrag.js";
135
- import { useViewportWidth as pa } from "./useViewportWidth/useViewportWidth.js";
136
- import { usePanelMaxWidth as ma } from "./usePanelMaxWidth/usePanelMaxWidth.js";
137
- import { useShareLink as ha } from "./useShareLink/useShareLink.js";
138
- import { useToolsMenu as ga } from "./useToolsMenu/useToolsMenu.js";
139
- import { USAGE_DATA_I18N_KEYS as _a, mapUsageDataToDashboard as va } from "./usage/map-usage-data-to-dashboard.js";
140
- import { USAGE_MODEL_LIMITS_I18N_KEYS as ya, mapOverallCostLimitsToPeriodStatuses as ba, mapUserUsageToModelLimits as xa } from "./usage/map-user-usage-to-model-limits.js";
141
- import { useUsageData as Sa } from "./usage/useUsageData/useUsageData.js";
142
- import { McpAppResourceFetchError as Ca, createMcpAppsApiClient as wa } from "./mcp-apps/mcp-apps-api-client.js";
143
- import { useMcpAppTools as Ta } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
144
- import { useMcpAppHostContext as Ea } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
145
- import { useMcpAppHostAdapter as Da } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
146
- import { useOpenMcpAppCanvas as Oa } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
147
- import { useGridEditingScroll as ka } from "@epam/ai-dial-chat-shared";
148
- export { x as AttachmentValidationErrorReason, cr as AudioTranscriptionError, lr as AudioTranscriptionErrorReason, R as AuthenticationType, Ir as COLUMNS_WITHOUT_AUTHOR, Lr as COLUMNS_WITH_AUTHOR, Rr as CORE_PERMISSION_MAP, et as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, zr as DATE_OPTIONS, zt as DEFAULT_GENERATION_CONFLICT_MESSAGE, dr as DEFAULT_MAX_ARCHIVE_BYTES, Ur as DialFileManagerActionProfile, Wr as DialFileManagerVariant, Mr as DialFilesApiUploadMode, Ki as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, jt as FavoriteEntityType, Nr as FileManagerNotificationReason, Pr as FileNameValidationErrorReason, Fr as FileOperationKind, Bt as GenerationConflictError, Ca as McpAppResourceFetchError, ze as McpResourceKind, ot as OAuthResourceKind, Br as PATH_SEPARATOR_REGEXP, dn as PROMPT_CONTENT_MAX_LENGTH, fn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, pn as PROMPT_DESCRIPTION_MAX_LENGTH, mn as PROMPT_NAME_MAX_LENGTH, Te as PUBLIC_SKILL_BUCKET, hn as PromptFieldError, ae as PromptSource, Vr as RESERVED_MARKER_NAME, Yn as RecipientsCountStatus, ue as SKILL_FILE_UPLOAD_MAX_BYTES, Ee as SKILL_LISTING_MAX_PAGES, De as SKILL_LISTING_PAGE_SIZE, de as SKILL_MANIFEST_FILE, Oe as SKILL_MANIFEST_MAX_BYTES, fe as SKILL_UPLOAD_MAX_FILES, pe as SKILL_UPLOAD_MAX_TOTAL_BYTES, Cn as ScheduledTaskTriggerDescriptionKind, Wn as SkillArchiveImportErrorKind, Gn as SkillArchiveImportStatus, Kn as SkillArchiveSelectionRejectionReason, Ln as SkillEditorLoadState, Vn as SkillPreviewErrorKind, ke as SkillSource, Vt as StreamUpstreamError, st as TOOLSET_REDIRECT_STATE_KEY, ct as ToolsetAuthStatus, lt as ToolsetAuthTypes, ut as ToolsetCredentialsLevel, Et as ToolsetLoginOutcomeType, dt as ToolsetOAuthCallbackQuery, ft as ToolsetOAuthChannelControlType, pt as ToolsetOAuthFailureReason, mt as ToolsetOAuthInitiationResultType, ht as ToolsetOAuthResultType, Hr as UPLOAD_CONCURRENCY, _a as USAGE_DATA_I18N_KEYS, ya as USAGE_MODEL_LIMITS_I18N_KEYS, Sn as UnsupportedTriggerReason, gt as WithLogin, Bi as annotationToDisplayAttachment, Si as annotationToOoxmlCanvasContent, Ci as annotationToPdfCanvasContent, Tn as apSchedulerDayToJsDay, W as appendLocaleCode, Dr as applyChunkToMessages, Vi as attachmentDtoToDisplayAttachment, Hi as attachmentDtosToDisplayAttachments, pr as attachmentToDto, mr as attachmentsToDtos, G as buildAdditionalLocaleOptions, Pt as buildAnnouncementSignature, Be as buildApplicationMcpUrl, N as buildChatCompletionsUrl, Ve as buildConnectApi, P as buildDeploymentConnectApi, ca as buildExternalServiceScopeId, ui as buildFromCache, cn as buildPromptExportEnvelope, ln as buildPromptExportFileName, se as buildPromptOverview, gn as buildPromptPath, F as buildResponsesUrl, Kr as buildSharedItemVirtualPath, je as buildSkillContentTree, me as buildSkillFilesPayload, he as buildSkillManifest, ge as buildSkillManifestForSubmit, _e as buildSkillManifestFromFrontmatter, Me as buildSkillOverview, xt as buildToolsetAuthorizeUrl, He as buildToolsetMcpUrl, qn as classifySkillArchiveImportError, wi as clearAttachmentCache, K as composeLocalePayload, Ht as createChatStreamApi, i as createCsrfMiddleware, Jt as createDeploymentChangedMessage, yi as createFilesApiClient, wa as createMcpAppsApiClient, hr as createMessagePair, j as createPublishApiClient, Mn as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, bi as createUploadFileWithProgress, V as decodeToolsetId, q as decomposeLocalizedFields, Gr as deriveActionProfile, Ye as deriveAvailableTabIds, Zn as deriveConversationRowActionState, Xe as deriveFavoriteItems, wn as describeScheduledTaskTrigger, qr as dialCorePathToRelative, Ui as dialFileToAttachment, Wi as dialFilesToAttachments, Gi as dialFolderPathToAttachment, m as downloadAttachment, _t as emitToolsetLoginSuccess, I as encodeDeploymentId, H as encodeToolsetId, di as fetchByTab, fi as fetchForSearch, Ze as filterCatalogItemsBySelector, Qe as filterHiddenOwnedItems, L as findDeploymentByIdOrReference, Jr as findDialFileByPath, pi as findFirstSuccessfulCopyMoveItem, Yr as findFolderByVirtualPath, Wt as formatAppVersion, X as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Xr as formatOperationFolderName, A as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, ia as getBrowserTimezone, Cr as getConversationPath, tr as getConversationSource, la as getExternalServiceFallbackName, Yt as getLastDeploymentId, Xt as getLastUserMessageToolConfiguration, Kt as getModelIdFromConversationId, ai as getParentFolderPath, We as getPublicCatalogEntityFolderPath, tn as getQuickAppConversationStarters, _n as getRemainingCharacters, br as getStarterConversationText, xr as getStarterDisplayText, an as getStarterPopulateText, Sr as getStarterSubmitText, on as getStartersFromSchema, qt as getTimeOfDayGreeting, yt as getToolsetOAuthChannelName, St as getToolsetRedirectUri, Li as getUrlFileName, Zr as getVirtualPathName, gr as hasActiveToolConfig, Ft as hasAnnouncementContent, Ti as hasAttachmentTextSource, Qr as hasDialFileWritePermission, $r as hasForbiddenNameSymbols, It as hasStructuredAnnouncement, o as includesIgnoreCase, Ct as initiateOAuthLogin, _r as isAnswerIncomplete, kr as isAwaitingGenerationResume, r as isConversationNotFoundError, ei as isCopyMoveDuplicateAllowed, na as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, Ri as isExternalSourcePreviewable, vr as isMessageChanged, Zt as isMessageStreaming, ce as isOrganisationPromptItem, Ge as isPublicCatalogEntityId, U as isPublicToolsetId, ra as isQuickAppSchema, ti as isShareActionsAllowed, aa as isValidAbsoluteUrl, oa as isValidFeaturesData, ve as isValidSkillRelativePath, En as jsDayToApSchedulerDay, mi as mapCorePermissions, Q as mapDeploymentDetailsDtoToEntityDetails, z as mapDeploymentLimitsDtoToCatalogLimits, B as mapDeploymentLimitsToInput, te as mapDeploymentToCatalogItem, ne as mapDeploymentToolsetCredentials, $ as mapEntityDetailsToCatalogDetails, hi as mapFileMetadataToDialFile, Dn as mapFormValuesToCreateBody, On as mapFormValuesToUpdateBody, ba as mapOverallCostLimitsToPeriodStatuses, le as mapPromptToCatalogItem, Ke as mapPublishConversationResultDto, qe as mapPublishHistoryEntryDto, kn as mapScheduledTaskDtoToFormValues, gi as mapSearchItem, Ne as mapSkillToCatalogItem, nn as mapStages, ee as mapToolsetCredentials, re as mapToolsetToCatalogItem, va as mapUsageDataToDashboard, xa as mapUserUsageToModelLimits, _i as mergeCreatedFolderIntoCache, Or as mergeStages, Qt as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, ye as nameFromPath, wt as navigateToolsetOAuthPopup, $t as normalizeResponseFormat, be as normalizeSkillName, ni as normalizeVirtualPath, xi as openAnnotationAttachment, Tt as openToolsetOAuthPopup, Z as padTwoDigits, ua as parseExternalServiceUrl, sa as parseFeaturesData, ri as parseNewFolderVirtualPath, oe as parsePromptResourceUrl, xe as parseSkillManifest, rt as parseSkillManifestDocument, Ae as parseSkillResourceUrl, ci as prepareCopyItems, qi as prepareDownloadDestination, li as prepareMoveRenameItems, An as prepareScheduledTaskCreateBody, jn as prepareScheduledTaskUpdateBody, Pe as readSkillFileBytes, Fe as readSkillFilePreviewBytes, Ie as readSkillManifest, $e as reconcileFilterTopics, Ei as referenceAttachmentToPdfCanvasContent, tt as resolveCatalogPrimaryAction, Di as resolveCodeCanvasContent, ie as resolveDeploymentFolder, oi as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, zi as resolveExternalSourceContentType, Oi as resolveGroupedVisualizerCanvasContent, ki as resolveHtmlCanvasContent, Ai as resolveImageCanvasContent, ji as resolveJsonCanvasContent, J as resolveLocalizedText, Mi as resolveMarkdownCanvasContent, Ue as resolveMcpResourceKind, Ni as resolveOoxmlCanvasContent, ii as resolveOwnerCoords, Pi as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Le as resolveSkillFileDownloadPath, Re as resolveSkillManifestFileId, Fi as resolveTextCanvasContent, Ii as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Lt as sanitizeAnnouncementHtml, Rt as sanitizeAnnouncementMessageHtml, ir as sanitizeFileName, Gt as sanitizeFooterHtml, un as serializePromptExport, yr as shouldRerunGenerationOnEdit, Ut as shouldWatchForDisplayNameUpdate, Se as skillFileBytesToBlob, In as skillFileToAttachment, ar as splitFileNameExtension, Ce as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, vt as subscribeToolsetLoginSuccess, Y as toBaseLocale, en as toOverlayMessages, Je as toPublishEntityType, M as toPublishRuleDto, rn as toStage, or as trimFileNameToByteLimit, we as unpackSkillArchive, vi as updateEntry, Qn as useActiveConversationSync, kt as useApplicationCredentials, $n as useAsyncConfirmDialog, g as useAttachmentAction, sr as useAttachmentUpload, S as useAttachmentValidation, nt as useCatalogEditNavigation, at as useCatalogItemDetails, Ot as useCatalogToolsetCredentials, da as useChatSettingsFormConfig, fr as useConversationExport, wr as useConversationHandlers, Tr as useConversationImport, er as useConversationLookupMaps, nr as useConversationPanelItems, Er as useConversationScroll, jr as useConversationSources, Ar as useConversationStream, Ji as useDialFileListing, $i as useDialFileManager, ea as useDialFileManagerTabConfig, Yi as useDialFileMetadata, Xi as useDialFileMutations, Zi as useDialFileSharing, Qi as useDialFileUploadBatch, Mt as useFavoriteEntitiesState, ta as useFileAttachmentPicker, ka as useGridEditingScroll, rr as useImportFilePicker, Da as useMcpAppHostAdapter, Ea as useMcpAppHostContext, Ta as useMcpAppTools, sn as useOAuthCallbackCompletion, Oa as useOpenMcpAppCanvas, fa as usePageFileDrag, ma as usePanelMaxWidth, xn as usePromptsState, Nt as usePublishFolders, Pn as useScheduledTaskRuns, Nn as useScheduledTasks, ha as useShareLink, Xn as useShareRecipientsCount, Jn as useSkillArchiveImport, At as useSkillDetailsPanelData, Rn as useSkillEditorLoad, zn as useSkillEditorSubmit, Bn as useSkillFileActions, Hn as useSkillFilePreview, it as useSkillItemDetails, Un as useSkillsState, ga as useToolsMenu, Dt as useToolsetLogin, ur as useTranscribeAudio, Sa as useUsageData, pa as useViewportWidth, vn as validatePromptContent, yn as validatePromptDescription, bn as validatePromptName, Fn as validateSkillFileBatch, si as virtualPathToApiPath, bt as waitForToolsetOAuthResult };
49
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as zt, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as Bt, GenerationConflictError as Vt, GenerationPersistenceError as Ht, StreamUpstreamError as Ut, createChatStreamApi as Wt } from "./conversation/create-chat-stream-api.js";
50
+ import { shouldWatchForDisplayNameUpdate as Gt } from "./conversation/display-name-watch.js";
51
+ import { formatAppVersion as Kt, sanitizeFooterHtml as qt } from "./conversation/footer-message.js";
52
+ import { getModelIdFromConversationId as Jt } from "./conversation/get-model-id-from-conversation-id.js";
53
+ import { getTimeOfDayGreeting as Yt } from "./conversation/greeting.js";
54
+ import { createDeploymentChangedMessage as Xt } from "./conversation/message-factory.js";
55
+ import { getLastDeploymentId as Zt, getLastUserMessageToolConfiguration as Qt, isMessageStreaming as $t, messageHasStages as en, normalizeResponseFormat as tn } from "./conversation/message-utils.js";
56
+ import { toOverlayMessages as nn } from "./conversation/overlay-messages.js";
57
+ import { getQuickAppConversationStarters as rn } from "./conversation/quick-app-conversation-starters.js";
58
+ import { mapStages as an, toStage as on } from "./conversation/stage.js";
59
+ import { getStarterPopulateText as sn, getStartersFromSchema as cn } from "./conversation/starter-option.js";
60
+ import { useOAuthCallbackCompletion as ln } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
61
+ import { buildPromptExportEnvelope as un, buildPromptExportFileName as dn, serializePromptExport as fn } from "./prompt/export-prompt.js";
62
+ import { PROMPT_CONTENT_MAX_LENGTH as pn, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as mn, PROMPT_DESCRIPTION_MAX_LENGTH as hn, PROMPT_NAME_MAX_LENGTH as gn, PromptFieldError as _n, buildPromptPath as vn, getRemainingCharacters as yn, validatePromptContent as bn, validatePromptDescription as xn, validatePromptName as Sn } from "./prompt/prompt.js";
63
+ import { usePromptsState as Cn } from "./prompt/usePromptsState/usePromptsState.js";
64
+ import { UnsupportedTriggerReason as wn } from "./scheduled-task/scheduled-task-mapping.js";
65
+ import { ScheduledTaskTriggerDescriptionKind as Tn, describeScheduledTaskTrigger as En } from "./scheduled-task/scheduled-task-description.js";
66
+ import { apSchedulerDayToJsDay as Dn, jsDayToApSchedulerDay as On } from "./shared/cron-weekday.js";
67
+ import { mapFormValuesToCreateBody as kn, mapFormValuesToUpdateBody as An, mapScheduledTaskDtoToFormValues as jn } from "./scheduled-task/scheduled-task-trigger.js";
68
+ import { prepareScheduledTaskCreateBody as Mn, prepareScheduledTaskUpdateBody as Nn } from "./scheduled-task/scheduled-task-preparation.js";
69
+ import { createScheduledTasksApiClient as Pn } from "./scheduled-task/scheduled-tasks-api-client.js";
70
+ import { useScheduledTasks as Fn } from "./scheduled-task/use-scheduled-tasks.js";
71
+ import { useScheduledTaskRuns as In } from "./scheduled-task/use-scheduled-task-runs.js";
72
+ import { validateSkillFileBatch as Ln } from "./skill/skill-file-batch-validation.js";
73
+ import { skillFileToAttachment as Rn } from "./skill/skill-file-preview.js";
74
+ import { SkillEditorLoadState as zn, useSkillEditorLoad as Bn } from "./skill/useSkillEditorLoad.js";
75
+ import { useSkillEditorSubmit as Vn } from "./skill/useSkillEditorSubmit.js";
76
+ import { useSkillFileActions as Hn } from "./skill/useSkillFileActions.js";
77
+ import { SkillPreviewErrorKind as Un, useSkillFilePreview as Wn } from "./skill/useSkillFilePreview.js";
78
+ import { useSkillsState as Gn } from "./skill/useSkillsState/useSkillsState.js";
79
+ import { SkillArchiveImportErrorKind as Kn, SkillArchiveImportStatus as qn, SkillArchiveSelectionRejectionReason as Jn, classifySkillArchiveImportError as Yn, useSkillArchiveImport as Xn } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
80
+ import { RecipientsCountStatus as Zn, useShareRecipientsCount as Qn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
81
+ import { deriveConversationRowActionState as $n } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
82
+ import { useActiveConversationSync as er } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
83
+ import { useAsyncConfirmDialog as tr } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
84
+ import { useConversationLookupMaps as nr } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
85
+ import { getConversationSource as rr, useConversationPanelItems as ir } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
86
+ import { useImportFilePicker as ar } from "./conversation/useImportFilePicker/useImportFilePicker.js";
87
+ import { sanitizeFileName as or, splitFileNameExtension as sr, trimFileNameToByteLimit as cr } from "./files/file-name.js";
88
+ import { useAttachmentUpload as lr } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
89
+ import { AudioTranscriptionError as ur, AudioTranscriptionErrorReason as dr } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
90
+ import { useTranscribeAudio as fr } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
91
+ import { DEFAULT_MAX_ARCHIVE_BYTES as pr, useConversationExport as mr } from "./conversation/useConversationExport/useConversationExport.js";
92
+ import { attachmentToDto as hr, attachmentsToDtos as gr } from "./conversation/useConversationHandlers/attachment-to-dto.js";
93
+ import { createMessagePair as _r } from "./conversation/useConversationHandlers/message-factory.js";
94
+ import { hasActiveToolConfig as vr, isAnswerIncomplete as yr, isMessageChanged as br, shouldRerunGenerationOnEdit as xr } from "./conversation/useConversationHandlers/message-utils.js";
95
+ import { getStarterConversationText as Sr, getStarterDisplayText as Cr, getStarterSubmitText as wr } from "./conversation/useConversationHandlers/starter-option.js";
96
+ import { getConversationPath as Tr } from "./conversation/useConversationStream/conversation-path.js";
97
+ import { useConversationHandlers as Er } from "./conversation/useConversationHandlers/useConversationHandlers.js";
98
+ import { useConversationImport as Dr } from "./conversation/useConversationImport/useConversationImport.js";
99
+ import { useConversationScroll as Or } from "./conversation/useConversationScroll/useConversationScroll.js";
100
+ import { applyChunkToMessages as kr, mergeStages as Ar } from "./conversation/useConversationStream/apply-chunk.js";
101
+ import { isAwaitingGenerationResume as jr } from "./conversation/useConversationStream/generation-resume.js";
102
+ import { useConversationStream as Mr } from "./conversation/useConversationStream/useConversationStream.js";
103
+ import { useConversationSources as Nr } from "./conversation-sources/useConversationSources/useConversationSources.js";
104
+ import { DialFilesApiUploadMode as Pr } from "./files/dial-files-api.js";
105
+ import { FileManagerNotificationReason as Fr, FileNameValidationErrorReason as Ir, FileOperationKind as Lr } from "./files/dial-file-manager.types.js";
106
+ import { COLUMNS_WITHOUT_AUTHOR as Rr, COLUMNS_WITH_AUTHOR as zr, CORE_PERMISSION_MAP as Br, DATE_OPTIONS as Vr, PATH_SEPARATOR_REGEXP as Hr, RESERVED_MARKER_NAME as Ur, UPLOAD_CONCURRENCY as Wr } from "./files/dial-file-manager.model.js";
107
+ import { DialFileManagerActionProfile as Gr, DialFileManagerVariant as Kr, deriveActionProfile as qr } from "./files/file-manager-variant.js";
108
+ import { buildSharedItemVirtualPath as Jr, dialCorePathToRelative as Yr, findDialFileByPath as Xr, findFolderByVirtualPath as Zr, formatOperationFolderName as Qr, getVirtualPathName as $r, hasDialFileWritePermission as ei, hasForbiddenNameSymbols as ti, isCopyMoveDuplicateAllowed as ni, isShareActionsAllowed as ri, normalizeVirtualPath as ii, parseNewFolderVirtualPath as ai, resolveOwnerCoords as oi } from "./files/dial-file-manager-path.util.js";
109
+ import { getParentFolderPath as si, resolveDialFileApiPath as ci, virtualPathToApiPath as li } from "./files/resolve-dial-file-api-path.js";
110
+ import { prepareCopyItems as ui, prepareMoveRenameItems as di } from "./files/dial-file-manager-copy-move.util.js";
111
+ import { buildFromCache as fi, fetchByTab as pi, fetchForSearch as mi, findFirstSuccessfulCopyMoveItem as hi, mapCorePermissions as gi, mapFileMetadataToDialFile as _i, mapSearchItem as vi, mergeCreatedFolderIntoCache as yi, updateEntry as bi } from "./files/dial-file-manager-mapping.util.js";
112
+ import { createFilesApiClient as xi } from "./files/create-files-api.js";
113
+ import { createUploadFileWithProgress as Si } from "./files/create-upload-file-with-progress.js";
114
+ import { openAnnotationAttachment as Ci } from "./files/annotation.js";
115
+ import { annotationToOoxmlCanvasContent as wi, annotationToPdfCanvasContent as Ti, clearAttachmentCache as Ei, hasAttachmentTextSource as Di, referenceAttachmentToPdfCanvasContent as Oi, resolveCodeCanvasContent as ki, resolveGroupedVisualizerCanvasContent as Ai, resolveHtmlCanvasContent as ji, resolveImageCanvasContent as Mi, resolveJsonCanvasContent as Ni, resolveMarkdownCanvasContent as Pi, resolveOoxmlCanvasContent as Fi, resolvePdfCanvasContent as Ii, resolveTextCanvasContent as Li, resolveVisualizerCanvasContent as Ri } from "./files/attachment-canvas.js";
116
+ import { getUrlFileName as zi, isExternalSourcePreviewable as Bi, resolveExternalSourceContentType as Vi } from "./files/source-content.js";
117
+ import { annotationToDisplayAttachment as Hi, attachmentDtoToDisplayAttachment as Ui, attachmentDtosToDisplayAttachments as Wi } from "./files/attachment-dto-to-display.js";
118
+ import { dialFileToAttachment as Gi, dialFilesToAttachments as Ki, dialFolderPathToAttachment as qi } from "./files/dial-file-to-attachment.js";
119
+ import { DownloadDestinationType as Ji } from "./files/download-destination.js";
120
+ import { prepareDownloadDestination as Yi } from "./files/prepare-download-destination.js";
121
+ import { useDialFileListing as Xi } from "./files/useDialFileListing/useDialFileListing.js";
122
+ import { useDialFileMetadata as Zi } from "./files/useDialFileMetadata/useDialFileMetadata.js";
123
+ import { useDialFileMutations as Qi } from "./files/useDialFileMutations/useDialFileMutations.js";
124
+ import { useDialFileSharing as $i } from "./files/useDialFileSharing/useDialFileSharing.js";
125
+ import { useDialFileUploadBatch as ea } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
126
+ import { useDialFileManager as ta } from "./files/useDialFileManager/useDialFileManager.js";
127
+ import { useDialFileManagerTabConfig as na } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
128
+ import { useFileAttachmentPicker as ra } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
129
+ import { isCustomAppSchema as ia, isQuickAppSchema as aa } from "./shared/application-schema.js";
130
+ import { getBrowserTimezone as oa } from "./shared/browser-timezone.js";
131
+ import { isValidAbsoluteUrl as sa, isValidFeaturesData as ca, parseFeaturesData as la } from "./shared/custom-apps.js";
132
+ import { buildExternalServiceScopeId as ua, getExternalServiceFallbackName as da, parseExternalServiceUrl as fa } from "./shared/external-services.js";
133
+ import { useChatSettingsFormConfig as pa } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
134
+ import { usePageFileDrag as ma } from "./usePageFileDrag/usePageFileDrag.js";
135
+ import { useViewportWidth as ha } from "./useViewportWidth/useViewportWidth.js";
136
+ import { usePanelMaxWidth as ga } from "./usePanelMaxWidth/usePanelMaxWidth.js";
137
+ import { useShareLink as _a } from "./useShareLink/useShareLink.js";
138
+ import { useToolsMenu as va } from "./useToolsMenu/useToolsMenu.js";
139
+ import { USAGE_DATA_I18N_KEYS as ya, mapUsageDataToDashboard as ba } from "./usage/map-usage-data-to-dashboard.js";
140
+ import { USAGE_MODEL_LIMITS_I18N_KEYS as xa, mapOverallCostLimitsToPeriodStatuses as Sa, mapUserUsageToModelLimits as Ca } from "./usage/map-user-usage-to-model-limits.js";
141
+ import { useUsageData as wa } from "./usage/useUsageData/useUsageData.js";
142
+ import { McpAppResourceFetchError as Ta, createMcpAppsApiClient as Ea } from "./mcp-apps/mcp-apps-api-client.js";
143
+ import { useMcpAppTools as Da } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
144
+ import { useMcpAppHostContext as Oa } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
145
+ import { useMcpAppHostAdapter as ka } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
146
+ import { useOpenMcpAppCanvas as Aa } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
147
+ import { useGridEditingScroll as ja } from "@epam/ai-dial-chat-shared";
148
+ export { x as AttachmentValidationErrorReason, ur as AudioTranscriptionError, dr as AudioTranscriptionErrorReason, R as AuthenticationType, Rr as COLUMNS_WITHOUT_AUTHOR, zr as COLUMNS_WITH_AUTHOR, Br as CORE_PERMISSION_MAP, et as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, Vr as DATE_OPTIONS, zt as DEFAULT_GENERATION_CONFLICT_MESSAGE, Bt as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, pr as DEFAULT_MAX_ARCHIVE_BYTES, Gr as DialFileManagerActionProfile, Kr as DialFileManagerVariant, Pr as DialFilesApiUploadMode, Ji as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, jt as FavoriteEntityType, Fr as FileManagerNotificationReason, Ir as FileNameValidationErrorReason, Lr as FileOperationKind, Vt as GenerationConflictError, Ht as GenerationPersistenceError, Ta as McpAppResourceFetchError, ze as McpResourceKind, ot as OAuthResourceKind, Hr as PATH_SEPARATOR_REGEXP, pn as PROMPT_CONTENT_MAX_LENGTH, mn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, hn as PROMPT_DESCRIPTION_MAX_LENGTH, gn as PROMPT_NAME_MAX_LENGTH, Te as PUBLIC_SKILL_BUCKET, _n as PromptFieldError, ae as PromptSource, Ur as RESERVED_MARKER_NAME, Zn as RecipientsCountStatus, ue as SKILL_FILE_UPLOAD_MAX_BYTES, Ee as SKILL_LISTING_MAX_PAGES, De as SKILL_LISTING_PAGE_SIZE, de as SKILL_MANIFEST_FILE, Oe as SKILL_MANIFEST_MAX_BYTES, fe as SKILL_UPLOAD_MAX_FILES, pe as SKILL_UPLOAD_MAX_TOTAL_BYTES, Tn as ScheduledTaskTriggerDescriptionKind, Kn as SkillArchiveImportErrorKind, qn as SkillArchiveImportStatus, Jn as SkillArchiveSelectionRejectionReason, zn as SkillEditorLoadState, Un as SkillPreviewErrorKind, ke as SkillSource, Ut as StreamUpstreamError, st as TOOLSET_REDIRECT_STATE_KEY, ct as ToolsetAuthStatus, lt as ToolsetAuthTypes, ut as ToolsetCredentialsLevel, Et as ToolsetLoginOutcomeType, dt as ToolsetOAuthCallbackQuery, ft as ToolsetOAuthChannelControlType, pt as ToolsetOAuthFailureReason, mt as ToolsetOAuthInitiationResultType, ht as ToolsetOAuthResultType, Wr as UPLOAD_CONCURRENCY, ya as USAGE_DATA_I18N_KEYS, xa as USAGE_MODEL_LIMITS_I18N_KEYS, wn as UnsupportedTriggerReason, gt as WithLogin, Hi as annotationToDisplayAttachment, wi as annotationToOoxmlCanvasContent, Ti as annotationToPdfCanvasContent, Dn as apSchedulerDayToJsDay, W as appendLocaleCode, kr as applyChunkToMessages, Ui as attachmentDtoToDisplayAttachment, Wi as attachmentDtosToDisplayAttachments, hr as attachmentToDto, gr as attachmentsToDtos, G as buildAdditionalLocaleOptions, Pt as buildAnnouncementSignature, Be as buildApplicationMcpUrl, N as buildChatCompletionsUrl, Ve as buildConnectApi, P as buildDeploymentConnectApi, ua as buildExternalServiceScopeId, fi as buildFromCache, un as buildPromptExportEnvelope, dn as buildPromptExportFileName, se as buildPromptOverview, vn as buildPromptPath, F as buildResponsesUrl, Jr as buildSharedItemVirtualPath, je as buildSkillContentTree, me as buildSkillFilesPayload, he as buildSkillManifest, ge as buildSkillManifestForSubmit, _e as buildSkillManifestFromFrontmatter, Me as buildSkillOverview, xt as buildToolsetAuthorizeUrl, He as buildToolsetMcpUrl, Yn as classifySkillArchiveImportError, Ei as clearAttachmentCache, K as composeLocalePayload, Wt as createChatStreamApi, i as createCsrfMiddleware, Xt as createDeploymentChangedMessage, xi as createFilesApiClient, Ea as createMcpAppsApiClient, _r as createMessagePair, j as createPublishApiClient, Pn as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, Si as createUploadFileWithProgress, V as decodeToolsetId, q as decomposeLocalizedFields, qr as deriveActionProfile, Ye as deriveAvailableTabIds, $n as deriveConversationRowActionState, Xe as deriveFavoriteItems, En as describeScheduledTaskTrigger, Yr as dialCorePathToRelative, Gi as dialFileToAttachment, Ki as dialFilesToAttachments, qi as dialFolderPathToAttachment, m as downloadAttachment, _t as emitToolsetLoginSuccess, I as encodeDeploymentId, H as encodeToolsetId, pi as fetchByTab, mi as fetchForSearch, Ze as filterCatalogItemsBySelector, Qe as filterHiddenOwnedItems, L as findDeploymentByIdOrReference, Xr as findDialFileByPath, hi as findFirstSuccessfulCopyMoveItem, Zr as findFolderByVirtualPath, Kt as formatAppVersion, X as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Qr as formatOperationFolderName, A as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, oa as getBrowserTimezone, Tr as getConversationPath, rr as getConversationSource, da as getExternalServiceFallbackName, Zt as getLastDeploymentId, Qt as getLastUserMessageToolConfiguration, Jt as getModelIdFromConversationId, si as getParentFolderPath, We as getPublicCatalogEntityFolderPath, rn as getQuickAppConversationStarters, yn as getRemainingCharacters, Sr as getStarterConversationText, Cr as getStarterDisplayText, sn as getStarterPopulateText, wr as getStarterSubmitText, cn as getStartersFromSchema, Yt as getTimeOfDayGreeting, yt as getToolsetOAuthChannelName, St as getToolsetRedirectUri, zi as getUrlFileName, $r as getVirtualPathName, vr as hasActiveToolConfig, Ft as hasAnnouncementContent, Di as hasAttachmentTextSource, ei as hasDialFileWritePermission, ti as hasForbiddenNameSymbols, It as hasStructuredAnnouncement, o as includesIgnoreCase, Ct as initiateOAuthLogin, yr as isAnswerIncomplete, jr as isAwaitingGenerationResume, r as isConversationNotFoundError, ni as isCopyMoveDuplicateAllowed, ia as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, Bi as isExternalSourcePreviewable, br as isMessageChanged, $t as isMessageStreaming, ce as isOrganisationPromptItem, Ge as isPublicCatalogEntityId, U as isPublicToolsetId, aa as isQuickAppSchema, ri as isShareActionsAllowed, sa as isValidAbsoluteUrl, ca as isValidFeaturesData, ve as isValidSkillRelativePath, On as jsDayToApSchedulerDay, gi as mapCorePermissions, Q as mapDeploymentDetailsDtoToEntityDetails, z as mapDeploymentLimitsDtoToCatalogLimits, B as mapDeploymentLimitsToInput, te as mapDeploymentToCatalogItem, ne as mapDeploymentToolsetCredentials, $ as mapEntityDetailsToCatalogDetails, _i as mapFileMetadataToDialFile, kn as mapFormValuesToCreateBody, An as mapFormValuesToUpdateBody, Sa as mapOverallCostLimitsToPeriodStatuses, le as mapPromptToCatalogItem, Ke as mapPublishConversationResultDto, qe as mapPublishHistoryEntryDto, jn as mapScheduledTaskDtoToFormValues, vi as mapSearchItem, Ne as mapSkillToCatalogItem, an as mapStages, ee as mapToolsetCredentials, re as mapToolsetToCatalogItem, ba as mapUsageDataToDashboard, Ca as mapUserUsageToModelLimits, yi as mergeCreatedFolderIntoCache, Ar as mergeStages, en as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, ye as nameFromPath, wt as navigateToolsetOAuthPopup, tn as normalizeResponseFormat, be as normalizeSkillName, ii as normalizeVirtualPath, Ci as openAnnotationAttachment, Tt as openToolsetOAuthPopup, Z as padTwoDigits, fa as parseExternalServiceUrl, la as parseFeaturesData, ai as parseNewFolderVirtualPath, oe as parsePromptResourceUrl, xe as parseSkillManifest, rt as parseSkillManifestDocument, Ae as parseSkillResourceUrl, ui as prepareCopyItems, Yi as prepareDownloadDestination, di as prepareMoveRenameItems, Mn as prepareScheduledTaskCreateBody, Nn as prepareScheduledTaskUpdateBody, Pe as readSkillFileBytes, Fe as readSkillFilePreviewBytes, Ie as readSkillManifest, $e as reconcileFilterTopics, Oi as referenceAttachmentToPdfCanvasContent, tt as resolveCatalogPrimaryAction, ki as resolveCodeCanvasContent, ie as resolveDeploymentFolder, ci as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, Vi as resolveExternalSourceContentType, Ai as resolveGroupedVisualizerCanvasContent, ji as resolveHtmlCanvasContent, Mi as resolveImageCanvasContent, Ni as resolveJsonCanvasContent, J as resolveLocalizedText, Pi as resolveMarkdownCanvasContent, Ue as resolveMcpResourceKind, Fi as resolveOoxmlCanvasContent, oi as resolveOwnerCoords, Ii as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Le as resolveSkillFileDownloadPath, Re as resolveSkillManifestFileId, Li as resolveTextCanvasContent, Ri as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Lt as sanitizeAnnouncementHtml, Rt as sanitizeAnnouncementMessageHtml, or as sanitizeFileName, qt as sanitizeFooterHtml, fn as serializePromptExport, xr as shouldRerunGenerationOnEdit, Gt as shouldWatchForDisplayNameUpdate, Se as skillFileBytesToBlob, Rn as skillFileToAttachment, sr as splitFileNameExtension, Ce as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, vt as subscribeToolsetLoginSuccess, Y as toBaseLocale, nn as toOverlayMessages, Je as toPublishEntityType, M as toPublishRuleDto, on as toStage, cr as trimFileNameToByteLimit, we as unpackSkillArchive, bi as updateEntry, er as useActiveConversationSync, kt as useApplicationCredentials, tr as useAsyncConfirmDialog, g as useAttachmentAction, lr as useAttachmentUpload, S as useAttachmentValidation, nt as useCatalogEditNavigation, at as useCatalogItemDetails, Ot as useCatalogToolsetCredentials, pa as useChatSettingsFormConfig, mr as useConversationExport, Er as useConversationHandlers, Dr as useConversationImport, nr as useConversationLookupMaps, ir as useConversationPanelItems, Or as useConversationScroll, Nr as useConversationSources, Mr as useConversationStream, Xi as useDialFileListing, ta as useDialFileManager, na as useDialFileManagerTabConfig, Zi as useDialFileMetadata, Qi as useDialFileMutations, $i as useDialFileSharing, ea as useDialFileUploadBatch, Mt as useFavoriteEntitiesState, ra as useFileAttachmentPicker, ja as useGridEditingScroll, ar as useImportFilePicker, ka as useMcpAppHostAdapter, Oa as useMcpAppHostContext, Da as useMcpAppTools, ln as useOAuthCallbackCompletion, Aa as useOpenMcpAppCanvas, ma as usePageFileDrag, ga as usePanelMaxWidth, Cn as usePromptsState, Nt as usePublishFolders, In as useScheduledTaskRuns, Fn as useScheduledTasks, _a as useShareLink, Qn as useShareRecipientsCount, Xn as useSkillArchiveImport, At as useSkillDetailsPanelData, Bn as useSkillEditorLoad, Vn as useSkillEditorSubmit, Hn as useSkillFileActions, Wn as useSkillFilePreview, it as useSkillItemDetails, Gn as useSkillsState, va as useToolsMenu, Dt as useToolsetLogin, fr as useTranscribeAudio, wa as useUsageData, ha as useViewportWidth, bn as validatePromptContent, xn as validatePromptDescription, Sn as validatePromptName, Ln as validateSkillFileBatch, li as virtualPathToApiPath, bt 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.2.0-dev.133",
4
+ "version": "1.2.0-dev.139",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -111,7 +111,7 @@
111
111
  }
112
112
  },
113
113
  "dependencies": {
114
- "@epam/ai-dial-chat-api-client": "1.2.0-dev.133",
114
+ "@epam/ai-dial-chat-api-client": "1.2.0-dev.139",
115
115
  "dompurify": "3.4.15",
116
116
  "fflate": "^0.8.3",
117
117
  "lru-cache": "^10.4.3",
@@ -120,22 +120,22 @@
120
120
  },
121
121
  "peerDependencies": {
122
122
  "react": "^19.2.8",
123
- "@epam/ai-dial-attachment-canvas": "1.2.0-dev.133",
124
- "@epam/ai-dial-attachment-input": "1.2.0-dev.133",
125
- "@epam/ai-dial-builder-form": "1.2.0-dev.133",
126
- "@epam/ai-dial-catalog": "1.2.0-dev.133",
127
- "@epam/ai-dial-chat-overlay": "1.2.0-dev.133",
128
- "@epam/ai-dial-chat-shared": "1.2.0-dev.133",
129
- "@epam/ai-dial-mcp-apps": "1.2.0-dev.133",
130
- "@epam/ai-dial-publish-panel": "1.2.0-dev.133",
131
- "@epam/ai-dial-quotations": "1.2.0-dev.133",
123
+ "@epam/ai-dial-attachment-canvas": "1.2.0-dev.139",
124
+ "@epam/ai-dial-attachment-input": "1.2.0-dev.139",
125
+ "@epam/ai-dial-builder-form": "1.2.0-dev.139",
126
+ "@epam/ai-dial-catalog": "1.2.0-dev.139",
127
+ "@epam/ai-dial-chat-overlay": "1.2.0-dev.139",
128
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.139",
129
+ "@epam/ai-dial-mcp-apps": "1.2.0-dev.139",
130
+ "@epam/ai-dial-publish-panel": "1.2.0-dev.139",
131
+ "@epam/ai-dial-quotations": "1.2.0-dev.139",
132
132
  "@epam/ai-dial-react-file-manager": "^0.3.0-dev.4",
133
- "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.133",
134
- "@epam/ai-dial-share": "1.2.0-dev.133",
135
- "@epam/ai-dial-skill-editor": "1.2.0-dev.133",
136
- "@epam/ai-dial-source-panel": "1.2.0-dev.133",
133
+ "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.139",
134
+ "@epam/ai-dial-share": "1.2.0-dev.139",
135
+ "@epam/ai-dial-skill-editor": "1.2.0-dev.139",
136
+ "@epam/ai-dial-source-panel": "1.2.0-dev.139",
137
137
  "@epam/ai-dial-ui-kit": "^0.15.0-dev.18",
138
- "@epam/ai-dial-usage-dashboard": "1.2.0-dev.133",
138
+ "@epam/ai-dial-usage-dashboard": "1.2.0-dev.139",
139
139
  "@modelcontextprotocol/sdk": "^1.29.0",
140
140
  "@epam/pdf-highlighter-kit": "^0.0.19",
141
141
  "@mcp-ui/client": "^7.1.1"