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