@epam/ai-dial-chat-hooks 1.1.0-dev.435 → 1.1.0-dev.438
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.
- package/conversation/conversation-transfer/import-conversation.js +27 -26
- package/conversation/create-chat-stream-api.js +45 -37
- package/conversation/useConversationImport/useConversationImport.js +1 -1
- package/conversation/useConversationStream/useConversationStream.js +108 -104
- package/conversation.d.ts +22 -1
- package/conversation.js +30 -30
- package/index.d.ts +22 -1
- package/index.js +89 -89
- package/package.json +15 -15
|
@@ -1,48 +1,49 @@
|
|
|
1
1
|
import { collectAttachmentRefs as e } from "./attachment-refs.js";
|
|
2
2
|
import { resolveDialFileBucketAndPath as t } from "./dial-file-resolve.js";
|
|
3
|
-
import { generateUUID as n } from "@epam/ai-dial-chat-shared";
|
|
3
|
+
import { generateUUID as n, sanitizeConversationName as r, stripTrailingDots as i, truncateToUtf8Bytes as a } from "@epam/ai-dial-chat-shared";
|
|
4
4
|
//#region src/conversation/conversation-transfer/import-conversation.ts
|
|
5
|
-
var
|
|
5
|
+
var o = class extends Error {
|
|
6
6
|
constructor(e) {
|
|
7
7
|
super(e), this.name = "UnsupportedImportFormatError";
|
|
8
8
|
}
|
|
9
|
-
},
|
|
9
|
+
}, s = (e) => typeof e == "object" && !!e, c = 5, l = (e) => {
|
|
10
10
|
let t;
|
|
11
11
|
try {
|
|
12
12
|
t = JSON.parse(e);
|
|
13
13
|
} catch {
|
|
14
|
-
throw new
|
|
14
|
+
throw new o("Import file is not valid JSON");
|
|
15
15
|
}
|
|
16
|
-
if (!
|
|
16
|
+
if (!s(t) || t.version !== c || !Array.isArray(t.history)) throw new o("Import file is not a supported export format");
|
|
17
17
|
let n = Array.isArray(t.folders) ? t.folders : [];
|
|
18
18
|
return {
|
|
19
|
-
version:
|
|
19
|
+
version: c,
|
|
20
20
|
history: t.history,
|
|
21
21
|
folders: n
|
|
22
22
|
};
|
|
23
|
-
},
|
|
24
|
-
let
|
|
25
|
-
if (
|
|
26
|
-
let
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
].
|
|
23
|
+
}, u = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, d = "__", f = 255, p = "applications", m = /[-+]/, h = /^\d+$/, g = (e) => e ? e.split(m)[0].split(".").every((e) => h.test(e)) : !1, _ = (e) => i(a(e.replace(/\r\n|\r/g, "\n").split("\n").map((e) => r(e).trim()).filter(Boolean)[0] ?? "", f)).trimEnd(), v = (e, t, r) => {
|
|
24
|
+
let i = e.split(d);
|
|
25
|
+
if (i.length < 2) return [e, n()].join(d);
|
|
26
|
+
let a = r && g(i[1]) ? i.slice(0, 2) : i.slice(0, 1), o = a.length > 1 ? u.test(i[i.length - 1]) : i.length >= 3, s = i.slice(a.length, o ? -1 : void 0).join(d);
|
|
27
|
+
return [
|
|
28
|
+
...a,
|
|
29
|
+
t || s,
|
|
30
|
+
n()
|
|
31
|
+
].join(d);
|
|
32
|
+
}, y = "conversations/", b = (e) => e.startsWith(y) ? e.slice(14) : e, x = (e, t) => {
|
|
33
|
+
let n = b(e.id), r = n.split("/"), i = b(e.folderId), a = r[0], o = i.startsWith(`${a}/`) ? i.slice(a.length + 1).split("/").filter(Boolean) : [], s = r.slice(1).slice(o.length), c = s.slice(0, -1), l = s.at(-1) ?? r.at(-1) ?? n, u = [...o, ...c], d = _(e.name), f = v(l, d, u[0] === p), m = [...u, f].join("/"), h = o.length ? `${t}/${o.join("/")}` : t;
|
|
34
34
|
return {
|
|
35
35
|
conversation: {
|
|
36
36
|
...e,
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
...d ? { name: d } : {},
|
|
38
|
+
id: `${t}/${m}`,
|
|
39
|
+
folderId: h
|
|
39
40
|
},
|
|
40
|
-
subPath:
|
|
41
|
+
subPath: m
|
|
41
42
|
};
|
|
42
|
-
},
|
|
43
|
-
let t =
|
|
43
|
+
}, S = (e) => {
|
|
44
|
+
let t = b(e.folderId).split("/").filter(Boolean).slice(1);
|
|
44
45
|
return t.length ? t.join(" / ") : void 0;
|
|
45
|
-
},
|
|
46
|
+
}, C = (e) => e.map((e) => `"${e}"`).join(", "), w = (e, t) => ({
|
|
46
47
|
...e,
|
|
47
48
|
messages: e.messages.map((e) => {
|
|
48
49
|
let n = e.custom_content?.attachments;
|
|
@@ -64,12 +65,12 @@ var r = class extends Error {
|
|
|
64
65
|
}
|
|
65
66
|
} : e;
|
|
66
67
|
})
|
|
67
|
-
}),
|
|
68
|
+
}), T = (e) => e.split("/").pop() || e, E = (n, r, i) => {
|
|
68
69
|
let a = [], o = [];
|
|
69
70
|
for (let s of e(n)) {
|
|
70
71
|
let e = t(s.fileId);
|
|
71
72
|
if (!e) {
|
|
72
|
-
o.push(
|
|
73
|
+
o.push(T(s.fileId));
|
|
73
74
|
continue;
|
|
74
75
|
}
|
|
75
76
|
let n = e.path.split("/").pop() ?? e.path, c = r.get(e.path);
|
|
@@ -90,4 +91,4 @@ var r = class extends Error {
|
|
|
90
91
|
};
|
|
91
92
|
};
|
|
92
93
|
//#endregion
|
|
93
|
-
export {
|
|
94
|
+
export { o as UnsupportedImportFormatError, C as formatQuotedNameList, S as getFolderBreadcrumb, l as parseImportEnvelope, E as planAttachmentUploads, x as rebaseConversationId, w as rewriteAttachmentUrls };
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
//#region src/conversation/create-chat-stream-api.ts
|
|
2
|
-
var e = { "Content-Type": "application/json" }, t =
|
|
2
|
+
var e = { "Content-Type": "application/json" }, t = 409, n = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.", r = class extends Error {
|
|
3
|
+
constructor(e = n) {
|
|
4
|
+
super(e), this.name = "GenerationConflictError";
|
|
5
|
+
}
|
|
6
|
+
}, i = (e, t, n) => {
|
|
3
7
|
let r = e.trim();
|
|
4
8
|
if (!r || r.startsWith(":") || !r.startsWith("data: ")) return;
|
|
5
9
|
let i = r.slice(6);
|
|
@@ -11,75 +15,79 @@ var e = { "Content-Type": "application/json" }, t = (e, t, n) => {
|
|
|
11
15
|
}
|
|
12
16
|
t(e);
|
|
13
17
|
} catch {}
|
|
14
|
-
},
|
|
15
|
-
let { completionsBasePath:
|
|
18
|
+
}, a = (n) => {
|
|
19
|
+
let { completionsBasePath: a } = n, o = (...e) => (n.fetchImpl ?? fetch)(...e);
|
|
16
20
|
return {
|
|
17
|
-
streamCompletion: (
|
|
18
|
-
let { onChunk:
|
|
21
|
+
streamCompletion: (s, c, l, u, d, f, p, m, h) => {
|
|
22
|
+
let { onChunk: g, onComplete: _, onError: v, signal: y } = u;
|
|
19
23
|
(async () => {
|
|
20
|
-
let
|
|
24
|
+
let u;
|
|
21
25
|
try {
|
|
22
26
|
let t = n.getTimezone?.();
|
|
23
|
-
|
|
27
|
+
u = await o(`${a}/completions`, {
|
|
24
28
|
method: "POST",
|
|
25
29
|
credentials: "include",
|
|
26
|
-
signal:
|
|
30
|
+
signal: y,
|
|
27
31
|
headers: {
|
|
28
32
|
...e,
|
|
29
33
|
...n.getCsrfToken() == null ? {} : { "X-CSRF-Token": n.getCsrfToken() },
|
|
30
34
|
...t ? { "X-Timezone": t } : {}
|
|
31
35
|
},
|
|
32
36
|
body: JSON.stringify({
|
|
33
|
-
path:
|
|
34
|
-
message:
|
|
35
|
-
model:
|
|
36
|
-
custom_content:
|
|
37
|
-
...
|
|
38
|
-
...
|
|
39
|
-
...
|
|
40
|
-
...
|
|
37
|
+
path: s,
|
|
38
|
+
message: c ?? "",
|
|
39
|
+
model: l,
|
|
40
|
+
custom_content: d || {},
|
|
41
|
+
...f != null && { generationId: f },
|
|
42
|
+
...p != null && { mode: p },
|
|
43
|
+
...m != null && { messageIndex: m },
|
|
44
|
+
...h != null && { clientChannelId: h }
|
|
41
45
|
})
|
|
42
46
|
});
|
|
43
47
|
} catch (e) {
|
|
44
48
|
if (e instanceof Error && e.name === "AbortError") return;
|
|
45
|
-
|
|
49
|
+
v(e instanceof Error ? e : Error(String(e)));
|
|
46
50
|
return;
|
|
47
51
|
}
|
|
48
|
-
let
|
|
49
|
-
if (
|
|
50
|
-
|
|
52
|
+
let b = u.headers.get("x-csrf-token");
|
|
53
|
+
if (b && n.setCsrfToken(b), !u.ok) {
|
|
54
|
+
if (u.status === t) {
|
|
55
|
+
v(new r());
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
v(/* @__PURE__ */ Error(`Stream request failed with status ${u.status}`));
|
|
51
59
|
return;
|
|
52
60
|
}
|
|
53
|
-
if (!
|
|
54
|
-
|
|
61
|
+
if (!u.body) {
|
|
62
|
+
v(/* @__PURE__ */ Error("No response body"));
|
|
55
63
|
return;
|
|
56
64
|
}
|
|
57
|
-
let
|
|
58
|
-
|
|
65
|
+
let x = u.body.getReader(), S = new TextDecoder(), C = "", w = !1, T = (e) => {
|
|
66
|
+
w = !0, v(e);
|
|
59
67
|
};
|
|
60
68
|
try {
|
|
61
69
|
for (;;) {
|
|
62
|
-
let { done: e, value:
|
|
70
|
+
let { done: e, value: t } = await x.read();
|
|
63
71
|
if (e) {
|
|
64
|
-
|
|
72
|
+
C.trim() && i(C, g, T);
|
|
65
73
|
break;
|
|
66
74
|
}
|
|
67
|
-
|
|
68
|
-
let
|
|
69
|
-
|
|
70
|
-
for (let e of
|
|
75
|
+
C += S.decode(t, { stream: !0 });
|
|
76
|
+
let n = C.split("\n");
|
|
77
|
+
C = n.pop() ?? "";
|
|
78
|
+
for (let e of n) i(e, g, T);
|
|
71
79
|
}
|
|
72
|
-
|
|
80
|
+
w || _();
|
|
73
81
|
} catch (e) {
|
|
74
82
|
if (e instanceof Error && e.name === "AbortError") return;
|
|
75
|
-
|
|
83
|
+
v(e instanceof Error ? e : Error(String(e)));
|
|
76
84
|
} finally {
|
|
77
|
-
|
|
85
|
+
x.releaseLock();
|
|
78
86
|
}
|
|
79
87
|
})();
|
|
80
88
|
},
|
|
81
89
|
stopCompletion: async (t) => {
|
|
82
|
-
let
|
|
90
|
+
let r = await o(`${a}/completions/stop`, {
|
|
83
91
|
method: "POST",
|
|
84
92
|
credentials: "include",
|
|
85
93
|
headers: {
|
|
@@ -87,10 +95,10 @@ var e = { "Content-Type": "application/json" }, t = (e, t, n) => {
|
|
|
87
95
|
...n.getCsrfToken() == null ? {} : { "X-CSRF-Token": n.getCsrfToken() }
|
|
88
96
|
},
|
|
89
97
|
body: JSON.stringify(t)
|
|
90
|
-
}),
|
|
91
|
-
if (
|
|
98
|
+
}), i = r.headers.get("x-csrf-token");
|
|
99
|
+
if (i && n.setCsrfToken(i), !r.ok) throw Error(`stopCompletion failed: ${r.status}`);
|
|
92
100
|
}
|
|
93
101
|
};
|
|
94
102
|
};
|
|
95
103
|
//#endregion
|
|
96
|
-
export { n as createChatStreamApi };
|
|
104
|
+
export { n as DEFAULT_GENERATION_CONFLICT_MESSAGE, r as GenerationConflictError, a as createChatStreamApi };
|
|
@@ -154,7 +154,7 @@ var b = 5, x = 5, S = (e) => /\.(dial|zip)$/i.test(e.name), C = (e) => new Promi
|
|
|
154
154
|
llmNamingDone: !0
|
|
155
155
|
} }
|
|
156
156
|
}, { signal: f }), f.aborted) return;
|
|
157
|
-
k.push(
|
|
157
|
+
k.push(n.name);
|
|
158
158
|
} catch (t) {
|
|
159
159
|
if (f.aborted) return;
|
|
160
160
|
if (F(t)) {
|
|
@@ -1,148 +1,152 @@
|
|
|
1
1
|
import { safeDecodeURI as e } from "../../shared/string-utils.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
2
|
+
import { DEFAULT_GENERATION_CONFLICT_MESSAGE as t, GenerationConflictError as n } from "../create-chat-stream-api.js";
|
|
3
|
+
import { getConversationPath as r } from "./conversation-path.js";
|
|
4
|
+
import { applyChunkToMessages as i } from "./apply-chunk.js";
|
|
5
|
+
import { restoreBufferedMessage as a } from "./buffered-generation.js";
|
|
6
|
+
import { createResumeIfAwaitingGeneration as o } from "./generation-resume.js";
|
|
7
|
+
import { generateUUID as s } from "@epam/ai-dial-chat-shared";
|
|
8
|
+
import { useCallback as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
9
|
+
import { SendCompletionDtoModeEnum as p } from "@epam/ai-dial-chat-api-client";
|
|
9
10
|
//#region src/conversation/useConversationStream/useConversationStream.ts
|
|
10
|
-
var
|
|
11
|
-
let [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, [
|
|
15
|
-
let
|
|
16
|
-
|
|
11
|
+
var m = 2e4, h = ({ conversationId: h, state: { setConversation: g, conversationRef: _ }, transport: v, generation: { startGeneration: y, completeGeneration: b }, channel: x, overlay: S, onStopError: C, generationConflictMessage: w = t }) => {
|
|
12
|
+
let [T, E] = f(() => /* @__PURE__ */ new Set()), [D, O] = f(null), k = d(null), A = d(null), j = d(/* @__PURE__ */ new Set()), M = d(/* @__PURE__ */ new Map()), N = d(/* @__PURE__ */ new Set()), P = d(/* @__PURE__ */ new Map()), F = d(h);
|
|
13
|
+
l(() => {
|
|
14
|
+
F.current = h;
|
|
15
|
+
}, [h]);
|
|
16
|
+
let I = c((e) => r(F.current ?? "") === e, []), L = c((e) => {
|
|
17
|
+
E((t) => {
|
|
17
18
|
if (t.has(e)) return t;
|
|
18
19
|
let n = new Set(t);
|
|
19
20
|
return n.add(e), n;
|
|
20
21
|
});
|
|
21
|
-
}, []),
|
|
22
|
-
|
|
22
|
+
}, []), R = c((e) => {
|
|
23
|
+
E((t) => {
|
|
23
24
|
if (!t.has(e)) return t;
|
|
24
25
|
let n = new Set(t);
|
|
25
26
|
return n.delete(e), n;
|
|
26
27
|
});
|
|
27
|
-
}, []),
|
|
28
|
-
let
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
let
|
|
33
|
-
|
|
34
|
-
generationId:
|
|
35
|
-
messageIndex:
|
|
36
|
-
message:
|
|
37
|
-
}) :
|
|
38
|
-
let
|
|
39
|
-
signal:
|
|
28
|
+
}, []), z = c((t, o, c, l, u, d, f = p.Append) => {
|
|
29
|
+
let h = d ?? s(), C = r(t);
|
|
30
|
+
k.current = h, A.current = C, P.current.set(C, h), O(C);
|
|
31
|
+
let T;
|
|
32
|
+
f === p.Regenerate ? T = c : f === p.Edit && (T = c - 1);
|
|
33
|
+
let E = () => P.current.get(C) !== h, D = y(C, h), j = _.current?.messages[c];
|
|
34
|
+
j ? M.current.set(C, {
|
|
35
|
+
generationId: h,
|
|
36
|
+
messageIndex: c,
|
|
37
|
+
message: j
|
|
38
|
+
}) : M.current.delete(C), L(C), S?.notifyGenerationStart?.(), x?.ensureConnected();
|
|
39
|
+
let F = {
|
|
40
|
+
signal: D.signal,
|
|
40
41
|
onChunk: (e) => {
|
|
41
|
-
if (
|
|
42
|
-
let t =
|
|
43
|
-
if (t?.generationId ===
|
|
44
|
-
let
|
|
45
|
-
|
|
42
|
+
if (k.current !== h) return;
|
|
43
|
+
let t = M.current.get(C);
|
|
44
|
+
if (t?.generationId === h) {
|
|
45
|
+
let n = i([t.message], 0, e);
|
|
46
|
+
n && (t.message = n[0]);
|
|
46
47
|
}
|
|
47
|
-
|
|
48
|
+
I(C) && g((t) => {
|
|
48
49
|
if (!t) return t;
|
|
49
|
-
let
|
|
50
|
-
if (
|
|
50
|
+
let n = M.current.get(C), r;
|
|
51
|
+
if (n?.generationId === h) r = a(t, n);
|
|
51
52
|
else {
|
|
52
|
-
let
|
|
53
|
-
if (!
|
|
54
|
-
|
|
53
|
+
let n = i(t.messages, c, e);
|
|
54
|
+
if (!n) return t;
|
|
55
|
+
r = {
|
|
55
56
|
...t,
|
|
56
|
-
messages:
|
|
57
|
+
messages: n
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
|
-
return
|
|
60
|
+
return _.current = r, r;
|
|
60
61
|
});
|
|
61
62
|
},
|
|
62
63
|
onComplete: async () => {
|
|
63
|
-
if (
|
|
64
|
-
let
|
|
65
|
-
if (
|
|
66
|
-
|
|
64
|
+
if (M.current.get(C)?.generationId === h && M.current.delete(C), E() || R(C), k.current === h && (k.current = null, A.current = null, O(null)), b(C, h), x?.notifyGenerationSettled?.(), N.current.has(h) ? N.current.delete(h) : E() || S?.notifyGenerationEnd?.(), !E() && I(C)) try {
|
|
65
|
+
let n = await v.getConversation(e(t));
|
|
66
|
+
if (E() || !I(C)) return;
|
|
67
|
+
g(n), _.current = n;
|
|
67
68
|
} catch {}
|
|
68
69
|
},
|
|
69
70
|
onError: (e) => {
|
|
70
|
-
let t =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
let t = M.current.get(C), r = t?.generationId === h ? t : void 0;
|
|
72
|
+
if (r && M.current.delete(C), E() || R(C), k.current === h && (k.current = null, A.current = null, O(null)), b(C, h), x?.notifyGenerationSettled?.(), E() || !I(C)) return;
|
|
73
|
+
let i = e instanceof n ? w : e.message;
|
|
74
|
+
g((e) => {
|
|
75
|
+
if (!e) return e;
|
|
76
|
+
let t = r?.generationId === h ? a(e, r) : e, n = {
|
|
77
|
+
...t,
|
|
78
|
+
messages: t.messages.map((e, t) => t === c ? {
|
|
79
|
+
...e,
|
|
80
|
+
streamErrorMessage: i
|
|
81
|
+
} : e)
|
|
79
82
|
};
|
|
80
|
-
return
|
|
83
|
+
return _.current = n, n;
|
|
81
84
|
});
|
|
82
85
|
}
|
|
83
86
|
};
|
|
84
87
|
(async () => {
|
|
85
88
|
try {
|
|
86
|
-
let e =
|
|
87
|
-
|
|
89
|
+
let e = x?.channelId ?? await x?.waitForChannel(m) ?? void 0;
|
|
90
|
+
v.streamCompletion(C, o, l, F, u, h, f, T, e);
|
|
88
91
|
} catch (e) {
|
|
89
|
-
|
|
92
|
+
F.onError(e instanceof Error ? e : Error(String(e)));
|
|
90
93
|
}
|
|
91
94
|
})();
|
|
92
95
|
}, [
|
|
93
|
-
|
|
94
|
-
v,
|
|
95
|
-
P,
|
|
96
|
-
F,
|
|
97
|
-
N,
|
|
98
|
-
y?.channelId,
|
|
99
|
-
y?.ensureConnected,
|
|
100
|
-
y?.waitForChannel,
|
|
101
|
-
y?.notifyGenerationSettled,
|
|
96
|
+
y,
|
|
102
97
|
b,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
98
|
+
L,
|
|
99
|
+
R,
|
|
100
|
+
I,
|
|
101
|
+
x?.channelId,
|
|
102
|
+
x?.ensureConnected,
|
|
103
|
+
x?.waitForChannel,
|
|
104
|
+
x?.notifyGenerationSettled,
|
|
105
|
+
S,
|
|
106
|
+
v,
|
|
107
|
+
w
|
|
108
|
+
]), B = c((e, t) => {
|
|
109
|
+
let n = r(e), i = M.current.get(n);
|
|
110
|
+
return i ? a(t, i) : t;
|
|
111
|
+
}, []), V = c(() => {
|
|
112
|
+
let e = k.current;
|
|
113
|
+
if (!e || !h) return;
|
|
114
|
+
let t = r(h);
|
|
115
|
+
A.current === t && (N.current.add(e), S?.notifyStopGenerating?.(), v.stopCompletion({
|
|
112
116
|
generationId: e,
|
|
113
|
-
path:
|
|
117
|
+
path: t
|
|
114
118
|
}).catch((e) => {
|
|
115
119
|
let t = e instanceof Error ? e : Error(String(e));
|
|
116
|
-
|
|
120
|
+
C?.(t);
|
|
117
121
|
}));
|
|
118
122
|
}, [
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
]),
|
|
124
|
-
transport:
|
|
125
|
-
setConversation:
|
|
126
|
-
conversationRef:
|
|
127
|
-
resumingPathsRef:
|
|
128
|
-
bufferedGenerationsRef:
|
|
129
|
-
addStreamingPath:
|
|
130
|
-
removeStreamingPath:
|
|
131
|
-
isPathDisplayed:
|
|
123
|
+
h,
|
|
124
|
+
C,
|
|
125
|
+
S,
|
|
126
|
+
v
|
|
127
|
+
]), H = u(() => o({
|
|
128
|
+
transport: v,
|
|
129
|
+
setConversation: g,
|
|
130
|
+
conversationRef: _,
|
|
131
|
+
resumingPathsRef: j,
|
|
132
|
+
bufferedGenerationsRef: M,
|
|
133
|
+
addStreamingPath: L,
|
|
134
|
+
removeStreamingPath: R,
|
|
135
|
+
isPathDisplayed: I
|
|
132
136
|
}), [
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
]),
|
|
137
|
+
L,
|
|
138
|
+
R,
|
|
139
|
+
I,
|
|
140
|
+
v
|
|
141
|
+
]), U = h != null && T.has(r(h)), W = h == null ? null : r(h);
|
|
138
142
|
return {
|
|
139
|
-
startStream:
|
|
140
|
-
handleStop:
|
|
141
|
-
resumeIfAwaitingGeneration:
|
|
142
|
-
restoreBufferedGeneration:
|
|
143
|
-
isStreaming:
|
|
144
|
-
canStopStreaming:
|
|
143
|
+
startStream: z,
|
|
144
|
+
handleStop: V,
|
|
145
|
+
resumeIfAwaitingGeneration: H,
|
|
146
|
+
restoreBufferedGeneration: B,
|
|
147
|
+
isStreaming: U,
|
|
148
|
+
canStopStreaming: W != null && D === W
|
|
145
149
|
};
|
|
146
150
|
};
|
|
147
151
|
//#endregion
|
|
148
|
-
export {
|
|
152
|
+
export { h as useConversationStream };
|
package/conversation.d.ts
CHANGED
|
@@ -308,6 +308,9 @@ export declare const createDeploymentChangedMessage: (previousDeploymentId: stri
|
|
|
308
308
|
/** Builds a user message and its empty assistant placeholder, both timestamped `now`. */
|
|
309
309
|
export declare const createMessagePair: (content: string, customContent?: MessageCustomContent, deploymentId?: string | null) => MessagePair;
|
|
310
310
|
|
|
311
|
+
/** Fallback text of a {@link GenerationConflictError} when no message is supplied. */
|
|
312
|
+
export declare const DEFAULT_GENERATION_CONFLICT_MESSAGE = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.";
|
|
313
|
+
|
|
311
314
|
/**
|
|
312
315
|
* Derives the row-action visibility state for a single conversation item.
|
|
313
316
|
*
|
|
@@ -331,6 +334,17 @@ export declare const deriveConversationRowActionState: (item: Pick<ConversationL
|
|
|
331
334
|
*/
|
|
332
335
|
export declare const formatAppVersion: (version: string) => string;
|
|
333
336
|
|
|
337
|
+
/**
|
|
338
|
+
* Reported through `onError` when the backend rejects a completion because
|
|
339
|
+
* another generation is already active on the same conversation — what a
|
|
340
|
+
* second browser tab of the same session hits when it submits into a
|
|
341
|
+
* conversation the first tab is still generating. Distinct from a generic
|
|
342
|
+
* transport failure so callers can present it as an expected state.
|
|
343
|
+
*/
|
|
344
|
+
export declare class GenerationConflictError extends Error {
|
|
345
|
+
constructor(message?: string);
|
|
346
|
+
}
|
|
347
|
+
|
|
334
348
|
/**
|
|
335
349
|
* Strips the leading bucket segment from a conversation id and decodes any
|
|
336
350
|
* already-percent-encoded remainder back to raw, so callers that re-encode
|
|
@@ -864,7 +878,7 @@ export declare interface UseConversationPanelItemsResolvers {
|
|
|
864
878
|
* `transport`/`generation`/`channel`/`overlay` capabilities rather than any
|
|
865
879
|
* app context or `server-api` import.
|
|
866
880
|
*/
|
|
867
|
-
export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, }: UseConversationStreamParams) => UseConversationStreamResult;
|
|
881
|
+
export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, }: UseConversationStreamParams) => UseConversationStreamResult;
|
|
868
882
|
|
|
869
883
|
/** Parameters for {@link useConversationStream}. */
|
|
870
884
|
export declare interface UseConversationStreamParams {
|
|
@@ -875,6 +889,13 @@ export declare interface UseConversationStreamParams {
|
|
|
875
889
|
channel?: ConversationStreamChannel;
|
|
876
890
|
overlay?: ConversationStreamOverlayNotifier;
|
|
877
891
|
onStopError?: (error: Error) => void;
|
|
892
|
+
/**
|
|
893
|
+
* Message shown on the message bubble when the backend rejects a completion
|
|
894
|
+
* because this conversation is already generating — the case a second
|
|
895
|
+
* browser tab of the same session hits. Defaults to
|
|
896
|
+
* {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
|
|
897
|
+
*/
|
|
898
|
+
generationConflictMessage?: string;
|
|
878
899
|
}
|
|
879
900
|
|
|
880
901
|
/** Return value of {@link useConversationStream}. */
|
package/conversation.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { buildAnnouncementSignature as e, hasAnnouncementContent as t, hasStructuredAnnouncement as n, sanitizeAnnouncementHtml as r, sanitizeAnnouncementMessageHtml as i } from "./conversation/announcement-message.js";
|
|
2
|
-
import {
|
|
3
|
-
import { shouldWatchForDisplayNameUpdate as
|
|
4
|
-
import { formatAppVersion as
|
|
5
|
-
import { getModelIdFromConversationId as
|
|
6
|
-
import { getTimeOfDayGreeting as
|
|
7
|
-
import { createDeploymentChangedMessage as
|
|
8
|
-
import { getLastDeploymentId as
|
|
9
|
-
import { toOverlayMessages as
|
|
10
|
-
import { getQuickAppConversationStarters as
|
|
11
|
-
import { getStarterPopulateText as
|
|
12
|
-
import { deriveConversationRowActionState as
|
|
13
|
-
import { useActiveConversationSync as
|
|
14
|
-
import { useAsyncConfirmDialog as
|
|
15
|
-
import { useConversationLookupMaps as
|
|
16
|
-
import { getConversationSource as
|
|
17
|
-
import { useImportFilePicker as
|
|
18
|
-
import { useAttachmentUpload as
|
|
19
|
-
import { AudioTranscriptionError as
|
|
20
|
-
import { useTranscribeAudio as
|
|
21
|
-
import { attachmentToDto as
|
|
22
|
-
import { createMessagePair as
|
|
23
|
-
import { hasActiveToolConfig as
|
|
24
|
-
import { getStarterConversationText as
|
|
25
|
-
import { getConversationPath as
|
|
26
|
-
import { useConversationHandlers as
|
|
27
|
-
import { isAwaitingGenerationResume as
|
|
28
|
-
import { useConversationStream as
|
|
29
|
-
import { useChatSettingsFormConfig as
|
|
30
|
-
import { useToolsMenu as
|
|
31
|
-
export {
|
|
2
|
+
import { DEFAULT_GENERATION_CONFLICT_MESSAGE as a, GenerationConflictError as o, createChatStreamApi as s } from "./conversation/create-chat-stream-api.js";
|
|
3
|
+
import { shouldWatchForDisplayNameUpdate as c } from "./conversation/display-name-watch.js";
|
|
4
|
+
import { formatAppVersion as l, sanitizeFooterHtml as u } from "./conversation/footer-message.js";
|
|
5
|
+
import { getModelIdFromConversationId as d } from "./conversation/get-model-id-from-conversation-id.js";
|
|
6
|
+
import { getTimeOfDayGreeting as f } from "./conversation/greeting.js";
|
|
7
|
+
import { createDeploymentChangedMessage as p } from "./conversation/message-factory.js";
|
|
8
|
+
import { getLastDeploymentId as m, getLastUserMessageToolConfiguration as h, isMessageStreaming as g, messageHasStages as _, normalizeResponseFormat as v } from "./conversation/message-utils.js";
|
|
9
|
+
import { toOverlayMessages as y } from "./conversation/overlay-messages.js";
|
|
10
|
+
import { getQuickAppConversationStarters as b } from "./conversation/quick-app-conversation-starters.js";
|
|
11
|
+
import { getStarterPopulateText as x, getStartersFromSchema as S } from "./conversation/starter-option.js";
|
|
12
|
+
import { deriveConversationRowActionState as C } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
|
|
13
|
+
import { useActiveConversationSync as w } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
|
|
14
|
+
import { useAsyncConfirmDialog as T } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
|
|
15
|
+
import { useConversationLookupMaps as E } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
|
|
16
|
+
import { getConversationSource as D, useConversationPanelItems as O } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
|
|
17
|
+
import { useImportFilePicker as k } from "./conversation/useImportFilePicker/useImportFilePicker.js";
|
|
18
|
+
import { useAttachmentUpload as A } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
|
|
19
|
+
import { AudioTranscriptionError as j, AudioTranscriptionErrorReason as M } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
|
|
20
|
+
import { useTranscribeAudio as N } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
|
|
21
|
+
import { attachmentToDto as P, attachmentsToDtos as F } from "./conversation/useConversationHandlers/attachment-to-dto.js";
|
|
22
|
+
import { createMessagePair as I } from "./conversation/useConversationHandlers/message-factory.js";
|
|
23
|
+
import { hasActiveToolConfig as L, isAnswerIncomplete as R, isMessageChanged as z, shouldRerunGenerationOnEdit as B } from "./conversation/useConversationHandlers/message-utils.js";
|
|
24
|
+
import { getStarterConversationText as V, getStarterSubmitText as H } from "./conversation/useConversationHandlers/starter-option.js";
|
|
25
|
+
import { getConversationPath as U } from "./conversation/useConversationStream/conversation-path.js";
|
|
26
|
+
import { useConversationHandlers as W } from "./conversation/useConversationHandlers/useConversationHandlers.js";
|
|
27
|
+
import { isAwaitingGenerationResume as G } from "./conversation/useConversationStream/generation-resume.js";
|
|
28
|
+
import { useConversationStream as K } from "./conversation/useConversationStream/useConversationStream.js";
|
|
29
|
+
import { useChatSettingsFormConfig as q } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
|
|
30
|
+
import { useToolsMenu as J } from "./useToolsMenu/useToolsMenu.js";
|
|
31
|
+
export { j as AudioTranscriptionError, M as AudioTranscriptionErrorReason, a as DEFAULT_GENERATION_CONFLICT_MESSAGE, o as GenerationConflictError, P as attachmentToDto, F as attachmentsToDtos, e as buildAnnouncementSignature, s as createChatStreamApi, p as createDeploymentChangedMessage, I as createMessagePair, C as deriveConversationRowActionState, l as formatAppVersion, U as getConversationPath, D as getConversationSource, m as getLastDeploymentId, h as getLastUserMessageToolConfiguration, d as getModelIdFromConversationId, b as getQuickAppConversationStarters, V as getStarterConversationText, x as getStarterPopulateText, H as getStarterSubmitText, S as getStartersFromSchema, f as getTimeOfDayGreeting, L as hasActiveToolConfig, t as hasAnnouncementContent, n as hasStructuredAnnouncement, R as isAnswerIncomplete, G as isAwaitingGenerationResume, z as isMessageChanged, g as isMessageStreaming, _ as messageHasStages, v as normalizeResponseFormat, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml, u as sanitizeFooterHtml, B as shouldRerunGenerationOnEdit, c as shouldWatchForDisplayNameUpdate, y as toOverlayMessages, w as useActiveConversationSync, T as useAsyncConfirmDialog, A as useAttachmentUpload, q as useChatSettingsFormConfig, W as useConversationHandlers, E as useConversationLookupMaps, O as useConversationPanelItems, K as useConversationStream, k as useImportFilePicker, J as useToolsMenu, N as useTranscribeAudio };
|
package/index.d.ts
CHANGED
|
@@ -1005,6 +1005,9 @@ export declare const decodeToolsetId: (id: string) => string;
|
|
|
1005
1005
|
*/
|
|
1006
1006
|
export declare const decomposeLocalizedFields: (displayName: LocalizedText | undefined, description: LocalizedText | undefined, primaryLocale: string) => DeploymentCreationFormLocaleEntry[];
|
|
1007
1007
|
|
|
1008
|
+
/** Fallback text of a {@link GenerationConflictError} when no message is supplied. */
|
|
1009
|
+
export declare const DEFAULT_GENERATION_CONFLICT_MESSAGE = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.";
|
|
1010
|
+
|
|
1008
1011
|
/**
|
|
1009
1012
|
* Default ceiling on the summed byte length of an export's attachments.
|
|
1010
1013
|
*
|
|
@@ -1608,6 +1611,17 @@ export declare const formatOperationFolderName: (destinationFolder: string, root
|
|
|
1608
1611
|
*/
|
|
1609
1612
|
export declare const formatQuotedNameList: (names: string[]) => string;
|
|
1610
1613
|
|
|
1614
|
+
/**
|
|
1615
|
+
* Reported through `onError` when the backend rejects a completion because
|
|
1616
|
+
* another generation is already active on the same conversation — what a
|
|
1617
|
+
* second browser tab of the same session hits when it submits into a
|
|
1618
|
+
* conversation the first tab is still generating. Distinct from a generic
|
|
1619
|
+
* transport failure so callers can present it as an expected state.
|
|
1620
|
+
*/
|
|
1621
|
+
export declare class GenerationConflictError extends Error {
|
|
1622
|
+
constructor(message?: string);
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1611
1625
|
/** Normalizes any API error into a `{ status?, message, traceId? }` shape. */
|
|
1612
1626
|
export declare const getApiErrorDetails: (error: unknown) => Promise<ApiErrorDetails>;
|
|
1613
1627
|
|
|
@@ -4360,7 +4374,7 @@ export declare interface UseConversationSourcesResult {
|
|
|
4360
4374
|
* `transport`/`generation`/`channel`/`overlay` capabilities rather than any
|
|
4361
4375
|
* app context or `server-api` import.
|
|
4362
4376
|
*/
|
|
4363
|
-
export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, }: UseConversationStreamParams) => UseConversationStreamResult;
|
|
4377
|
+
export declare const useConversationStream: ({ conversationId, state: { setConversation, conversationRef }, transport, generation: { startGeneration, completeGeneration }, channel, overlay, onStopError, generationConflictMessage, }: UseConversationStreamParams) => UseConversationStreamResult;
|
|
4364
4378
|
|
|
4365
4379
|
/** Parameters for {@link useConversationStream}. */
|
|
4366
4380
|
export declare interface UseConversationStreamParams {
|
|
@@ -4371,6 +4385,13 @@ export declare interface UseConversationStreamParams {
|
|
|
4371
4385
|
channel?: ConversationStreamChannel;
|
|
4372
4386
|
overlay?: ConversationStreamOverlayNotifier;
|
|
4373
4387
|
onStopError?: (error: Error) => void;
|
|
4388
|
+
/**
|
|
4389
|
+
* Message shown on the message bubble when the backend rejects a completion
|
|
4390
|
+
* because this conversation is already generating — the case a second
|
|
4391
|
+
* browser tab of the same session hits. Defaults to
|
|
4392
|
+
* {@link DEFAULT_GENERATION_CONFLICT_MESSAGE}.
|
|
4393
|
+
*/
|
|
4394
|
+
generationConflictMessage?: string;
|
|
4374
4395
|
}
|
|
4375
4396
|
|
|
4376
4397
|
/** Return value of {@link useConversationStream}. */
|
package/index.js
CHANGED
|
@@ -45,92 +45,92 @@ import { useSkillDetailsPanelData as Dt } from "./catalog/useSkillDetailsPanelDa
|
|
|
45
45
|
import { FavoriteEntityType as Ot, useFavoriteEntitiesState as kt } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
|
|
46
46
|
import { usePublishFolders as At } from "./catalog/usePublishFolders/usePublishFolders.js";
|
|
47
47
|
import { buildAnnouncementSignature as jt, hasAnnouncementContent as Mt, hasStructuredAnnouncement as Nt, sanitizeAnnouncementHtml as Pt, sanitizeAnnouncementMessageHtml as Ft } from "./conversation/announcement-message.js";
|
|
48
|
-
import {
|
|
49
|
-
import { shouldWatchForDisplayNameUpdate as
|
|
50
|
-
import { formatAppVersion as
|
|
51
|
-
import { getModelIdFromConversationId as
|
|
52
|
-
import { getTimeOfDayGreeting as
|
|
53
|
-
import { createDeploymentChangedMessage as
|
|
54
|
-
import { getLastDeploymentId as
|
|
55
|
-
import { toOverlayMessages as
|
|
56
|
-
import { getQuickAppConversationStarters as
|
|
57
|
-
import { getStarterPopulateText as
|
|
58
|
-
import { useOAuthCallbackCompletion as
|
|
59
|
-
import { buildPromptExportEnvelope as
|
|
60
|
-
import { PROMPT_CONTENT_MAX_LENGTH as
|
|
61
|
-
import { usePromptsState as
|
|
62
|
-
import { UnsupportedTriggerReason as
|
|
63
|
-
import { apSchedulerDayToJsDay as
|
|
64
|
-
import { mapFormValuesToCreateBody as
|
|
65
|
-
import { validateSkillFileBatch as
|
|
66
|
-
import { skillFileToAttachment as
|
|
67
|
-
import { SkillEditorLoadState as
|
|
68
|
-
import { useSkillEditorSubmit as
|
|
69
|
-
import { useSkillFileActions as
|
|
70
|
-
import { SkillPreviewErrorKind as
|
|
71
|
-
import { useSkillsState as
|
|
72
|
-
import { RecipientsCountStatus as
|
|
73
|
-
import { deriveConversationRowActionState as
|
|
74
|
-
import { useActiveConversationSync as
|
|
75
|
-
import { useAsyncConfirmDialog as
|
|
76
|
-
import { useConversationLookupMaps as
|
|
77
|
-
import { getConversationSource as
|
|
78
|
-
import { useImportFilePicker as
|
|
79
|
-
import { useAttachmentUpload as
|
|
80
|
-
import { AudioTranscriptionError as
|
|
81
|
-
import { useTranscribeAudio as
|
|
82
|
-
import { DEFAULT_MAX_ARCHIVE_BYTES as
|
|
83
|
-
import { attachmentToDto as
|
|
84
|
-
import { createMessagePair as
|
|
85
|
-
import { hasActiveToolConfig as
|
|
86
|
-
import { getStarterConversationText as
|
|
87
|
-
import { getConversationPath as
|
|
88
|
-
import { useConversationHandlers as
|
|
89
|
-
import { useConversationImport as
|
|
90
|
-
import { useConversationScroll as
|
|
91
|
-
import { isAwaitingGenerationResume as
|
|
92
|
-
import { useConversationStream as
|
|
93
|
-
import { useConversationSources as
|
|
94
|
-
import { DialFilesApiUploadMode as
|
|
95
|
-
import { FileManagerNotificationReason as
|
|
96
|
-
import { COLUMNS_WITHOUT_AUTHOR as
|
|
97
|
-
import { DialFileManagerActionProfile as
|
|
98
|
-
import { buildSharedItemVirtualPath as
|
|
99
|
-
import { getParentFolderPath as
|
|
100
|
-
import { prepareCopyItems as
|
|
101
|
-
import { buildFromCache as
|
|
102
|
-
import { createFilesApiClient as
|
|
103
|
-
import { createUploadFileWithProgress as
|
|
104
|
-
import { openAnnotationAttachment as
|
|
105
|
-
import { annotationToOoxmlCanvasContent as
|
|
106
|
-
import { getUrlFileName as
|
|
107
|
-
import { annotationToDisplayAttachment as
|
|
108
|
-
import { dialFileToAttachment as
|
|
109
|
-
import { DownloadDestinationType as
|
|
110
|
-
import { prepareDownloadDestination as
|
|
111
|
-
import { sanitizeFileName as
|
|
112
|
-
import { useDialFileListing as
|
|
113
|
-
import { useDialFileMetadata as
|
|
114
|
-
import { useDialFileMutations as
|
|
115
|
-
import { useDialFileSharing as
|
|
116
|
-
import { useDialFileUploadBatch as
|
|
117
|
-
import { useDialFileManager as
|
|
118
|
-
import { useDialFileManagerTabConfig as
|
|
119
|
-
import { isCustomAppSchema as
|
|
120
|
-
import { getBrowserTimezone as
|
|
121
|
-
import { isValidAbsoluteUrl as
|
|
122
|
-
import { buildExternalServiceScopeId as
|
|
123
|
-
import { useChatSettingsFormConfig as
|
|
124
|
-
import { usePageFileDrag as
|
|
125
|
-
import { useViewportWidth as
|
|
126
|
-
import { usePanelMaxWidth as
|
|
127
|
-
import { useShareLink as
|
|
128
|
-
import { useToolsMenu as
|
|
129
|
-
import { useUsageData as
|
|
130
|
-
import { McpAppResourceFetchError as
|
|
131
|
-
import { useMcpAppTools as
|
|
132
|
-
import { useMcpAppHostContext as
|
|
133
|
-
import { useMcpAppHostAdapter as
|
|
134
|
-
import { useOpenMcpAppCanvas as
|
|
135
|
-
import { useGridEditingScroll as
|
|
136
|
-
export { b as AttachmentValidationErrorReason,
|
|
48
|
+
import { DEFAULT_GENERATION_CONFLICT_MESSAGE as It, GenerationConflictError as Lt, createChatStreamApi as Rt } from "./conversation/create-chat-stream-api.js";
|
|
49
|
+
import { shouldWatchForDisplayNameUpdate as zt } from "./conversation/display-name-watch.js";
|
|
50
|
+
import { formatAppVersion as Bt, sanitizeFooterHtml as Vt } from "./conversation/footer-message.js";
|
|
51
|
+
import { getModelIdFromConversationId as Ht } from "./conversation/get-model-id-from-conversation-id.js";
|
|
52
|
+
import { getTimeOfDayGreeting as Ut } from "./conversation/greeting.js";
|
|
53
|
+
import { createDeploymentChangedMessage as Wt } from "./conversation/message-factory.js";
|
|
54
|
+
import { getLastDeploymentId as Gt, getLastUserMessageToolConfiguration as Kt, isMessageStreaming as qt, messageHasStages as Jt, normalizeResponseFormat as Yt } from "./conversation/message-utils.js";
|
|
55
|
+
import { toOverlayMessages as Xt } from "./conversation/overlay-messages.js";
|
|
56
|
+
import { getQuickAppConversationStarters as Zt } from "./conversation/quick-app-conversation-starters.js";
|
|
57
|
+
import { getStarterPopulateText as Qt, getStartersFromSchema as $t } from "./conversation/starter-option.js";
|
|
58
|
+
import { useOAuthCallbackCompletion as en } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
|
|
59
|
+
import { buildPromptExportEnvelope as tn, buildPromptExportFileName as nn, serializePromptExport as rn } from "./prompt/export-prompt.js";
|
|
60
|
+
import { PROMPT_CONTENT_MAX_LENGTH as an, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as on, PROMPT_DESCRIPTION_MAX_LENGTH as sn, PROMPT_NAME_MAX_LENGTH as cn, PromptFieldError as ln, buildPromptPath as un, getRemainingCharacters as dn, validatePromptContent as fn, validatePromptDescription as pn, validatePromptName as mn } from "./prompt/prompt.js";
|
|
61
|
+
import { usePromptsState as hn } from "./prompt/usePromptsState/usePromptsState.js";
|
|
62
|
+
import { UnsupportedTriggerReason as gn } from "./scheduled-task/scheduled-task-mapping.js";
|
|
63
|
+
import { apSchedulerDayToJsDay as _n, jsDayToApSchedulerDay as vn } from "./shared/cron-weekday.js";
|
|
64
|
+
import { mapFormValuesToCreateBody as yn, mapFormValuesToUpdateBody as bn, mapScheduledTaskDtoToFormValues as xn } from "./scheduled-task/scheduled-task-trigger.js";
|
|
65
|
+
import { validateSkillFileBatch as Sn } from "./skill/skill-file-batch-validation.js";
|
|
66
|
+
import { skillFileToAttachment as Cn } from "./skill/skill-file-preview.js";
|
|
67
|
+
import { SkillEditorLoadState as wn, useSkillEditorLoad as Tn } from "./skill/useSkillEditorLoad.js";
|
|
68
|
+
import { useSkillEditorSubmit as En } from "./skill/useSkillEditorSubmit.js";
|
|
69
|
+
import { useSkillFileActions as Dn } from "./skill/useSkillFileActions.js";
|
|
70
|
+
import { SkillPreviewErrorKind as On, useSkillFilePreview as kn } from "./skill/useSkillFilePreview.js";
|
|
71
|
+
import { useSkillsState as An } from "./skill/useSkillsState/useSkillsState.js";
|
|
72
|
+
import { RecipientsCountStatus as jn, useShareRecipientsCount as Mn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
|
|
73
|
+
import { deriveConversationRowActionState as Nn } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
|
|
74
|
+
import { useActiveConversationSync as Pn } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
|
|
75
|
+
import { useAsyncConfirmDialog as Fn } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
|
|
76
|
+
import { useConversationLookupMaps as In } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
|
|
77
|
+
import { getConversationSource as Ln, useConversationPanelItems as Rn } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
|
|
78
|
+
import { useImportFilePicker as zn } from "./conversation/useImportFilePicker/useImportFilePicker.js";
|
|
79
|
+
import { useAttachmentUpload as Bn } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
|
|
80
|
+
import { AudioTranscriptionError as Vn, AudioTranscriptionErrorReason as Hn } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
|
|
81
|
+
import { useTranscribeAudio as Un } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
|
|
82
|
+
import { DEFAULT_MAX_ARCHIVE_BYTES as Wn, useConversationExport as Gn } from "./conversation/useConversationExport/useConversationExport.js";
|
|
83
|
+
import { attachmentToDto as Kn, attachmentsToDtos as qn } from "./conversation/useConversationHandlers/attachment-to-dto.js";
|
|
84
|
+
import { createMessagePair as Jn } from "./conversation/useConversationHandlers/message-factory.js";
|
|
85
|
+
import { hasActiveToolConfig as Yn, isAnswerIncomplete as Xn, isMessageChanged as Zn, shouldRerunGenerationOnEdit as Qn } from "./conversation/useConversationHandlers/message-utils.js";
|
|
86
|
+
import { getStarterConversationText as $n, getStarterSubmitText as er } from "./conversation/useConversationHandlers/starter-option.js";
|
|
87
|
+
import { getConversationPath as tr } from "./conversation/useConversationStream/conversation-path.js";
|
|
88
|
+
import { useConversationHandlers as nr } from "./conversation/useConversationHandlers/useConversationHandlers.js";
|
|
89
|
+
import { useConversationImport as rr } from "./conversation/useConversationImport/useConversationImport.js";
|
|
90
|
+
import { useConversationScroll as ir } from "./conversation/useConversationScroll/useConversationScroll.js";
|
|
91
|
+
import { isAwaitingGenerationResume as ar } from "./conversation/useConversationStream/generation-resume.js";
|
|
92
|
+
import { useConversationStream as or } from "./conversation/useConversationStream/useConversationStream.js";
|
|
93
|
+
import { useConversationSources as sr } from "./conversation-sources/useConversationSources/useConversationSources.js";
|
|
94
|
+
import { DialFilesApiUploadMode as cr } from "./files/dial-files-api.js";
|
|
95
|
+
import { FileManagerNotificationReason as lr, FileNameValidationErrorReason as ur, FileOperationKind as dr } from "./files/dial-file-manager.types.js";
|
|
96
|
+
import { COLUMNS_WITHOUT_AUTHOR as fr, COLUMNS_WITH_AUTHOR as pr, CORE_PERMISSION_MAP as mr, DATE_OPTIONS as hr, PATH_SEPARATOR_REGEXP as gr, RESERVED_MARKER_NAME as _r, UPLOAD_CONCURRENCY as vr } from "./files/dial-file-manager.model.js";
|
|
97
|
+
import { DialFileManagerActionProfile as yr, DialFileManagerVariant as br, deriveActionProfile as xr } from "./files/file-manager-variant.js";
|
|
98
|
+
import { buildSharedItemVirtualPath as Sr, dialCorePathToRelative as Cr, findDialFileByPath as wr, findFolderByVirtualPath as Tr, formatOperationFolderName as Er, getVirtualPathName as Dr, hasDialFileWritePermission as Or, hasForbiddenNameSymbols as kr, isCopyMoveDuplicateAllowed as Ar, isShareActionsAllowed as jr, normalizeVirtualPath as Mr, parseNewFolderVirtualPath as Nr, resolveOwnerCoords as Pr } from "./files/dial-file-manager-path.util.js";
|
|
99
|
+
import { getParentFolderPath as Fr, resolveDialFileApiPath as Ir, virtualPathToApiPath as Lr } from "./files/resolve-dial-file-api-path.js";
|
|
100
|
+
import { prepareCopyItems as Rr, prepareMoveRenameItems as zr } from "./files/dial-file-manager-copy-move.util.js";
|
|
101
|
+
import { buildFromCache as Br, fetchByTab as Vr, fetchForSearch as Hr, findFirstSuccessfulCopyMoveItem as Ur, mapCorePermissions as Wr, mapFileMetadataToDialFile as Gr, mapSearchItem as Kr, mergeCreatedFolderIntoCache as qr, updateEntry as Jr } from "./files/dial-file-manager-mapping.util.js";
|
|
102
|
+
import { createFilesApiClient as Yr } from "./files/create-files-api.js";
|
|
103
|
+
import { createUploadFileWithProgress as Xr } from "./files/create-upload-file-with-progress.js";
|
|
104
|
+
import { openAnnotationAttachment as Zr } from "./files/annotation.js";
|
|
105
|
+
import { annotationToOoxmlCanvasContent as Qr, annotationToPdfCanvasContent as $r, clearAttachmentCache as ei, hasAttachmentTextSource as ti, referenceAttachmentToPdfCanvasContent as ni, resolveCodeCanvasContent as ri, resolveHtmlCanvasContent as ii, resolveImageCanvasContent as ai, resolveJsonCanvasContent as oi, resolveMarkdownCanvasContent as si, resolveOoxmlCanvasContent as ci, resolvePdfCanvasContent as li, resolveTextCanvasContent as ui, resolveVisualizerCanvasContent as di } from "./files/attachment-canvas.js";
|
|
106
|
+
import { getUrlFileName as fi, isExternalSourcePreviewable as pi, resolveExternalSourceContentType as mi } from "./files/source-content.js";
|
|
107
|
+
import { annotationToDisplayAttachment as hi, attachmentDtoToDisplayAttachment as gi, attachmentDtosToDisplayAttachments as _i } from "./files/attachment-dto-to-display.js";
|
|
108
|
+
import { dialFileToAttachment as vi, dialFilesToAttachments as yi, dialFolderPathToAttachment as bi } from "./files/dial-file-to-attachment.js";
|
|
109
|
+
import { DownloadDestinationType as xi } from "./files/download-destination.js";
|
|
110
|
+
import { prepareDownloadDestination as Si } from "./files/prepare-download-destination.js";
|
|
111
|
+
import { sanitizeFileName as Ci, splitFileNameExtension as wi, trimFileNameToByteLimit as Ti } from "./files/file-name.js";
|
|
112
|
+
import { useDialFileListing as Ei } from "./files/useDialFileListing/useDialFileListing.js";
|
|
113
|
+
import { useDialFileMetadata as Di } from "./files/useDialFileMetadata/useDialFileMetadata.js";
|
|
114
|
+
import { useDialFileMutations as Oi } from "./files/useDialFileMutations/useDialFileMutations.js";
|
|
115
|
+
import { useDialFileSharing as ki } from "./files/useDialFileSharing/useDialFileSharing.js";
|
|
116
|
+
import { useDialFileUploadBatch as Ai } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
|
|
117
|
+
import { useDialFileManager as ji } from "./files/useDialFileManager/useDialFileManager.js";
|
|
118
|
+
import { useDialFileManagerTabConfig as Mi } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
|
|
119
|
+
import { isCustomAppSchema as Ni, isQuickAppSchema as Pi } from "./shared/application-schema.js";
|
|
120
|
+
import { getBrowserTimezone as Fi } from "./shared/browser-timezone.js";
|
|
121
|
+
import { isValidAbsoluteUrl as Ii, isValidFeaturesData as Li, parseFeaturesData as Ri } from "./shared/custom-apps.js";
|
|
122
|
+
import { buildExternalServiceScopeId as zi, getExternalServiceFallbackName as Bi, parseExternalServiceUrl as Vi } from "./shared/external-services.js";
|
|
123
|
+
import { useChatSettingsFormConfig as Hi } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
|
|
124
|
+
import { usePageFileDrag as Ui } from "./usePageFileDrag/usePageFileDrag.js";
|
|
125
|
+
import { useViewportWidth as Wi } from "./useViewportWidth/useViewportWidth.js";
|
|
126
|
+
import { usePanelMaxWidth as Gi } from "./usePanelMaxWidth/usePanelMaxWidth.js";
|
|
127
|
+
import { useShareLink as Ki } from "./useShareLink/useShareLink.js";
|
|
128
|
+
import { useToolsMenu as qi } from "./useToolsMenu/useToolsMenu.js";
|
|
129
|
+
import { useUsageData as Ji } from "./usage/useUsageData/useUsageData.js";
|
|
130
|
+
import { McpAppResourceFetchError as Yi, createMcpAppsApiClient as Xi } from "./mcp-apps/mcp-apps-api-client.js";
|
|
131
|
+
import { useMcpAppTools as Zi } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
|
|
132
|
+
import { useMcpAppHostContext as Qi } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
|
|
133
|
+
import { useMcpAppHostAdapter as $i } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
|
|
134
|
+
import { useOpenMcpAppCanvas as ea } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
|
|
135
|
+
import { useGridEditingScroll as ta } from "@epam/ai-dial-chat-shared";
|
|
136
|
+
export { b as AttachmentValidationErrorReason, Vn as AudioTranscriptionError, Hn as AudioTranscriptionErrorReason, L as AuthenticationType, fr as COLUMNS_WITHOUT_AUTHOR, pr as COLUMNS_WITH_AUTHOR, mr as CORE_PERMISSION_MAP, Ze as CatalogPrimaryActionType, w as ConversationExportMode, T as ConversationTransferErrorCode, E as ConversationTransferWarningCode, hr as DATE_OPTIONS, It as DEFAULT_GENERATION_CONFLICT_MESSAGE, Wn as DEFAULT_MAX_ARCHIVE_BYTES, yr as DialFileManagerActionProfile, br as DialFileManagerVariant, cr as DialFilesApiUploadMode, xi as DownloadDestinationType, O as EXPORT_APP_NAME, D as ExportFileNameKind, Ot as FavoriteEntityType, lr as FileManagerNotificationReason, ur as FileNameValidationErrorReason, dr as FileOperationKind, Lt as GenerationConflictError, Yi as McpAppResourceFetchError, Ie as McpResourceKind, it as OAuthResourceKind, gr as PATH_SEPARATOR_REGEXP, an as PROMPT_CONTENT_MAX_LENGTH, on as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, sn as PROMPT_DESCRIPTION_MAX_LENGTH, cn as PROMPT_NAME_MAX_LENGTH, Ce as PUBLIC_SKILL_BUCKET, ln as PromptFieldError, ie as PromptSource, _r as RESERVED_MARKER_NAME, jn as RecipientsCountStatus, le as SKILL_FILE_UPLOAD_MAX_BYTES, we as SKILL_LISTING_MAX_PAGES, Te as SKILL_LISTING_PAGE_SIZE, ue as SKILL_MANIFEST_FILE, Ee as SKILL_MANIFEST_MAX_BYTES, de as SKILL_UPLOAD_MAX_FILES, fe as SKILL_UPLOAD_MAX_TOTAL_BYTES, wn as SkillEditorLoadState, On as SkillPreviewErrorKind, De as SkillSource, at as TOOLSET_REDIRECT_STATE_KEY, ot as ToolsetAuthStatus, st as ToolsetAuthTypes, ct as ToolsetCredentialsLevel, wt as ToolsetLoginOutcomeType, lt as ToolsetOAuthCallbackQuery, ut as ToolsetOAuthChannelControlType, dt as ToolsetOAuthFailureReason, ft as ToolsetOAuthInitiationResultType, pt as ToolsetOAuthResultType, vr as UPLOAD_CONCURRENCY, gn as UnsupportedTriggerReason, mt as WithLogin, hi as annotationToDisplayAttachment, Qr as annotationToOoxmlCanvasContent, $r as annotationToPdfCanvasContent, _n as apSchedulerDayToJsDay, U as appendLocaleCode, gi as attachmentDtoToDisplayAttachment, _i as attachmentDtosToDisplayAttachments, Kn as attachmentToDto, qn as attachmentsToDtos, W as buildAdditionalLocaleOptions, jt as buildAnnouncementSignature, Le as buildApplicationMcpUrl, M as buildChatCompletionsUrl, Re as buildConnectApi, N as buildDeploymentConnectApi, zi as buildExternalServiceScopeId, Br as buildFromCache, tn as buildPromptExportEnvelope, nn as buildPromptExportFileName, oe as buildPromptOverview, un as buildPromptPath, P as buildResponsesUrl, Sr as buildSharedItemVirtualPath, ke as buildSkillContentTree, pe as buildSkillFilesPayload, me as buildSkillManifest, he as buildSkillManifestForSubmit, ge as buildSkillManifestFromFrontmatter, Ae as buildSkillOverview, yt as buildToolsetAuthorizeUrl, ze as buildToolsetMcpUrl, ei as clearAttachmentCache, G as composeLocalePayload, Rt as createChatStreamApi, i as createCsrfMiddleware, Wt as createDeploymentChangedMessage, Yr as createFilesApiClient, Xi as createMcpAppsApiClient, Jn as createMessagePair, A as createPublishApiClient, a as createUnauthorizedMiddleware, Xr as createUploadFileWithProgress, B as decodeToolsetId, K as decomposeLocalizedFields, xr as deriveActionProfile, Ke as deriveAvailableTabIds, Nn as deriveConversationRowActionState, qe as deriveFavoriteItems, Cr as dialCorePathToRelative, vi as dialFileToAttachment, yi as dialFilesToAttachments, bi as dialFolderPathToAttachment, p as downloadAttachment, ht as emitToolsetLoginSuccess, F as encodeDeploymentId, V as encodeToolsetId, Vr as fetchByTab, Hr as fetchForSearch, tt as fetchSkillDescription, Je as filterCatalogItemsBySelector, Ye as filterHiddenOwnedItems, I as findDeploymentByIdOrReference, wr as findDialFileByPath, Ur as findFirstSuccessfulCopyMoveItem, Tr as findFolderByVirtualPath, Bt as formatAppVersion, Y as formatCalendarDate, S as formatDateYM, C as formatDateYMD, Er as formatOperationFolderName, k as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Fi as getBrowserTimezone, tr as getConversationPath, Ln as getConversationSource, Bi as getExternalServiceFallbackName, Gt as getLastDeploymentId, Kt as getLastUserMessageToolConfiguration, Ht as getModelIdFromConversationId, Fr as getParentFolderPath, Ve as getPublicCatalogEntityFolderPath, Zt as getQuickAppConversationStarters, dn as getRemainingCharacters, $n as getStarterConversationText, Qt as getStarterPopulateText, er as getStarterSubmitText, $t as getStartersFromSchema, Ut as getTimeOfDayGreeting, _t as getToolsetOAuthChannelName, bt as getToolsetRedirectUri, fi as getUrlFileName, Dr as getVirtualPathName, Yn as hasActiveToolConfig, Mt as hasAnnouncementContent, ti as hasAttachmentTextSource, Or as hasDialFileWritePermission, kr as hasForbiddenNameSymbols, Nt as hasStructuredAnnouncement, o as includesIgnoreCase, xt as initiateOAuthLogin, Xn as isAnswerIncomplete, ar as isAwaitingGenerationResume, r as isConversationNotFoundError, Ar as isCopyMoveDuplicateAllowed, Ni as isCustomAppSchema, g as isDialFileAcceptType, u as isDialFileId, m as isDownloadableAttachment, pi as isExternalSourcePreviewable, Zn as isMessageChanged, qt as isMessageStreaming, se as isOrganisationPromptItem, He as isPublicCatalogEntityId, H as isPublicToolsetId, Pi as isQuickAppSchema, jr as isShareActionsAllowed, Ii as isValidAbsoluteUrl, Li as isValidFeaturesData, _e as isValidSkillRelativePath, vn as jsDayToApSchedulerDay, Wr as mapCorePermissions, Z as mapDeploymentDetailsDtoToEntityDetails, R as mapDeploymentLimitsDtoToCatalogLimits, z as mapDeploymentLimitsToInput, ee as mapDeploymentToCatalogItem, te as mapDeploymentToolsetCredentials, Q as mapEntityDetailsToCatalogDetails, Gr as mapFileMetadataToDialFile, yn as mapFormValuesToCreateBody, bn as mapFormValuesToUpdateBody, ce as mapPromptToCatalogItem, Ue as mapPublishConversationResultDto, We as mapPublishHistoryEntryDto, xn as mapScheduledTaskDtoToFormValues, Kr as mapSearchItem, je as mapSkillToCatalogItem, $ as mapToolsetCredentials, ne as mapToolsetToCatalogItem, qr as mergeCreatedFolderIntoCache, Jt as messageHasStages, _ as mimeTypesToAttachmentExtensionLabels, v as mimeTypesToDialFileAcceptTypes, y as mimeTypesToFileAccept, ve as nameFromPath, St as navigateToolsetOAuthPopup, Yt as normalizeResponseFormat, ye as normalizeSkillName, Mr as normalizeVirtualPath, Zr as openAnnotationAttachment, Ct as openToolsetOAuthPopup, X as padTwoDigits, Vi as parseExternalServiceUrl, Ri as parseFeaturesData, Nr as parseNewFolderVirtualPath, ae as parsePromptResourceUrl, be as parseSkillManifest, et as parseSkillManifestDocument, Oe as parseSkillResourceUrl, Rr as prepareCopyItems, Si as prepareDownloadDestination, zr as prepareMoveRenameItems, Me as readSkillFileBytes, Ne as readSkillManifest, Xe as reconcileFilterTopics, ni as referenceAttachmentToPdfCanvasContent, Qe as resolveCatalogPrimaryAction, ri as resolveCodeCanvasContent, re as resolveDeploymentFolder, Ir as resolveDialFileApiPath, d as resolveDialFileBucketAndPath, mi as resolveExternalSourceContentType, ii as resolveHtmlCanvasContent, ai as resolveImageCanvasContent, oi as resolveJsonCanvasContent, q as resolveLocalizedText, si as resolveMarkdownCanvasContent, Be as resolveMcpResourceKind, ci as resolveOoxmlCanvasContent, Pr as resolveOwnerCoords, li as resolvePdfCanvasContent, f as resolveRelativeDialFilePath, Pe as resolveSkillFileDownloadPath, Fe as resolveSkillManifestFileId, ui as resolveTextCanvasContent, di as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Pt as sanitizeAnnouncementHtml, Ft as sanitizeAnnouncementMessageHtml, Ci as sanitizeFileName, Vt as sanitizeFooterHtml, rn as serializePromptExport, Qn as shouldRerunGenerationOnEdit, zt as shouldWatchForDisplayNameUpdate, xe as skillFileBytesToBlob, Cn as skillFileToAttachment, wi as splitFileNameExtension, l as stripSurroundingSlashes, gt as subscribeToolsetLoginSuccess, J as toBaseLocale, Xt as toOverlayMessages, Ge as toPublishEntityType, j as toPublishRuleDto, Ti as trimFileNameToByteLimit, Se as unpackSkillArchive, Jr as updateEntry, Pn as useActiveConversationSync, Fn as useAsyncConfirmDialog, h as useAttachmentAction, Bn as useAttachmentUpload, x as useAttachmentValidation, $e as useCatalogEditNavigation, rt as useCatalogItemDetails, Et as useCatalogToolsetCredentials, Hi as useChatSettingsFormConfig, Gn as useConversationExport, nr as useConversationHandlers, rr as useConversationImport, In as useConversationLookupMaps, Rn as useConversationPanelItems, ir as useConversationScroll, sr as useConversationSources, or as useConversationStream, Ei as useDialFileListing, ji as useDialFileManager, Mi as useDialFileManagerTabConfig, Di as useDialFileMetadata, Oi as useDialFileMutations, ki as useDialFileSharing, Ai as useDialFileUploadBatch, kt as useFavoriteEntitiesState, ta as useGridEditingScroll, zn as useImportFilePicker, $i as useMcpAppHostAdapter, Qi as useMcpAppHostContext, Zi as useMcpAppTools, en as useOAuthCallbackCompletion, ea as useOpenMcpAppCanvas, Ui as usePageFileDrag, Gi as usePanelMaxWidth, hn as usePromptsState, At as usePublishFolders, Ki as useShareLink, Mn as useShareRecipientsCount, Dt as useSkillDetailsPanelData, Tn as useSkillEditorLoad, En as useSkillEditorSubmit, Dn as useSkillFileActions, kn as useSkillFilePreview, nt as useSkillItemDetails, An as useSkillsState, qi as useToolsMenu, Tt as useToolsetLogin, Un as useTranscribeAudio, Ji as useUsageData, Wi as useViewportWidth, fn as validatePromptContent, pn as validatePromptDescription, mn as validatePromptName, Sn as validateSkillFileBatch, Lr as virtualPathToApiPath, vt as waitForToolsetOAuthResult };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-chat-hooks",
|
|
3
3
|
"description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
|
|
4
|
-
"version": "1.1.0-dev.
|
|
4
|
+
"version": "1.1.0-dev.438",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -104,21 +104,21 @@
|
|
|
104
104
|
},
|
|
105
105
|
"peerDependencies": {
|
|
106
106
|
"react": "^19.2.6",
|
|
107
|
-
"@epam/ai-dial-attachment-canvas": "1.1.0-dev.
|
|
108
|
-
"@epam/ai-dial-attachment-input": "1.1.0-dev.
|
|
109
|
-
"@epam/ai-dial-catalog": "1.1.0-dev.
|
|
110
|
-
"@epam/ai-dial-chat-api-client": "1.1.0-dev.
|
|
111
|
-
"@epam/ai-dial-chat-overlay": "1.1.0-dev.
|
|
112
|
-
"@epam/ai-dial-chat-shared": "1.1.0-dev.
|
|
113
|
-
"@epam/ai-dial-deployment-creation-form": "1.1.0-dev.
|
|
114
|
-
"@epam/ai-dial-mcp-apps": "1.1.0-dev.
|
|
115
|
-
"@epam/ai-dial-publish-panel": "1.1.0-dev.
|
|
116
|
-
"@epam/ai-dial-quotations": "1.1.0-dev.
|
|
107
|
+
"@epam/ai-dial-attachment-canvas": "1.1.0-dev.438",
|
|
108
|
+
"@epam/ai-dial-attachment-input": "1.1.0-dev.438",
|
|
109
|
+
"@epam/ai-dial-catalog": "1.1.0-dev.438",
|
|
110
|
+
"@epam/ai-dial-chat-api-client": "1.1.0-dev.438",
|
|
111
|
+
"@epam/ai-dial-chat-overlay": "1.1.0-dev.438",
|
|
112
|
+
"@epam/ai-dial-chat-shared": "1.1.0-dev.438",
|
|
113
|
+
"@epam/ai-dial-deployment-creation-form": "1.1.0-dev.438",
|
|
114
|
+
"@epam/ai-dial-mcp-apps": "1.1.0-dev.438",
|
|
115
|
+
"@epam/ai-dial-publish-panel": "1.1.0-dev.438",
|
|
116
|
+
"@epam/ai-dial-quotations": "1.1.0-dev.438",
|
|
117
117
|
"@epam/ai-dial-react-file-manager": "*",
|
|
118
|
-
"@epam/ai-dial-scheduled-tasks": "1.1.0-dev.
|
|
119
|
-
"@epam/ai-dial-share": "1.1.0-dev.
|
|
120
|
-
"@epam/ai-dial-skill-editor": "1.1.0-dev.
|
|
121
|
-
"@epam/ai-dial-source-panel": "1.1.0-dev.
|
|
118
|
+
"@epam/ai-dial-scheduled-tasks": "1.1.0-dev.438",
|
|
119
|
+
"@epam/ai-dial-share": "1.1.0-dev.438",
|
|
120
|
+
"@epam/ai-dial-skill-editor": "1.1.0-dev.438",
|
|
121
|
+
"@epam/ai-dial-source-panel": "1.1.0-dev.438",
|
|
122
122
|
"@epam/ai-dial-ui-kit": "*",
|
|
123
123
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
124
124
|
"@epam/pdf-highlighter-kit": ">=0.0.14",
|