@epam/ai-dial-chat-hooks 1.3.0-dev.96 → 1.3.0-dev.98

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.
@@ -46,6 +46,12 @@ export declare class StreamUpstreamError extends Error {
46
46
  export declare class StreamInterruptedError extends Error {
47
47
  constructor(cause?: unknown);
48
48
  }
49
+ /** Thrown when the Stop endpoint answers with a non-OK status. */
50
+ export declare class StopCompletionError extends Error {
51
+ /** HTTP status of the rejected Stop request. */
52
+ readonly status: number;
53
+ constructor(status: number);
54
+ }
49
55
  export declare const DEFAULT_STREAM_IDLE_TIMEOUT_MS = 45000;
50
56
  /** Callbacks {@link streamCompletion} reports streamed completion events through. */
51
57
  export interface ChatStreamCompletionOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"create-chat-stream-api.d.ts","sourceRoot":"","sources":["../../src/conversation/create-chat-stream-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAOnC,mFAAmF;AACnF,eAAO,MAAM,4CAA4C,0IACgF,CAAC;AAE1I,yFAAyF;AACzF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAElD,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;gBACS,MAAM,CAAC,EAAE,MAAM;CAK5B;AAED,sFAAsF;AACtF,eAAO,MAAM,mCAAmC,iIACgF,CAAC;AAEjI;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,GAAE,MAA4C;CAIlE;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,CAAC,EAAE,OAAO;CAI5B;AAMD,eAAO,MAAM,8BAA8B,QAAS,CAAC;AAErD,qFAAqF;AACrF,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,2DAA2D;IAC3D,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4GD,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,aAAa,CAAC,EAAE,oBAAoB,EACpC,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,yBAAyB,EAChC,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,KACrB,IAAI,CAAC;IACV,cAAc,EAAE,CAAC,GAAG,EAAE;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,uBAAuB,KAC5B,aAoKF,CAAC"}
1
+ {"version":3,"file":"create-chat-stream-api.d.ts","sourceRoot":"","sources":["../../src/conversation/create-chat-stream-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAOnC,mFAAmF;AACnF,eAAO,MAAM,4CAA4C,0IACgF,CAAC;AAE1I,yFAAyF;AACzF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAElD,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;gBACS,MAAM,CAAC,EAAE,MAAM;CAK5B;AAED,sFAAsF;AACtF,eAAO,MAAM,mCAAmC,iIACgF,CAAC;AAEjI;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,GAAE,MAA4C;CAIlE;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,CAAC,EAAE,OAAO;CAI5B;AAED,kEAAkE;AAClE,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;CAK3B;AAMD,eAAO,MAAM,8BAA8B,QAAS,CAAC;AAErD,qFAAqF;AACrF,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,0FAA0F;AAC1F,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,2DAA2D;IAC3D,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4GD,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,2BAA2B,EACpC,aAAa,CAAC,EAAE,oBAAoB,EACpC,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,yBAAyB,EAChC,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,KACrB,IAAI,CAAC;IACV,cAAc,EAAE,CAAC,GAAG,EAAE;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,uBAAuB,KAC5B,aAoKF,CAAC"}
@@ -17,7 +17,12 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
17
17
  constructor(e) {
18
18
  super("The completion stream was interrupted", { cause: e }), this.name = "StreamInterruptedError";
19
19
  }
20
- }, c = 45e3, l = (e, t) => {
20
+ }, c = class extends Error {
21
+ status;
22
+ constructor(e) {
23
+ super(`stopCompletion failed: ${e}`), this.name = "StopCompletionError", this.status = e;
24
+ }
25
+ }, l = 45e3, u = (e, t) => {
21
26
  let n = Date.now(), r, i = !1, a = () => {
22
27
  if (i) return;
23
28
  let o = Date.now() - n;
@@ -37,31 +42,31 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
37
42
  i || (i = !0, clearTimeout(r), s && (document.removeEventListener("visibilitychange", o), window.removeEventListener("online", a), window.removeEventListener("pageshow", a)));
38
43
  }
39
44
  };
40
- }, u = (e) => typeof e == "object" && !!e && e.name === "AbortError", d = (e) => {
45
+ }, d = (e) => typeof e == "object" && !!e && e.name === "AbortError", f = (e) => {
41
46
  let { status: t } = e;
42
47
  return typeof t == "number" ? t : void 0;
43
- }, f = (e, t, n) => {
48
+ }, p = (e, t, n) => {
44
49
  let i = e.trim();
45
50
  if (!i || i.startsWith(":") || !i.startsWith("data: ")) return;
46
51
  let a = i.slice(6);
47
52
  if (a !== "[DONE]") try {
48
53
  let e = JSON.parse(a);
49
54
  if (e.error) {
50
- n(e.error.type === r.type ? new r(d(e.error)) : new o(e.error.message));
55
+ n(e.error.type === r.type ? new r(f(e.error)) : new o(e.error.message));
51
56
  return;
52
57
  }
53
58
  t(e);
54
59
  } catch {}
55
- }, p = (n) => {
60
+ }, m = (n) => {
56
61
  let { completionsBasePath: r } = n, i = (...e) => (n.fetchImpl ?? fetch)(...e);
57
62
  return {
58
- streamCompletion: (o, c, d, p, m, h, g, _, v) => {
59
- let { onChunk: y, onComplete: b, onError: x, signal: S } = p;
63
+ streamCompletion: (o, c, l, f, m, h, g, _, v) => {
64
+ let { onChunk: y, onComplete: b, onError: x, signal: S } = f;
60
65
  (async () => {
61
- let p;
66
+ let f;
62
67
  try {
63
68
  let t = n.getTimezone?.();
64
- p = await i(`${r}/completions`, {
69
+ f = await i(`${r}/completions`, {
65
70
  method: "POST",
66
71
  credentials: "include",
67
72
  signal: S,
@@ -73,7 +78,7 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
73
78
  body: JSON.stringify({
74
79
  path: o,
75
80
  message: c ?? "",
76
- model: d,
81
+ model: l,
77
82
  custom_content: m || {},
78
83
  ...h != null && { generationId: h },
79
84
  ...g != null && { mode: g },
@@ -82,26 +87,26 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
82
87
  })
83
88
  });
84
89
  } catch (e) {
85
- if (u(e)) return;
90
+ if (d(e)) return;
86
91
  x(new s(e));
87
92
  return;
88
93
  }
89
- let C = p.headers.get("x-csrf-token");
90
- if (C && n.setCsrfToken(C), !p.ok) {
91
- if (p.status === t) {
94
+ let C = f.headers.get("x-csrf-token");
95
+ if (C && n.setCsrfToken(C), !f.ok) {
96
+ if (f.status === t) {
92
97
  x(new a());
93
98
  return;
94
99
  }
95
- x(/* @__PURE__ */ Error(`Stream request failed with status ${p.status}`));
100
+ x(/* @__PURE__ */ Error(`Stream request failed with status ${f.status}`));
96
101
  return;
97
102
  }
98
- if (!p.body) {
103
+ if (!f.body) {
99
104
  x(/* @__PURE__ */ Error("No response body"));
100
105
  return;
101
106
  }
102
- let w = p.body.getReader(), T = new TextDecoder(), E = "", D = !1, O = !1, k = (e) => {
107
+ let w = f.body.getReader(), T = new TextDecoder(), E = "", D = !1, O = !1, k = (e) => {
103
108
  D || (D = !0, A.stop(), x(e));
104
- }, A = l(n.idleTimeoutMs ?? 45e3, () => {
109
+ }, A = u(n.idleTimeoutMs ?? 45e3, () => {
105
110
  O = !0, k(new s()), w.cancel().catch(() => void 0);
106
111
  });
107
112
  try {
@@ -109,17 +114,17 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
109
114
  let { done: e, value: t } = await w.read();
110
115
  if (O) break;
111
116
  if (e) {
112
- E.trim() && f(E, y, k);
117
+ E.trim() && p(E, y, k);
113
118
  break;
114
119
  }
115
120
  A.touch(), E += T.decode(t, { stream: !0 });
116
121
  let n = E.split("\n");
117
122
  E = n.pop() ?? "";
118
- for (let e of n) f(e, y, k);
123
+ for (let e of n) p(e, y, k);
119
124
  }
120
125
  D || (D = !0, b());
121
126
  } catch (e) {
122
- if (u(e)) return;
127
+ if (d(e)) return;
123
128
  k(new s(e));
124
129
  } finally {
125
130
  A.stop(), w.releaseLock();
@@ -136,9 +141,9 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
136
141
  },
137
142
  body: JSON.stringify(t)
138
143
  }), o = a.headers.get("x-csrf-token");
139
- if (o && n.setCsrfToken(o), !a.ok) throw Error(`stopCompletion failed: ${a.status}`);
144
+ if (o && n.setCsrfToken(o), !a.ok) throw new c(a.status);
140
145
  }
141
146
  };
142
147
  };
143
148
  //#endregion
144
- export { i as DEFAULT_GENERATION_CONFLICT_MESSAGE, n as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, c as DEFAULT_STREAM_IDLE_TIMEOUT_MS, a as GenerationConflictError, r as GenerationPersistenceError, s as StreamInterruptedError, o as StreamUpstreamError, p as createChatStreamApi };
149
+ export { i as DEFAULT_GENERATION_CONFLICT_MESSAGE, n as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, l as DEFAULT_STREAM_IDLE_TIMEOUT_MS, a as GenerationConflictError, r as GenerationPersistenceError, c as StopCompletionError, s as StreamInterruptedError, o as StreamUpstreamError, m as createChatStreamApi };
@@ -1 +1 @@
1
- {"version":3,"file":"useConversationStream.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/useConversationStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useConversationStream.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/useConversationStream.ts"],"names":[],"mappings":"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"}
@@ -1,336 +1,350 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as n, GenerationConflictError as r, GenerationPersistenceError as i, StreamInterruptedError as a, StreamUpstreamError as o } from "../create-chat-stream-api.js";
3
- import { getConversationPath as s } from "./conversation-path.js";
4
- import { applyChunkToMessages as c } from "./apply-chunk.js";
5
- import { restoreBufferedMessage as l } from "./buffered-generation.js";
6
- import { createResumeIfAwaitingGeneration as ee, fetchConversationForRecovery as te, findPendingBackgroundMessageIndex as u, hasGeneratedPayload as ne, isAwaitingGenerationResume as d } from "./generation-resume.js";
2
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as n, GenerationConflictError as r, GenerationPersistenceError as i, StopCompletionError as a, StreamInterruptedError as o, StreamUpstreamError as s } from "../create-chat-stream-api.js";
3
+ import { getConversationPath as c } from "./conversation-path.js";
4
+ import { applyChunkToMessages as l } from "./apply-chunk.js";
5
+ import { restoreBufferedMessage as u } from "./buffered-generation.js";
6
+ import { createResumeIfAwaitingGeneration as ee, fetchConversationForRecovery as te, findPendingBackgroundMessageIndex as d, hasGeneratedPayload as ne, isAwaitingGenerationResume as f } from "./generation-resume.js";
7
7
  import { createFrameScheduler as re } from "./frame-scheduler.js";
8
- import { MessageRole as ie, generateUUID as ae } from "@epam/ai-dial-chat-shared";
9
- import { useCallback as f, useEffect as p, useMemo as oe, useRef as m, useState as h } from "react";
10
- import { SendCompletionDtoModeEnum as g } from "@epam/ai-dial-chat-api-client";
8
+ import { MessageRole as p, generateUUID as ie } from "@epam/ai-dial-chat-shared";
9
+ import { useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
10
+ import { SendCompletionDtoModeEnum as y } from "@epam/ai-dial-chat-api-client";
11
11
  //#region src/conversation/useConversationStream/useConversationStream.ts
12
- var se = 2e4, ce = 401, le = (e, t, n) => e instanceof i ? n : e instanceof r ? t : e instanceof o ? e.message : "", _ = (e) => {
12
+ var ae = 2e4, oe = 401, b = 404, x = 2e3, S = 100, se = (e, t, n) => e instanceof i ? n : e instanceof r ? t : e instanceof s ? e.message : "", C = (e) => {
13
13
  if (!e) return;
14
- let t = u(e);
14
+ let t = d(e);
15
15
  return t === -1 ? void 0 : e.messages[t].backgroundGeneration?.generationId;
16
- }, v = ({ conversationId: o, state: { setConversation: v, conversationRef: y }, transport: b, generation: { startGeneration: ue, completeGeneration: x }, channel: S, overlay: C, onStopError: w, generationConflictMessage: de = t, generationPersistenceErrorMessage: T = n, onStreamError: E, batchChunksPerFrame: D = !1 }) => {
17
- let O = m(E);
18
- p(() => {
19
- O.current = E;
20
- }, [E]);
21
- let fe = m(D);
22
- p(() => {
23
- fe.current = D;
24
- }, [D]);
25
- let [k] = h(re), [A, j] = h(() => /* @__PURE__ */ new Set()), [M, N] = h(() => /* @__PURE__ */ new Set()), P = m(/* @__PURE__ */ new Map()), F = m(/* @__PURE__ */ new Set()), I = m(/* @__PURE__ */ new Map()), L = m(/* @__PURE__ */ new Set()), pe = m(/* @__PURE__ */ new Map()), R = m(!0), z = m(/* @__PURE__ */ new Map()), [B, V] = h(z.current), H = m(/* @__PURE__ */ new Set()), [me, U] = h(H.current);
26
- p(() => (R.current = !0, () => {
27
- R.current = !1;
16
+ }, w = ({ conversationId: s, state: { setConversation: w, conversationRef: T }, transport: E, generation: { startGeneration: ce, completeGeneration: le }, channel: D, overlay: O, onStopError: ue, generationConflictMessage: de = t, generationPersistenceErrorMessage: k = n, onStreamError: A, batchChunksPerFrame: j = !1 }) => {
17
+ let fe = _(A);
18
+ h(() => {
19
+ fe.current = A;
20
+ }, [A]);
21
+ let pe = _(j);
22
+ h(() => {
23
+ pe.current = j;
24
+ }, [j]);
25
+ let [M] = v(re), [N, P] = v(() => /* @__PURE__ */ new Set()), F = _(N);
26
+ F.current = N;
27
+ let [I, me] = v(() => /* @__PURE__ */ new Set()), L = _(/* @__PURE__ */ new Map()), R = _(/* @__PURE__ */ new Set()), z = _(/* @__PURE__ */ new Map()), B = _(/* @__PURE__ */ new Set()), V = _(/* @__PURE__ */ new Set()), he = _(/* @__PURE__ */ new Map()), H = _(!0), U = _(/* @__PURE__ */ new Map()), [ge, W] = v(U.current), G = _(/* @__PURE__ */ new Set()), [_e, ve] = v(G.current);
28
+ h(() => (H.current = !0, () => {
29
+ H.current = !1;
28
30
  }), []);
29
- let W = f((e) => {
30
- if (!z.current.has(e)) return;
31
- let t = new Map(z.current);
32
- t.delete(e), z.current = t, R.current && V(t);
33
- }, []), G = f((e, t, n) => {
34
- if (!R.current || !n()) return;
35
- let r = new Map(z.current);
31
+ let K = m((e) => {
32
+ if (!U.current.has(e)) return;
33
+ let t = new Map(U.current);
34
+ t.delete(e), U.current = t, H.current && W(t);
35
+ }, []), q = m((e, t, n) => {
36
+ if (!H.current || !n()) return;
37
+ let r = new Map(U.current);
36
38
  r.set(e, {
37
39
  retry: t,
38
40
  isCurrent: n
39
- }), z.current = r, V(r);
40
- }, []), he = f(async () => {
41
- if (!o) return;
42
- let e = z.current.get(s(o));
43
- if (!(!e || !e.isCurrent() || H.current.has(e))) {
44
- H.current.add(e), U(new Set(H.current));
41
+ }), U.current = r, W(r);
42
+ }, []), ye = m(async () => {
43
+ if (!s) return;
44
+ let e = U.current.get(c(s));
45
+ if (!(!e || !e.isCurrent() || G.current.has(e))) {
46
+ G.current.add(e), ve(new Set(G.current));
45
47
  try {
46
48
  await e.retry();
47
49
  } finally {
48
- H.current.delete(e), R.current && U(new Set(H.current));
50
+ G.current.delete(e), H.current && ve(new Set(G.current));
49
51
  }
50
52
  }
51
- }, [o]), K = m(o);
52
- p(() => (K.current = o, () => k.cancelAll()), [o, k]);
53
- let q = f((e) => R.current && s(K.current ?? "") === e, []), J = f((e) => {
54
- W(e), j((t) => {
53
+ }, [s]), be = _(s);
54
+ h(() => (be.current = s, () => M.cancelAll()), [s, M]);
55
+ let J = m((e) => H.current && c(be.current ?? "") === e, []), Y = m((e) => {
56
+ K(e), P((t) => {
55
57
  if (t.has(e)) return t;
56
58
  let n = new Set(t);
57
59
  return n.add(e), n;
58
60
  });
59
- }, [W]), Y = f((e) => {
60
- j((t) => {
61
+ }, [K]), X = m((e) => {
62
+ P((t) => {
61
63
  if (!t.has(e)) return t;
62
64
  let n = new Set(t);
63
65
  return n.delete(e), n;
64
66
  });
65
- }, []), X = f((e, t) => {
66
- N((n) => {
67
+ }, []), Z = m((e, t) => {
68
+ me((n) => {
67
69
  if (n.has(e) === t) return n;
68
70
  let r = new Set(n);
69
71
  return t ? r.add(e) : r.delete(e), r;
70
72
  });
71
- }, []), Z = f((e, t) => {
72
- P.current.get(e) === t && (P.current.delete(e), X(e, !1));
73
- }, [X]), Q = oe(() => ee({
74
- transport: b,
75
- setConversation: v,
76
- conversationRef: y,
77
- resumingPathsRef: F,
78
- bufferedGenerationsRef: I,
79
- addStreamingPath: J,
80
- removeStreamingPath: Y,
81
- isPathDisplayed: q,
82
- generationPersistenceErrorMessage: T,
83
- frameScheduler: D ? k : void 0,
84
- stoppedGenerationIdsRef: L,
85
- onReloadError: G,
86
- onReloadSuccess: W
73
+ }, []), xe = m((e, t) => {
74
+ L.current.get(e) === t && (L.current.delete(e), Z(e, !1));
75
+ }, [Z]), Q = g(() => ee({
76
+ transport: E,
77
+ setConversation: w,
78
+ conversationRef: T,
79
+ resumingPathsRef: R,
80
+ bufferedGenerationsRef: z,
81
+ addStreamingPath: Y,
82
+ removeStreamingPath: X,
83
+ isPathDisplayed: J,
84
+ generationPersistenceErrorMessage: k,
85
+ frameScheduler: j ? M : void 0,
86
+ stoppedGenerationIdsRef: B,
87
+ onReloadError: q,
88
+ onReloadSuccess: K
87
89
  }), [
88
- J,
89
90
  Y,
90
- q,
91
- b,
92
- T,
93
- D,
91
+ X,
92
+ J,
93
+ E,
94
94
  k,
95
- G,
96
- W
97
- ]), ge = f((t, n, o, ee, re, f, p = g.Append, oe = {}) => {
98
- let m = f ?? ae(), h = s(t);
99
- k.flush(h), F.current.delete(h), P.current.set(h, m), pe.current.set(h, m), X(h, !0);
100
- let _;
101
- p === g.Regenerate ? _ = o : p === g.Edit && (_ = o - 1);
102
- let w = () => pe.current.get(h) !== m, E = ue(h, m), D = y.current?.messages[o];
103
- D ? I.current.set(h, {
104
- generationId: m,
105
- messageIndex: o,
106
- message: D
107
- }) : I.current.delete(h), J(h), C?.notifyGenerationStart?.(), S?.ensureConnected();
108
- let A = () => {
109
- w() || Y(h), Z(h, m), x(h, m), S?.notifyGenerationSettled?.();
110
- }, j = () => {
111
- if (w()) return;
112
- let e = I.current.get(h);
113
- !e || e.generationId !== m || (e.message = {
95
+ j,
96
+ M,
97
+ q,
98
+ K
99
+ ]), Se = m((t, n, a, s, ee, re, m = y.Append, h = {}) => {
100
+ let g = re ?? ie(), _ = c(t);
101
+ M.flush(_), R.current.delete(_), L.current.set(_, g), he.current.set(_, g), Z(_, !0);
102
+ let v;
103
+ m === y.Regenerate ? v = a : m === y.Edit && (v = a - 1);
104
+ let b = () => he.current.get(_) !== g, x = ce(_, g), S = T.current?.messages[a];
105
+ S ? z.current.set(_, {
106
+ generationId: g,
107
+ messageIndex: a,
108
+ message: S
109
+ }) : z.current.delete(_), Y(_), O?.notifyGenerationStart?.(), D?.ensureConnected();
110
+ let C = () => {
111
+ b() || X(_), xe(_, g), le(_, g), D?.notifyGenerationSettled?.();
112
+ }, ue = () => {
113
+ if (b()) return;
114
+ let e = z.current.get(_);
115
+ !e || e.generationId !== g || (e.message = {
114
116
  ...e.message,
115
- streamErrorMessage: T
116
- }, O.current?.(new i()), q(h) && v((t) => {
117
- if (!t || w() || !q(h)) return t;
118
- let n = l(t, e);
119
- return y.current = n, n;
117
+ streamErrorMessage: k
118
+ }, fe.current?.(new i()), J(_) && w((t) => {
119
+ if (!t || b() || !J(_)) return t;
120
+ let n = u(t, e);
121
+ return T.current = n, n;
120
122
  }));
121
- }, M = I.current.get(h), N = () => R.current && !w() && I.current.get(h) === M, z = async () => {
122
- if (N()) {
123
- if (!q(h)) {
124
- M && I.current.delete(h);
123
+ }, A = z.current.get(_), j = () => H.current && !b() && z.current.get(_) === A, N = async () => {
124
+ if (j()) {
125
+ if (!J(_)) {
126
+ A && z.current.delete(_);
125
127
  return;
126
128
  }
127
129
  try {
128
- let n = await b.getConversation(e(t));
129
- if (!N()) return;
130
- if (W(h), !q(h)) {
131
- M && I.current.delete(h);
130
+ let n = await E.getConversation(e(t));
131
+ if (!j()) return;
132
+ if (K(_), !J(_)) {
133
+ A && z.current.delete(_);
132
134
  return;
133
135
  }
134
- if (u(n) !== -1) {
135
- Q(t, n, { seedMessage: M?.message });
136
+ if (d(n) !== -1) {
137
+ Q(t, n, { seedMessage: A?.message });
136
138
  return;
137
139
  }
138
- if (M && M.messageIndex === n.messages.length - 1 && d(n) && ne(M.message)) {
139
- j();
140
+ if (A && A.messageIndex === n.messages.length - 1 && f(n) && ne(A.message)) {
141
+ ue();
140
142
  return;
141
143
  }
142
- M && I.current.delete(h), v(n), y.current = n;
144
+ A && z.current.delete(_), w(n), T.current = n;
143
145
  } catch {
144
- N() && G(h, z, N);
146
+ j() && q(_, N, j);
145
147
  }
146
148
  }
147
- }, B = {
148
- signal: E.signal,
149
+ }, P = {
150
+ signal: x.signal,
149
151
  onChunk: (e) => {
150
- if (w()) return;
151
- let t = I.current.get(h);
152
- if (t?.generationId === m) {
153
- let n = c([t.message], 0, e);
152
+ if (b()) return;
153
+ let t = z.current.get(_);
154
+ if (t?.generationId === g) {
155
+ let n = l([t.message], 0, e);
154
156
  n && (t.message = n[0]);
155
157
  }
156
- if (q(h)) {
157
- if (fe.current && t?.generationId === m) {
158
- k.schedule(h, () => {
159
- let e = I.current.get(h);
160
- if (w() || !q(h) || e?.generationId !== m) return;
158
+ if (J(_)) {
159
+ if (pe.current && t?.generationId === g) {
160
+ M.schedule(_, () => {
161
+ let e = z.current.get(_);
162
+ if (b() || !J(_) || e?.generationId !== g) return;
161
163
  let t = { ...e };
162
- v((e) => {
164
+ w((e) => {
163
165
  if (!e) return e;
164
- let n = l(e, t);
165
- return y.current = n, n;
166
+ let n = u(e, t);
167
+ return T.current = n, n;
166
168
  });
167
169
  });
168
170
  return;
169
171
  }
170
- v((t) => {
172
+ w((t) => {
171
173
  if (!t) return t;
172
- let n = I.current.get(h), r;
173
- if (n?.generationId === m) r = l(t, n);
174
+ let n = z.current.get(_), r;
175
+ if (n?.generationId === g) r = u(t, n);
174
176
  else {
175
- let n = c(t.messages, o, e);
177
+ let n = l(t.messages, a, e);
176
178
  if (!n) return t;
177
179
  r = {
178
180
  ...t,
179
181
  messages: n
180
182
  };
181
183
  }
182
- return y.current = r, r;
184
+ return T.current = r, r;
183
185
  });
184
186
  }
185
187
  },
186
188
  onComplete: async () => {
187
- k.flush(h), A(), L.current.has(m) ? L.current.delete(m) : w() || C?.notifyGenerationEnd?.(), await z();
189
+ M.flush(_), C(), B.current.has(g) ? B.current.delete(g) : b() || O?.notifyGenerationEnd?.(), await N();
188
190
  },
189
191
  onError: (e) => {
190
- if (k.flush(h), O.current?.(e), e instanceof a && !w()) {
191
- he(e);
192
+ if (M.flush(_), fe.current?.(e), e instanceof o && !b()) {
193
+ U(e);
192
194
  return;
193
195
  }
194
- if (e instanceof r && oe.resumeOnConflict && !w()) {
195
- K(e);
196
+ if (e instanceof r && h.resumeOnConflict && !b()) {
197
+ ge(e);
196
198
  return;
197
199
  }
198
- V(e);
200
+ F(e);
199
201
  }
200
- }, V = (e) => {
201
- let t = I.current.get(h), n = t?.generationId === m ? t : void 0;
202
- if (n && !(e instanceof i) && I.current.delete(h), A(), n && b.saveConversation && e instanceof i && e.status === ce) {
203
- me(e, n, b.saveConversation.bind(b));
202
+ }, F = (e) => {
203
+ let t = z.current.get(_), n = t?.generationId === g ? t : void 0;
204
+ if (n && !(e instanceof i) && z.current.delete(_), C(), n && E.saveConversation && e instanceof i && e.status === oe) {
205
+ me(e, n, E.saveConversation.bind(E));
204
206
  return;
205
207
  }
206
- H(e, n);
207
- }, H = (e, t) => {
208
+ I(e, n);
209
+ }, I = (e, t) => {
208
210
  if (t && e instanceof i && (t.message = {
209
211
  ...t.message,
210
- streamErrorMessage: T
211
- }), w() || !q(h)) return;
212
- let n = le(e, de, T);
213
- v((e) => {
214
- if (!e || w() || !q(h)) return e;
215
- let r = t?.generationId === m ? l(e, t) : e, i = {
212
+ streamErrorMessage: k
213
+ }), b() || !J(_)) return;
214
+ let n = se(e, de, k);
215
+ w((e) => {
216
+ if (!e || b() || !J(_)) return e;
217
+ let r = t?.generationId === g ? u(e, t) : e, i = {
216
218
  ...r,
217
- messages: r.messages.map((e, t) => t === o ? {
219
+ messages: r.messages.map((e, t) => t === a ? {
218
220
  ...e,
219
221
  streamErrorMessage: n
220
222
  } : e)
221
223
  };
222
- return y.current = i, i;
224
+ return T.current = i, i;
223
225
  });
224
226
  }, me = async (n, r, i) => {
225
- let a = () => R.current && !w() && I.current.get(h) === r;
227
+ let a = () => H.current && !b() && z.current.get(_) === r;
226
228
  try {
227
- let o = await b.getConversation(e(t));
229
+ let o = await E.getConversation(e(t));
228
230
  if (!a()) return;
229
- if (r.messageIndex !== o.messages.length - 1 || !d(o)) {
230
- H(n, r);
231
+ if (r.messageIndex !== o.messages.length - 1 || !f(o)) {
232
+ I(n, r);
231
233
  return;
232
234
  }
233
- let s = await i(h, l(o, r));
234
- if (!a() || (I.current.delete(h), !q(h))) return;
235
- v(s), y.current = s;
235
+ let s = await i(_, u(o, r));
236
+ if (!a() || (z.current.delete(_), !J(_))) return;
237
+ w(s), T.current = s;
236
238
  } catch {
237
- a() && H(n, r);
239
+ a() && I(n, r);
238
240
  }
239
- }, U = () => {
240
- A(), L.current.has(m) ? L.current.delete(m) : w() || C?.notifyGenerationEnd?.();
241
- }, he = async (n) => {
242
- F.current.add(h), ge(await te(() => b.getConversation(e(t)), w), n, !1);
243
- }, K = async (n) => {
244
- P.current.get(h) === m && X(h, !1), F.current.add(h), ge(await te(() => b.getConversation(e(t)), w, (e) => e.messages.length === o && e.messages.at(-1)?.role === ie.User), n, !0);
245
- }, ge = (e, n, r) => {
246
- if (w()) {
247
- A();
241
+ }, V = () => {
242
+ C(), B.current.has(g) ? B.current.delete(g) : b() || O?.notifyGenerationEnd?.();
243
+ }, U = async (n) => {
244
+ R.current.add(_), W(await te(() => E.getConversation(e(t)), b), n, !1);
245
+ }, ge = async (n) => {
246
+ L.current.get(_) === g && Z(_, !1), R.current.add(_), W(await te(() => E.getConversation(e(t)), b, (e) => e.messages.length === a && e.messages.at(-1)?.role === p.User), n, !0);
247
+ }, W = (e, n, r) => {
248
+ if (b()) {
249
+ C();
248
250
  return;
249
251
  }
250
- let i = e?.messages[e.messages.length - 1], a = e != null && e.messages.length - 1 === o && i?.role === ie.Assistant, s = r && e != null && u(e) !== -1;
251
- if (!e || !a && !s) {
252
- F.current.delete(h), V(n);
252
+ let i = e?.messages[e.messages.length - 1], o = e != null && e.messages.length - 1 === a && i?.role === p.Assistant, s = r && e != null && d(e) !== -1;
253
+ if (!e || !o && !s) {
254
+ R.current.delete(_), F(n);
253
255
  return;
254
256
  }
255
- let c = I.current.get(h), l = c?.generationId === m ? c : void 0;
256
- if (d(e)) {
257
+ let c = z.current.get(_), l = c?.generationId === g ? c : void 0;
258
+ if (f(e)) {
257
259
  Q(t, e, {
258
- seedMessage: a ? l?.message : void 0,
260
+ seedMessage: o ? l?.message : void 0,
259
261
  skipDedupe: !0,
260
- onSettled: U
262
+ onSettled: V
261
263
  });
262
264
  return;
263
265
  }
264
- F.current.delete(h), l && I.current.delete(h), q(h) && (v(e), y.current = e), U();
266
+ R.current.delete(_), l && z.current.delete(_), J(_) && (w(e), T.current = e), V();
265
267
  };
266
268
  (async () => {
267
269
  try {
268
- let e = S?.channelId ?? await S?.waitForChannel(se) ?? void 0, t = L.current.has(m);
269
- if (E.signal.aborted || w() || t) {
270
- I.current.get(h)?.generationId === m && I.current.delete(h), w() || Y(h), Z(h, m), x(h, m), S?.notifyGenerationSettled?.(), t ? L.current.delete(m) : w() || C?.notifyGenerationEnd?.();
270
+ let e = D?.channelId ?? await D?.waitForChannel(ae) ?? void 0, t = B.current.has(g);
271
+ if (x.signal.aborted || b() || t) {
272
+ z.current.get(_)?.generationId === g && z.current.delete(_), b() || X(_), xe(_, g), le(_, g), D?.notifyGenerationSettled?.(), t ? B.current.delete(g) : b() || O?.notifyGenerationEnd?.();
271
273
  return;
272
274
  }
273
- b.streamCompletion(h, n, ee, B, re, m, p, _, e);
275
+ E.streamCompletion(_, n, s, P, ee, g, m, v, e);
274
276
  } catch (e) {
275
- B.onError(e instanceof Error ? e : Error(String(e)));
277
+ P.onError(e instanceof Error ? e : Error(String(e)));
276
278
  }
277
279
  })();
278
280
  }, [
279
- ue,
280
- x,
281
- J,
281
+ ce,
282
+ le,
282
283
  Y,
283
284
  X,
284
285
  Z,
285
- q,
286
- S?.channelId,
287
- S?.ensureConnected,
288
- S?.waitForChannel,
289
- S?.notifyGenerationSettled,
290
- C,
291
- b,
286
+ xe,
287
+ J,
288
+ D?.channelId,
289
+ D?.ensureConnected,
290
+ D?.waitForChannel,
291
+ D?.notifyGenerationSettled,
292
+ O,
293
+ E,
292
294
  Q,
293
295
  de,
294
- T,
295
296
  k,
296
- G,
297
- W
298
- ]), _e = f((e, t) => {
299
- let n = s(e), r = I.current.get(n);
300
- return z.current.get(n)?.isCurrent() && r && t.messages.length - 1 >= r.messageIndex && t.messages[r.messageIndex].role === ie.Assistant && !d(t) ? (W(n), I.current.delete(n), t) : r ? l(t, r) : t;
301
- }, [W]), ve = f(() => {
302
- if (!o) return;
303
- let e = s(o), t = P.current.get(e) ?? _(y.current);
304
- if (!t) return;
305
- L.current.add(t), k.flush(e), C?.notifyStopGenerating?.();
306
- let n = I.current.get(e)?.message.content;
307
- b.stopCompletion({
308
- generationId: t,
309
- path: e,
310
- content: n
311
- }).catch((e) => {
312
- let t = e instanceof Error ? e : Error(String(e));
313
- w?.(t);
314
- });
297
+ M,
298
+ q,
299
+ K
300
+ ]), Ce = m((e, t) => {
301
+ let n = c(e), r = z.current.get(n);
302
+ return U.current.get(n)?.isCurrent() && r && t.messages.length - 1 >= r.messageIndex && t.messages[r.messageIndex].role === p.Assistant && !f(t) ? (K(n), z.current.delete(n), t) : r ? u(t, r) : t;
303
+ }, [K]), we = m(() => {
304
+ if (!s) return;
305
+ let e = c(s), t = L.current.get(e), n = t ?? C(T.current);
306
+ if (!n || V.current.has(n)) return;
307
+ V.current.add(n), B.current.add(n), M.flush(e), O?.notifyStopGenerating?.();
308
+ let r = z.current.get(e)?.message.content, i = () => L.current.get(e) === n || t == null && F.current.has(e), o = async () => {
309
+ let e = x / S;
310
+ for (let t = 0; t < e; t++) {
311
+ if (!i() || !H.current) return !0;
312
+ await new Promise((e) => setTimeout(e, S));
313
+ }
314
+ return !i();
315
+ };
316
+ (async () => {
317
+ try {
318
+ await E.stopCompletion({
319
+ generationId: n,
320
+ path: e,
321
+ content: r
322
+ });
323
+ } catch (e) {
324
+ let t = e instanceof Error ? e : Error(String(e));
325
+ if (t instanceof a && t.status === b && await o()) return;
326
+ V.current.delete(n), ue?.(t);
327
+ }
328
+ })();
315
329
  }, [
316
- o,
317
- y,
318
- k,
319
- w,
320
- C,
321
- b
322
- ]), ye = f((e, t) => Q(e, t), [Q]), be = o != null && A.has(s(o)), $ = o == null ? null : s(o), xe = $ != null && (M.has($) || be && _(y.current) != null), Se = $ ? B.get($) : void 0, Ce = Se?.isCurrent() ?? !1;
330
+ s,
331
+ T,
332
+ M,
333
+ ue,
334
+ O,
335
+ E
336
+ ]), Te = m((e, t) => Q(e, t), [Q]), Ee = s != null && N.has(c(s)), $ = s == null ? null : c(s), De = $ != null && (I.has($) || Ee && C(T.current) != null), Oe = $ ? ge.get($) : void 0, ke = Oe?.isCurrent() ?? !1;
323
337
  return {
324
- hasConversationReloadError: Ce,
325
- isReloadingConversation: !!Se && Ce && me.has(Se),
326
- retryConversationReload: he,
327
- startStream: ge,
328
- handleStop: ve,
329
- resumeIfAwaitingGeneration: ye,
330
- restoreBufferedGeneration: _e,
331
- isStreaming: be,
332
- canStopStreaming: xe
338
+ hasConversationReloadError: ke,
339
+ isReloadingConversation: !!Oe && ke && _e.has(Oe),
340
+ retryConversationReload: ye,
341
+ startStream: Se,
342
+ handleStop: we,
343
+ resumeIfAwaitingGeneration: Te,
344
+ restoreBufferedGeneration: Ce,
345
+ isStreaming: Ee,
346
+ canStopStreaming: De
333
347
  };
334
348
  };
335
349
  //#endregion
336
- export { v as useConversationStream };
350
+ export { w as useConversationStream };
package/conversation.js CHANGED
@@ -1,35 +1,35 @@
1
1
  import { buildAnnouncementSignature as e, hasAnnouncementContent as t, hasStructuredAnnouncement as n, sanitizeAnnouncementHtml as r, sanitizeAnnouncementMessageHtml as i } from "./conversation/announcement-message.js";
2
2
  import { createMemoryConversationDraftStore as a, createWebStorageConversationDraftStore as o } from "./conversation/conversation-draft/conversation-draft-store.js";
3
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as s, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as c, DEFAULT_STREAM_IDLE_TIMEOUT_MS as l, GenerationConflictError as u, GenerationPersistenceError as d, StreamInterruptedError as f, StreamUpstreamError as p, createChatStreamApi as m } from "./conversation/create-chat-stream-api.js";
4
- import { shouldWatchForDisplayNameUpdate as h } from "./conversation/display-name-watch.js";
5
- import { formatAppVersion as g, sanitizeFooterHtml as _ } from "./conversation/footer-message.js";
6
- import { findDeploymentForConversationId as v, getModelIdCandidatesFromConversationId as y, getModelIdFromConversationId as b } from "./conversation/get-model-id-from-conversation-id.js";
7
- import { getTimeOfDayGreeting as x } from "./conversation/greeting.js";
8
- import { createDeploymentChangedMessage as S } from "./conversation/message-factory.js";
9
- import { getFormSchemaToolSyncKey as C, getLastDeploymentId as w, getLastUserMessageToolConfiguration as T, getLatestToolConfiguration as E, getToolConfigurationFromFormSchema as D, isMessageStreaming as O, messageHasStages as k, normalizeResponseFormat as A } from "./conversation/message-utils.js";
10
- import { getQuickAppConversationStarters as j } from "./conversation/quick-app-conversation-starters.js";
11
- import { mapStages as M, toStage as N } from "./conversation/stage.js";
12
- import { getStarterPopulateText as P, getStartersFromSchema as F } from "./conversation/starter-option.js";
13
- import { deriveConversationRowActionState as I } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
14
- import { useActiveConversationSync as L } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
15
- import { useAsyncConfirmDialog as R } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
16
- import { useConversationComposerDraft as z } from "./conversation/useConversationComposerDraft/useConversationComposerDraft.js";
17
- import { useConversationLookupMaps as B } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
18
- import { getConversationSource as V, useConversationPanelItems as H } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
19
- import { useImportFilePicker as U } from "./conversation/useImportFilePicker/useImportFilePicker.js";
20
- import { useMessageSelectionReply as W } from "./conversation/useMessageSelectionReply/useMessageSelectionReply.js";
21
- import { useAttachmentUpload as G } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
22
- import { AudioTranscriptionError as K, AudioTranscriptionErrorReason as q } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
23
- import { useTranscribeAudio as J } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
24
- import { attachmentToDto as Y, attachmentsToDtos as X } from "./conversation/useConversationHandlers/attachment-to-dto.js";
25
- import { createMessagePair as Z } from "./conversation/useConversationHandlers/message-factory.js";
26
- import { hasActiveToolConfig as Q, isAnswerIncomplete as $, isMessageChanged as ee, shouldRerunGenerationOnEdit as te } from "./conversation/useConversationHandlers/message-utils.js";
27
- import { getStarterConversationText as ne, getStarterDisplayText as re, getStarterSubmitText as ie } from "./conversation/useConversationHandlers/starter-option.js";
28
- import { getConversationPath as ae } from "./conversation/useConversationStream/conversation-path.js";
29
- import { useConversationHandlers as oe } from "./conversation/useConversationHandlers/useConversationHandlers.js";
30
- import { applyChunkToMessages as se, mergeStages as ce } from "./conversation/useConversationStream/apply-chunk.js";
31
- import { isAwaitingGenerationResume as le } from "./conversation/useConversationStream/generation-resume.js";
32
- import { useConversationStream as ue } from "./conversation/useConversationStream/useConversationStream.js";
33
- import { useChatSettingsFormConfig as de } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
34
- import { useToolsMenu as fe } from "./useToolsMenu/useToolsMenu.js";
35
- export { K as AudioTranscriptionError, q as AudioTranscriptionErrorReason, s as DEFAULT_GENERATION_CONFLICT_MESSAGE, c as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, l as DEFAULT_STREAM_IDLE_TIMEOUT_MS, u as GenerationConflictError, d as GenerationPersistenceError, f as StreamInterruptedError, p as StreamUpstreamError, se as applyChunkToMessages, Y as attachmentToDto, X as attachmentsToDtos, e as buildAnnouncementSignature, m as createChatStreamApi, S as createDeploymentChangedMessage, a as createMemoryConversationDraftStore, Z as createMessagePair, o as createWebStorageConversationDraftStore, I as deriveConversationRowActionState, v as findDeploymentForConversationId, g as formatAppVersion, ae as getConversationPath, V as getConversationSource, C as getFormSchemaToolSyncKey, w as getLastDeploymentId, T as getLastUserMessageToolConfiguration, E as getLatestToolConfiguration, y as getModelIdCandidatesFromConversationId, b as getModelIdFromConversationId, j as getQuickAppConversationStarters, ne as getStarterConversationText, re as getStarterDisplayText, P as getStarterPopulateText, ie as getStarterSubmitText, F as getStartersFromSchema, x as getTimeOfDayGreeting, D as getToolConfigurationFromFormSchema, Q as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, $ as isAnswerIncomplete, le as isAwaitingGenerationResume, ee as isMessageChanged, O as isMessageStreaming, M as mapStages, ce as mergeStages, k as messageHasStages, A as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, _ as sanitizeFooterHtml, te as shouldRerunGenerationOnEdit, h as shouldWatchForDisplayNameUpdate, N as toStage, L as useActiveConversationSync, R as useAsyncConfirmDialog, G as useAttachmentUpload, de as useChatSettingsFormConfig, z as useConversationComposerDraft, oe as useConversationHandlers, B as useConversationLookupMaps, H as useConversationPanelItems, ue as useConversationStream, U as useImportFilePicker, W as useMessageSelectionReply, fe as useToolsMenu, J as useTranscribeAudio };
3
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as s, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as c, DEFAULT_STREAM_IDLE_TIMEOUT_MS as l, GenerationConflictError as u, GenerationPersistenceError as d, StopCompletionError as f, StreamInterruptedError as p, StreamUpstreamError as m, createChatStreamApi as h } from "./conversation/create-chat-stream-api.js";
4
+ import { shouldWatchForDisplayNameUpdate as g } from "./conversation/display-name-watch.js";
5
+ import { formatAppVersion as _, sanitizeFooterHtml as v } from "./conversation/footer-message.js";
6
+ import { findDeploymentForConversationId as y, getModelIdCandidatesFromConversationId as b, getModelIdFromConversationId as x } from "./conversation/get-model-id-from-conversation-id.js";
7
+ import { getTimeOfDayGreeting as S } from "./conversation/greeting.js";
8
+ import { createDeploymentChangedMessage as C } from "./conversation/message-factory.js";
9
+ import { getFormSchemaToolSyncKey as w, getLastDeploymentId as T, getLastUserMessageToolConfiguration as E, getLatestToolConfiguration as D, getToolConfigurationFromFormSchema as O, isMessageStreaming as k, messageHasStages as A, normalizeResponseFormat as j } from "./conversation/message-utils.js";
10
+ import { getQuickAppConversationStarters as M } from "./conversation/quick-app-conversation-starters.js";
11
+ import { mapStages as N, toStage as P } from "./conversation/stage.js";
12
+ import { getStarterPopulateText as F, getStartersFromSchema as I } from "./conversation/starter-option.js";
13
+ import { deriveConversationRowActionState as L } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
14
+ import { useActiveConversationSync as R } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
15
+ import { useAsyncConfirmDialog as z } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
16
+ import { useConversationComposerDraft as B } from "./conversation/useConversationComposerDraft/useConversationComposerDraft.js";
17
+ import { useConversationLookupMaps as V } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
18
+ import { getConversationSource as H, useConversationPanelItems as U } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
19
+ import { useImportFilePicker as W } from "./conversation/useImportFilePicker/useImportFilePicker.js";
20
+ import { useMessageSelectionReply as G } from "./conversation/useMessageSelectionReply/useMessageSelectionReply.js";
21
+ import { useAttachmentUpload as K } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
22
+ import { AudioTranscriptionError as q, AudioTranscriptionErrorReason as J } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
23
+ import { useTranscribeAudio as Y } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
24
+ import { attachmentToDto as X, attachmentsToDtos as Z } from "./conversation/useConversationHandlers/attachment-to-dto.js";
25
+ import { createMessagePair as Q } from "./conversation/useConversationHandlers/message-factory.js";
26
+ import { hasActiveToolConfig as $, isAnswerIncomplete as ee, isMessageChanged as te, shouldRerunGenerationOnEdit as ne } from "./conversation/useConversationHandlers/message-utils.js";
27
+ import { getStarterConversationText as re, getStarterDisplayText as ie, getStarterSubmitText as ae } from "./conversation/useConversationHandlers/starter-option.js";
28
+ import { getConversationPath as oe } from "./conversation/useConversationStream/conversation-path.js";
29
+ import { useConversationHandlers as se } from "./conversation/useConversationHandlers/useConversationHandlers.js";
30
+ import { applyChunkToMessages as ce, mergeStages as le } from "./conversation/useConversationStream/apply-chunk.js";
31
+ import { isAwaitingGenerationResume as ue } from "./conversation/useConversationStream/generation-resume.js";
32
+ import { useConversationStream as de } from "./conversation/useConversationStream/useConversationStream.js";
33
+ import { useChatSettingsFormConfig as fe } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
34
+ import { useToolsMenu as pe } from "./useToolsMenu/useToolsMenu.js";
35
+ export { q as AudioTranscriptionError, J as AudioTranscriptionErrorReason, s as DEFAULT_GENERATION_CONFLICT_MESSAGE, c as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, l as DEFAULT_STREAM_IDLE_TIMEOUT_MS, u as GenerationConflictError, d as GenerationPersistenceError, f as StopCompletionError, p as StreamInterruptedError, m as StreamUpstreamError, ce as applyChunkToMessages, X as attachmentToDto, Z as attachmentsToDtos, e as buildAnnouncementSignature, h as createChatStreamApi, C as createDeploymentChangedMessage, a as createMemoryConversationDraftStore, Q as createMessagePair, o as createWebStorageConversationDraftStore, L as deriveConversationRowActionState, y as findDeploymentForConversationId, _ as formatAppVersion, oe as getConversationPath, H as getConversationSource, w as getFormSchemaToolSyncKey, T as getLastDeploymentId, E as getLastUserMessageToolConfiguration, D as getLatestToolConfiguration, b as getModelIdCandidatesFromConversationId, x as getModelIdFromConversationId, M as getQuickAppConversationStarters, re as getStarterConversationText, ie as getStarterDisplayText, F as getStarterPopulateText, ae as getStarterSubmitText, I as getStartersFromSchema, S as getTimeOfDayGreeting, O as getToolConfigurationFromFormSchema, $ as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, ee as isAnswerIncomplete, ue as isAwaitingGenerationResume, te as isMessageChanged, k as isMessageStreaming, N as mapStages, le as mergeStages, A as messageHasStages, j as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, v as sanitizeFooterHtml, ne as shouldRerunGenerationOnEdit, g as shouldWatchForDisplayNameUpdate, P as toStage, R as useActiveConversationSync, z as useAsyncConfirmDialog, K as useAttachmentUpload, fe as useChatSettingsFormConfig, B as useConversationComposerDraft, se as useConversationHandlers, V as useConversationLookupMaps, U as useConversationPanelItems, de as useConversationStream, W as useImportFilePicker, G as useMessageSelectionReply, pe as useToolsMenu, Y as useTranscribeAudio };
package/index.js CHANGED
@@ -48,117 +48,117 @@ import { FavoriteEntityType as Kt, useFavoriteEntitiesState as qt } from "./cata
48
48
  import { usePublishFolders as Jt } from "./catalog/usePublishFolders/usePublishFolders.js";
49
49
  import { buildAnnouncementSignature as Yt, hasAnnouncementContent as Xt, hasStructuredAnnouncement as Zt, sanitizeAnnouncementHtml as Qt, sanitizeAnnouncementMessageHtml as $t } from "./conversation/announcement-message.js";
50
50
  import { createMemoryConversationDraftStore as en, createWebStorageConversationDraftStore as tn } from "./conversation/conversation-draft/conversation-draft-store.js";
51
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as nn, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as rn, DEFAULT_STREAM_IDLE_TIMEOUT_MS as an, GenerationConflictError as on, GenerationPersistenceError as sn, StreamInterruptedError as cn, StreamUpstreamError as ln, createChatStreamApi as un } from "./conversation/create-chat-stream-api.js";
52
- import { shouldWatchForDisplayNameUpdate as dn } from "./conversation/display-name-watch.js";
53
- import { formatAppVersion as fn, sanitizeFooterHtml as pn } from "./conversation/footer-message.js";
54
- import { findDeploymentForConversationId as mn, getModelIdCandidatesFromConversationId as hn, getModelIdFromConversationId as gn } from "./conversation/get-model-id-from-conversation-id.js";
55
- import { getTimeOfDayGreeting as _n } from "./conversation/greeting.js";
56
- import { createDeploymentChangedMessage as vn } from "./conversation/message-factory.js";
57
- import { getFormSchemaToolSyncKey as yn, getLastDeploymentId as bn, getLastUserMessageToolConfiguration as xn, getLatestToolConfiguration as Sn, getToolConfigurationFromFormSchema as Cn, isMessageStreaming as wn, messageHasStages as Tn, normalizeResponseFormat as En } from "./conversation/message-utils.js";
58
- import { toOverlayMessages as Dn } from "./conversation/overlay-messages.js";
59
- import { getQuickAppConversationStarters as On } from "./conversation/quick-app-conversation-starters.js";
60
- import { mapStages as kn, toStage as An } from "./conversation/stage.js";
61
- import { getStarterPopulateText as jn, getStartersFromSchema as Mn } from "./conversation/starter-option.js";
62
- import { useOAuthCallbackCompletion as Nn } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
63
- import { buildPromptExportEnvelope as Pn, buildPromptExportFileName as Fn, serializePromptExport as In } from "./prompt/export-prompt.js";
64
- import { PROMPT_CONTENT_MAX_LENGTH as Ln, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as Rn, PROMPT_DESCRIPTION_MAX_LENGTH as zn, PROMPT_NAME_MAX_LENGTH as Bn, PromptFieldError as Vn, buildPromptPath as Hn, getRemainingCharacters as Un, validatePromptContent as Wn, validatePromptDescription as Gn, validatePromptName as Kn } from "./prompt/prompt.js";
65
- import { usePromptsState as qn } from "./prompt/usePromptsState/usePromptsState.js";
66
- import { UnsupportedTriggerReason as Jn } from "./scheduled-task/scheduled-task-mapping.js";
67
- import { ScheduledTaskTriggerDescriptionKind as Yn, describeScheduledTaskTrigger as Xn } from "./scheduled-task/scheduled-task-description.js";
68
- import { apSchedulerDayToJsDay as Zn, jsDayToApSchedulerDay as Qn } from "./shared/cron-weekday.js";
69
- import { mapFormValuesToCreateBody as $n, mapFormValuesToUpdateBody as er, mapScheduledTaskDtoToFormValues as tr } from "./scheduled-task/scheduled-task-trigger.js";
70
- import { prepareScheduledTaskCreateBody as nr, prepareScheduledTaskUpdateBody as rr } from "./scheduled-task/scheduled-task-preparation.js";
71
- import { createScheduledTasksApiClient as ir } from "./scheduled-task/scheduled-tasks-api-client.js";
72
- import { useScheduledTasks as ar } from "./scheduled-task/use-scheduled-tasks.js";
73
- import { mergeRunsById as or, useScheduledTaskRuns as sr } from "./scheduled-task/use-scheduled-task-runs.js";
74
- import { mapOfflineCredentialsResponse as cr, normalizeOfflineCredentialsConnectSettings as lr } from "./offline-credentials/map-offline-credentials-response.js";
75
- import { OfflineCredentialsGateStatus as ur, useOfflineCredentialsGate as dr } from "./offline-credentials/useOfflineCredentialsGate/useOfflineCredentialsGate.js";
76
- import { OfflineCredentialsLoginOutcomeType as fr, useOfflineCredentialsLogin as pr } from "./offline-credentials/useOfflineCredentialsLogin/useOfflineCredentialsLogin.js";
77
- import { OfflineCredentialsLogoutOutcomeType as mr, useOfflineCredentialsAuth as hr } from "./offline-credentials/useOfflineCredentialsAuth/useOfflineCredentialsAuth.js";
78
- import { checkScheduledTaskAuthSessionError as gr } from "./scheduled-task/check-scheduled-task-auth-session-error.js";
79
- import { validateSkillFileBatch as _r } from "./skill/skill-file-batch-validation.js";
80
- import { skillFileToAttachment as vr } from "./skill/skill-file-preview.js";
81
- import { SkillEditorLoadState as yr, useSkillEditorLoad as br } from "./skill/useSkillEditorLoad.js";
82
- import { useSkillEditorSubmit as xr } from "./skill/useSkillEditorSubmit.js";
83
- import { useSkillFileActions as Sr } from "./skill/useSkillFileActions.js";
84
- import { SkillPreviewErrorKind as Cr, useSkillFilePreview as wr } from "./skill/useSkillFilePreview.js";
85
- import { useSkillsState as Tr } from "./skill/useSkillsState/useSkillsState.js";
86
- import { SkillArchiveImportErrorKind as Er, SkillArchiveImportStatus as Dr, SkillArchiveSelectionRejectionReason as Or, classifySkillArchiveImportError as kr, useSkillArchiveImport as Ar } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
87
- import { RecipientsCountStatus as jr, useShareRecipientsCount as Mr } from "./useShareRecipientsCount/useShareRecipientsCount.js";
88
- import { deriveConversationRowActionState as Nr } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
89
- import { useActiveConversationSync as Pr } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
90
- import { useAsyncConfirmDialog as Fr } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
91
- import { useConversationComposerDraft as Ir } from "./conversation/useConversationComposerDraft/useConversationComposerDraft.js";
92
- import { useConversationLookupMaps as Lr } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
93
- import { getConversationSource as Rr, useConversationPanelItems as zr } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
94
- import { useImportFilePicker as Br } from "./conversation/useImportFilePicker/useImportFilePicker.js";
95
- import { useMessageSelectionReply as Vr } from "./conversation/useMessageSelectionReply/useMessageSelectionReply.js";
96
- import { sanitizeFileName as Hr, splitFileNameExtension as Ur, trimFileNameToByteLimit as Wr } from "./files/file-name.js";
97
- import { useAttachmentUpload as Gr } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
98
- import { AudioTranscriptionError as Kr, AudioTranscriptionErrorReason as qr } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
99
- import { useTranscribeAudio as Jr } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
100
- import { DEFAULT_MAX_ARCHIVE_BYTES as Yr, useConversationExport as Xr } from "./conversation/useConversationExport/useConversationExport.js";
101
- import { attachmentToDto as Zr, attachmentsToDtos as Qr } from "./conversation/useConversationHandlers/attachment-to-dto.js";
102
- import { createMessagePair as $r } from "./conversation/useConversationHandlers/message-factory.js";
103
- import { hasActiveToolConfig as ei, isAnswerIncomplete as ti, isMessageChanged as ni, shouldRerunGenerationOnEdit as ri } from "./conversation/useConversationHandlers/message-utils.js";
104
- import { getStarterConversationText as ii, getStarterDisplayText as ai, getStarterSubmitText as oi } from "./conversation/useConversationHandlers/starter-option.js";
105
- import { getConversationPath as si } from "./conversation/useConversationStream/conversation-path.js";
106
- import { useConversationHandlers as ci } from "./conversation/useConversationHandlers/useConversationHandlers.js";
107
- import { useConversationImport as li } from "./conversation/useConversationImport/useConversationImport.js";
108
- import { useConversationScroll as ui } from "./conversation/useConversationScroll/useConversationScroll.js";
109
- import { applyChunkToMessages as di, mergeStages as fi } from "./conversation/useConversationStream/apply-chunk.js";
110
- import { isAwaitingGenerationResume as pi } from "./conversation/useConversationStream/generation-resume.js";
111
- import { useConversationStream as mi } from "./conversation/useConversationStream/useConversationStream.js";
112
- import { useConversationSources as hi } from "./conversation-sources/useConversationSources/useConversationSources.js";
113
- import { DialFilesApiUploadMode as gi } from "./files/dial-files-api.js";
114
- import { FileManagerNotificationReason as _i, FileNameValidationErrorReason as vi, FileOperationKind as yi } from "./files/dial-file-manager.types.js";
115
- import { COLUMNS_MY_FILES as bi, COLUMNS_ORGANIZATION as xi, COLUMNS_SHARED as Si, CORE_PERMISSION_MAP as Ci, DATE_OPTIONS as wi, DIAL_FILE_MANAGER_SECTION_TABS as Ti, PATH_SEPARATOR_REGEXP as Ei, RESERVED_MARKER_NAME as Di, UPLOAD_CONCURRENCY as Oi } from "./files/dial-file-manager.model.js";
116
- import { buildSharedItemVirtualPath as ki, dialCorePathToRelative as Ai, findDialFileByPath as ji, findFolderByVirtualPath as Mi, formatOperationFolderName as Ni, getVirtualPathName as Pi, hasDialFileWritePermission as Fi, hasForbiddenNameSymbols as Ii, hasSamePaths as Li, isCopyMoveDuplicateAllowed as Ri, isShareActionsAllowed as zi, normalizeVirtualPath as Bi, parseNewFolderVirtualPath as Vi, resolveOwnerCoords as Hi, resolveSectionByPath as Ui, unionPathSets as Wi, withRoutableRootLabels as Gi } from "./files/dial-file-manager-path.util.js";
117
- import { resolveDialFileApiPath as Ki, virtualPathToApiPath as qi } from "./files/resolve-dial-file-api-path.js";
118
- import { prepareCopyItems as Ji, prepareMoveRenameItems as Yi } from "./files/dial-file-manager-copy-move.util.js";
119
- import { buildFromCache as Xi, buildSharedSearchScope as Zi, fetchByTab as Qi, fetchForSearch as $i, findFirstSuccessfulCopyMoveItem as ea, mapCorePermissions as ta, mapFileMetadataToDialFile as na, mapSearchItem as ra, mergeCreatedFolderIntoCache as ia, updateEntry as aa } from "./files/dial-file-manager-mapping.util.js";
120
- import { createFilesApiClient as oa } from "./files/create-files-api.js";
121
- import { createUploadFileWithProgress as sa } from "./files/create-upload-file-with-progress.js";
122
- import { openAnnotationAttachment as ca } from "./files/annotation.js";
123
- import { annotationToOoxmlCanvasContent as la, annotationToPdfCanvasContent as ua, clearAttachmentCache as da, hasAttachmentTextSource as fa, referenceAttachmentToPdfCanvasContent as pa, resolveCodeCanvasContent as ma, resolveGroupedVisualizerCanvasContent as ha, resolveHtmlCanvasContent as ga, resolveImageCanvasContent as _a, resolveJsonCanvasContent as va, resolveMarkdownCanvasContent as ya, resolveOoxmlCanvasContent as ba, resolvePdfCanvasContent as xa, resolveTextCanvasContent as Sa, resolveVisualizerCanvasContent as Ca } from "./files/attachment-canvas.js";
124
- import { getUrlFileName as wa, isExternalSourcePreviewable as Ta, resolveExternalSourceContentType as Ea } from "./files/source-content.js";
125
- import { annotationToDisplayAttachment as Da, attachmentDtoToDisplayAttachment as Oa, attachmentDtosToDisplayAttachments as ka } from "./files/attachment-dto-to-display.js";
126
- import { dialFileToAttachment as Aa, dialFilesToAttachments as ja, dialFolderPathToAttachment as Ma } from "./files/dial-file-to-attachment.js";
127
- import { DownloadDestinationType as Na } from "./files/download-destination.js";
128
- import { prepareDownloadDestination as Pa } from "./files/prepare-download-destination.js";
129
- import { deriveActionProfile as Fa } from "./files/file-manager-variant.js";
130
- import { useDialFileListing as Ia } from "./files/useDialFileListing/useDialFileListing.js";
131
- import { useDialFileMetadata as La } from "./files/useDialFileMetadata/useDialFileMetadata.js";
132
- import { useDialFileMutations as Ra } from "./files/useDialFileMutations/useDialFileMutations.js";
133
- import { useDialFileSharing as za } from "./files/useDialFileSharing/useDialFileSharing.js";
134
- import { useDialFileUploadBatch as Ba } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
135
- import { useDialFileManager as Va } from "./files/useDialFileManager/useDialFileManager.js";
136
- import { useDialFileManagerSections as Ha } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
137
- import { useDialFileManagerTabConfig as Ua } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
138
- import { useFileAttachmentPicker as Wa } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
139
- import { getBrowserTimezone as Ga } from "./shared/browser-timezone.js";
140
- import { isValidAbsoluteUrl as Ka, isValidFeaturesData as qa, parseFeaturesData as Ja } from "./shared/custom-apps.js";
141
- import { buildExternalServiceScopeId as Ya, getExternalServiceFallbackName as Xa, parseExternalServiceUrl as Za } from "./shared/external-services.js";
142
- import { useChatSettingsFormConfig as Qa } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
143
- import { usePageFileDrag as $a } from "./usePageFileDrag/usePageFileDrag.js";
144
- import { useViewportWidth as eo } from "./useViewportWidth/useViewportWidth.js";
145
- import { usePanelMaxWidth as to } from "./usePanelMaxWidth/usePanelMaxWidth.js";
146
- import { useShareLink as no } from "./useShareLink/useShareLink.js";
147
- import { useToolsMenu as ro } from "./useToolsMenu/useToolsMenu.js";
148
- import { USAGE_DATA_I18N_KEYS as io, mapUsageDataToDashboard as ao } from "./usage/map-usage-data-to-dashboard.js";
149
- import { USAGE_MODEL_LIMITS_I18N_KEYS as oo, mapOverallCostLimitsToPeriodStatuses as so, mapUserUsageToModelLimits as co } from "./usage/map-user-usage-to-model-limits.js";
150
- import { UsagePeriod as lo } from "./usage/usage-period.js";
151
- import { isCappedStat as uo, selectUsageBannerSource as fo } from "./usage/usage-banner-source.js";
152
- import { USAGE_RESET_I18N_KEYS as po, formatUsageResetShort as mo, formatUsageResetTime as ho } from "./usage/usage-reset-time.js";
153
- import { useDeploymentUsageLimits as go } from "./usage/useDeploymentUsageLimits/useDeploymentUsageLimits.js";
154
- import { useRefreshUsageAfterGeneration as _o } from "./usage/useRefreshUsageAfterGeneration/useRefreshUsageAfterGeneration.js";
155
- import { resetUsageLimitBannerDismissals as vo, useUsageLimitBannerDismissal as yo } from "./usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js";
156
- import { USAGE_BANNER_I18N_KEYS as bo, useUsageLimitBanner as xo } from "./usage/useUsageLimitBanner/useUsageLimitBanner.js";
157
- import { useUsageData as So } from "./usage/useUsageData/useUsageData.js";
158
- import { McpAppResourceFetchError as Co, createMcpAppsApiClient as wo } from "./mcp-apps/mcp-apps-api-client.js";
159
- import { useMcpAppTools as To } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
160
- import { useMcpAppHostContext as Eo } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
161
- import { useMcpAppHostAdapter as Do } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
162
- import { useOpenMcpAppCanvas as Oo } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
163
- import { useGridEditingScroll as ko } from "@epam/ai-dial-chat-shared";
164
- export { x as AttachmentValidationErrorReason, Kr as AudioTranscriptionError, qr as AudioTranscriptionErrorReason, B as AuthenticationType, bi as COLUMNS_MY_FILES, xi as COLUMNS_ORGANIZATION, Si as COLUMNS_SHARED, Ci as CORE_PERMISSION_MAP, Ct as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, wi as DATE_OPTIONS, he as DEFAULT_ENTITY_DETAILS_LABELS, nn as DEFAULT_GENERATION_CONFLICT_MESSAGE, rn as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, Yr as DEFAULT_MAX_ARCHIVE_BYTES, an as DEFAULT_STREAM_IDLE_TIMEOUT_MS, Ti as DIAL_FILE_MANAGER_SECTION_TABS, gi as DialFilesApiUploadMode, Na as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, Kt as FavoriteEntityType, _i as FileManagerNotificationReason, vi as FileNameValidationErrorReason, yi as FileOperationKind, on as GenerationConflictError, sn as GenerationPersistenceError, Co as McpAppResourceFetchError, ct as McpResourceKind, W as OAuthResourceKind, ur as OfflineCredentialsGateStatus, fr as OfflineCredentialsLoginOutcomeType, mr as OfflineCredentialsLogoutOutcomeType, Ei as PATH_SEPARATOR_REGEXP, Ln as PROMPT_CONTENT_MAX_LENGTH, Rn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, zn as PROMPT_DESCRIPTION_MAX_LENGTH, Bn as PROMPT_NAME_MAX_LENGTH, Je as PUBLIC_SKILL_BUCKET, Vn as PromptFieldError, Ce as PromptSource, Di as RESERVED_MARKER_NAME, jr as RecipientsCountStatus, Oe as SKILL_FILE_UPLOAD_MAX_BYTES, ke as SKILL_FOLDER_MARKER, Ye as SKILL_LISTING_MAX_PAGES, Xe as SKILL_LISTING_PAGE_SIZE, Ae as SKILL_MANIFEST_FILE, Ze as SKILL_MANIFEST_MAX_BYTES, je as SKILL_TEXT_FIELD_MAX_LENGTHS, Me as SKILL_UPLOAD_MAX_FILES, Ne as SKILL_UPLOAD_MAX_TOTAL_BYTES, Yn as ScheduledTaskTriggerDescriptionKind, Er as SkillArchiveImportErrorKind, Dr as SkillArchiveImportStatus, Or as SkillArchiveSelectionRejectionReason, yr as SkillEditorLoadState, Cr as SkillPreviewErrorKind, Qe as SkillSource, cn as StreamInterruptedError, ln as StreamUpstreamError, G as TOOLSET_REDIRECT_STATE_KEY, K as ToolsetAuthStatus, q as ToolsetAuthTypes, J as ToolsetCredentialsLevel, Vt as ToolsetLoginOutcomeType, Y as ToolsetOAuthCallbackQuery, X as ToolsetOAuthChannelControlType, Z as ToolsetOAuthFailureReason, Q as ToolsetOAuthInitiationResultType, $ as ToolsetOAuthResultType, Oi as UPLOAD_CONCURRENCY, bo as USAGE_BANNER_I18N_KEYS, io as USAGE_DATA_I18N_KEYS, oo as USAGE_MODEL_LIMITS_I18N_KEYS, po as USAGE_RESET_I18N_KEYS, Jn as UnsupportedTriggerReason, lo as UsagePeriod, ee as WithLogin, Da as annotationToDisplayAttachment, la as annotationToOoxmlCanvasContent, ua as annotationToPdfCanvasContent, Zn as apSchedulerDayToJsDay, se as appendLocaleCode, di as applyChunkToMessages, Oa as attachmentDtoToDisplayAttachment, ka as attachmentDtosToDisplayAttachments, Zr as attachmentToDto, Qr as attachmentsToDtos, ce as buildAdditionalLocaleOptions, Yt as buildAnnouncementSignature, lt as buildApplicationMcpUrl, N as buildChatCompletionsUrl, ut as buildConnectApi, P as buildDeploymentConnectApi, Ya as buildExternalServiceScopeId, Xi as buildFromCache, Pn as buildPromptExportEnvelope, Fn as buildPromptExportFileName, Te as buildPromptOverview, Hn as buildPromptPath, V as buildResetFields, F as buildResponsesUrl, ki as buildSharedItemVirtualPath, Zi as buildSharedSearchScope, et as buildSkillContentTree, Pe as buildSkillFilesPayload, Fe as buildSkillManifest, Ie as buildSkillManifestForSubmit, Le as buildSkillManifestFromFrontmatter, tt as buildSkillOverview, It as buildToolsetAuthorizeUrl, dt as buildToolsetMcpUrl, gr as checkScheduledTaskAuthSessionError, kr as classifySkillArchiveImportError, da as clearAttachmentCache, le as composeLocalePayload, un as createChatStreamApi, i as createCsrfMiddleware, vn as createDeploymentChangedMessage, oa as createFilesApiClient, wo as createMcpAppsApiClient, en as createMemoryConversationDraftStore, $r as createMessagePair, j as createPublishApiClient, ir as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, sa as createUploadFileWithProgress, tn as createWebStorageConversationDraftStore, I as decodeDeploymentId, te as decodeToolsetId, ue as decomposeLocalizedFields, Fa as deriveActionProfile, vt as deriveAvailableTabIds, Nr as deriveConversationRowActionState, yt as deriveFavoriteItems, Xn as describeScheduledTaskTrigger, Ai as dialCorePathToRelative, Aa as dialFileToAttachment, ja as dialFilesToAttachments, Ma as dialFolderPathToAttachment, m as downloadAttachment, Mt as emitToolsetLoginSuccess, L as encodeDeploymentId, ne as encodeToolsetId, Qi as fetchByTab, $i as fetchForSearch, bt as filterCatalogItemsBySelector, xt as filterHiddenOwnedItems, R as findDeploymentByIdOrReference, mn as findDeploymentForConversationId, ji as findDialFileByPath, ea as findFirstSuccessfulCopyMoveItem, Mi as findFolderByVirtualPath, fn as formatAppVersion, pe as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Ni as formatOperationFolderName, A as formatQuotedNameList, mo as formatUsageResetShort, ho as formatUsageResetTime, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Ga as getBrowserTimezone, si as getConversationPath, Rr as getConversationSource, Xa as getExternalServiceFallbackName, yn as getFormSchemaToolSyncKey, bn as getLastDeploymentId, xn as getLastUserMessageToolConfiguration, Sn as getLatestToolConfiguration, hn as getModelIdCandidatesFromConversationId, gn as getModelIdFromConversationId, pt as getPublicCatalogEntityFolderPath, On as getQuickAppConversationStarters, Un as getRemainingCharacters, Tt as getRunnerSchemas, Re as getSkillFieldLengthViolations, ii as getStarterConversationText, ai as getStarterDisplayText, jn as getStarterPopulateText, oi as getStarterSubmitText, Mn as getStartersFromSchema, _n as getTimeOfDayGreeting, Cn as getToolConfigurationFromFormSchema, Pt as getToolsetOAuthChannelName, Lt as getToolsetRedirectUri, wa as getUrlFileName, Pi as getVirtualPathName, ei as hasActiveToolConfig, Xt as hasAnnouncementContent, fa as hasAttachmentTextSource, Fi as hasDialFileWritePermission, Ii as hasForbiddenNameSymbols, Li as hasSamePaths, Zt as hasStructuredAnnouncement, o as includesIgnoreCase, Rt as initiateOAuthLogin, ti as isAnswerIncomplete, pi as isAwaitingGenerationResume, uo as isCappedStat, r as isConversationNotFoundError, Ri as isCopyMoveDuplicateAllowed, Et as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, Ta as isExternalSourcePreviewable, ni as isMessageChanged, wn as isMessageStreaming, Ee as isOrganisationPromptItem, mt as isPublicCatalogEntityId, re as isPublicToolsetId, Dt as isQuickAppSchema, zi as isShareActionsAllowed, ze as isSkillFolderMarkerPath, Ka as isValidAbsoluteUrl, qa as isValidFeaturesData, Be as isValidSkillRelativePath, Qn as jsDayToApSchedulerDay, ta as mapCorePermissions, ge as mapDeploymentDetailsDtoToEntityDetails, U as mapDeploymentLimitsDtoToCatalogLimits, H as mapDeploymentLimitsToInput, ye as mapDeploymentToCatalogItem, be as mapDeploymentToolsetCredentials, _e as mapEntityDetailsToCatalogDetails, na as mapFileMetadataToDialFile, $n as mapFormValuesToCreateBody, er as mapFormValuesToUpdateBody, cr as mapOfflineCredentialsResponse, so as mapOverallCostLimitsToPeriodStatuses, De as mapPromptToCatalogItem, ht as mapPublishConversationResultDto, gt as mapPublishHistoryEntryDto, tr as mapScheduledTaskDtoToFormValues, ra as mapSearchItem, nt as mapSkillToCatalogItem, kn as mapStages, ve as mapToolsetCredentials, xe as mapToolsetToCatalogItem, ao as mapUsageDataToDashboard, co as mapUserUsageToModelLimits, ia as mergeCreatedFolderIntoCache, or as mergeRunsById, fi as mergeStages, Tn as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, Ve as nameFromPath, zt as navigateToolsetOAuthPopup, z as normalizeDeploymentId, lr as normalizeOfflineCredentialsConnectSettings, En as normalizeResponseFormat, He as normalizeSkillName, ie as normalizeToolsetId, Bi as normalizeVirtualPath, ca as openAnnotationAttachment, Bt as openToolsetOAuthPopup, me as padTwoDigits, Za as parseExternalServiceUrl, Ja as parseFeaturesData, Vi as parseNewFolderVirtualPath, we as parsePromptResourceUrl, Ue as parseSkillManifest, kt as parseSkillManifestDocument, $e as parseSkillResourceUrl, Ji as prepareCopyItems, Pa as prepareDownloadDestination, Yi as prepareMoveRenameItems, nr as prepareScheduledTaskCreateBody, rr as prepareScheduledTaskUpdateBody, rt as readSkillFileBytes, it as readSkillFilePreviewBytes, at as readSkillManifest, St as reconcileFilterTopics, pa as referenceAttachmentToPdfCanvasContent, vo as resetUsageLimitBannerDismissals, wt as resolveCatalogPrimaryAction, ma as resolveCodeCanvasContent, Se as resolveDeploymentFolder, Ki as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, Ea as resolveExternalSourceContentType, ha as resolveGroupedVisualizerCanvasContent, ga as resolveHtmlCanvasContent, _a as resolveImageCanvasContent, va as resolveJsonCanvasContent, de as resolveLocalizedText, ya as resolveMarkdownCanvasContent, ft as resolveMcpResourceKind, ba as resolveOoxmlCanvasContent, Hi as resolveOwnerCoords, xa as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Ui as resolveSectionByPath, ot as resolveSkillFileDownloadPath, st as resolveSkillManifestFileId, Sa as resolveTextCanvasContent, ae as resolveToolsetCredentialsLevel, Ca as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Qt as sanitizeAnnouncementHtml, $t as sanitizeAnnouncementMessageHtml, Hr as sanitizeFileName, pn as sanitizeFooterHtml, oe as selectToolsetAuthStatus, fo as selectUsageBannerSource, In as serializePromptExport, ri as shouldRerunGenerationOnEdit, dn as shouldWatchForDisplayNameUpdate, We as skillFileBytesToBlob, vr as skillFileToAttachment, Ge as skillFolderMarkerParent, Ur as splitFileNameExtension, Ke as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, Nt as subscribeToolsetLoginSuccess, fe as toBaseLocale, Dn as toOverlayMessages, _t as toPublishEntityType, M as toPublishRuleDto, An as toStage, Wr as trimFileNameToByteLimit, Wi as unionPathSets, qe as unpackSkillArchive, aa as updateEntry, Pr as useActiveConversationSync, Wt as useApplicationCredentials, Fr as useAsyncConfirmDialog, g as useAttachmentAction, Gr as useAttachmentUpload, S as useAttachmentValidation, Ot as useCatalogEditNavigation, jt as useCatalogItemDetails, Ut as useCatalogToolsetCredentials, Qa as useChatSettingsFormConfig, Ir as useConversationComposerDraft, Xr as useConversationExport, ci as useConversationHandlers, li as useConversationImport, Lr as useConversationLookupMaps, zr as useConversationPanelItems, ui as useConversationScroll, hi as useConversationSources, mi as useConversationStream, go as useDeploymentUsageLimits, Ia as useDialFileListing, Va as useDialFileManager, Ha as useDialFileManagerSections, Ua as useDialFileManagerTabConfig, La as useDialFileMetadata, Ra as useDialFileMutations, za as useDialFileSharing, Ba as useDialFileUploadBatch, qt as useFavoriteEntitiesState, Wa as useFileAttachmentPicker, ko as useGridEditingScroll, Br as useImportFilePicker, Do as useMcpAppHostAdapter, Eo as useMcpAppHostContext, To as useMcpAppTools, Vr as useMessageSelectionReply, Nn as useOAuthCallbackCompletion, hr as useOfflineCredentialsAuth, dr as useOfflineCredentialsGate, pr as useOfflineCredentialsLogin, Oo as useOpenMcpAppCanvas, $a as usePageFileDrag, to as usePanelMaxWidth, qn as usePromptsState, Jt as usePublishFolders, _o as useRefreshUsageAfterGeneration, sr as useScheduledTaskRuns, ar as useScheduledTasks, no as useShareLink, Mr as useShareRecipientsCount, Ar as useSkillArchiveImport, Gt as useSkillDetailsPanelData, br as useSkillEditorLoad, xr as useSkillEditorSubmit, Sr as useSkillFileActions, wr as useSkillFilePreview, At as useSkillItemDetails, Tr as useSkillsState, ro as useToolsMenu, Ht as useToolsetLogin, Jr as useTranscribeAudio, So as useUsageData, xo as useUsageLimitBanner, yo as useUsageLimitBannerDismissal, eo as useViewportWidth, Wn as validatePromptContent, Gn as validatePromptDescription, Kn as validatePromptName, _r as validateSkillFileBatch, qi as virtualPathToApiPath, Ft as waitForToolsetOAuthResult, Gi as withRoutableRootLabels };
51
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as nn, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as rn, DEFAULT_STREAM_IDLE_TIMEOUT_MS as an, GenerationConflictError as on, GenerationPersistenceError as sn, StopCompletionError as cn, StreamInterruptedError as ln, StreamUpstreamError as un, createChatStreamApi as dn } from "./conversation/create-chat-stream-api.js";
52
+ import { shouldWatchForDisplayNameUpdate as fn } from "./conversation/display-name-watch.js";
53
+ import { formatAppVersion as pn, sanitizeFooterHtml as mn } from "./conversation/footer-message.js";
54
+ import { findDeploymentForConversationId as hn, getModelIdCandidatesFromConversationId as gn, getModelIdFromConversationId as _n } from "./conversation/get-model-id-from-conversation-id.js";
55
+ import { getTimeOfDayGreeting as vn } from "./conversation/greeting.js";
56
+ import { createDeploymentChangedMessage as yn } from "./conversation/message-factory.js";
57
+ import { getFormSchemaToolSyncKey as bn, getLastDeploymentId as xn, getLastUserMessageToolConfiguration as Sn, getLatestToolConfiguration as Cn, getToolConfigurationFromFormSchema as wn, isMessageStreaming as Tn, messageHasStages as En, normalizeResponseFormat as Dn } from "./conversation/message-utils.js";
58
+ import { toOverlayMessages as On } from "./conversation/overlay-messages.js";
59
+ import { getQuickAppConversationStarters as kn } from "./conversation/quick-app-conversation-starters.js";
60
+ import { mapStages as An, toStage as jn } from "./conversation/stage.js";
61
+ import { getStarterPopulateText as Mn, getStartersFromSchema as Nn } from "./conversation/starter-option.js";
62
+ import { useOAuthCallbackCompletion as Pn } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
63
+ import { buildPromptExportEnvelope as Fn, buildPromptExportFileName as In, serializePromptExport as Ln } from "./prompt/export-prompt.js";
64
+ import { PROMPT_CONTENT_MAX_LENGTH as Rn, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as zn, PROMPT_DESCRIPTION_MAX_LENGTH as Bn, PROMPT_NAME_MAX_LENGTH as Vn, PromptFieldError as Hn, buildPromptPath as Un, getRemainingCharacters as Wn, validatePromptContent as Gn, validatePromptDescription as Kn, validatePromptName as qn } from "./prompt/prompt.js";
65
+ import { usePromptsState as Jn } from "./prompt/usePromptsState/usePromptsState.js";
66
+ import { UnsupportedTriggerReason as Yn } from "./scheduled-task/scheduled-task-mapping.js";
67
+ import { ScheduledTaskTriggerDescriptionKind as Xn, describeScheduledTaskTrigger as Zn } from "./scheduled-task/scheduled-task-description.js";
68
+ import { apSchedulerDayToJsDay as Qn, jsDayToApSchedulerDay as $n } from "./shared/cron-weekday.js";
69
+ import { mapFormValuesToCreateBody as er, mapFormValuesToUpdateBody as tr, mapScheduledTaskDtoToFormValues as nr } from "./scheduled-task/scheduled-task-trigger.js";
70
+ import { prepareScheduledTaskCreateBody as rr, prepareScheduledTaskUpdateBody as ir } from "./scheduled-task/scheduled-task-preparation.js";
71
+ import { createScheduledTasksApiClient as ar } from "./scheduled-task/scheduled-tasks-api-client.js";
72
+ import { useScheduledTasks as or } from "./scheduled-task/use-scheduled-tasks.js";
73
+ import { mergeRunsById as sr, useScheduledTaskRuns as cr } from "./scheduled-task/use-scheduled-task-runs.js";
74
+ import { mapOfflineCredentialsResponse as lr, normalizeOfflineCredentialsConnectSettings as ur } from "./offline-credentials/map-offline-credentials-response.js";
75
+ import { OfflineCredentialsGateStatus as dr, useOfflineCredentialsGate as fr } from "./offline-credentials/useOfflineCredentialsGate/useOfflineCredentialsGate.js";
76
+ import { OfflineCredentialsLoginOutcomeType as pr, useOfflineCredentialsLogin as mr } from "./offline-credentials/useOfflineCredentialsLogin/useOfflineCredentialsLogin.js";
77
+ import { OfflineCredentialsLogoutOutcomeType as hr, useOfflineCredentialsAuth as gr } from "./offline-credentials/useOfflineCredentialsAuth/useOfflineCredentialsAuth.js";
78
+ import { checkScheduledTaskAuthSessionError as _r } from "./scheduled-task/check-scheduled-task-auth-session-error.js";
79
+ import { validateSkillFileBatch as vr } from "./skill/skill-file-batch-validation.js";
80
+ import { skillFileToAttachment as yr } from "./skill/skill-file-preview.js";
81
+ import { SkillEditorLoadState as br, useSkillEditorLoad as xr } from "./skill/useSkillEditorLoad.js";
82
+ import { useSkillEditorSubmit as Sr } from "./skill/useSkillEditorSubmit.js";
83
+ import { useSkillFileActions as Cr } from "./skill/useSkillFileActions.js";
84
+ import { SkillPreviewErrorKind as wr, useSkillFilePreview as Tr } from "./skill/useSkillFilePreview.js";
85
+ import { useSkillsState as Er } from "./skill/useSkillsState/useSkillsState.js";
86
+ import { SkillArchiveImportErrorKind as Dr, SkillArchiveImportStatus as Or, SkillArchiveSelectionRejectionReason as kr, classifySkillArchiveImportError as Ar, useSkillArchiveImport as jr } from "./skill/useSkillArchiveImport/useSkillArchiveImport.js";
87
+ import { RecipientsCountStatus as Mr, useShareRecipientsCount as Nr } from "./useShareRecipientsCount/useShareRecipientsCount.js";
88
+ import { deriveConversationRowActionState as Pr } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
89
+ import { useActiveConversationSync as Fr } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
90
+ import { useAsyncConfirmDialog as Ir } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
91
+ import { useConversationComposerDraft as Lr } from "./conversation/useConversationComposerDraft/useConversationComposerDraft.js";
92
+ import { useConversationLookupMaps as Rr } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
93
+ import { getConversationSource as zr, useConversationPanelItems as Br } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
94
+ import { useImportFilePicker as Vr } from "./conversation/useImportFilePicker/useImportFilePicker.js";
95
+ import { useMessageSelectionReply as Hr } from "./conversation/useMessageSelectionReply/useMessageSelectionReply.js";
96
+ import { sanitizeFileName as Ur, splitFileNameExtension as Wr, trimFileNameToByteLimit as Gr } from "./files/file-name.js";
97
+ import { useAttachmentUpload as Kr } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
98
+ import { AudioTranscriptionError as qr, AudioTranscriptionErrorReason as Jr } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
99
+ import { useTranscribeAudio as Yr } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
100
+ import { DEFAULT_MAX_ARCHIVE_BYTES as Xr, useConversationExport as Zr } from "./conversation/useConversationExport/useConversationExport.js";
101
+ import { attachmentToDto as Qr, attachmentsToDtos as $r } from "./conversation/useConversationHandlers/attachment-to-dto.js";
102
+ import { createMessagePair as ei } from "./conversation/useConversationHandlers/message-factory.js";
103
+ import { hasActiveToolConfig as ti, isAnswerIncomplete as ni, isMessageChanged as ri, shouldRerunGenerationOnEdit as ii } from "./conversation/useConversationHandlers/message-utils.js";
104
+ import { getStarterConversationText as ai, getStarterDisplayText as oi, getStarterSubmitText as si } from "./conversation/useConversationHandlers/starter-option.js";
105
+ import { getConversationPath as ci } from "./conversation/useConversationStream/conversation-path.js";
106
+ import { useConversationHandlers as li } from "./conversation/useConversationHandlers/useConversationHandlers.js";
107
+ import { useConversationImport as ui } from "./conversation/useConversationImport/useConversationImport.js";
108
+ import { useConversationScroll as di } from "./conversation/useConversationScroll/useConversationScroll.js";
109
+ import { applyChunkToMessages as fi, mergeStages as pi } from "./conversation/useConversationStream/apply-chunk.js";
110
+ import { isAwaitingGenerationResume as mi } from "./conversation/useConversationStream/generation-resume.js";
111
+ import { useConversationStream as hi } from "./conversation/useConversationStream/useConversationStream.js";
112
+ import { useConversationSources as gi } from "./conversation-sources/useConversationSources/useConversationSources.js";
113
+ import { DialFilesApiUploadMode as _i } from "./files/dial-files-api.js";
114
+ import { FileManagerNotificationReason as vi, FileNameValidationErrorReason as yi, FileOperationKind as bi } from "./files/dial-file-manager.types.js";
115
+ import { COLUMNS_MY_FILES as xi, COLUMNS_ORGANIZATION as Si, COLUMNS_SHARED as Ci, CORE_PERMISSION_MAP as wi, DATE_OPTIONS as Ti, DIAL_FILE_MANAGER_SECTION_TABS as Ei, PATH_SEPARATOR_REGEXP as Di, RESERVED_MARKER_NAME as Oi, UPLOAD_CONCURRENCY as ki } from "./files/dial-file-manager.model.js";
116
+ import { buildSharedItemVirtualPath as Ai, dialCorePathToRelative as ji, findDialFileByPath as Mi, findFolderByVirtualPath as Ni, formatOperationFolderName as Pi, getVirtualPathName as Fi, hasDialFileWritePermission as Ii, hasForbiddenNameSymbols as Li, hasSamePaths as Ri, isCopyMoveDuplicateAllowed as zi, isShareActionsAllowed as Bi, normalizeVirtualPath as Vi, parseNewFolderVirtualPath as Hi, resolveOwnerCoords as Ui, resolveSectionByPath as Wi, unionPathSets as Gi, withRoutableRootLabels as Ki } from "./files/dial-file-manager-path.util.js";
117
+ import { resolveDialFileApiPath as qi, virtualPathToApiPath as Ji } from "./files/resolve-dial-file-api-path.js";
118
+ import { prepareCopyItems as Yi, prepareMoveRenameItems as Xi } from "./files/dial-file-manager-copy-move.util.js";
119
+ import { buildFromCache as Zi, buildSharedSearchScope as Qi, fetchByTab as $i, fetchForSearch as ea, findFirstSuccessfulCopyMoveItem as ta, mapCorePermissions as na, mapFileMetadataToDialFile as ra, mapSearchItem as ia, mergeCreatedFolderIntoCache as aa, updateEntry as oa } from "./files/dial-file-manager-mapping.util.js";
120
+ import { createFilesApiClient as sa } from "./files/create-files-api.js";
121
+ import { createUploadFileWithProgress as ca } from "./files/create-upload-file-with-progress.js";
122
+ import { openAnnotationAttachment as la } from "./files/annotation.js";
123
+ import { annotationToOoxmlCanvasContent as ua, annotationToPdfCanvasContent as da, clearAttachmentCache as fa, hasAttachmentTextSource as pa, referenceAttachmentToPdfCanvasContent as ma, resolveCodeCanvasContent as ha, resolveGroupedVisualizerCanvasContent as ga, resolveHtmlCanvasContent as _a, resolveImageCanvasContent as va, resolveJsonCanvasContent as ya, resolveMarkdownCanvasContent as ba, resolveOoxmlCanvasContent as xa, resolvePdfCanvasContent as Sa, resolveTextCanvasContent as Ca, resolveVisualizerCanvasContent as wa } from "./files/attachment-canvas.js";
124
+ import { getUrlFileName as Ta, isExternalSourcePreviewable as Ea, resolveExternalSourceContentType as Da } from "./files/source-content.js";
125
+ import { annotationToDisplayAttachment as Oa, attachmentDtoToDisplayAttachment as ka, attachmentDtosToDisplayAttachments as Aa } from "./files/attachment-dto-to-display.js";
126
+ import { dialFileToAttachment as ja, dialFilesToAttachments as Ma, dialFolderPathToAttachment as Na } from "./files/dial-file-to-attachment.js";
127
+ import { DownloadDestinationType as Pa } from "./files/download-destination.js";
128
+ import { prepareDownloadDestination as Fa } from "./files/prepare-download-destination.js";
129
+ import { deriveActionProfile as Ia } from "./files/file-manager-variant.js";
130
+ import { useDialFileListing as La } from "./files/useDialFileListing/useDialFileListing.js";
131
+ import { useDialFileMetadata as Ra } from "./files/useDialFileMetadata/useDialFileMetadata.js";
132
+ import { useDialFileMutations as za } from "./files/useDialFileMutations/useDialFileMutations.js";
133
+ import { useDialFileSharing as Ba } from "./files/useDialFileSharing/useDialFileSharing.js";
134
+ import { useDialFileUploadBatch as Va } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
135
+ import { useDialFileManager as Ha } from "./files/useDialFileManager/useDialFileManager.js";
136
+ import { useDialFileManagerSections as Ua } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
137
+ import { useDialFileManagerTabConfig as Wa } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
138
+ import { useFileAttachmentPicker as Ga } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
139
+ import { getBrowserTimezone as Ka } from "./shared/browser-timezone.js";
140
+ import { isValidAbsoluteUrl as qa, isValidFeaturesData as Ja, parseFeaturesData as Ya } from "./shared/custom-apps.js";
141
+ import { buildExternalServiceScopeId as Xa, getExternalServiceFallbackName as Za, parseExternalServiceUrl as Qa } from "./shared/external-services.js";
142
+ import { useChatSettingsFormConfig as $a } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
143
+ import { usePageFileDrag as eo } from "./usePageFileDrag/usePageFileDrag.js";
144
+ import { useViewportWidth as to } from "./useViewportWidth/useViewportWidth.js";
145
+ import { usePanelMaxWidth as no } from "./usePanelMaxWidth/usePanelMaxWidth.js";
146
+ import { useShareLink as ro } from "./useShareLink/useShareLink.js";
147
+ import { useToolsMenu as io } from "./useToolsMenu/useToolsMenu.js";
148
+ import { USAGE_DATA_I18N_KEYS as ao, mapUsageDataToDashboard as oo } from "./usage/map-usage-data-to-dashboard.js";
149
+ import { USAGE_MODEL_LIMITS_I18N_KEYS as so, mapOverallCostLimitsToPeriodStatuses as co, mapUserUsageToModelLimits as lo } from "./usage/map-user-usage-to-model-limits.js";
150
+ import { UsagePeriod as uo } from "./usage/usage-period.js";
151
+ import { isCappedStat as fo, selectUsageBannerSource as po } from "./usage/usage-banner-source.js";
152
+ import { USAGE_RESET_I18N_KEYS as mo, formatUsageResetShort as ho, formatUsageResetTime as go } from "./usage/usage-reset-time.js";
153
+ import { useDeploymentUsageLimits as _o } from "./usage/useDeploymentUsageLimits/useDeploymentUsageLimits.js";
154
+ import { useRefreshUsageAfterGeneration as vo } from "./usage/useRefreshUsageAfterGeneration/useRefreshUsageAfterGeneration.js";
155
+ import { resetUsageLimitBannerDismissals as yo, useUsageLimitBannerDismissal as bo } from "./usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js";
156
+ import { USAGE_BANNER_I18N_KEYS as xo, useUsageLimitBanner as So } from "./usage/useUsageLimitBanner/useUsageLimitBanner.js";
157
+ import { useUsageData as Co } from "./usage/useUsageData/useUsageData.js";
158
+ import { McpAppResourceFetchError as wo, createMcpAppsApiClient as To } from "./mcp-apps/mcp-apps-api-client.js";
159
+ import { useMcpAppTools as Eo } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
160
+ import { useMcpAppHostContext as Do } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
161
+ import { useMcpAppHostAdapter as Oo } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
162
+ import { useOpenMcpAppCanvas as ko } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
163
+ import { useGridEditingScroll as Ao } from "@epam/ai-dial-chat-shared";
164
+ export { x as AttachmentValidationErrorReason, qr as AudioTranscriptionError, Jr as AudioTranscriptionErrorReason, B as AuthenticationType, xi as COLUMNS_MY_FILES, Si as COLUMNS_ORGANIZATION, Ci as COLUMNS_SHARED, wi as CORE_PERMISSION_MAP, Ct as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, Ti as DATE_OPTIONS, he as DEFAULT_ENTITY_DETAILS_LABELS, nn as DEFAULT_GENERATION_CONFLICT_MESSAGE, rn as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, Xr as DEFAULT_MAX_ARCHIVE_BYTES, an as DEFAULT_STREAM_IDLE_TIMEOUT_MS, Ei as DIAL_FILE_MANAGER_SECTION_TABS, _i as DialFilesApiUploadMode, Pa as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, Kt as FavoriteEntityType, vi as FileManagerNotificationReason, yi as FileNameValidationErrorReason, bi as FileOperationKind, on as GenerationConflictError, sn as GenerationPersistenceError, wo as McpAppResourceFetchError, ct as McpResourceKind, W as OAuthResourceKind, dr as OfflineCredentialsGateStatus, pr as OfflineCredentialsLoginOutcomeType, hr as OfflineCredentialsLogoutOutcomeType, Di as PATH_SEPARATOR_REGEXP, Rn as PROMPT_CONTENT_MAX_LENGTH, zn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, Bn as PROMPT_DESCRIPTION_MAX_LENGTH, Vn as PROMPT_NAME_MAX_LENGTH, Je as PUBLIC_SKILL_BUCKET, Hn as PromptFieldError, Ce as PromptSource, Oi as RESERVED_MARKER_NAME, Mr as RecipientsCountStatus, Oe as SKILL_FILE_UPLOAD_MAX_BYTES, ke as SKILL_FOLDER_MARKER, Ye as SKILL_LISTING_MAX_PAGES, Xe as SKILL_LISTING_PAGE_SIZE, Ae as SKILL_MANIFEST_FILE, Ze as SKILL_MANIFEST_MAX_BYTES, je as SKILL_TEXT_FIELD_MAX_LENGTHS, Me as SKILL_UPLOAD_MAX_FILES, Ne as SKILL_UPLOAD_MAX_TOTAL_BYTES, Xn as ScheduledTaskTriggerDescriptionKind, Dr as SkillArchiveImportErrorKind, Or as SkillArchiveImportStatus, kr as SkillArchiveSelectionRejectionReason, br as SkillEditorLoadState, wr as SkillPreviewErrorKind, Qe as SkillSource, cn as StopCompletionError, ln as StreamInterruptedError, un as StreamUpstreamError, G as TOOLSET_REDIRECT_STATE_KEY, K as ToolsetAuthStatus, q as ToolsetAuthTypes, J as ToolsetCredentialsLevel, Vt as ToolsetLoginOutcomeType, Y as ToolsetOAuthCallbackQuery, X as ToolsetOAuthChannelControlType, Z as ToolsetOAuthFailureReason, Q as ToolsetOAuthInitiationResultType, $ as ToolsetOAuthResultType, ki as UPLOAD_CONCURRENCY, xo as USAGE_BANNER_I18N_KEYS, ao as USAGE_DATA_I18N_KEYS, so as USAGE_MODEL_LIMITS_I18N_KEYS, mo as USAGE_RESET_I18N_KEYS, Yn as UnsupportedTriggerReason, uo as UsagePeriod, ee as WithLogin, Oa as annotationToDisplayAttachment, ua as annotationToOoxmlCanvasContent, da as annotationToPdfCanvasContent, Qn as apSchedulerDayToJsDay, se as appendLocaleCode, fi as applyChunkToMessages, ka as attachmentDtoToDisplayAttachment, Aa as attachmentDtosToDisplayAttachments, Qr as attachmentToDto, $r as attachmentsToDtos, ce as buildAdditionalLocaleOptions, Yt as buildAnnouncementSignature, lt as buildApplicationMcpUrl, N as buildChatCompletionsUrl, ut as buildConnectApi, P as buildDeploymentConnectApi, Xa as buildExternalServiceScopeId, Zi as buildFromCache, Fn as buildPromptExportEnvelope, In as buildPromptExportFileName, Te as buildPromptOverview, Un as buildPromptPath, V as buildResetFields, F as buildResponsesUrl, Ai as buildSharedItemVirtualPath, Qi as buildSharedSearchScope, et as buildSkillContentTree, Pe as buildSkillFilesPayload, Fe as buildSkillManifest, Ie as buildSkillManifestForSubmit, Le as buildSkillManifestFromFrontmatter, tt as buildSkillOverview, It as buildToolsetAuthorizeUrl, dt as buildToolsetMcpUrl, _r as checkScheduledTaskAuthSessionError, Ar as classifySkillArchiveImportError, fa as clearAttachmentCache, le as composeLocalePayload, dn as createChatStreamApi, i as createCsrfMiddleware, yn as createDeploymentChangedMessage, sa as createFilesApiClient, To as createMcpAppsApiClient, en as createMemoryConversationDraftStore, ei as createMessagePair, j as createPublishApiClient, ar as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, ca as createUploadFileWithProgress, tn as createWebStorageConversationDraftStore, I as decodeDeploymentId, te as decodeToolsetId, ue as decomposeLocalizedFields, Ia as deriveActionProfile, vt as deriveAvailableTabIds, Pr as deriveConversationRowActionState, yt as deriveFavoriteItems, Zn as describeScheduledTaskTrigger, ji as dialCorePathToRelative, ja as dialFileToAttachment, Ma as dialFilesToAttachments, Na as dialFolderPathToAttachment, m as downloadAttachment, Mt as emitToolsetLoginSuccess, L as encodeDeploymentId, ne as encodeToolsetId, $i as fetchByTab, ea as fetchForSearch, bt as filterCatalogItemsBySelector, xt as filterHiddenOwnedItems, R as findDeploymentByIdOrReference, hn as findDeploymentForConversationId, Mi as findDialFileByPath, ta as findFirstSuccessfulCopyMoveItem, Ni as findFolderByVirtualPath, pn as formatAppVersion, pe as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Pi as formatOperationFolderName, A as formatQuotedNameList, ho as formatUsageResetShort, go as formatUsageResetTime, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Ka as getBrowserTimezone, ci as getConversationPath, zr as getConversationSource, Za as getExternalServiceFallbackName, bn as getFormSchemaToolSyncKey, xn as getLastDeploymentId, Sn as getLastUserMessageToolConfiguration, Cn as getLatestToolConfiguration, gn as getModelIdCandidatesFromConversationId, _n as getModelIdFromConversationId, pt as getPublicCatalogEntityFolderPath, kn as getQuickAppConversationStarters, Wn as getRemainingCharacters, Tt as getRunnerSchemas, Re as getSkillFieldLengthViolations, ai as getStarterConversationText, oi as getStarterDisplayText, Mn as getStarterPopulateText, si as getStarterSubmitText, Nn as getStartersFromSchema, vn as getTimeOfDayGreeting, wn as getToolConfigurationFromFormSchema, Pt as getToolsetOAuthChannelName, Lt as getToolsetRedirectUri, Ta as getUrlFileName, Fi as getVirtualPathName, ti as hasActiveToolConfig, Xt as hasAnnouncementContent, pa as hasAttachmentTextSource, Ii as hasDialFileWritePermission, Li as hasForbiddenNameSymbols, Ri as hasSamePaths, Zt as hasStructuredAnnouncement, o as includesIgnoreCase, Rt as initiateOAuthLogin, ni as isAnswerIncomplete, mi as isAwaitingGenerationResume, fo as isCappedStat, r as isConversationNotFoundError, zi as isCopyMoveDuplicateAllowed, Et as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, Ea as isExternalSourcePreviewable, ri as isMessageChanged, Tn as isMessageStreaming, Ee as isOrganisationPromptItem, mt as isPublicCatalogEntityId, re as isPublicToolsetId, Dt as isQuickAppSchema, Bi as isShareActionsAllowed, ze as isSkillFolderMarkerPath, qa as isValidAbsoluteUrl, Ja as isValidFeaturesData, Be as isValidSkillRelativePath, $n as jsDayToApSchedulerDay, na as mapCorePermissions, ge as mapDeploymentDetailsDtoToEntityDetails, U as mapDeploymentLimitsDtoToCatalogLimits, H as mapDeploymentLimitsToInput, ye as mapDeploymentToCatalogItem, be as mapDeploymentToolsetCredentials, _e as mapEntityDetailsToCatalogDetails, ra as mapFileMetadataToDialFile, er as mapFormValuesToCreateBody, tr as mapFormValuesToUpdateBody, lr as mapOfflineCredentialsResponse, co as mapOverallCostLimitsToPeriodStatuses, De as mapPromptToCatalogItem, ht as mapPublishConversationResultDto, gt as mapPublishHistoryEntryDto, nr as mapScheduledTaskDtoToFormValues, ia as mapSearchItem, nt as mapSkillToCatalogItem, An as mapStages, ve as mapToolsetCredentials, xe as mapToolsetToCatalogItem, oo as mapUsageDataToDashboard, lo as mapUserUsageToModelLimits, aa as mergeCreatedFolderIntoCache, sr as mergeRunsById, pi as mergeStages, En as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, Ve as nameFromPath, zt as navigateToolsetOAuthPopup, z as normalizeDeploymentId, ur as normalizeOfflineCredentialsConnectSettings, Dn as normalizeResponseFormat, He as normalizeSkillName, ie as normalizeToolsetId, Vi as normalizeVirtualPath, la as openAnnotationAttachment, Bt as openToolsetOAuthPopup, me as padTwoDigits, Qa as parseExternalServiceUrl, Ya as parseFeaturesData, Hi as parseNewFolderVirtualPath, we as parsePromptResourceUrl, Ue as parseSkillManifest, kt as parseSkillManifestDocument, $e as parseSkillResourceUrl, Yi as prepareCopyItems, Fa as prepareDownloadDestination, Xi as prepareMoveRenameItems, rr as prepareScheduledTaskCreateBody, ir as prepareScheduledTaskUpdateBody, rt as readSkillFileBytes, it as readSkillFilePreviewBytes, at as readSkillManifest, St as reconcileFilterTopics, ma as referenceAttachmentToPdfCanvasContent, yo as resetUsageLimitBannerDismissals, wt as resolveCatalogPrimaryAction, ha as resolveCodeCanvasContent, Se as resolveDeploymentFolder, qi as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, Da as resolveExternalSourceContentType, ga as resolveGroupedVisualizerCanvasContent, _a as resolveHtmlCanvasContent, va as resolveImageCanvasContent, ya as resolveJsonCanvasContent, de as resolveLocalizedText, ba as resolveMarkdownCanvasContent, ft as resolveMcpResourceKind, xa as resolveOoxmlCanvasContent, Ui as resolveOwnerCoords, Sa as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Wi as resolveSectionByPath, ot as resolveSkillFileDownloadPath, st as resolveSkillManifestFileId, Ca as resolveTextCanvasContent, ae as resolveToolsetCredentialsLevel, wa as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Qt as sanitizeAnnouncementHtml, $t as sanitizeAnnouncementMessageHtml, Ur as sanitizeFileName, mn as sanitizeFooterHtml, oe as selectToolsetAuthStatus, po as selectUsageBannerSource, Ln as serializePromptExport, ii as shouldRerunGenerationOnEdit, fn as shouldWatchForDisplayNameUpdate, We as skillFileBytesToBlob, yr as skillFileToAttachment, Ge as skillFolderMarkerParent, Wr as splitFileNameExtension, Ke as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, Nt as subscribeToolsetLoginSuccess, fe as toBaseLocale, On as toOverlayMessages, _t as toPublishEntityType, M as toPublishRuleDto, jn as toStage, Gr as trimFileNameToByteLimit, Gi as unionPathSets, qe as unpackSkillArchive, oa as updateEntry, Fr as useActiveConversationSync, Wt as useApplicationCredentials, Ir as useAsyncConfirmDialog, g as useAttachmentAction, Kr as useAttachmentUpload, S as useAttachmentValidation, Ot as useCatalogEditNavigation, jt as useCatalogItemDetails, Ut as useCatalogToolsetCredentials, $a as useChatSettingsFormConfig, Lr as useConversationComposerDraft, Zr as useConversationExport, li as useConversationHandlers, ui as useConversationImport, Rr as useConversationLookupMaps, Br as useConversationPanelItems, di as useConversationScroll, gi as useConversationSources, hi as useConversationStream, _o as useDeploymentUsageLimits, La as useDialFileListing, Ha as useDialFileManager, Ua as useDialFileManagerSections, Wa as useDialFileManagerTabConfig, Ra as useDialFileMetadata, za as useDialFileMutations, Ba as useDialFileSharing, Va as useDialFileUploadBatch, qt as useFavoriteEntitiesState, Ga as useFileAttachmentPicker, Ao as useGridEditingScroll, Vr as useImportFilePicker, Oo as useMcpAppHostAdapter, Do as useMcpAppHostContext, Eo as useMcpAppTools, Hr as useMessageSelectionReply, Pn as useOAuthCallbackCompletion, gr as useOfflineCredentialsAuth, fr as useOfflineCredentialsGate, mr as useOfflineCredentialsLogin, ko as useOpenMcpAppCanvas, eo as usePageFileDrag, no as usePanelMaxWidth, Jn as usePromptsState, Jt as usePublishFolders, vo as useRefreshUsageAfterGeneration, cr as useScheduledTaskRuns, or as useScheduledTasks, ro as useShareLink, Nr as useShareRecipientsCount, jr as useSkillArchiveImport, Gt as useSkillDetailsPanelData, xr as useSkillEditorLoad, Sr as useSkillEditorSubmit, Cr as useSkillFileActions, Tr as useSkillFilePreview, At as useSkillItemDetails, Er as useSkillsState, io as useToolsMenu, Ht as useToolsetLogin, Yr as useTranscribeAudio, Co as useUsageData, So as useUsageLimitBanner, bo as useUsageLimitBannerDismissal, to as useViewportWidth, Gn as validatePromptContent, Kn as validatePromptDescription, qn as validatePromptName, vr as validateSkillFileBatch, Ji as virtualPathToApiPath, Ft as waitForToolsetOAuthResult, Ki as withRoutableRootLabels };
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.3.0-dev.96",
4
+ "version": "1.3.0-dev.98",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -121,7 +121,7 @@
121
121
  }
122
122
  },
123
123
  "dependencies": {
124
- "@epam/ai-dial-chat-api-client": "1.3.0-dev.96",
124
+ "@epam/ai-dial-chat-api-client": "1.3.0-dev.98",
125
125
  "dompurify": "3.4.16",
126
126
  "fflate": "^0.8.3",
127
127
  "lru-cache": "^10.4.3",
@@ -130,22 +130,22 @@
130
130
  },
131
131
  "peerDependencies": {
132
132
  "react": "^19.2.8",
133
- "@epam/ai-dial-attachment-canvas": "1.3.0-dev.96",
134
- "@epam/ai-dial-attachment-input": "1.3.0-dev.96",
135
- "@epam/ai-dial-catalog": "1.3.0-dev.96",
136
- "@epam/ai-dial-chat-overlay": "1.3.0-dev.96",
137
- "@epam/ai-dial-chat-shared": "1.3.0-dev.96",
138
- "@epam/ai-dial-conversation-input": "1.3.0-dev.96",
139
- "@epam/ai-dial-mcp-apps": "1.3.0-dev.96",
140
- "@epam/ai-dial-publish-panel": "1.3.0-dev.96",
141
- "@epam/ai-dial-quotations": "1.3.0-dev.96",
142
- "@epam/ai-dial-react-file-manager": "^0.4.0-dev.7",
143
- "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.96",
144
- "@epam/ai-dial-share": "1.3.0-dev.96",
145
- "@epam/ai-dial-skill-editor": "1.3.0-dev.96",
146
- "@epam/ai-dial-source-panel": "1.3.0-dev.96",
133
+ "@epam/ai-dial-attachment-canvas": "1.3.0-dev.98",
134
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.98",
135
+ "@epam/ai-dial-catalog": "1.3.0-dev.98",
136
+ "@epam/ai-dial-chat-overlay": "1.3.0-dev.98",
137
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.98",
138
+ "@epam/ai-dial-conversation-input": "1.3.0-dev.98",
139
+ "@epam/ai-dial-mcp-apps": "1.3.0-dev.98",
140
+ "@epam/ai-dial-publish-panel": "1.3.0-dev.98",
141
+ "@epam/ai-dial-quotations": "1.3.0-dev.98",
142
+ "@epam/ai-dial-react-file-manager": "^0.4.0-dev.9",
143
+ "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.98",
144
+ "@epam/ai-dial-share": "1.3.0-dev.98",
145
+ "@epam/ai-dial-skill-editor": "1.3.0-dev.98",
146
+ "@epam/ai-dial-source-panel": "1.3.0-dev.98",
147
147
  "@epam/ai-dial-ui-kit": "^0.16.0-dev.13",
148
- "@epam/ai-dial-usage-dashboard": "1.3.0-dev.96",
148
+ "@epam/ai-dial-usage-dashboard": "1.3.0-dev.98",
149
149
  "@modelcontextprotocol/sdk": "^1.32.1",
150
150
  "@epam/pdf-highlighter-kit": "^0.0.19",
151
151
  "@mcp-ui/client": "^7.1.1"