@qfei-design/make-ai-assistant 0.1.5 → 0.1.6
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/PUBLIC_API.md +8 -6
- package/README.md +6 -4
- package/dist/react.cjs +5 -1
- package/dist/react.mjs +502 -439
- package/dist/styles.css +172 -30
- package/package.json +1 -1
package/dist/react.mjs
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { resolveArtifactTemplate as
|
|
3
|
-
import { extendArtifactTemplateRegistry as
|
|
1
|
+
import { jsxs as o, jsx as t, Fragment as L } from "react/jsx-runtime";
|
|
2
|
+
import { resolveArtifactTemplate as oa, createArtifactTemplateRegistry as Be, createArtifactCapabilities as ca } from "./index.mjs";
|
|
3
|
+
import { extendArtifactTemplateRegistry as Wa } from "./index.mjs";
|
|
4
4
|
import { useState as E, useRef as S, useMemo as Fe, useEffect as ge } from "react";
|
|
5
|
-
import { a as ue, r as pe, c as he, M as
|
|
6
|
-
import { d as
|
|
7
|
-
function
|
|
5
|
+
import { a as ue, r as pe, c as he, M as b, b as la, p as da } from "./conversation-B7eGUXi-.js";
|
|
6
|
+
import { d as Qa, e as Xa, f as et, g as at, v as tt } from "./conversation-B7eGUXi-.js";
|
|
7
|
+
function ma({
|
|
8
8
|
artifact: e,
|
|
9
9
|
context: a,
|
|
10
10
|
fallback: s,
|
|
11
|
-
onAction:
|
|
12
|
-
onActionError:
|
|
13
|
-
registry:
|
|
11
|
+
onAction: r,
|
|
12
|
+
onActionError: i,
|
|
13
|
+
registry: c
|
|
14
14
|
}) {
|
|
15
|
-
const m =
|
|
15
|
+
const m = oa(c, e, a);
|
|
16
16
|
if (!m)
|
|
17
|
-
return s ? s(e) : /* @__PURE__ */
|
|
17
|
+
return s ? s(e) : /* @__PURE__ */ o("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
|
|
18
18
|
/* @__PURE__ */ t("strong", { children: "暂不支持展示此结果" }),
|
|
19
|
-
/* @__PURE__ */
|
|
19
|
+
/* @__PURE__ */ o("span", { children: [
|
|
20
20
|
"结果类型:",
|
|
21
21
|
e.kind
|
|
22
22
|
] })
|
|
23
23
|
] });
|
|
24
|
-
const
|
|
24
|
+
const u = {
|
|
25
25
|
context: a,
|
|
26
|
-
onAction:
|
|
27
|
-
onActionError:
|
|
26
|
+
onAction: r,
|
|
27
|
+
onActionError: i
|
|
28
28
|
};
|
|
29
|
-
return m.template.render(e, a,
|
|
29
|
+
return m.template.render(e, a, u);
|
|
30
30
|
}
|
|
31
|
-
const
|
|
31
|
+
const P = (e, a, s) => {
|
|
32
32
|
if (e == null || e === "") return "—";
|
|
33
33
|
if (typeof e == "boolean") return e ? "是" : "否";
|
|
34
34
|
if (typeof e != "number") return `${e}${a?.unit ?? ""}`;
|
|
35
|
-
const
|
|
36
|
-
maximumFractionDigits:
|
|
37
|
-
minimumFractionDigits:
|
|
35
|
+
const r = a?.precision, i = {
|
|
36
|
+
maximumFractionDigits: r ?? 2,
|
|
37
|
+
minimumFractionDigits: r
|
|
38
38
|
};
|
|
39
|
-
a?.style === "currency" && a.currency ? (
|
|
39
|
+
a?.style === "currency" && a.currency ? (i.style = "currency", i.currency = a.currency) : a?.style === "percent" && (i.style = "percent");
|
|
40
40
|
try {
|
|
41
|
-
const
|
|
42
|
-
return `${new Intl.NumberFormat(s,
|
|
41
|
+
const c = a?.style === "percent" ? e / 100 : e;
|
|
42
|
+
return `${new Intl.NumberFormat(s, i).format(c)}${a?.unit ?? ""}`;
|
|
43
43
|
} catch {
|
|
44
44
|
return `${e}${a?.unit ?? ""}`;
|
|
45
45
|
}
|
|
46
46
|
}, Ue = (e) => {
|
|
47
47
|
let a = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY;
|
|
48
|
-
for (const
|
|
49
|
-
a = Math.min(a,
|
|
48
|
+
for (const r of e)
|
|
49
|
+
a = Math.min(a, r), s = Math.max(s, r);
|
|
50
50
|
return Number.isFinite(a) && Number.isFinite(s) ? { min: a, max: s } : { min: 0, max: 0 };
|
|
51
51
|
}, qe = (e, a, s) => {
|
|
52
52
|
if (!s.onAction) return;
|
|
53
|
-
const
|
|
53
|
+
const r = (c) => {
|
|
54
54
|
console.error("[make-ai-assistant] host action error handler failed", {
|
|
55
55
|
actionId: e.id,
|
|
56
56
|
artifactId: a.artifact.id,
|
|
57
|
-
errorType:
|
|
57
|
+
errorType: c instanceof Error ? c.name : typeof c,
|
|
58
58
|
intent: e.intent
|
|
59
59
|
});
|
|
60
|
-
},
|
|
60
|
+
}, i = (c) => {
|
|
61
61
|
if (s.onActionError) {
|
|
62
62
|
try {
|
|
63
63
|
Promise.resolve(
|
|
64
|
-
s.onActionError(
|
|
65
|
-
).catch(
|
|
64
|
+
s.onActionError(c, e, a)
|
|
65
|
+
).catch(r);
|
|
66
66
|
} catch (m) {
|
|
67
|
-
|
|
67
|
+
r(m);
|
|
68
68
|
}
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
console.error("[make-ai-assistant] host action failed", {
|
|
72
72
|
actionId: e.id,
|
|
73
73
|
artifactId: a.artifact.id,
|
|
74
|
-
errorType:
|
|
74
|
+
errorType: c instanceof Error ? c.name : typeof c,
|
|
75
75
|
intent: e.intent
|
|
76
76
|
});
|
|
77
77
|
};
|
|
78
78
|
try {
|
|
79
|
-
Promise.resolve(s.onAction(e, a)).catch(
|
|
80
|
-
} catch (
|
|
81
|
-
|
|
79
|
+
Promise.resolve(s.onAction(e, a)).catch(i);
|
|
80
|
+
} catch (c) {
|
|
81
|
+
i(c);
|
|
82
82
|
}
|
|
83
|
-
},
|
|
83
|
+
}, W = (e, a) => e.actions?.length && a.onAction ? /* @__PURE__ */ t("div", { className: "make-ai-artifact__actions", children: e.actions.map((s) => /* @__PURE__ */ o(
|
|
84
84
|
"button",
|
|
85
85
|
{
|
|
86
86
|
className: `make-ai-artifact__action make-ai-artifact__action--${s.appearance ?? "link"}`,
|
|
@@ -92,7 +92,7 @@ const D = (e, a, s) => {
|
|
|
92
92
|
]
|
|
93
93
|
},
|
|
94
94
|
s.id
|
|
95
|
-
)) }) : null,
|
|
95
|
+
)) }) : null, J = (e, a, s = "") => /* @__PURE__ */ o(
|
|
96
96
|
"section",
|
|
97
97
|
{
|
|
98
98
|
"aria-label": e.title ?? `${e.kind} result`,
|
|
@@ -105,137 +105,137 @@ const D = (e, a, s) => {
|
|
|
105
105
|
a
|
|
106
106
|
]
|
|
107
107
|
}
|
|
108
|
-
),
|
|
108
|
+
), ua = ({
|
|
109
109
|
artifact: e,
|
|
110
110
|
renderContext: a
|
|
111
111
|
}) => {
|
|
112
|
-
const s = e.data.delta,
|
|
112
|
+
const s = e.data.delta, r = s ? P(
|
|
113
113
|
s.value,
|
|
114
114
|
s.format === "percent" ? { style: "percent" } : void 0,
|
|
115
115
|
a.context.locale
|
|
116
116
|
) : void 0;
|
|
117
|
-
return
|
|
117
|
+
return J(
|
|
118
118
|
e,
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
/* @__PURE__ */ t("div", { className: "make-ai-artifact__metric-value", children:
|
|
119
|
+
/* @__PURE__ */ o(L, { children: [
|
|
120
|
+
/* @__PURE__ */ t("div", { className: "make-ai-artifact__metric-value", children: P(
|
|
121
121
|
e.data.value,
|
|
122
122
|
e.data.format,
|
|
123
123
|
a.context.locale
|
|
124
124
|
) }),
|
|
125
|
-
s ? /* @__PURE__ */
|
|
125
|
+
s ? /* @__PURE__ */ o(
|
|
126
126
|
"div",
|
|
127
127
|
{
|
|
128
128
|
className: `make-ai-artifact__delta make-ai-artifact__delta--${s.direction ?? "flat"}`,
|
|
129
129
|
children: [
|
|
130
130
|
/* @__PURE__ */ t("span", { "aria-hidden": "true", children: s.direction === "up" ? "↗" : s.direction === "down" ? "↘" : "→" }),
|
|
131
|
-
/* @__PURE__ */ t("span", { children:
|
|
131
|
+
/* @__PURE__ */ t("span", { children: r }),
|
|
132
132
|
s.label ? /* @__PURE__ */ t("span", { children: s.label }) : null
|
|
133
133
|
]
|
|
134
134
|
}
|
|
135
135
|
) : null,
|
|
136
136
|
e.data.context ? /* @__PURE__ */ t("p", { className: "make-ai-artifact__context", children: e.data.context }) : null,
|
|
137
|
-
|
|
137
|
+
W(e, a)
|
|
138
138
|
] }),
|
|
139
139
|
"make-ai-artifact--metric"
|
|
140
140
|
);
|
|
141
|
-
},
|
|
141
|
+
}, pa = ({
|
|
142
142
|
artifact: e,
|
|
143
143
|
renderContext: a
|
|
144
|
-
}) =>
|
|
144
|
+
}) => J(
|
|
145
145
|
e,
|
|
146
|
-
/* @__PURE__ */
|
|
147
|
-
/* @__PURE__ */ t("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((s) => /* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ o(L, { children: [
|
|
147
|
+
/* @__PURE__ */ t("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((s) => /* @__PURE__ */ o("div", { className: "make-ai-artifact__comparison-item", children: [
|
|
148
148
|
/* @__PURE__ */ t("span", { children: s.label }),
|
|
149
|
-
/* @__PURE__ */ t("strong", { children:
|
|
149
|
+
/* @__PURE__ */ t("strong", { children: P(s.value, s.format, a.context.locale) }),
|
|
150
150
|
s.hint ? /* @__PURE__ */ t("small", { children: s.hint }) : null
|
|
151
151
|
] }, s.id)) }),
|
|
152
|
-
|
|
152
|
+
W(e, a)
|
|
153
153
|
] }),
|
|
154
154
|
"make-ai-artifact--comparison"
|
|
155
|
-
),
|
|
155
|
+
), ha = ({
|
|
156
156
|
artifact: e,
|
|
157
157
|
renderContext: a
|
|
158
158
|
}) => {
|
|
159
|
-
const s = e.data.series.flatMap((m) => m.points.map((
|
|
160
|
-
return
|
|
159
|
+
const s = e.data.series.flatMap((m) => m.points.map((u) => u.y)), { max: r, min: i } = Ue(s), c = r - i || 1;
|
|
160
|
+
return J(
|
|
161
161
|
e,
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
/* @__PURE__ */ t("div", { className: "make-ai-artifact__trend", children: e.data.series.map((m) => /* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ o(L, { children: [
|
|
163
|
+
/* @__PURE__ */ t("div", { className: "make-ai-artifact__trend", children: e.data.series.map((m) => /* @__PURE__ */ o("div", { className: "make-ai-artifact__trend-series", children: [
|
|
164
164
|
/* @__PURE__ */ t("div", { className: "make-ai-artifact__trend-label", children: m.label }),
|
|
165
|
-
/* @__PURE__ */ t("div", { className: "make-ai-artifact__trend-bars", children: m.points.map((
|
|
166
|
-
const y = 18 + (
|
|
167
|
-
return /* @__PURE__ */
|
|
165
|
+
/* @__PURE__ */ t("div", { className: "make-ai-artifact__trend-bars", children: m.points.map((u, g) => {
|
|
166
|
+
const y = 18 + (u.y - i) / c * 70;
|
|
167
|
+
return /* @__PURE__ */ o("div", { className: "make-ai-artifact__trend-point", children: [
|
|
168
168
|
/* @__PURE__ */ t(
|
|
169
169
|
"span",
|
|
170
170
|
{
|
|
171
|
-
"aria-label": `${
|
|
172
|
-
|
|
171
|
+
"aria-label": `${u.x}: ${P(
|
|
172
|
+
u.y,
|
|
173
173
|
m.format,
|
|
174
174
|
a.context.locale
|
|
175
175
|
)}`,
|
|
176
176
|
className: "make-ai-artifact__trend-bar",
|
|
177
177
|
role: "img",
|
|
178
178
|
style: { height: `${y}%` },
|
|
179
|
-
title: `${
|
|
180
|
-
|
|
179
|
+
title: `${u.x}: ${P(
|
|
180
|
+
u.y,
|
|
181
181
|
m.format,
|
|
182
182
|
a.context.locale
|
|
183
183
|
)}`
|
|
184
184
|
}
|
|
185
185
|
),
|
|
186
|
-
/* @__PURE__ */ t("small", { children:
|
|
187
|
-
] }, `${
|
|
186
|
+
/* @__PURE__ */ t("small", { children: u.x })
|
|
187
|
+
] }, `${u.x}-${g}`);
|
|
188
188
|
}) })
|
|
189
189
|
] }, m.id)) }),
|
|
190
|
-
|
|
190
|
+
W(e, a)
|
|
191
191
|
] }),
|
|
192
192
|
"make-ai-artifact--trend"
|
|
193
193
|
);
|
|
194
|
-
},
|
|
194
|
+
}, ga = ({
|
|
195
195
|
artifact: e,
|
|
196
196
|
renderContext: a
|
|
197
197
|
}) => {
|
|
198
198
|
const { max: s } = Ue(
|
|
199
|
-
e.data.items.map((
|
|
200
|
-
),
|
|
201
|
-
return
|
|
199
|
+
e.data.items.map((i) => Math.abs(i.value))
|
|
200
|
+
), r = Math.max(s, 1);
|
|
201
|
+
return J(
|
|
202
202
|
e,
|
|
203
|
-
/* @__PURE__ */
|
|
204
|
-
/* @__PURE__ */ t("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((
|
|
205
|
-
/* @__PURE__ */ t("span", { className: "make-ai-artifact__rank", children:
|
|
206
|
-
/* @__PURE__ */
|
|
207
|
-
/* @__PURE__ */ t("span", { children:
|
|
208
|
-
|
|
203
|
+
/* @__PURE__ */ o(L, { children: [
|
|
204
|
+
/* @__PURE__ */ t("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((i, c) => /* @__PURE__ */ o("li", { children: [
|
|
205
|
+
/* @__PURE__ */ t("span", { className: "make-ai-artifact__rank", children: c + 1 }),
|
|
206
|
+
/* @__PURE__ */ o("span", { className: "make-ai-artifact__ranking-label", children: [
|
|
207
|
+
/* @__PURE__ */ t("span", { children: i.label }),
|
|
208
|
+
i.description ? /* @__PURE__ */ t("small", { children: i.description }) : null
|
|
209
209
|
] }),
|
|
210
|
-
/* @__PURE__ */ t("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ t("span", { style: { width: `${Math.abs(
|
|
211
|
-
/* @__PURE__ */ t("strong", { children:
|
|
212
|
-
] },
|
|
213
|
-
|
|
210
|
+
/* @__PURE__ */ t("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ t("span", { style: { width: `${Math.abs(i.value) / r * 100}%` } }) }),
|
|
211
|
+
/* @__PURE__ */ t("strong", { children: P(i.value, i.format, a.context.locale) })
|
|
212
|
+
] }, i.id)) }),
|
|
213
|
+
W(e, a)
|
|
214
214
|
] }),
|
|
215
215
|
"make-ai-artifact--ranking"
|
|
216
216
|
);
|
|
217
|
-
},
|
|
217
|
+
}, fa = (e, a) => a.action ?? {
|
|
218
218
|
id: `open-${a.id}`,
|
|
219
219
|
label: a.title ?? a.id,
|
|
220
220
|
intent: "open-record",
|
|
221
221
|
target: { entityKey: e.data.entity.key, recordId: a.id }
|
|
222
|
-
},
|
|
222
|
+
}, _a = ({
|
|
223
223
|
artifact: e,
|
|
224
224
|
renderContext: a
|
|
225
|
-
}) =>
|
|
225
|
+
}) => J(
|
|
226
226
|
e,
|
|
227
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ o(L, { children: [
|
|
228
228
|
/* @__PURE__ */ t("div", { className: "make-ai-artifact__record-list", children: e.data.records.length === 0 ? /* @__PURE__ */ t("p", { className: "make-ai-artifact__empty", children: "没有符合条件的记录" }) : e.data.records.map((s) => {
|
|
229
|
-
const
|
|
229
|
+
const r = fa(e, s), i = /* @__PURE__ */ o(L, { children: [
|
|
230
230
|
/* @__PURE__ */ t("strong", { children: s.title ?? s.id }),
|
|
231
|
-
/* @__PURE__ */ t("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((
|
|
232
|
-
/* @__PURE__ */ t("small", { children:
|
|
233
|
-
|
|
234
|
-
s.values[
|
|
235
|
-
|
|
231
|
+
/* @__PURE__ */ t("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((c) => /* @__PURE__ */ o("span", { children: [
|
|
232
|
+
/* @__PURE__ */ t("small", { children: c.label }),
|
|
233
|
+
P(
|
|
234
|
+
s.values[c.key],
|
|
235
|
+
c.format,
|
|
236
236
|
a.context.locale
|
|
237
237
|
)
|
|
238
|
-
] },
|
|
238
|
+
] }, c.key)) }),
|
|
239
239
|
a.onAction ? /* @__PURE__ */ t("span", { "aria-hidden": "true", children: "›" }) : null
|
|
240
240
|
] });
|
|
241
241
|
return a.onAction ? /* @__PURE__ */ t(
|
|
@@ -243,49 +243,49 @@ const D = (e, a, s) => {
|
|
|
243
243
|
{
|
|
244
244
|
className: "make-ai-artifact__record",
|
|
245
245
|
type: "button",
|
|
246
|
-
onClick: () => qe(
|
|
246
|
+
onClick: () => qe(r, {
|
|
247
247
|
artifact: e,
|
|
248
248
|
context: a.context
|
|
249
249
|
}, a),
|
|
250
|
-
children:
|
|
250
|
+
children: i
|
|
251
251
|
},
|
|
252
252
|
s.id
|
|
253
|
-
) : /* @__PURE__ */ t("div", { className: "make-ai-artifact__record", children:
|
|
253
|
+
) : /* @__PURE__ */ t("div", { className: "make-ai-artifact__record", children: i }, s.id);
|
|
254
254
|
}) }),
|
|
255
|
-
e.data.total !== void 0 ? /* @__PURE__ */
|
|
255
|
+
e.data.total !== void 0 ? /* @__PURE__ */ o("p", { className: "make-ai-artifact__record-total", children: [
|
|
256
256
|
"共 ",
|
|
257
257
|
e.data.total,
|
|
258
258
|
" 条"
|
|
259
259
|
] }) : null,
|
|
260
|
-
|
|
260
|
+
W(e, a)
|
|
261
261
|
] }),
|
|
262
262
|
"make-ai-artifact--record-list"
|
|
263
|
-
),
|
|
263
|
+
), va = ({
|
|
264
264
|
artifact: e,
|
|
265
265
|
renderContext: a
|
|
266
|
-
}) =>
|
|
266
|
+
}) => J(
|
|
267
267
|
e,
|
|
268
|
-
/* @__PURE__ */
|
|
269
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ o(L, { children: [
|
|
269
|
+
/* @__PURE__ */ o("div", { className: `make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`, children: [
|
|
270
270
|
/* @__PURE__ */ t("span", { "aria-hidden": "true", children: e.data.tone === "success" ? "✓" : e.data.tone === "warning" ? "!" : e.data.tone === "danger" ? "×" : "i" }),
|
|
271
271
|
/* @__PURE__ */ t("p", { children: e.data.body })
|
|
272
272
|
] }),
|
|
273
|
-
|
|
273
|
+
W(e, a)
|
|
274
274
|
] }),
|
|
275
275
|
"make-ai-artifact--notice"
|
|
276
|
-
), Y = (e, a, s) => ({ id: e, kinds: [a], priority: 0, render: s }),
|
|
277
|
-
Y("platform.metric.default", "metric", (e, a, s) => /* @__PURE__ */ t(
|
|
278
|
-
Y("platform.comparison.default", "comparison", (e, a, s) => /* @__PURE__ */ t(
|
|
279
|
-
Y("platform.trend.default", "trend", (e, a, s) => /* @__PURE__ */ t(
|
|
280
|
-
Y("platform.ranking.default", "ranking", (e, a, s) => /* @__PURE__ */ t(
|
|
281
|
-
Y("platform.record-list.default", "record-list", (e, a, s) => /* @__PURE__ */ t(
|
|
282
|
-
Y("platform.notice.default", "notice", (e, a, s) => /* @__PURE__ */ t(
|
|
283
|
-
], ka =
|
|
276
|
+
), Y = (e, a, s) => ({ id: e, kinds: [a], priority: 0, render: s }), ya = [
|
|
277
|
+
Y("platform.metric.default", "metric", (e, a, s) => /* @__PURE__ */ t(ua, { artifact: e, renderContext: s })),
|
|
278
|
+
Y("platform.comparison.default", "comparison", (e, a, s) => /* @__PURE__ */ t(pa, { artifact: e, renderContext: s })),
|
|
279
|
+
Y("platform.trend.default", "trend", (e, a, s) => /* @__PURE__ */ t(ha, { artifact: e, renderContext: s })),
|
|
280
|
+
Y("platform.ranking.default", "ranking", (e, a, s) => /* @__PURE__ */ t(ga, { artifact: e, renderContext: s })),
|
|
281
|
+
Y("platform.record-list.default", "record-list", (e, a, s) => /* @__PURE__ */ t(_a, { artifact: e, renderContext: s })),
|
|
282
|
+
Y("platform.notice.default", "notice", (e, a, s) => /* @__PURE__ */ t(va, { artifact: e, renderContext: s }))
|
|
283
|
+
], ka = Be(ya).templates, Aa = (e = ka) => Be(e), ba = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, Ia = "Make", Na = [
|
|
284
284
|
"总结当前页面数据",
|
|
285
285
|
"找出需要关注的记录",
|
|
286
286
|
"列出我有权限查看的数据对象"
|
|
287
|
-
],
|
|
288
|
-
class
|
|
287
|
+
], He = (e, a) => a ?? `${e?.trim() || Ia} AI 助手`, wa = (e) => e ?? Na;
|
|
288
|
+
class p extends Error {
|
|
289
289
|
}
|
|
290
290
|
const Le = (e) => {
|
|
291
291
|
try {
|
|
@@ -301,7 +301,7 @@ const Le = (e) => {
|
|
|
301
301
|
errorType: a instanceof Error ? a.name : typeof a
|
|
302
302
|
});
|
|
303
303
|
}
|
|
304
|
-
},
|
|
304
|
+
}, Ta = async (e) => {
|
|
305
305
|
if (globalThis.navigator?.clipboard?.writeText) {
|
|
306
306
|
await globalThis.navigator.clipboard.writeText(e);
|
|
307
307
|
return;
|
|
@@ -313,47 +313,93 @@ const Le = (e) => {
|
|
|
313
313
|
const s = document.execCommand("copy");
|
|
314
314
|
if (a.remove(), !s)
|
|
315
315
|
throw new Error("Clipboard copy failed");
|
|
316
|
-
},
|
|
316
|
+
}, Ke = () => /* @__PURE__ */ o("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
317
317
|
/* @__PURE__ */ t("path", { d: "M12 2.8c.5 4.4 2.8 6.8 7.2 7.2-4.4.5-6.8 2.8-7.2 7.2-.5-4.4-2.8-6.8-7.2-7.2 4.4-.5 6.8-2.8 7.2-7.2Z" }),
|
|
318
318
|
/* @__PURE__ */ t("path", { d: "M18.3 16.1c.2 1.8 1.2 2.8 3 3-1.8.2-2.8 1.2-3 3-.2-1.8-1.2-2.8-3-3 1.8-.2 2.8-1.2 3-3Z" })
|
|
319
|
-
] }),
|
|
319
|
+
] }), Ma = () => /* @__PURE__ */ t("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ t("path", { d: "m6 6 12 12M18 6 6 18" }) }), Ca = () => /* @__PURE__ */ o("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
320
|
+
/* @__PURE__ */ t("path", { d: "M8 8h10v12H8z" }),
|
|
321
|
+
/* @__PURE__ */ t("path", { d: "M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
|
|
322
|
+
] }), $a = () => /* @__PURE__ */ t("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ t("path", { d: "M12 5v14M5 12h14" }) }), Ea = () => /* @__PURE__ */ o("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
320
323
|
/* @__PURE__ */ t("path", { d: "m4 4 17 8-17 8 3-8-3-8Z" }),
|
|
321
324
|
/* @__PURE__ */ t("path", { d: "M7 12h14" })
|
|
322
|
-
] }), ae = ({ className: e = "" }) => /* @__PURE__ */ t("span", { className: `make-ai-assistant__avatar ${e}`.trim(), "aria-hidden": "true", children: /* @__PURE__ */ t(
|
|
325
|
+
] }), ae = ({ className: e = "" }) => /* @__PURE__ */ t("span", { className: `make-ai-assistant__avatar ${e}`.trim(), "aria-hidden": "true", children: /* @__PURE__ */ t(Ke, {}) }), Sa = ({ src: e }) => e ? /* @__PURE__ */ t("span", { className: "make-ai-assistant__user-avatar", "aria-hidden": "true", children: /* @__PURE__ */ t("img", { alt: "", src: e }) }) : null, Ra = (e) => {
|
|
326
|
+
const a = [], s = [], r = [], i = [], c = () => {
|
|
327
|
+
const g = s.join(`
|
|
328
|
+
`).trim();
|
|
329
|
+
s.length = 0, g && a.push({ type: "paragraph", text: g });
|
|
330
|
+
}, m = () => {
|
|
331
|
+
r.length && a.push({ type: "list", items: r.splice(0) });
|
|
332
|
+
}, u = () => {
|
|
333
|
+
const g = i.join(`
|
|
334
|
+
`).trim();
|
|
335
|
+
i.length = 0, g && a.push({ type: "pre", text: g });
|
|
336
|
+
};
|
|
337
|
+
for (const g of e.replace(/\r\n?/g, `
|
|
338
|
+
`).split(`
|
|
339
|
+
`)) {
|
|
340
|
+
const y = g.trim();
|
|
341
|
+
if (!y) {
|
|
342
|
+
c(), m(), u();
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
if (/^\s*\|.+\|\s*$/.test(g)) {
|
|
346
|
+
c(), m(), i.push(g.trim());
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
const _ = /^\s*[-*]\s+(.+)$/.exec(g);
|
|
350
|
+
if (_) {
|
|
351
|
+
c(), u(), r.push(_[1]?.trim() ?? "");
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
m(), u(), s.push(y);
|
|
355
|
+
}
|
|
356
|
+
return c(), m(), u(), a;
|
|
357
|
+
}, Pe = (e) => {
|
|
358
|
+
const a = [], s = /(\*\*[^*]+\*\*|`[^`]+`)/g;
|
|
359
|
+
let r = 0;
|
|
360
|
+
for (const i of e.matchAll(s)) {
|
|
361
|
+
const c = i[0], m = i.index ?? 0;
|
|
362
|
+
m > r && a.push(e.slice(r, m)), c.startsWith("**") ? a.push(/* @__PURE__ */ t("strong", { children: c.slice(2, -2) }, `${m}-strong`)) : a.push(/* @__PURE__ */ t("code", { children: c.slice(1, -1) }, `${m}-code`)), r = m + c.length;
|
|
363
|
+
}
|
|
364
|
+
return r < e.length && a.push(e.slice(r)), a;
|
|
365
|
+
}, xa = ({ content: e }) => {
|
|
366
|
+
const a = Ra(e);
|
|
367
|
+
return a.length ? /* @__PURE__ */ t("div", { className: "make-ai-assistant__bubble make-ai-assistant__assistant-text", children: a.map((s, r) => s.type === "paragraph" ? /* @__PURE__ */ t("p", { children: Pe(s.text) }, `${r}-paragraph`) : s.type === "pre" ? /* @__PURE__ */ t("pre", { children: /* @__PURE__ */ t("code", { children: s.text }) }, `${r}-pre`) : /* @__PURE__ */ t("ul", { children: s.items.map((i, c) => /* @__PURE__ */ t("li", { children: Pe(i) }, `${c}-${i}`)) }, `${r}-list`)) }) : null;
|
|
368
|
+
}, Ve = ({ assistantName: e }) => /* @__PURE__ */ o("div", { className: "make-ai-assistant__message-identity", children: [
|
|
323
369
|
/* @__PURE__ */ t(ae, { className: "make-ai-assistant__avatar--message" }),
|
|
324
370
|
/* @__PURE__ */ t("span", { className: "make-ai-assistant__message-sender", children: e })
|
|
325
|
-
] }),
|
|
371
|
+
] }), ze = (e) => {
|
|
326
372
|
for (let a = e.messages.length - 1; a >= 0; a -= 1) {
|
|
327
373
|
const s = e.messages[a];
|
|
328
374
|
if (s.role === "assistant" && s.status === "streaming")
|
|
329
375
|
return s.id;
|
|
330
376
|
}
|
|
331
|
-
},
|
|
377
|
+
}, Fa = (e) => {
|
|
332
378
|
for (let a = e.messages.length - 1; a >= 0; a -= 1)
|
|
333
379
|
if (e.messages[a].role === "user") return a;
|
|
334
380
|
return -1;
|
|
335
381
|
}, Oe = (e) => {
|
|
336
|
-
const a =
|
|
382
|
+
const a = Fa(e);
|
|
337
383
|
if (!(a < 0))
|
|
338
384
|
for (let s = e.messages.length - 1; s > a; s -= 1) {
|
|
339
|
-
const
|
|
340
|
-
if (
|
|
385
|
+
const r = e.messages[s];
|
|
386
|
+
if (r.role === "assistant") return r.id;
|
|
341
387
|
}
|
|
342
|
-
},
|
|
388
|
+
}, La = (e) => {
|
|
343
389
|
if (e.status === "idle")
|
|
344
390
|
for (let a = e.messages.length - 1; a >= 0; a -= 1) {
|
|
345
391
|
const s = e.messages[a];
|
|
346
392
|
if (s.role === "assistant" && s.status === "complete")
|
|
347
393
|
return s.id;
|
|
348
394
|
}
|
|
349
|
-
},
|
|
395
|
+
}, Pa = (e) => {
|
|
350
396
|
for (let a = e.messages.length - 1; a >= 0; a -= 1) {
|
|
351
397
|
const s = e.messages[a];
|
|
352
398
|
if (s.role === "user") return s;
|
|
353
399
|
}
|
|
354
|
-
},
|
|
400
|
+
}, Da = (e, a) => {
|
|
355
401
|
const s = e.messages.findIndex(
|
|
356
|
-
(
|
|
402
|
+
(r) => r.id === a && r.role === "user"
|
|
357
403
|
);
|
|
358
404
|
return {
|
|
359
405
|
...e,
|
|
@@ -362,10 +408,10 @@ const Le = (e) => {
|
|
|
362
408
|
status: "streaming",
|
|
363
409
|
messages: s < 0 ? e.messages : e.messages.slice(0, s + 1)
|
|
364
410
|
};
|
|
365
|
-
},
|
|
411
|
+
}, Ba = (e) => e.scrollHeight - e.scrollTop - e.clientHeight <= 48, Ua = (e = "smooth") => globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : e, je = ({
|
|
366
412
|
error: e,
|
|
367
413
|
onRetry: a
|
|
368
|
-
}) => /* @__PURE__ */
|
|
414
|
+
}) => /* @__PURE__ */ o("div", { className: "make-ai-assistant__message-status make-ai-assistant__message-status--error", role: "alert", children: [
|
|
369
415
|
/* @__PURE__ */ t("strong", { children: "本次请求未完成" }),
|
|
370
416
|
/* @__PURE__ */ t("span", { children: e.message }),
|
|
371
417
|
e.retryable && a ? /* @__PURE__ */ t(
|
|
@@ -383,36 +429,53 @@ const Le = (e) => {
|
|
|
383
429
|
}) => {
|
|
384
430
|
if (!a?.length) return null;
|
|
385
431
|
const s = a[a.length - 1] ?? "处理中";
|
|
386
|
-
return /* @__PURE__ */
|
|
387
|
-
/* @__PURE__ */
|
|
388
|
-
e ? /* @__PURE__ */
|
|
432
|
+
return /* @__PURE__ */ o("details", { className: "make-ai-assistant__process", open: e, children: [
|
|
433
|
+
/* @__PURE__ */ o("summary", { children: [
|
|
434
|
+
e ? /* @__PURE__ */ o("span", { className: "make-ai-assistant__progress", role: "status", children: [
|
|
389
435
|
/* @__PURE__ */ t("span", { "aria-hidden": "true" }),
|
|
390
436
|
/* @__PURE__ */ t("span", { children: s })
|
|
391
437
|
] }) : /* @__PURE__ */ t("span", { className: "make-ai-assistant__process-title", children: "处理过程" }),
|
|
392
|
-
/* @__PURE__ */
|
|
438
|
+
/* @__PURE__ */ o("span", { className: "make-ai-assistant__process-count", children: [
|
|
393
439
|
a.length,
|
|
394
440
|
" 步"
|
|
395
441
|
] })
|
|
396
442
|
] }),
|
|
397
|
-
/* @__PURE__ */ t("ol", { children: a.map((
|
|
443
|
+
/* @__PURE__ */ t("ol", { children: a.map((r, i) => /* @__PURE__ */ o(
|
|
398
444
|
"li",
|
|
399
445
|
{
|
|
400
|
-
"data-step-active": e &&
|
|
446
|
+
"data-step-active": e && i === a.length - 1 ? !0 : void 0,
|
|
401
447
|
children: [
|
|
402
448
|
/* @__PURE__ */ t("span", { "aria-hidden": "true" }),
|
|
403
|
-
/* @__PURE__ */ t("span", { children:
|
|
449
|
+
/* @__PURE__ */ t("span", { children: r })
|
|
404
450
|
]
|
|
405
451
|
},
|
|
406
|
-
`${
|
|
452
|
+
`${i}-${r}`
|
|
407
453
|
)) })
|
|
408
454
|
] });
|
|
409
|
-
},
|
|
455
|
+
}, qa = ({
|
|
410
456
|
copyFeedback: e,
|
|
411
457
|
onCopy: a,
|
|
412
458
|
onRegenerate: s
|
|
413
|
-
}) => !a && !s ? null : /* @__PURE__ */
|
|
414
|
-
a ? /* @__PURE__ */ t(
|
|
415
|
-
|
|
459
|
+
}) => !a && !s ? null : /* @__PURE__ */ o("div", { className: "make-ai-assistant__reply-actions", "aria-label": "回复操作", children: [
|
|
460
|
+
a ? /* @__PURE__ */ t(
|
|
461
|
+
"button",
|
|
462
|
+
{
|
|
463
|
+
"aria-label": "复制回答",
|
|
464
|
+
className: "make-ai-assistant__reply-action make-ai-assistant__reply-copy",
|
|
465
|
+
type: "button",
|
|
466
|
+
onClick: a,
|
|
467
|
+
children: /* @__PURE__ */ t(Ca, {})
|
|
468
|
+
}
|
|
469
|
+
) : null,
|
|
470
|
+
s ? /* @__PURE__ */ t(
|
|
471
|
+
"button",
|
|
472
|
+
{
|
|
473
|
+
className: "make-ai-assistant__reply-action make-ai-assistant__reply-regenerate",
|
|
474
|
+
type: "button",
|
|
475
|
+
onClick: s,
|
|
476
|
+
children: "重新生成"
|
|
477
|
+
}
|
|
478
|
+
) : null,
|
|
416
479
|
e ? /* @__PURE__ */ t(
|
|
417
480
|
"span",
|
|
418
481
|
{
|
|
@@ -426,388 +489,388 @@ const Le = (e) => {
|
|
|
426
489
|
assistantName: e,
|
|
427
490
|
error: a,
|
|
428
491
|
onRetry: s,
|
|
429
|
-
progress:
|
|
492
|
+
progress: r
|
|
430
493
|
}) => {
|
|
431
|
-
const
|
|
432
|
-
return a?.message ??
|
|
494
|
+
const i = a ? "error" : "progress";
|
|
495
|
+
return a?.message ?? r?.message ? /* @__PURE__ */ t(
|
|
433
496
|
"article",
|
|
434
497
|
{
|
|
435
|
-
"aria-label": `${e}的${
|
|
436
|
-
className: `make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${
|
|
498
|
+
"aria-label": `${e}的${i === "error" ? "错误消息" : "状态消息"}`,
|
|
499
|
+
className: `make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${i}`,
|
|
437
500
|
"data-message-role": "assistant",
|
|
438
|
-
"data-message-state":
|
|
439
|
-
children: /* @__PURE__ */
|
|
501
|
+
"data-message-state": i,
|
|
502
|
+
children: /* @__PURE__ */ o("div", { className: "make-ai-assistant__message-turn", children: [
|
|
440
503
|
/* @__PURE__ */ t(Ve, { assistantName: e }),
|
|
441
|
-
/* @__PURE__ */ t("div", { className: "make-ai-assistant__message-stack", children: a ? /* @__PURE__ */ t(
|
|
504
|
+
/* @__PURE__ */ t("div", { className: "make-ai-assistant__message-stack", children: a ? /* @__PURE__ */ t(je, { error: a, onRetry: s }) : /* @__PURE__ */ t(Ge, { active: !0, steps: r?.steps }) })
|
|
442
505
|
] })
|
|
443
506
|
}
|
|
444
507
|
) : null;
|
|
445
|
-
},
|
|
446
|
-
const
|
|
508
|
+
}, Ha = (e, a, s, r, i, c, m, u, g, y, _, v, D) => {
|
|
509
|
+
const w = Oe(e), B = ze(e), R = La(e);
|
|
447
510
|
let x;
|
|
448
|
-
return e.messages.map((
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
const
|
|
511
|
+
return e.messages.map((l) => {
|
|
512
|
+
const k = l.role === "assistant", U = x;
|
|
513
|
+
k || (x = l);
|
|
514
|
+
const q = l.id === B, T = l.id === w ? e.error : void 0, H = l.error ?? T, M = k ? c : u, fe = k && l.status === "complete" && !H && (l.content.trim() || l.id === R);
|
|
452
515
|
return /* @__PURE__ */ t(
|
|
453
516
|
"article",
|
|
454
517
|
{
|
|
455
|
-
"aria-label": `${
|
|
456
|
-
className: `make-ai-assistant__message make-ai-assistant__message--${
|
|
457
|
-
"data-message-role":
|
|
458
|
-
"data-message-state":
|
|
459
|
-
"data-message-status":
|
|
460
|
-
children: /* @__PURE__ */
|
|
461
|
-
|
|
462
|
-
/* @__PURE__ */ t("span", { className: "make-ai-assistant__message-sender", children:
|
|
463
|
-
/* @__PURE__ */ t(
|
|
518
|
+
"aria-label": `${M}的消息`,
|
|
519
|
+
className: `make-ai-assistant__message make-ai-assistant__message--${l.role}`,
|
|
520
|
+
"data-message-role": l.role,
|
|
521
|
+
"data-message-state": H ? "error" : void 0,
|
|
522
|
+
"data-message-status": l.status,
|
|
523
|
+
children: /* @__PURE__ */ o("div", { className: "make-ai-assistant__message-turn", children: [
|
|
524
|
+
k ? /* @__PURE__ */ t(Ve, { assistantName: c }) : /* @__PURE__ */ o("div", { className: "make-ai-assistant__message-identity", children: [
|
|
525
|
+
/* @__PURE__ */ t("span", { className: "make-ai-assistant__message-sender", children: M }),
|
|
526
|
+
/* @__PURE__ */ t(Sa, { src: g })
|
|
464
527
|
] }),
|
|
465
|
-
/* @__PURE__ */
|
|
466
|
-
|
|
528
|
+
/* @__PURE__ */ o("div", { className: "make-ai-assistant__message-stack", children: [
|
|
529
|
+
l.content ? k ? /* @__PURE__ */ t(xa, { content: l.content }) : /* @__PURE__ */ t("div", { className: "make-ai-assistant__bubble", children: l.content }) : l.status === "streaming" ? /* @__PURE__ */ o("div", { className: "make-ai-assistant__typing", "aria-label": `${c}正在思考`, children: [
|
|
467
530
|
/* @__PURE__ */ t("span", {}),
|
|
468
531
|
/* @__PURE__ */ t("span", {}),
|
|
469
532
|
/* @__PURE__ */ t("span", {})
|
|
470
533
|
] }) : null,
|
|
471
|
-
|
|
534
|
+
k ? /* @__PURE__ */ t(
|
|
472
535
|
Ge,
|
|
473
536
|
{
|
|
474
|
-
active:
|
|
475
|
-
steps:
|
|
537
|
+
active: q && e.status === "streaming",
|
|
538
|
+
steps: l.progressSteps
|
|
476
539
|
}
|
|
477
540
|
) : null,
|
|
478
|
-
|
|
479
|
-
|
|
541
|
+
H ? /* @__PURE__ */ t(
|
|
542
|
+
je,
|
|
480
543
|
{
|
|
481
|
-
error:
|
|
482
|
-
onRetry:
|
|
544
|
+
error: H,
|
|
545
|
+
onRetry: T ? m : void 0
|
|
483
546
|
}
|
|
484
547
|
) : null,
|
|
485
|
-
|
|
486
|
-
|
|
548
|
+
l.artifacts.map((te) => /* @__PURE__ */ t(
|
|
549
|
+
ma,
|
|
487
550
|
{
|
|
488
551
|
artifact: te,
|
|
489
552
|
context: a,
|
|
490
|
-
onAction:
|
|
491
|
-
onActionError:
|
|
553
|
+
onAction: r,
|
|
554
|
+
onActionError: i,
|
|
492
555
|
registry: s
|
|
493
556
|
},
|
|
494
557
|
te.id
|
|
495
558
|
)),
|
|
496
559
|
fe ? /* @__PURE__ */ t(
|
|
497
|
-
|
|
560
|
+
qa,
|
|
498
561
|
{
|
|
499
|
-
copyFeedback: y?.messageId ===
|
|
562
|
+
copyFeedback: y?.messageId === l.id ? {
|
|
500
563
|
message: y.message,
|
|
501
564
|
status: y.status
|
|
502
565
|
} : void 0,
|
|
503
|
-
onCopy:
|
|
504
|
-
onRegenerate:
|
|
505
|
-
userMessage:
|
|
506
|
-
assistantMessage:
|
|
566
|
+
onCopy: l.content.trim() ? () => v(l.id, l.content) : void 0,
|
|
567
|
+
onRegenerate: _ && l.id === R && U ? () => D({
|
|
568
|
+
userMessage: U,
|
|
569
|
+
assistantMessage: l
|
|
507
570
|
}) : void 0
|
|
508
571
|
}
|
|
509
572
|
) : null
|
|
510
573
|
] })
|
|
511
574
|
] })
|
|
512
575
|
},
|
|
513
|
-
|
|
576
|
+
l.id
|
|
514
577
|
);
|
|
515
578
|
});
|
|
516
579
|
};
|
|
517
|
-
function
|
|
580
|
+
function Ka({
|
|
518
581
|
assistantName: e = "AI 助手",
|
|
519
582
|
brandName: a,
|
|
520
583
|
context: s,
|
|
521
|
-
onAction:
|
|
522
|
-
onActionError:
|
|
523
|
-
onClose:
|
|
584
|
+
onAction: r,
|
|
585
|
+
onActionError: i,
|
|
586
|
+
onClose: c,
|
|
524
587
|
onNewConversation: m,
|
|
525
|
-
registry:
|
|
526
|
-
subtitle:
|
|
588
|
+
registry: u,
|
|
589
|
+
subtitle: g,
|
|
527
590
|
suggestions: y,
|
|
528
|
-
title:
|
|
529
|
-
transport:
|
|
530
|
-
userAvatarUrl:
|
|
531
|
-
userName:
|
|
591
|
+
title: _,
|
|
592
|
+
transport: v,
|
|
593
|
+
userAvatarUrl: D,
|
|
594
|
+
userName: w = "你"
|
|
532
595
|
}) {
|
|
533
|
-
const
|
|
534
|
-
|
|
535
|
-
const [
|
|
536
|
-
() =>
|
|
537
|
-
[
|
|
596
|
+
const B = He(a, _), [R, x] = E(""), [l, k] = E(ue), U = S(l);
|
|
597
|
+
U.current = l;
|
|
598
|
+
const [q, T] = E(void 0), [H, M] = E(void 0), [fe, te] = E(0), [K, se] = E(() => v.loadConversation ? "loading" : "ready"), [Ze, V] = E(!1), z = S(void 0), O = S(void 0), j = S(0), ne = S(null), F = S(!0), ke = S(s.app.id), Ae = Fe(
|
|
599
|
+
() => u ?? Aa(),
|
|
600
|
+
[u]
|
|
538
601
|
), be = Fe(
|
|
539
|
-
() =>
|
|
602
|
+
() => wa(y),
|
|
540
603
|
[y]
|
|
541
|
-
),
|
|
542
|
-
const
|
|
543
|
-
return !
|
|
604
|
+
), re = (n) => {
|
|
605
|
+
const h = z.current, f = O.current?.iterator;
|
|
606
|
+
return !h && !f ? !1 : (j.current += 1, z.current = void 0, O.current = void 0, console.info("[make-ai-assistant] local run cancellation requested", { reason: n }), h?.abort(), Le(f), !0);
|
|
544
607
|
};
|
|
545
608
|
ge(() => () => {
|
|
546
|
-
|
|
609
|
+
re("unmount");
|
|
547
610
|
}, []), ge(() => {
|
|
548
|
-
const
|
|
549
|
-
if (
|
|
611
|
+
const n = v.loadConversation, h = ke.current !== s.app.id;
|
|
612
|
+
if (ke.current = s.app.id, re("reinitialize"), h && (x(""), F.current = !0), T(void 0), M(void 0), V(!1), k(ue()), !n) {
|
|
550
613
|
se("ready");
|
|
551
614
|
return;
|
|
552
615
|
}
|
|
553
|
-
const
|
|
616
|
+
const f = new AbortController();
|
|
554
617
|
return se("loading"), console.info("[make-ai-assistant] conversation load start", {
|
|
555
618
|
appId: s.app.id
|
|
556
|
-
}),
|
|
557
|
-
|
|
619
|
+
}), n.call(v, s, { signal: f.signal }).then((I) => {
|
|
620
|
+
f.signal.aborted || (k(ue(I)), se("ready"), console.info("[make-ai-assistant] conversation load success", {
|
|
558
621
|
appId: s.app.id,
|
|
559
|
-
messageCount:
|
|
622
|
+
messageCount: I.messages.length
|
|
560
623
|
}));
|
|
561
|
-
}).catch((
|
|
562
|
-
|
|
624
|
+
}).catch((I) => {
|
|
625
|
+
f.signal.aborted || (console.error("[make-ai-assistant] conversation load failed", {
|
|
563
626
|
appId: s.app.id,
|
|
564
|
-
errorType:
|
|
627
|
+
errorType: I instanceof Error ? I.name : typeof I
|
|
565
628
|
}), se("error"));
|
|
566
|
-
}), () =>
|
|
567
|
-
}, [s.app.id, fe,
|
|
568
|
-
const
|
|
569
|
-
if (!
|
|
570
|
-
|
|
571
|
-
const
|
|
629
|
+
}), () => f.abort();
|
|
630
|
+
}, [s.app.id, fe, v]), ge(() => {
|
|
631
|
+
const n = ne.current;
|
|
632
|
+
if (!n || !F.current) return;
|
|
633
|
+
V(!1);
|
|
634
|
+
const h = requestAnimationFrame(() => {
|
|
572
635
|
if (!F.current) return;
|
|
573
|
-
const
|
|
574
|
-
typeof
|
|
636
|
+
const f = l.status === "streaming" || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
|
|
637
|
+
typeof n.scrollTo == "function" ? n.scrollTo({ top: n.scrollHeight, behavior: f }) : n.scrollTop = n.scrollHeight;
|
|
575
638
|
});
|
|
576
|
-
return () => cancelAnimationFrame(
|
|
577
|
-
}, [
|
|
578
|
-
const
|
|
579
|
-
const
|
|
580
|
-
if (!
|
|
581
|
-
const
|
|
582
|
-
F.current =
|
|
583
|
-
},
|
|
584
|
-
const
|
|
585
|
-
if (!
|
|
586
|
-
F.current = !0,
|
|
587
|
-
const
|
|
588
|
-
typeof
|
|
589
|
-
}, Ie = async (
|
|
590
|
-
const
|
|
591
|
-
if (!
|
|
639
|
+
return () => cancelAnimationFrame(h);
|
|
640
|
+
}, [l.messages, l.progress, l.status]);
|
|
641
|
+
const Ye = () => {
|
|
642
|
+
const n = ne.current;
|
|
643
|
+
if (!n) return;
|
|
644
|
+
const h = Ba(n);
|
|
645
|
+
F.current = h, V(!h && U.current.messages.length > 0);
|
|
646
|
+
}, We = () => {
|
|
647
|
+
const n = ne.current;
|
|
648
|
+
if (!n) return;
|
|
649
|
+
F.current = !0, V(!1);
|
|
650
|
+
const h = Ua();
|
|
651
|
+
typeof n.scrollTo == "function" ? n.scrollTo({ top: n.scrollHeight, behavior: h }) : n.scrollTop = n.scrollHeight;
|
|
652
|
+
}, Ie = async (n, h) => {
|
|
653
|
+
const f = n.trim(), I = U.current, C = h?.regenerateFrom, _e = v.regenerate;
|
|
654
|
+
if (!f || K !== "ready" || I.status === "streaming" || z.current || C && !_e) return;
|
|
592
655
|
if (he(
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
) >
|
|
596
|
-
|
|
597
|
-
`输入内容过长,请控制在 ${
|
|
656
|
+
f,
|
|
657
|
+
b.messageCharacters
|
|
658
|
+
) > b.messageCharacters) {
|
|
659
|
+
T(
|
|
660
|
+
`输入内容过长,请控制在 ${b.messageCharacters} 个字符以内`
|
|
598
661
|
);
|
|
599
662
|
return;
|
|
600
663
|
}
|
|
601
664
|
const ce = {
|
|
602
|
-
id:
|
|
603
|
-
content:
|
|
604
|
-
}, le =
|
|
605
|
-
|
|
665
|
+
id: C?.userMessage.id ?? ba("user"),
|
|
666
|
+
content: f
|
|
667
|
+
}, le = C ? Da(I, C.userMessage.id) : la(I, ce), de = new AbortController(), G = j.current + 1;
|
|
668
|
+
j.current = G, z.current = de, T(void 0), M(void 0), V(!F.current && I.messages.length > 0), C || x(""), k(le);
|
|
606
669
|
try {
|
|
607
|
-
let
|
|
608
|
-
const X = /* @__PURE__ */ new Map(), Ce = /* @__PURE__ */ new Set(),
|
|
670
|
+
let $ = !1, A, we = 0, Te = 0, Me = 0, ve = 0, Q = 0;
|
|
671
|
+
const X = /* @__PURE__ */ new Map(), Ce = /* @__PURE__ */ new Set(), $e = /* @__PURE__ */ new Set(
|
|
609
672
|
[
|
|
610
673
|
...le.messages.map((me) => me.id),
|
|
611
674
|
ce.id
|
|
612
675
|
]
|
|
613
|
-
), ee = /* @__PURE__ */ new Set(),
|
|
614
|
-
let
|
|
615
|
-
if (
|
|
676
|
+
), ee = /* @__PURE__ */ new Set(), Ee = ca(Ae), Se = { signal: de.signal };
|
|
677
|
+
let ye;
|
|
678
|
+
if (C) {
|
|
616
679
|
if (!_e)
|
|
617
|
-
throw new
|
|
618
|
-
|
|
680
|
+
throw new p("当前 AI 助手不支持重新生成");
|
|
681
|
+
ye = _e({
|
|
619
682
|
threadId: le.threadId,
|
|
620
683
|
message: ce,
|
|
621
684
|
assistantMessage: {
|
|
622
|
-
id:
|
|
623
|
-
content:
|
|
685
|
+
id: C.assistantMessage.id,
|
|
686
|
+
content: C.assistantMessage.content
|
|
624
687
|
},
|
|
625
688
|
context: s,
|
|
626
|
-
capabilities:
|
|
627
|
-
},
|
|
689
|
+
capabilities: Ee
|
|
690
|
+
}, Se);
|
|
628
691
|
} else
|
|
629
|
-
|
|
692
|
+
ye = v.run(
|
|
630
693
|
{
|
|
631
694
|
threadId: le.threadId,
|
|
632
695
|
message: ce,
|
|
633
696
|
context: s,
|
|
634
|
-
capabilities:
|
|
697
|
+
capabilities: Ee
|
|
635
698
|
},
|
|
636
|
-
|
|
699
|
+
Se
|
|
637
700
|
);
|
|
638
|
-
const Re =
|
|
639
|
-
for (
|
|
701
|
+
const Re = ye[Symbol.asyncIterator]();
|
|
702
|
+
for (O.current = { iterator: Re, requestVersion: G }; ; ) {
|
|
640
703
|
const me = await Re.next();
|
|
641
|
-
if (
|
|
642
|
-
let
|
|
704
|
+
if (j.current !== G || me.done) break;
|
|
705
|
+
let d;
|
|
643
706
|
try {
|
|
644
|
-
|
|
645
|
-
} catch (
|
|
646
|
-
throw new
|
|
647
|
-
|
|
707
|
+
d = da(me.value);
|
|
708
|
+
} catch (N) {
|
|
709
|
+
throw new p(
|
|
710
|
+
N instanceof Error ? N.message : "Invalid assistant event"
|
|
648
711
|
);
|
|
649
712
|
}
|
|
650
|
-
if (
|
|
651
|
-
if (
|
|
652
|
-
throw new
|
|
653
|
-
if (
|
|
654
|
-
throw new
|
|
655
|
-
if (
|
|
656
|
-
throw new
|
|
657
|
-
|
|
713
|
+
if (d.type === "message.start") {
|
|
714
|
+
if (A !== void 0 && A !== d.runId)
|
|
715
|
+
throw new p("AI 助手响应 run id 不一致");
|
|
716
|
+
if (A ??= d.runId, Te += 1, Te > b.assistantMessagesPerRun)
|
|
717
|
+
throw new p("AI 助手单次响应消息数量超过限制");
|
|
718
|
+
if ($e.has(d.messageId))
|
|
719
|
+
throw new p("AI 助手响应包含重复的 message id");
|
|
720
|
+
$e.add(d.messageId), ee.add(d.messageId), X.set(d.messageId, 0);
|
|
658
721
|
}
|
|
659
|
-
if (
|
|
660
|
-
if (!ee.has(
|
|
661
|
-
throw new
|
|
662
|
-
const
|
|
663
|
-
|
|
664
|
-
|
|
722
|
+
if (d.type === "message.delta") {
|
|
723
|
+
if (!ee.has(d.messageId))
|
|
724
|
+
throw new p("AI 助手响应事件顺序无效");
|
|
725
|
+
const N = X.get(d.messageId) ?? 0, Z = he(
|
|
726
|
+
d.delta,
|
|
727
|
+
b.messageCharacters - Q
|
|
665
728
|
);
|
|
666
|
-
if (
|
|
667
|
-
throw new
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
729
|
+
if (Q + Z > b.messageCharacters)
|
|
730
|
+
throw new p("AI 助手响应文本超过大小限制");
|
|
731
|
+
Q += Z, X.set(
|
|
732
|
+
d.messageId,
|
|
733
|
+
N + Z
|
|
671
734
|
);
|
|
672
735
|
}
|
|
673
|
-
if (
|
|
674
|
-
if (!ee.has(
|
|
675
|
-
throw new
|
|
676
|
-
const
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
), xe =
|
|
680
|
-
if (xe >
|
|
681
|
-
throw new
|
|
682
|
-
|
|
736
|
+
if (d.type === "message.replace") {
|
|
737
|
+
if (!ee.has(d.messageId))
|
|
738
|
+
throw new p("AI 助手响应事件顺序无效");
|
|
739
|
+
const N = X.get(d.messageId) ?? 0, Z = he(
|
|
740
|
+
d.content,
|
|
741
|
+
b.messageCharacters
|
|
742
|
+
), xe = Q - N + Z;
|
|
743
|
+
if (xe > b.messageCharacters)
|
|
744
|
+
throw new p("AI 助手响应文本超过大小限制");
|
|
745
|
+
Q = xe, X.set(d.messageId, Z);
|
|
683
746
|
}
|
|
684
|
-
if (
|
|
685
|
-
if (
|
|
686
|
-
throw new
|
|
687
|
-
if (
|
|
688
|
-
throw new
|
|
689
|
-
const
|
|
690
|
-
|
|
691
|
-
|
|
747
|
+
if (d.type === "run.progress") {
|
|
748
|
+
if (A !== void 0 && A !== d.runId)
|
|
749
|
+
throw new p("AI 助手响应 run id 不一致");
|
|
750
|
+
if (A ??= d.runId, Me += 1, Me > b.progressStepsPerRun)
|
|
751
|
+
throw new p("AI 助手处理过程数量超过限制");
|
|
752
|
+
const N = he(
|
|
753
|
+
d.message,
|
|
754
|
+
b.progressCharactersPerRun - ve
|
|
692
755
|
);
|
|
693
|
-
if (ve +
|
|
694
|
-
throw new
|
|
695
|
-
ve +=
|
|
756
|
+
if (ve + N > b.progressCharactersPerRun)
|
|
757
|
+
throw new p("AI 助手处理过程文本超过大小限制");
|
|
758
|
+
ve += N;
|
|
696
759
|
}
|
|
697
|
-
if (
|
|
698
|
-
if (!ee.has(
|
|
699
|
-
throw new
|
|
700
|
-
if (we += 1, we >
|
|
701
|
-
throw new
|
|
702
|
-
if (Ce.has(
|
|
703
|
-
throw new
|
|
704
|
-
Ce.add(
|
|
760
|
+
if (d.type === "artifact") {
|
|
761
|
+
if (!ee.has(d.messageId))
|
|
762
|
+
throw new p("AI 助手响应事件顺序无效");
|
|
763
|
+
if (we += 1, we > b.artifactsPerRun)
|
|
764
|
+
throw new p("AI 助手单次响应 Artifact 数量超过限制");
|
|
765
|
+
if (Ce.has(d.artifact.id))
|
|
766
|
+
throw new p("AI 助手响应包含重复的 Artifact id");
|
|
767
|
+
Ce.add(d.artifact.id);
|
|
705
768
|
}
|
|
706
|
-
if (
|
|
707
|
-
throw new
|
|
708
|
-
if (
|
|
709
|
-
throw new
|
|
710
|
-
if (
|
|
711
|
-
throw new
|
|
712
|
-
if (
|
|
713
|
-
|
|
769
|
+
if (d.type === "message.complete" && !ee.delete(d.messageId))
|
|
770
|
+
throw new p("AI 助手响应事件顺序无效");
|
|
771
|
+
if (d.type === "run.complete" && A !== void 0 && A !== d.runId)
|
|
772
|
+
throw new p("AI 助手响应 run id 不一致");
|
|
773
|
+
if (d.type === "run.cancelled" && d.runId !== void 0 && A !== void 0 && A !== d.runId)
|
|
774
|
+
throw new p("AI 助手响应 run id 不一致");
|
|
775
|
+
if (k((N) => pe(N, d)), d.type === "error" || d.type === "run.cancelled" || d.type === "run.complete") {
|
|
776
|
+
$ = !0;
|
|
714
777
|
break;
|
|
715
778
|
}
|
|
716
779
|
}
|
|
717
|
-
if (
|
|
718
|
-
throw new
|
|
719
|
-
} catch (
|
|
720
|
-
if (
|
|
780
|
+
if (!$)
|
|
781
|
+
throw new p("AI 助手流式响应在终止事件前结束");
|
|
782
|
+
} catch ($) {
|
|
783
|
+
if (j.current !== G) return;
|
|
721
784
|
if (de.signal.aborted) {
|
|
722
|
-
|
|
723
|
-
(
|
|
785
|
+
k(
|
|
786
|
+
(A) => pe(A, { type: "run.cancelled" })
|
|
724
787
|
);
|
|
725
788
|
return;
|
|
726
789
|
}
|
|
727
790
|
console.error("[make-ai-assistant] assistant run failed", {
|
|
728
791
|
appId: s.app.id,
|
|
729
|
-
errorType:
|
|
730
|
-
}),
|
|
731
|
-
(
|
|
792
|
+
errorType: $ instanceof Error ? $.name : typeof $
|
|
793
|
+
}), k(
|
|
794
|
+
(A) => pe(A, {
|
|
732
795
|
type: "error",
|
|
733
796
|
code: "TRANSPORT_ERROR",
|
|
734
|
-
message:
|
|
797
|
+
message: $ instanceof p ? $.message : "连接失败,请重试",
|
|
735
798
|
retryable: !0
|
|
736
799
|
})
|
|
737
800
|
);
|
|
738
801
|
} finally {
|
|
739
|
-
|
|
802
|
+
j.current === G && z.current === de && (z.current = void 0), O.current?.requestVersion === G && (Le(O.current.iterator), O.current = void 0);
|
|
740
803
|
}
|
|
741
|
-
}, ie = (
|
|
804
|
+
}, ie = (n) => Ie(n), Je = (n) => Ie(n.userMessage.content, { regenerateFrom: n }), Qe = async (n, h) => {
|
|
742
805
|
try {
|
|
743
|
-
await
|
|
744
|
-
} catch (
|
|
806
|
+
await Ta(h), M({ messageId: n, message: "已复制", status: "success" });
|
|
807
|
+
} catch (f) {
|
|
745
808
|
console.error("[make-ai-assistant] copy answer failed", {
|
|
746
|
-
errorType:
|
|
747
|
-
}),
|
|
809
|
+
errorType: f instanceof Error ? f.name : typeof f
|
|
810
|
+
}), M({ messageId: n, message: "复制失败", status: "error" });
|
|
748
811
|
}
|
|
749
|
-
},
|
|
750
|
-
|
|
751
|
-
},
|
|
752
|
-
|
|
753
|
-
}, ea = () => {
|
|
754
|
-
ne("stop") && _(
|
|
755
|
-
(r) => pe(r, { type: "run.cancelled" })
|
|
756
|
-
);
|
|
812
|
+
}, Xe = (n) => {
|
|
813
|
+
n.preventDefault(), ie(R);
|
|
814
|
+
}, ea = (n) => {
|
|
815
|
+
n.key === "Enter" && !n.shiftKey && !n.nativeEvent.isComposing && (n.preventDefault(), ie(R));
|
|
757
816
|
}, aa = () => {
|
|
758
|
-
|
|
759
|
-
|
|
817
|
+
re("stop") && k(
|
|
818
|
+
(n) => pe(n, { type: "run.cancelled" })
|
|
819
|
+
);
|
|
820
|
+
}, ta = () => {
|
|
821
|
+
re("new-conversation"), x(""), T(void 0), M(void 0), V(!1), F.current = !0, k(ue()), m?.();
|
|
822
|
+
}, sa = v.features?.remoteCancellation === !1 ? "停止接收" : "停止生成", na = ze(l), ra = Oe(l), oe = Pa(l), ia = typeof v.regenerate == "function" && v.features?.regeneration !== !1, Ne = () => {
|
|
760
823
|
oe && ie(oe.content);
|
|
761
824
|
};
|
|
762
|
-
return /* @__PURE__ */
|
|
763
|
-
/* @__PURE__ */
|
|
825
|
+
return /* @__PURE__ */ o("section", { className: "make-ai-assistant make-ai-assistant__panel", children: [
|
|
826
|
+
/* @__PURE__ */ o("header", { className: "make-ai-assistant__header", children: [
|
|
764
827
|
/* @__PURE__ */ t(ae, {}),
|
|
765
|
-
/* @__PURE__ */
|
|
766
|
-
/* @__PURE__ */ t("h2", { children:
|
|
767
|
-
/* @__PURE__ */ t("p", { children:
|
|
828
|
+
/* @__PURE__ */ o("div", { children: [
|
|
829
|
+
/* @__PURE__ */ t("h2", { children: B }),
|
|
830
|
+
/* @__PURE__ */ t("p", { children: g ?? `当前应用:${s.app.name ?? "未命名应用"}` })
|
|
768
831
|
] }),
|
|
769
|
-
/* @__PURE__ */
|
|
770
|
-
|
|
832
|
+
/* @__PURE__ */ o("div", { className: "make-ai-assistant__header-actions", children: [
|
|
833
|
+
v.features?.newConversation !== !1 ? /* @__PURE__ */ t(
|
|
771
834
|
"button",
|
|
772
835
|
{
|
|
773
836
|
"aria-label": "新建对话",
|
|
774
837
|
className: "make-ai-assistant__icon-button",
|
|
775
838
|
type: "button",
|
|
776
|
-
onClick:
|
|
777
|
-
children: /* @__PURE__ */ t(
|
|
839
|
+
onClick: ta,
|
|
840
|
+
children: /* @__PURE__ */ t($a, {})
|
|
778
841
|
}
|
|
779
842
|
) : null,
|
|
780
|
-
|
|
843
|
+
c ? /* @__PURE__ */ t(
|
|
781
844
|
"button",
|
|
782
845
|
{
|
|
783
|
-
"aria-label": `关闭 ${
|
|
846
|
+
"aria-label": `关闭 ${B}`,
|
|
784
847
|
className: "make-ai-assistant__icon-button",
|
|
785
848
|
type: "button",
|
|
786
|
-
onClick:
|
|
787
|
-
children: /* @__PURE__ */ t(
|
|
849
|
+
onClick: c,
|
|
850
|
+
children: /* @__PURE__ */ t(Ma, {})
|
|
788
851
|
}
|
|
789
852
|
) : null
|
|
790
853
|
] })
|
|
791
854
|
] }),
|
|
792
|
-
/* @__PURE__ */
|
|
855
|
+
/* @__PURE__ */ o("div", { className: "make-ai-assistant__privacy-note", role: "note", children: [
|
|
793
856
|
/* @__PURE__ */ t("span", { "aria-hidden": "true", children: "◇" }),
|
|
794
857
|
"当前页面上下文会随请求发送,数据权限以宿主服务端校验结果为准"
|
|
795
858
|
] }),
|
|
796
|
-
/* @__PURE__ */
|
|
859
|
+
/* @__PURE__ */ o(
|
|
797
860
|
"div",
|
|
798
861
|
{
|
|
799
862
|
className: "make-ai-assistant__body",
|
|
800
863
|
"aria-live": "polite",
|
|
801
864
|
"aria-relevant": "additions text",
|
|
802
|
-
ref:
|
|
865
|
+
ref: ne,
|
|
803
866
|
role: "log",
|
|
804
|
-
onScroll:
|
|
867
|
+
onScroll: Ye,
|
|
805
868
|
children: [
|
|
806
|
-
|
|
869
|
+
K === "loading" ? /* @__PURE__ */ o("div", { className: "make-ai-assistant__empty", role: "status", children: [
|
|
807
870
|
/* @__PURE__ */ t(ae, {}),
|
|
808
871
|
/* @__PURE__ */ t("h3", { children: "正在恢复对话" }),
|
|
809
872
|
/* @__PURE__ */ t("p", { children: "正在读取当前 App 的历史消息…" })
|
|
810
|
-
] }) :
|
|
873
|
+
] }) : K === "error" ? /* @__PURE__ */ o("div", { className: "make-ai-assistant__empty", role: "alert", children: [
|
|
811
874
|
/* @__PURE__ */ t(ae, {}),
|
|
812
875
|
/* @__PURE__ */ t("h3", { children: "暂时无法加载对话" }),
|
|
813
876
|
/* @__PURE__ */ t("p", { children: "请检查网络后重试。" }),
|
|
@@ -816,45 +879,45 @@ function Ua({
|
|
|
816
879
|
{
|
|
817
880
|
className: "make-ai-assistant__retry",
|
|
818
881
|
type: "button",
|
|
819
|
-
onClick: () => te((
|
|
882
|
+
onClick: () => te((n) => n + 1),
|
|
820
883
|
children: "重新加载"
|
|
821
884
|
}
|
|
822
885
|
)
|
|
823
|
-
] }) :
|
|
886
|
+
] }) : l.messages.length === 0 ? /* @__PURE__ */ o("div", { className: "make-ai-assistant__empty", children: [
|
|
824
887
|
/* @__PURE__ */ t(ae, {}),
|
|
825
888
|
/* @__PURE__ */ t("h3", { children: "有什么可以帮你?" }),
|
|
826
889
|
/* @__PURE__ */ t("p", { children: "我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。" })
|
|
827
|
-
] }) :
|
|
828
|
-
|
|
890
|
+
] }) : Ha(
|
|
891
|
+
l,
|
|
829
892
|
s,
|
|
830
893
|
Ae,
|
|
831
|
-
|
|
832
|
-
|
|
894
|
+
r,
|
|
895
|
+
i,
|
|
833
896
|
e,
|
|
834
897
|
oe ? Ne : void 0,
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
(
|
|
840
|
-
Qe(
|
|
898
|
+
w,
|
|
899
|
+
D,
|
|
900
|
+
H,
|
|
901
|
+
ia,
|
|
902
|
+
(n, h) => {
|
|
903
|
+
Qe(n, h);
|
|
841
904
|
},
|
|
842
|
-
(
|
|
843
|
-
Je(
|
|
905
|
+
(n) => {
|
|
906
|
+
Je(n);
|
|
844
907
|
}
|
|
845
908
|
),
|
|
846
|
-
|
|
909
|
+
l.progress && !na ? /* @__PURE__ */ t(
|
|
847
910
|
De,
|
|
848
911
|
{
|
|
849
912
|
assistantName: e,
|
|
850
|
-
progress:
|
|
913
|
+
progress: l.progress
|
|
851
914
|
}
|
|
852
915
|
) : null,
|
|
853
|
-
|
|
916
|
+
l.error && !ra ? /* @__PURE__ */ t(
|
|
854
917
|
De,
|
|
855
918
|
{
|
|
856
919
|
assistantName: e,
|
|
857
|
-
error:
|
|
920
|
+
error: l.error,
|
|
858
921
|
onRetry: oe ? Ne : void 0
|
|
859
922
|
}
|
|
860
923
|
) : null
|
|
@@ -867,47 +930,47 @@ function Ua({
|
|
|
867
930
|
"aria-label": "回到最新消息",
|
|
868
931
|
className: "make-ai-assistant__back-to-latest",
|
|
869
932
|
type: "button",
|
|
870
|
-
onClick:
|
|
933
|
+
onClick: We,
|
|
871
934
|
children: "回到最新消息"
|
|
872
935
|
}
|
|
873
936
|
) : null,
|
|
874
|
-
/* @__PURE__ */
|
|
875
|
-
|
|
937
|
+
/* @__PURE__ */ o("footer", { className: "make-ai-assistant__composer-region", children: [
|
|
938
|
+
K === "ready" && be.length > 0 && l.messages.length === 0 ? /* @__PURE__ */ t("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: be.map((n, h) => /* @__PURE__ */ t(
|
|
876
939
|
"button",
|
|
877
940
|
{
|
|
878
941
|
type: "button",
|
|
879
942
|
onClick: () => {
|
|
880
|
-
ie(
|
|
943
|
+
ie(n);
|
|
881
944
|
},
|
|
882
|
-
children:
|
|
945
|
+
children: n
|
|
883
946
|
},
|
|
884
|
-
`${
|
|
947
|
+
`${h}-${n}`
|
|
885
948
|
)) }) : null,
|
|
886
|
-
/* @__PURE__ */
|
|
949
|
+
/* @__PURE__ */ o("form", { className: "make-ai-assistant__composer", onSubmit: Xe, children: [
|
|
887
950
|
/* @__PURE__ */ t(
|
|
888
951
|
"textarea",
|
|
889
952
|
{
|
|
890
953
|
"aria-label": `向 ${e} 提问`,
|
|
891
|
-
"aria-describedby":
|
|
892
|
-
"aria-invalid":
|
|
954
|
+
"aria-describedby": q ? "make-ai-composer-error" : void 0,
|
|
955
|
+
"aria-invalid": q ? !0 : void 0,
|
|
893
956
|
autoFocus: !0,
|
|
894
|
-
disabled:
|
|
957
|
+
disabled: K !== "ready" || l.status === "streaming",
|
|
895
958
|
placeholder: `询问当前 ${s.app.name ?? "App"} 中的数据…`,
|
|
896
959
|
rows: 2,
|
|
897
960
|
value: R,
|
|
898
|
-
onChange: (
|
|
899
|
-
x(
|
|
961
|
+
onChange: (n) => {
|
|
962
|
+
x(n.currentTarget.value), T(void 0);
|
|
900
963
|
},
|
|
901
|
-
onKeyDown:
|
|
964
|
+
onKeyDown: ea
|
|
902
965
|
}
|
|
903
966
|
),
|
|
904
|
-
|
|
967
|
+
l.status === "streaming" ? /* @__PURE__ */ t(
|
|
905
968
|
"button",
|
|
906
969
|
{
|
|
907
|
-
"aria-label":
|
|
970
|
+
"aria-label": sa,
|
|
908
971
|
className: "make-ai-assistant__send make-ai-assistant__send--stop",
|
|
909
972
|
type: "button",
|
|
910
|
-
onClick:
|
|
973
|
+
onClick: aa,
|
|
911
974
|
children: /* @__PURE__ */ t("span", { "aria-hidden": "true" })
|
|
912
975
|
}
|
|
913
976
|
) : /* @__PURE__ */ t(
|
|
@@ -915,81 +978,81 @@ function Ua({
|
|
|
915
978
|
{
|
|
916
979
|
"aria-label": "发送",
|
|
917
980
|
className: "make-ai-assistant__send",
|
|
918
|
-
disabled:
|
|
981
|
+
disabled: K !== "ready" || !R.trim(),
|
|
919
982
|
type: "submit",
|
|
920
|
-
children: /* @__PURE__ */ t(
|
|
983
|
+
children: /* @__PURE__ */ t(Ea, {})
|
|
921
984
|
}
|
|
922
985
|
)
|
|
923
986
|
] }),
|
|
924
|
-
|
|
987
|
+
q ? /* @__PURE__ */ t("p", { id: "make-ai-composer-error", role: "alert", children: q }) : null,
|
|
925
988
|
/* @__PURE__ */ t("p", { children: "AI 生成的结果可能存在偏差,重要数据请核对明细。" })
|
|
926
989
|
] })
|
|
927
990
|
] });
|
|
928
991
|
}
|
|
929
|
-
function
|
|
992
|
+
function Ga({
|
|
930
993
|
defaultOpen: e = !1,
|
|
931
994
|
hideLauncher: a = !1,
|
|
932
995
|
launcher: s,
|
|
933
|
-
onOpenChange:
|
|
934
|
-
open:
|
|
935
|
-
...
|
|
996
|
+
onOpenChange: r,
|
|
997
|
+
open: i,
|
|
998
|
+
...c
|
|
936
999
|
}) {
|
|
937
|
-
const m =
|
|
938
|
-
|
|
939
|
-
},
|
|
1000
|
+
const m = He(c.brandName, c.title), [u, g] = E(e), y = S(null), _ = i ?? u, v = (w) => {
|
|
1001
|
+
i === void 0 && g(w), r?.(w), w || requestAnimationFrame(() => y.current?.focus());
|
|
1002
|
+
}, D = () => v(!_);
|
|
940
1003
|
return ge(() => {
|
|
941
|
-
if (!
|
|
942
|
-
const
|
|
943
|
-
|
|
1004
|
+
if (!_) return;
|
|
1005
|
+
const w = (B) => {
|
|
1006
|
+
B.key === "Escape" && (v(!1), requestAnimationFrame(() => y.current?.focus()));
|
|
944
1007
|
};
|
|
945
|
-
return document.addEventListener("keydown",
|
|
946
|
-
}, [
|
|
947
|
-
!a && (!
|
|
1008
|
+
return document.addEventListener("keydown", w), () => document.removeEventListener("keydown", w);
|
|
1009
|
+
}, [r, _]), /* @__PURE__ */ o("div", { className: "make-ai-assistant", "data-open": _ || void 0, children: [
|
|
1010
|
+
!a && (!_ || s) ? s ? s({ open: _, toggle: D }) : /* @__PURE__ */ o(
|
|
948
1011
|
"button",
|
|
949
1012
|
{
|
|
950
|
-
"aria-label":
|
|
951
|
-
"aria-expanded":
|
|
1013
|
+
"aria-label": _ ? `关闭 ${m}` : `打开 ${m}`,
|
|
1014
|
+
"aria-expanded": _,
|
|
952
1015
|
className: "make-ai-assistant__launcher",
|
|
953
1016
|
ref: y,
|
|
954
1017
|
type: "button",
|
|
955
|
-
onClick:
|
|
1018
|
+
onClick: D,
|
|
956
1019
|
children: [
|
|
957
1020
|
/* @__PURE__ */ t("span", { className: "make-ai-assistant__launcher-orbit", "aria-hidden": "true" }),
|
|
958
|
-
/* @__PURE__ */ t(
|
|
1021
|
+
/* @__PURE__ */ t(Ke, {})
|
|
959
1022
|
]
|
|
960
1023
|
}
|
|
961
1024
|
) : null,
|
|
962
|
-
|
|
1025
|
+
_ ? /* @__PURE__ */ t(
|
|
963
1026
|
"aside",
|
|
964
1027
|
{
|
|
965
1028
|
"aria-label": m,
|
|
966
1029
|
"aria-modal": "false",
|
|
967
1030
|
className: "make-ai-assistant__drawer",
|
|
968
1031
|
role: "dialog",
|
|
969
|
-
children: /* @__PURE__ */ t(
|
|
1032
|
+
children: /* @__PURE__ */ t(Ka, { ...c, onClose: () => v(!1) })
|
|
970
1033
|
}
|
|
971
1034
|
) : null
|
|
972
1035
|
] });
|
|
973
1036
|
}
|
|
974
1037
|
export {
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
1038
|
+
ma as ArtifactRenderer,
|
|
1039
|
+
Ka as AssistantPanel,
|
|
1040
|
+
Qa as MAKE_AI_ARTIFACT_KINDS,
|
|
1041
|
+
Xa as MAKE_AI_ARTIFACT_LIMITS,
|
|
1042
|
+
et as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
|
|
1043
|
+
b as MAKE_AI_CONVERSATION_LIMITS,
|
|
1044
|
+
Ga as MakeAiAssistant,
|
|
1045
|
+
la as appendUserMessage,
|
|
1046
|
+
ca as createArtifactCapabilities,
|
|
1047
|
+
Be as createArtifactTemplateRegistry,
|
|
985
1048
|
ue as createAssistantConversationState,
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
1049
|
+
Aa as createPlatformArtifactRegistry,
|
|
1050
|
+
Wa as extendArtifactTemplateRegistry,
|
|
1051
|
+
P as formatArtifactValue,
|
|
1052
|
+
at as parseArtifact,
|
|
1053
|
+
da as parseAssistantEvent,
|
|
991
1054
|
ka as platformArtifactTemplates,
|
|
992
1055
|
pe as reduceAssistantEvent,
|
|
993
|
-
|
|
994
|
-
|
|
1056
|
+
oa as resolveArtifactTemplate,
|
|
1057
|
+
tt as validateArtifact
|
|
995
1058
|
};
|