@epam/ai-dial-chat-hooks 1.2.0-dev.117 → 1.2.0-dev.120

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.
@@ -3,20 +3,24 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
3
3
  constructor(e = n) {
4
4
  super(e), this.name = "GenerationConflictError";
5
5
  }
6
- }, i = (e, t, n) => {
6
+ }, i = class extends Error {
7
+ constructor(e) {
8
+ super(e), this.name = "StreamUpstreamError";
9
+ }
10
+ }, a = (e, t, n) => {
7
11
  let r = e.trim();
8
12
  if (!r || r.startsWith(":") || !r.startsWith("data: ")) return;
9
- let i = r.slice(6);
10
- if (i !== "[DONE]") try {
11
- let e = JSON.parse(i);
13
+ let a = r.slice(6);
14
+ if (a !== "[DONE]") try {
15
+ let e = JSON.parse(a);
12
16
  if (e.error) {
13
- n(Error(e.error.message));
17
+ n(new i(e.error.message));
14
18
  return;
15
19
  }
16
20
  t(e);
17
21
  } catch {}
18
- }, a = (n) => {
19
- let { completionsBasePath: a } = n, o = (...e) => (n.fetchImpl ?? fetch)(...e);
22
+ }, o = (n) => {
23
+ let { completionsBasePath: i } = n, o = (...e) => (n.fetchImpl ?? fetch)(...e);
20
24
  return {
21
25
  streamCompletion: (s, c, l, u, d, f, p, m, h) => {
22
26
  let { onChunk: g, onComplete: _, onError: v, signal: y } = u;
@@ -24,7 +28,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
24
28
  let u;
25
29
  try {
26
30
  let t = n.getTimezone?.();
27
- u = await o(`${a}/completions`, {
31
+ u = await o(`${i}/completions`, {
28
32
  method: "POST",
29
33
  credentials: "include",
30
34
  signal: y,
@@ -69,13 +73,13 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
69
73
  for (;;) {
70
74
  let { done: e, value: t } = await x.read();
71
75
  if (e) {
72
- C.trim() && i(C, g, T);
76
+ C.trim() && a(C, g, T);
73
77
  break;
74
78
  }
75
79
  C += S.decode(t, { stream: !0 });
76
80
  let n = C.split("\n");
77
81
  C = n.pop() ?? "";
78
- for (let e of n) i(e, g, T);
82
+ for (let e of n) a(e, g, T);
79
83
  }
80
84
  w || _();
81
85
  } catch (e) {
@@ -87,7 +91,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
87
91
  })();
88
92
  },
89
93
  stopCompletion: async (t) => {
90
- let r = await o(`${a}/completions/stop`, {
94
+ let r = await o(`${i}/completions/stop`, {
91
95
  method: "POST",
92
96
  credentials: "include",
93
97
  headers: {
@@ -95,10 +99,10 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "A response is alre
95
99
  ...n.getCsrfToken() == null ? {} : { "X-CSRF-Token": n.getCsrfToken() }
96
100
  },
97
101
  body: JSON.stringify(t)
98
- }), i = r.headers.get("x-csrf-token");
99
- if (i && n.setCsrfToken(i), !r.ok) throw Error(`stopCompletion failed: ${r.status}`);
102
+ }), a = r.headers.get("x-csrf-token");
103
+ if (a && n.setCsrfToken(a), !r.ok) throw Error(`stopCompletion failed: ${r.status}`);
100
104
  }
101
105
  };
102
106
  };
103
107
  //#endregion
104
- export { n as DEFAULT_GENERATION_CONFLICT_MESSAGE, r as GenerationConflictError, a as createChatStreamApi };
108
+ export { n as DEFAULT_GENERATION_CONFLICT_MESSAGE, r as GenerationConflictError, i as StreamUpstreamError, o as createChatStreamApi };
@@ -1,56 +1,60 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, GenerationConflictError 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 { createResumeIfAwaitingGeneration as o } from "./generation-resume.js";
7
- import { generateUUID as s } from "@epam/ai-dial-chat-shared";
8
- import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
9
- import { SendCompletionDtoModeEnum as p } from "@epam/ai-dial-chat-api-client";
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";
10
10
  //#region src/conversation/useConversationStream/useConversationStream.ts
11
- var m = 2e4, h = ({ conversationId: h, state: { setConversation: g, conversationRef: _ }, transport: v, generation: { startGeneration: y, completeGeneration: b }, channel: x, overlay: S, onStopError: C, generationConflictMessage: w = t }) => {
12
- let [T, E] = f(() => /* @__PURE__ */ new Set()), [D, O] = f(null), k = d(null), A = d(null), j = d(/* @__PURE__ */ new Set()), M = d(/* @__PURE__ */ new Map()), N = d(/* @__PURE__ */ new Set()), P = d(/* @__PURE__ */ new Map()), F = d(h);
13
- l(() => {
14
- F.current = h;
15
- }, [h]);
16
- let I = c((e) => r(F.current ?? "") === e, []), L = c((e) => {
17
- E((t) => {
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) => {
18
22
  if (t.has(e)) return t;
19
23
  let n = new Set(t);
20
24
  return n.add(e), n;
21
25
  });
22
- }, []), R = c((e) => {
23
- E((t) => {
26
+ }, []), B = l((e) => {
27
+ O((t) => {
24
28
  if (!t.has(e)) return t;
25
29
  let n = new Set(t);
26
30
  return n.delete(e), n;
27
31
  });
28
- }, []), z = c((t, o, c, l, u, d, f = p.Append) => {
29
- let h = d ?? s(), C = r(t);
30
- k.current = h, A.current = C, P.current.set(C, h), O(C);
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);
31
35
  let T;
32
- f === p.Regenerate ? T = c : f === p.Edit && (T = c - 1);
33
- let E = () => P.current.get(C) !== h, D = y(C, h), j = _.current?.messages[c];
34
- j ? M.current.set(C, {
35
- generationId: h,
36
- messageIndex: c,
37
- message: j
38
- }) : M.current.delete(C), L(C), S?.notifyGenerationStart?.(), x?.ensureConnected();
39
- let F = {
40
- signal: D.signal,
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,
41
45
  onChunk: (e) => {
42
- if (k.current !== h) return;
43
- let t = M.current.get(C);
44
- if (t?.generationId === h) {
45
- let n = i([t.message], 0, 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);
46
50
  n && (t.message = n[0]);
47
51
  }
48
- I(C) && g((t) => {
52
+ R(C) && r((t) => {
49
53
  if (!t) return t;
50
- let n = M.current.get(C), r;
51
- if (n?.generationId === h) r = a(t, n);
54
+ let n = P.current.get(C), r;
55
+ if (n?.generationId === p) r = o(t, n);
52
56
  else {
53
- let n = i(t.messages, c, e);
57
+ let n = a(t.messages, s, e);
54
58
  if (!n) return t;
55
59
  r = {
56
60
  ...t,
@@ -61,47 +65,48 @@ var m = 2e4, h = ({ conversationId: h, state: { setConversation: g, conversation
61
65
  });
62
66
  },
63
67
  onComplete: async () => {
64
- if (M.current.get(C)?.generationId === h && M.current.delete(C), E() || R(C), k.current === h && (k.current = null, A.current = null, O(null)), b(C, h), x?.notifyGenerationSettled?.(), N.current.has(h) ? N.current.delete(h) : E() || S?.notifyGenerationEnd?.(), !E() && I(C)) try {
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 {
65
69
  let n = await v.getConversation(e(t));
66
- if (E() || !I(C)) return;
67
- g(n), _.current = n;
70
+ if (D() || !R(C)) return;
71
+ r(n), _.current = n;
68
72
  } catch {}
69
73
  },
70
74
  onError: (e) => {
71
- let t = M.current.get(C), r = t?.generationId === h ? t : void 0;
72
- if (r && M.current.delete(C), E() || R(C), k.current === h && (k.current = null, A.current = null, O(null)), b(C, h), x?.notifyGenerationSettled?.(), E() || !I(C)) return;
73
- let i = e instanceof n ? w : e.message;
74
- g((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) => {
75
80
  if (!e) return e;
76
- let t = r?.generationId === h ? a(e, r) : e, n = {
81
+ let t = n?.generationId === p ? o(e, n) : e, r = {
77
82
  ...t,
78
- messages: t.messages.map((e, t) => t === c ? {
83
+ messages: t.messages.map((e, t) => t === s ? {
79
84
  ...e,
80
85
  streamErrorMessage: i
81
86
  } : e)
82
87
  };
83
- return _.current = n, n;
88
+ return _.current = r, r;
84
89
  });
85
90
  }
86
91
  };
87
92
  (async () => {
88
93
  try {
89
- let e = x?.channelId ?? await x?.waitForChannel(m) ?? void 0, t = N.current.has(h);
90
- if (D.signal.aborted || E() || t) {
91
- M.current.get(C)?.generationId === h && M.current.delete(C), E() || R(C), k.current === h && (k.current = null, A.current = null, O(null)), b(C, h), x?.notifyGenerationSettled?.(), t ? N.current.delete(h) : E() || S?.notifyGenerationEnd?.();
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?.();
92
97
  return;
93
98
  }
94
- v.streamCompletion(C, o, l, F, u, h, f, T, e);
99
+ v.streamCompletion(C, n, l, N, u, p, f, T, e);
95
100
  } catch (e) {
96
- F.onError(e instanceof Error ? e : Error(String(e)));
101
+ N.onError(e instanceof Error ? e : Error(String(e)));
97
102
  }
98
103
  })();
99
104
  }, [
100
105
  y,
101
106
  b,
102
- L,
107
+ z,
108
+ B,
103
109
  R,
104
- I,
105
110
  x?.channelId,
106
111
  x?.ensureConnected,
107
112
  x?.waitForChannel,
@@ -109,14 +114,14 @@ var m = 2e4, h = ({ conversationId: h, state: { setConversation: g, conversation
109
114
  S,
110
115
  v,
111
116
  w
112
- ]), B = c((e, t) => {
113
- let n = r(e), i = M.current.get(n);
114
- return i ? a(t, i) : t;
115
- }, []), V = c(() => {
116
- let e = k.current;
117
- if (!e || !h) return;
118
- let t = r(h);
119
- A.current === t && (N.current.add(e), S?.notifyStopGenerating?.(), v.stopCompletion({
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({
120
125
  generationId: e,
121
126
  path: t
122
127
  }).catch((e) => {
@@ -124,33 +129,33 @@ var m = 2e4, h = ({ conversationId: h, state: { setConversation: g, conversation
124
129
  C?.(t);
125
130
  }));
126
131
  }, [
127
- h,
132
+ n,
128
133
  C,
129
134
  S,
130
135
  v
131
- ]), H = u(() => o({
136
+ ]), W = d(() => s({
132
137
  transport: v,
133
- setConversation: g,
138
+ setConversation: r,
134
139
  conversationRef: _,
135
- resumingPathsRef: j,
136
- bufferedGenerationsRef: M,
137
- addStreamingPath: L,
138
- removeStreamingPath: R,
139
- isPathDisplayed: I
140
+ resumingPathsRef: N,
141
+ bufferedGenerationsRef: P,
142
+ addStreamingPath: z,
143
+ removeStreamingPath: B,
144
+ isPathDisplayed: R
140
145
  }), [
141
- L,
146
+ z,
147
+ B,
142
148
  R,
143
- I,
144
149
  v
145
- ]), U = h != null && T.has(r(h)), W = h == null ? null : r(h);
150
+ ]), G = n != null && D.has(i(n)), K = n == null ? null : i(n);
146
151
  return {
147
- startStream: z,
148
- handleStop: V,
149
- resumeIfAwaitingGeneration: H,
150
- restoreBufferedGeneration: B,
151
- isStreaming: U,
152
- canStopStreaming: W != null && D === W
152
+ startStream: V,
153
+ handleStop: U,
154
+ resumeIfAwaitingGeneration: W,
155
+ restoreBufferedGeneration: H,
156
+ isStreaming: G,
157
+ canStopStreaming: K != null && k === K
153
158
  };
154
159
  };
155
160
  //#endregion
156
- export { h as useConversationStream };
161
+ export { _ as useConversationStream };
package/conversation.d.ts CHANGED
@@ -761,6 +761,17 @@ export declare interface StreamCompletionOptions {
761
761
  signal: AbortSignal;
762
762
  }
763
763
 
764
+ /**
765
+ * Reported through `onError` when DIAL Core itself signals a failure with an
766
+ * in-band `{ error: { message } }` SSE chunk. Its `message` is upstream text
767
+ * intended for the user, unlike a transport failure (failed `fetch`, non-OK
768
+ * status, broken stream), whose message is technical detail. A custom
769
+ * transport raises this for any user-facing upstream error text.
770
+ */
771
+ export declare class StreamUpstreamError extends Error {
772
+ constructor(message: string);
773
+ }
774
+
764
775
  /**
765
776
  * Returns a renderable `Stage` for one raw payload: `index` defaults to `0`,
766
777
  * `name` to `''`, an unrecognized `status` to `null` (still running), and
@@ -1041,7 +1052,7 @@ export declare interface UseConversationPanelItemsResolvers {
1041
1052
  * `transport`/`generation`/`channel`/`overlay` capabilities rather than any
1042
1053
  * app context or `server-api` import.
1043
1054
  */
1044
- export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, }: UseConversationStreamParams) => UseConversationStreamResult;
1055
+ export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
1045
1056
 
1046
1057
  /** Parameters for {@link useConversationStream}. */
1047
1058
  export declare interface UseConversationStreamParams {
@@ -1059,6 +1070,13 @@ export declare interface UseConversationStreamParams {
1059
1070
  * {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
1060
1071
  */
1061
1072
  generationConflictMessage?: string;
1073
+ /**
1074
+ * Receives the original error of every failed stream. The hook shows only
1075
+ * host-supplied or upstream-supplied text on the message bubble and hides
1076
+ * transport detail (e.g. `Failed to fetch`), so this is where the host can
1077
+ * still log or report the raw error.
1078
+ */
1079
+ onStreamError?: (error: Error) => void;
1062
1080
  }
1063
1081
 
1064
1082
  /** Return value of {@link useConversationStream}. */
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, createChatStreamApi as s } from "./conversation/create-chat-stream-api.js";
3
- import { shouldWatchForDisplayNameUpdate as c } from "./conversation/display-name-watch.js";
4
- import { formatAppVersion as l, sanitizeFooterHtml as u } from "./conversation/footer-message.js";
5
- import { getModelIdFromConversationId as d } from "./conversation/get-model-id-from-conversation-id.js";
6
- import { getTimeOfDayGreeting as f } from "./conversation/greeting.js";
7
- import { createDeploymentChangedMessage as p } from "./conversation/message-factory.js";
8
- import { getLastDeploymentId as m, getLastUserMessageToolConfiguration as h, isMessageStreaming as g, messageHasStages as _, normalizeResponseFormat as v } from "./conversation/message-utils.js";
9
- import { getQuickAppConversationStarters as y } from "./conversation/quick-app-conversation-starters.js";
10
- import { mapStages as b, toStage as x } from "./conversation/stage.js";
11
- import { getStarterPopulateText as S, getStartersFromSchema as C } from "./conversation/starter-option.js";
12
- import { deriveConversationRowActionState as w } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
13
- import { useActiveConversationSync as T } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
14
- import { useAsyncConfirmDialog as E } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
15
- import { useConversationLookupMaps as D } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
16
- import { getConversationSource as O, useConversationPanelItems as k } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
17
- import { useImportFilePicker as A } from "./conversation/useImportFilePicker/useImportFilePicker.js";
18
- import { useAttachmentUpload as j } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
19
- import { AudioTranscriptionError as M, AudioTranscriptionErrorReason as N } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
20
- import { useTranscribeAudio as P } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
21
- import { attachmentToDto as F, attachmentsToDtos as I } from "./conversation/useConversationHandlers/attachment-to-dto.js";
22
- import { createMessagePair as L } from "./conversation/useConversationHandlers/message-factory.js";
23
- import { hasActiveToolConfig as R, isAnswerIncomplete as z, isMessageChanged as B, shouldRerunGenerationOnEdit as V } from "./conversation/useConversationHandlers/message-utils.js";
24
- import { getStarterConversationText as H, getStarterDisplayText as U, getStarterSubmitText as W } from "./conversation/useConversationHandlers/starter-option.js";
25
- import { getConversationPath as G } from "./conversation/useConversationStream/conversation-path.js";
26
- import { useConversationHandlers as K } from "./conversation/useConversationHandlers/useConversationHandlers.js";
27
- import { applyChunkToMessages as q, mergeStages as J } from "./conversation/useConversationStream/apply-chunk.js";
28
- import { isAwaitingGenerationResume as Y } from "./conversation/useConversationStream/generation-resume.js";
29
- import { useConversationStream as X } from "./conversation/useConversationStream/useConversationStream.js";
30
- import { useChatSettingsFormConfig as Z } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
31
- import { useToolsMenu as Q } from "./useToolsMenu/useToolsMenu.js";
32
- export { M as AudioTranscriptionError, N as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as GenerationConflictError, q as applyChunkToMessages, F as attachmentToDto, I as attachmentsToDtos, e as buildAnnouncementSignature, s as createChatStreamApi, p as createDeploymentChangedMessage, L as createMessagePair, w as deriveConversationRowActionState, l as formatAppVersion, G as getConversationPath, O as getConversationSource, m as getLastDeploymentId, h as getLastUserMessageToolConfiguration, d as getModelIdFromConversationId, y as getQuickAppConversationStarters, H as getStarterConversationText, U as getStarterDisplayText, S as getStarterPopulateText, W as getStarterSubmitText, C as getStartersFromSchema, f as getTimeOfDayGreeting, R as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, z as isAnswerIncomplete, Y as isAwaitingGenerationResume, B as isMessageChanged, g as isMessageStreaming, b as mapStages, J as mergeStages, _ as messageHasStages, v as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, u as sanitizeFooterHtml, V as shouldRerunGenerationOnEdit, c as shouldWatchForDisplayNameUpdate, x as toStage, T as useActiveConversationSync, E as useAsyncConfirmDialog, j as useAttachmentUpload, Z as useChatSettingsFormConfig, K as useConversationHandlers, D as useConversationLookupMaps, k as useConversationPanelItems, X as useConversationStream, A as useImportFilePicker, Q as useToolsMenu, P as useTranscribeAudio };
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 };
package/index.d.ts CHANGED
@@ -3894,6 +3894,17 @@ export declare interface StreamCompletionOptions {
3894
3894
  signal: AbortSignal;
3895
3895
  }
3896
3896
 
3897
+ /**
3898
+ * Reported through `onError` when DIAL Core itself signals a failure with an
3899
+ * in-band `{ error: { message } }` SSE chunk. Its `message` is upstream text
3900
+ * intended for the user, unlike a transport failure (failed `fetch`, non-OK
3901
+ * status, broken stream), whose message is technical detail. A custom
3902
+ * transport raises this for any user-facing upstream error text.
3903
+ */
3904
+ export declare class StreamUpstreamError extends Error {
3905
+ constructor(message: string);
3906
+ }
3907
+
3897
3908
  /** Strips leading and trailing slashes from a path segment. */
3898
3909
  export declare const stripSurroundingSlashes: (path: string) => string;
3899
3910
 
@@ -4991,7 +5002,7 @@ export declare interface UseConversationSourcesResult {
4991
5002
  * `transport`/`generation`/`channel`/`overlay` capabilities rather than any
4992
5003
  * app context or `server-api` import.
4993
5004
  */
4994
- export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, }: UseConversationStreamParams) => UseConversationStreamResult;
5005
+ export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, onStreamError, }: UseConversationStreamParams) => UseConversationStreamResult;
4995
5006
 
4996
5007
  /** Parameters for {@link useConversationStream}. */
4997
5008
  export declare interface UseConversationStreamParams {
@@ -5009,6 +5020,13 @@ export declare interface UseConversationStreamParams {
5009
5020
  * {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
5010
5021
  */
5011
5022
  generationConflictMessage?: string;
5023
+ /**
5024
+ * Receives the original error of every failed stream. The hook shows only
5025
+ * host-supplied or upstream-supplied text on the message bubble and hides
5026
+ * transport detail (e.g. `Failed to fetch`), so this is where the host can
5027
+ * still log or report the raw error.
5028
+ */
5029
+ onStreamError?: (error: Error) => void;
5012
5030
  }
5013
5031
 
5014
5032
  /** Return value of {@link useConversationStream}. */
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, createChatStreamApi as Vt } from "./conversation/create-chat-stream-api.js";
50
- import { shouldWatchForDisplayNameUpdate as Ht } from "./conversation/display-name-watch.js";
51
- import { formatAppVersion as Ut, sanitizeFooterHtml as Wt } from "./conversation/footer-message.js";
52
- import { getModelIdFromConversationId as Gt } from "./conversation/get-model-id-from-conversation-id.js";
53
- import { getTimeOfDayGreeting as Kt } from "./conversation/greeting.js";
54
- import { createDeploymentChangedMessage as qt } from "./conversation/message-factory.js";
55
- import { getLastDeploymentId as Jt, getLastUserMessageToolConfiguration as Yt, isMessageStreaming as Xt, messageHasStages as Zt, normalizeResponseFormat as Qt } from "./conversation/message-utils.js";
56
- import { toOverlayMessages as $t } from "./conversation/overlay-messages.js";
57
- import { getQuickAppConversationStarters as en } from "./conversation/quick-app-conversation-starters.js";
58
- import { mapStages as tn, toStage as nn } from "./conversation/stage.js";
59
- import { getStarterPopulateText as rn, getStartersFromSchema as an } from "./conversation/starter-option.js";
60
- import { useOAuthCallbackCompletion as on } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
61
- import { buildPromptExportEnvelope as sn, buildPromptExportFileName as cn, serializePromptExport as ln } from "./prompt/export-prompt.js";
62
- import { PROMPT_CONTENT_MAX_LENGTH as un, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as dn, PROMPT_DESCRIPTION_MAX_LENGTH as fn, PROMPT_NAME_MAX_LENGTH as pn, PromptFieldError as mn, buildPromptPath as hn, getRemainingCharacters as gn, validatePromptContent as _n, validatePromptDescription as vn, validatePromptName as yn } from "./prompt/prompt.js";
63
- import { usePromptsState as bn } from "./prompt/usePromptsState/usePromptsState.js";
64
- import { UnsupportedTriggerReason as xn } from "./scheduled-task/scheduled-task-mapping.js";
65
- import { ScheduledTaskTriggerDescriptionKind as Sn, describeScheduledTaskTrigger as Cn } from "./scheduled-task/scheduled-task-description.js";
66
- import { apSchedulerDayToJsDay as wn, jsDayToApSchedulerDay as Tn } from "./shared/cron-weekday.js";
67
- import { mapFormValuesToCreateBody as En, mapFormValuesToUpdateBody as Dn, mapScheduledTaskDtoToFormValues as On } from "./scheduled-task/scheduled-task-trigger.js";
68
- import { prepareScheduledTaskCreateBody as kn, prepareScheduledTaskUpdateBody as An } from "./scheduled-task/scheduled-task-preparation.js";
69
- import { createScheduledTasksApiClient as jn } from "./scheduled-task/scheduled-tasks-api-client.js";
70
- import { useScheduledTasks as Mn } from "./scheduled-task/use-scheduled-tasks.js";
71
- import { useScheduledTaskRuns as Nn } from "./scheduled-task/use-scheduled-task-runs.js";
72
- import { validateSkillFileBatch as Pn } from "./skill/skill-file-batch-validation.js";
73
- import { skillFileToAttachment as Fn } from "./skill/skill-file-preview.js";
74
- import { SkillEditorLoadState as In, useSkillEditorLoad as Ln } from "./skill/useSkillEditorLoad.js";
75
- import { useSkillEditorSubmit as Rn } from "./skill/useSkillEditorSubmit.js";
76
- import { useSkillFileActions as zn } from "./skill/useSkillFileActions.js";
77
- import { SkillPreviewErrorKind as Bn, useSkillFilePreview as Vn } from "./skill/useSkillFilePreview.js";
78
- import { useSkillsState as Hn } from "./skill/useSkillsState/useSkillsState.js";
79
- import { SkillArchiveImportErrorKind as Un, SkillArchiveImportStatus as Wn, SkillArchiveSelectionRejectionReason as Gn, classifySkillArchiveImportError as Kn, useSkillArchiveImport as qn } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
80
- import { RecipientsCountStatus as Jn, useShareRecipientsCount as Yn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
81
- import { deriveConversationRowActionState as Xn } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
82
- import { useActiveConversationSync as Zn } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
83
- import { useAsyncConfirmDialog as Qn } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
84
- import { useConversationLookupMaps as $n } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
85
- import { getConversationSource as er, useConversationPanelItems as tr } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
86
- import { useImportFilePicker as nr } from "./conversation/useImportFilePicker/useImportFilePicker.js";
87
- import { sanitizeFileName as rr, splitFileNameExtension as ir, trimFileNameToByteLimit as ar } from "./files/file-name.js";
88
- import { useAttachmentUpload as or } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
89
- import { AudioTranscriptionError as sr, AudioTranscriptionErrorReason as cr } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
90
- import { useTranscribeAudio as lr } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
91
- import { DEFAULT_MAX_ARCHIVE_BYTES as ur, useConversationExport as dr } from "./conversation/useConversationExport/useConversationExport.js";
92
- import { attachmentToDto as fr, attachmentsToDtos as pr } from "./conversation/useConversationHandlers/attachment-to-dto.js";
93
- import { createMessagePair as mr } from "./conversation/useConversationHandlers/message-factory.js";
94
- import { hasActiveToolConfig as hr, isAnswerIncomplete as gr, isMessageChanged as _r, shouldRerunGenerationOnEdit as vr } from "./conversation/useConversationHandlers/message-utils.js";
95
- import { getStarterConversationText as yr, getStarterDisplayText as br, getStarterSubmitText as xr } from "./conversation/useConversationHandlers/starter-option.js";
96
- import { getConversationPath as Sr } from "./conversation/useConversationStream/conversation-path.js";
97
- import { useConversationHandlers as Cr } from "./conversation/useConversationHandlers/useConversationHandlers.js";
98
- import { useConversationImport as wr } from "./conversation/useConversationImport/useConversationImport.js";
99
- import { useConversationScroll as Tr } from "./conversation/useConversationScroll/useConversationScroll.js";
100
- import { applyChunkToMessages as Er, mergeStages as Dr } from "./conversation/useConversationStream/apply-chunk.js";
101
- import { isAwaitingGenerationResume as Or } from "./conversation/useConversationStream/generation-resume.js";
102
- import { useConversationStream as kr } from "./conversation/useConversationStream/useConversationStream.js";
103
- import { useConversationSources as Ar } from "./conversation-sources/useConversationSources/useConversationSources.js";
104
- import { DialFilesApiUploadMode as jr } from "./files/dial-files-api.js";
105
- import { FileManagerNotificationReason as Mr, FileNameValidationErrorReason as Nr, FileOperationKind as Pr } from "./files/dial-file-manager.types.js";
106
- import { COLUMNS_WITHOUT_AUTHOR as Fr, COLUMNS_WITH_AUTHOR as Ir, CORE_PERMISSION_MAP as Lr, DATE_OPTIONS as Rr, PATH_SEPARATOR_REGEXP as zr, RESERVED_MARKER_NAME as Br, UPLOAD_CONCURRENCY as Vr } from "./files/dial-file-manager.model.js";
107
- import { DialFileManagerActionProfile as Hr, DialFileManagerVariant as Ur, deriveActionProfile as Wr } from "./files/file-manager-variant.js";
108
- import { buildSharedItemVirtualPath as Gr, dialCorePathToRelative as Kr, findDialFileByPath as qr, findFolderByVirtualPath as Jr, formatOperationFolderName as Yr, getVirtualPathName as Xr, hasDialFileWritePermission as Zr, hasForbiddenNameSymbols as Qr, isCopyMoveDuplicateAllowed as $r, isShareActionsAllowed as ei, normalizeVirtualPath as ti, parseNewFolderVirtualPath as ni, resolveOwnerCoords as ri } from "./files/dial-file-manager-path.util.js";
109
- import { getParentFolderPath as ii, resolveDialFileApiPath as ai, virtualPathToApiPath as oi } from "./files/resolve-dial-file-api-path.js";
110
- import { prepareCopyItems as si, prepareMoveRenameItems as ci } from "./files/dial-file-manager-copy-move.util.js";
111
- import { buildFromCache as li, fetchByTab as ui, fetchForSearch as di, findFirstSuccessfulCopyMoveItem as fi, mapCorePermissions as pi, mapFileMetadataToDialFile as mi, mapSearchItem as hi, mergeCreatedFolderIntoCache as gi, updateEntry as _i } from "./files/dial-file-manager-mapping.util.js";
112
- import { createFilesApiClient as vi } from "./files/create-files-api.js";
113
- import { createUploadFileWithProgress as yi } from "./files/create-upload-file-with-progress.js";
114
- import { openAnnotationAttachment as bi } from "./files/annotation.js";
115
- import { annotationToOoxmlCanvasContent as xi, annotationToPdfCanvasContent as Si, clearAttachmentCache as Ci, hasAttachmentTextSource as wi, referenceAttachmentToPdfCanvasContent as Ti, resolveCodeCanvasContent as Ei, resolveGroupedVisualizerCanvasContent as Di, resolveHtmlCanvasContent as Oi, resolveImageCanvasContent as ki, resolveJsonCanvasContent as Ai, resolveMarkdownCanvasContent as ji, resolveOoxmlCanvasContent as Mi, resolvePdfCanvasContent as Ni, resolveTextCanvasContent as Pi, resolveVisualizerCanvasContent as Fi } from "./files/attachment-canvas.js";
116
- import { getUrlFileName as Ii, isExternalSourcePreviewable as Li, resolveExternalSourceContentType as Ri } from "./files/source-content.js";
117
- import { annotationToDisplayAttachment as zi, attachmentDtoToDisplayAttachment as Bi, attachmentDtosToDisplayAttachments as Vi } from "./files/attachment-dto-to-display.js";
118
- import { dialFileToAttachment as Hi, dialFilesToAttachments as Ui, dialFolderPathToAttachment as Wi } from "./files/dial-file-to-attachment.js";
119
- import { DownloadDestinationType as Gi } from "./files/download-destination.js";
120
- import { prepareDownloadDestination as Ki } from "./files/prepare-download-destination.js";
121
- import { useDialFileListing as qi } from "./files/useDialFileListing/useDialFileListing.js";
122
- import { useDialFileMetadata as Ji } from "./files/useDialFileMetadata/useDialFileMetadata.js";
123
- import { useDialFileMutations as Yi } from "./files/useDialFileMutations/useDialFileMutations.js";
124
- import { useDialFileSharing as Xi } from "./files/useDialFileSharing/useDialFileSharing.js";
125
- import { useDialFileUploadBatch as Zi } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
126
- import { useDialFileManager as Qi } from "./files/useDialFileManager/useDialFileManager.js";
127
- import { useDialFileManagerTabConfig as $i } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
128
- import { useFileAttachmentPicker as ea } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
129
- import { isCustomAppSchema as ta, isQuickAppSchema as na } from "./shared/application-schema.js";
130
- import { getBrowserTimezone as ra } from "./shared/browser-timezone.js";
131
- import { isValidAbsoluteUrl as ia, isValidFeaturesData as aa, parseFeaturesData as oa } from "./shared/custom-apps.js";
132
- import { buildExternalServiceScopeId as sa, getExternalServiceFallbackName as ca, parseExternalServiceUrl as la } from "./shared/external-services.js";
133
- import { useChatSettingsFormConfig as ua } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
134
- import { usePageFileDrag as da } from "./usePageFileDrag/usePageFileDrag.js";
135
- import { useViewportWidth as fa } from "./useViewportWidth/useViewportWidth.js";
136
- import { usePanelMaxWidth as pa } from "./usePanelMaxWidth/usePanelMaxWidth.js";
137
- import { useShareLink as ma } from "./useShareLink/useShareLink.js";
138
- import { useToolsMenu as ha } from "./useToolsMenu/useToolsMenu.js";
139
- import { USAGE_DATA_I18N_KEYS as ga, mapUsageDataToDashboard as _a } from "./usage/map-usage-data-to-dashboard.js";
140
- import { USAGE_MODEL_LIMITS_I18N_KEYS as va, mapOverallCostLimitsToPeriodStatuses as ya, mapUserUsageToModelLimits as ba } from "./usage/map-user-usage-to-model-limits.js";
141
- import { useUsageData as xa } from "./usage/useUsageData/useUsageData.js";
142
- import { McpAppResourceFetchError as Sa, createMcpAppsApiClient as Ca } from "./mcp-apps/mcp-apps-api-client.js";
143
- import { useMcpAppTools as wa } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
144
- import { useMcpAppHostContext as Ta } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
145
- import { useMcpAppHostAdapter as Ea } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
146
- import { useOpenMcpAppCanvas as Da } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
147
- import { useGridEditingScroll as Oa } from "@epam/ai-dial-chat-shared";
148
- export { x as AttachmentValidationErrorReason, sr as AudioTranscriptionError, cr as AudioTranscriptionErrorReason, R as AuthenticationType, Fr as COLUMNS_WITHOUT_AUTHOR, Ir as COLUMNS_WITH_AUTHOR, Lr as CORE_PERMISSION_MAP, et as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, Rr as DATE_OPTIONS, zt as DEFAULT_GENERATION_CONFLICT_MESSAGE, ur as DEFAULT_MAX_ARCHIVE_BYTES, Hr as DialFileManagerActionProfile, Ur as DialFileManagerVariant, jr as DialFilesApiUploadMode, Gi as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, jt as FavoriteEntityType, Mr as FileManagerNotificationReason, Nr as FileNameValidationErrorReason, Pr as FileOperationKind, Bt as GenerationConflictError, Sa as McpAppResourceFetchError, ze as McpResourceKind, ot as OAuthResourceKind, zr as PATH_SEPARATOR_REGEXP, un as PROMPT_CONTENT_MAX_LENGTH, dn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, fn as PROMPT_DESCRIPTION_MAX_LENGTH, pn as PROMPT_NAME_MAX_LENGTH, Te as PUBLIC_SKILL_BUCKET, mn as PromptFieldError, ae as PromptSource, Br as RESERVED_MARKER_NAME, Jn 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, Sn as ScheduledTaskTriggerDescriptionKind, Un as SkillArchiveImportErrorKind, Wn as SkillArchiveImportStatus, Gn as SkillArchiveSelectionRejectionReason, In as SkillEditorLoadState, Bn as SkillPreviewErrorKind, ke as SkillSource, 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, Vr as UPLOAD_CONCURRENCY, ga as USAGE_DATA_I18N_KEYS, va as USAGE_MODEL_LIMITS_I18N_KEYS, xn as UnsupportedTriggerReason, gt as WithLogin, zi as annotationToDisplayAttachment, xi as annotationToOoxmlCanvasContent, Si as annotationToPdfCanvasContent, wn as apSchedulerDayToJsDay, W as appendLocaleCode, Er as applyChunkToMessages, Bi as attachmentDtoToDisplayAttachment, Vi as attachmentDtosToDisplayAttachments, fr as attachmentToDto, pr as attachmentsToDtos, G as buildAdditionalLocaleOptions, Pt as buildAnnouncementSignature, Be as buildApplicationMcpUrl, N as buildChatCompletionsUrl, Ve as buildConnectApi, P as buildDeploymentConnectApi, sa as buildExternalServiceScopeId, li as buildFromCache, sn as buildPromptExportEnvelope, cn as buildPromptExportFileName, se as buildPromptOverview, hn as buildPromptPath, F as buildResponsesUrl, Gr 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, Kn as classifySkillArchiveImportError, Ci as clearAttachmentCache, K as composeLocalePayload, Vt as createChatStreamApi, i as createCsrfMiddleware, qt as createDeploymentChangedMessage, vi as createFilesApiClient, Ca as createMcpAppsApiClient, mr as createMessagePair, j as createPublishApiClient, jn as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, yi as createUploadFileWithProgress, V as decodeToolsetId, q as decomposeLocalizedFields, Wr as deriveActionProfile, Ye as deriveAvailableTabIds, Xn as deriveConversationRowActionState, Xe as deriveFavoriteItems, Cn as describeScheduledTaskTrigger, Kr as dialCorePathToRelative, Hi as dialFileToAttachment, Ui as dialFilesToAttachments, Wi as dialFolderPathToAttachment, m as downloadAttachment, _t as emitToolsetLoginSuccess, I as encodeDeploymentId, H as encodeToolsetId, ui as fetchByTab, di as fetchForSearch, Ze as filterCatalogItemsBySelector, Qe as filterHiddenOwnedItems, L as findDeploymentByIdOrReference, qr as findDialFileByPath, fi as findFirstSuccessfulCopyMoveItem, Jr as findFolderByVirtualPath, Ut as formatAppVersion, X as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Yr as formatOperationFolderName, A as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, ra as getBrowserTimezone, Sr as getConversationPath, er as getConversationSource, ca as getExternalServiceFallbackName, Jt as getLastDeploymentId, Yt as getLastUserMessageToolConfiguration, Gt as getModelIdFromConversationId, ii as getParentFolderPath, We as getPublicCatalogEntityFolderPath, en as getQuickAppConversationStarters, gn as getRemainingCharacters, yr as getStarterConversationText, br as getStarterDisplayText, rn as getStarterPopulateText, xr as getStarterSubmitText, an as getStartersFromSchema, Kt as getTimeOfDayGreeting, yt as getToolsetOAuthChannelName, St as getToolsetRedirectUri, Ii as getUrlFileName, Xr as getVirtualPathName, hr as hasActiveToolConfig, Ft as hasAnnouncementContent, wi as hasAttachmentTextSource, Zr as hasDialFileWritePermission, Qr as hasForbiddenNameSymbols, It as hasStructuredAnnouncement, o as includesIgnoreCase, Ct as initiateOAuthLogin, gr as isAnswerIncomplete, Or as isAwaitingGenerationResume, r as isConversationNotFoundError, $r as isCopyMoveDuplicateAllowed, ta as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, Li as isExternalSourcePreviewable, _r as isMessageChanged, Xt as isMessageStreaming, ce as isOrganisationPromptItem, Ge as isPublicCatalogEntityId, U as isPublicToolsetId, na as isQuickAppSchema, ei as isShareActionsAllowed, ia as isValidAbsoluteUrl, aa as isValidFeaturesData, ve as isValidSkillRelativePath, Tn as jsDayToApSchedulerDay, pi as mapCorePermissions, Q as mapDeploymentDetailsDtoToEntityDetails, z as mapDeploymentLimitsDtoToCatalogLimits, B as mapDeploymentLimitsToInput, te as mapDeploymentToCatalogItem, ne as mapDeploymentToolsetCredentials, $ as mapEntityDetailsToCatalogDetails, mi as mapFileMetadataToDialFile, En as mapFormValuesToCreateBody, Dn as mapFormValuesToUpdateBody, ya as mapOverallCostLimitsToPeriodStatuses, le as mapPromptToCatalogItem, Ke as mapPublishConversationResultDto, qe as mapPublishHistoryEntryDto, On as mapScheduledTaskDtoToFormValues, hi as mapSearchItem, Ne as mapSkillToCatalogItem, tn as mapStages, ee as mapToolsetCredentials, re as mapToolsetToCatalogItem, _a as mapUsageDataToDashboard, ba as mapUserUsageToModelLimits, gi as mergeCreatedFolderIntoCache, Dr as mergeStages, Zt as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, ye as nameFromPath, wt as navigateToolsetOAuthPopup, Qt as normalizeResponseFormat, be as normalizeSkillName, ti as normalizeVirtualPath, bi as openAnnotationAttachment, Tt as openToolsetOAuthPopup, Z as padTwoDigits, la as parseExternalServiceUrl, oa as parseFeaturesData, ni as parseNewFolderVirtualPath, oe as parsePromptResourceUrl, xe as parseSkillManifest, rt as parseSkillManifestDocument, Ae as parseSkillResourceUrl, si as prepareCopyItems, Ki as prepareDownloadDestination, ci as prepareMoveRenameItems, kn as prepareScheduledTaskCreateBody, An as prepareScheduledTaskUpdateBody, Pe as readSkillFileBytes, Fe as readSkillFilePreviewBytes, Ie as readSkillManifest, $e as reconcileFilterTopics, Ti as referenceAttachmentToPdfCanvasContent, tt as resolveCatalogPrimaryAction, Ei as resolveCodeCanvasContent, ie as resolveDeploymentFolder, ai as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, Ri as resolveExternalSourceContentType, Di as resolveGroupedVisualizerCanvasContent, Oi as resolveHtmlCanvasContent, ki as resolveImageCanvasContent, Ai as resolveJsonCanvasContent, J as resolveLocalizedText, ji as resolveMarkdownCanvasContent, Ue as resolveMcpResourceKind, Mi as resolveOoxmlCanvasContent, ri as resolveOwnerCoords, Ni as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Le as resolveSkillFileDownloadPath, Re as resolveSkillManifestFileId, Pi as resolveTextCanvasContent, Fi as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Lt as sanitizeAnnouncementHtml, Rt as sanitizeAnnouncementMessageHtml, rr as sanitizeFileName, Wt as sanitizeFooterHtml, ln as serializePromptExport, vr as shouldRerunGenerationOnEdit, Ht as shouldWatchForDisplayNameUpdate, Se as skillFileBytesToBlob, Fn as skillFileToAttachment, ir as splitFileNameExtension, Ce as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, vt as subscribeToolsetLoginSuccess, Y as toBaseLocale, $t as toOverlayMessages, Je as toPublishEntityType, M as toPublishRuleDto, nn as toStage, ar as trimFileNameToByteLimit, we as unpackSkillArchive, _i as updateEntry, Zn as useActiveConversationSync, kt as useApplicationCredentials, Qn as useAsyncConfirmDialog, g as useAttachmentAction, or as useAttachmentUpload, S as useAttachmentValidation, nt as useCatalogEditNavigation, at as useCatalogItemDetails, Ot as useCatalogToolsetCredentials, ua as useChatSettingsFormConfig, dr as useConversationExport, Cr as useConversationHandlers, wr as useConversationImport, $n as useConversationLookupMaps, tr as useConversationPanelItems, Tr as useConversationScroll, Ar as useConversationSources, kr as useConversationStream, qi as useDialFileListing, Qi as useDialFileManager, $i as useDialFileManagerTabConfig, Ji as useDialFileMetadata, Yi as useDialFileMutations, Xi as useDialFileSharing, Zi as useDialFileUploadBatch, Mt as useFavoriteEntitiesState, ea as useFileAttachmentPicker, Oa as useGridEditingScroll, nr as useImportFilePicker, Ea as useMcpAppHostAdapter, Ta as useMcpAppHostContext, wa as useMcpAppTools, on as useOAuthCallbackCompletion, Da as useOpenMcpAppCanvas, da as usePageFileDrag, pa as usePanelMaxWidth, bn as usePromptsState, Nt as usePublishFolders, Nn as useScheduledTaskRuns, Mn as useScheduledTasks, ma as useShareLink, Yn as useShareRecipientsCount, qn as useSkillArchiveImport, At as useSkillDetailsPanelData, Ln as useSkillEditorLoad, Rn as useSkillEditorSubmit, zn as useSkillFileActions, Vn as useSkillFilePreview, it as useSkillItemDetails, Hn as useSkillsState, ha as useToolsMenu, Dt as useToolsetLogin, lr as useTranscribeAudio, xa as useUsageData, fa as useViewportWidth, _n as validatePromptContent, vn as validatePromptDescription, yn as validatePromptName, Pn as validateSkillFileBatch, oi as virtualPathToApiPath, bt as waitForToolsetOAuthResult };
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 };
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.117",
4
+ "version": "1.2.0-dev.120",
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.117",
114
+ "@epam/ai-dial-chat-api-client": "1.2.0-dev.120",
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.117",
124
- "@epam/ai-dial-attachment-input": "1.2.0-dev.117",
125
- "@epam/ai-dial-builder-form": "1.2.0-dev.117",
126
- "@epam/ai-dial-catalog": "1.2.0-dev.117",
127
- "@epam/ai-dial-chat-overlay": "1.2.0-dev.117",
128
- "@epam/ai-dial-chat-shared": "1.2.0-dev.117",
129
- "@epam/ai-dial-mcp-apps": "1.2.0-dev.117",
130
- "@epam/ai-dial-publish-panel": "1.2.0-dev.117",
131
- "@epam/ai-dial-quotations": "1.2.0-dev.117",
123
+ "@epam/ai-dial-attachment-canvas": "1.2.0-dev.120",
124
+ "@epam/ai-dial-attachment-input": "1.2.0-dev.120",
125
+ "@epam/ai-dial-builder-form": "1.2.0-dev.120",
126
+ "@epam/ai-dial-catalog": "1.2.0-dev.120",
127
+ "@epam/ai-dial-chat-overlay": "1.2.0-dev.120",
128
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.120",
129
+ "@epam/ai-dial-mcp-apps": "1.2.0-dev.120",
130
+ "@epam/ai-dial-publish-panel": "1.2.0-dev.120",
131
+ "@epam/ai-dial-quotations": "1.2.0-dev.120",
132
132
  "@epam/ai-dial-react-file-manager": "^0.3.0-dev.4",
133
- "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.117",
134
- "@epam/ai-dial-share": "1.2.0-dev.117",
135
- "@epam/ai-dial-skill-editor": "1.2.0-dev.117",
136
- "@epam/ai-dial-source-panel": "1.2.0-dev.117",
133
+ "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.120",
134
+ "@epam/ai-dial-share": "1.2.0-dev.120",
135
+ "@epam/ai-dial-skill-editor": "1.2.0-dev.120",
136
+ "@epam/ai-dial-source-panel": "1.2.0-dev.120",
137
137
  "@epam/ai-dial-ui-kit": "^0.15.0-dev.15",
138
- "@epam/ai-dial-usage-dashboard": "1.2.0-dev.117",
138
+ "@epam/ai-dial-usage-dashboard": "1.2.0-dev.120",
139
139
  "@modelcontextprotocol/sdk": "^1.29.0",
140
140
  "@epam/pdf-highlighter-kit": "^0.0.19",
141
141
  "@mcp-ui/client": "^7.1.1"