@qfei-design/make-ai-assistant 0.2.2 → 0.2.3
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 +10 -4
- package/README.md +6 -2
- package/dist/react/make-ai-assistant.d.ts +1 -0
- package/dist/react.cjs +4 -4
- package/dist/react.mjs +568 -497
- package/dist/styles.css +149 -67
- package/package.json +1 -1
package/dist/react.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsxs as r, jsx as a, Fragment as
|
|
2
|
-
import { resolveArtifactTemplate as
|
|
3
|
-
import { extendArtifactTemplateRegistry as
|
|
4
|
-
import { useState as
|
|
5
|
-
import { a as
|
|
6
|
-
import { d as
|
|
7
|
-
function
|
|
1
|
+
import { jsxs as r, jsx as a, Fragment as Y } from "react/jsx-runtime";
|
|
2
|
+
import { resolveArtifactTemplate as $t, createArtifactTemplateRegistry as st, createArtifactCapabilities as Rt } from "./index.mjs";
|
|
3
|
+
import { extendArtifactTemplateRegistry as $a } from "./index.mjs";
|
|
4
|
+
import { useState as E, useRef as $, useEffect as re, useMemo as Ge } from "react";
|
|
5
|
+
import { a as we, r as Ie, c as Ae, M as S, b as Et, p as Ct } from "./conversation-B7eGUXi-.js";
|
|
6
|
+
import { d as Ea, e as Ca, f as xa, g as Sa, v as La } from "./conversation-B7eGUXi-.js";
|
|
7
|
+
function xt({
|
|
8
8
|
artifact: e,
|
|
9
9
|
context: t,
|
|
10
10
|
fallback: s,
|
|
@@ -12,7 +12,7 @@ function Mt({
|
|
|
12
12
|
onActionError: n,
|
|
13
13
|
registry: o
|
|
14
14
|
}) {
|
|
15
|
-
const l =
|
|
15
|
+
const l = $t(o, e, t);
|
|
16
16
|
if (!l)
|
|
17
17
|
return s ? s(e) : /* @__PURE__ */ r("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
|
|
18
18
|
/* @__PURE__ */ a("strong", { children: "暂不支持展示此结果" }),
|
|
@@ -21,14 +21,14 @@ function Mt({
|
|
|
21
21
|
e.kind
|
|
22
22
|
] })
|
|
23
23
|
] });
|
|
24
|
-
const
|
|
24
|
+
const u = {
|
|
25
25
|
context: t,
|
|
26
26
|
onAction: i,
|
|
27
27
|
onActionError: n
|
|
28
28
|
};
|
|
29
|
-
return l.template.render(e, t,
|
|
29
|
+
return l.template.render(e, t, u);
|
|
30
30
|
}
|
|
31
|
-
const
|
|
31
|
+
const G = (e, t, s) => {
|
|
32
32
|
if (e == null || e === "") return "—";
|
|
33
33
|
if (typeof e == "boolean") return e ? "是" : "否";
|
|
34
34
|
if (typeof e != "number") return `${e}${t?.unit ?? ""}`;
|
|
@@ -43,12 +43,12 @@ const z = (e, t, s) => {
|
|
|
43
43
|
} catch {
|
|
44
44
|
return `${e}${t?.unit ?? ""}`;
|
|
45
45
|
}
|
|
46
|
-
},
|
|
46
|
+
}, nt = (e) => {
|
|
47
47
|
let t = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY;
|
|
48
48
|
for (const i of e)
|
|
49
49
|
t = Math.min(t, i), s = Math.max(s, i);
|
|
50
50
|
return Number.isFinite(t) && Number.isFinite(s) ? { min: t, max: s } : { min: 0, max: 0 };
|
|
51
|
-
},
|
|
51
|
+
}, rt = (e, t, s) => {
|
|
52
52
|
if (!s.onAction) return;
|
|
53
53
|
const i = (o) => {
|
|
54
54
|
console.error("[make-ai-assistant] host action error handler failed", {
|
|
@@ -80,19 +80,19 @@ const z = (e, t, s) => {
|
|
|
80
80
|
} catch (o) {
|
|
81
81
|
n(o);
|
|
82
82
|
}
|
|
83
|
-
},
|
|
83
|
+
}, ie = (e, t) => e.actions?.length && t.onAction ? /* @__PURE__ */ a("div", { className: "make-ai-artifact__actions", children: e.actions.map((s) => /* @__PURE__ */ r(
|
|
84
84
|
"button",
|
|
85
85
|
{
|
|
86
86
|
className: `make-ai-artifact__action make-ai-artifact__action--${s.appearance ?? "link"}`,
|
|
87
87
|
type: "button",
|
|
88
|
-
onClick: () =>
|
|
88
|
+
onClick: () => rt(s, { artifact: e, context: t.context }, t),
|
|
89
89
|
children: [
|
|
90
90
|
s.label,
|
|
91
91
|
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: "→" })
|
|
92
92
|
]
|
|
93
93
|
},
|
|
94
94
|
s.id
|
|
95
|
-
)) }) : null,
|
|
95
|
+
)) }) : null, oe = (e, t, s = "") => /* @__PURE__ */ r(
|
|
96
96
|
"section",
|
|
97
97
|
{
|
|
98
98
|
"aria-label": e.title ?? `${e.kind} result`,
|
|
@@ -105,19 +105,19 @@ const z = (e, t, s) => {
|
|
|
105
105
|
t
|
|
106
106
|
]
|
|
107
107
|
}
|
|
108
|
-
),
|
|
108
|
+
), St = ({
|
|
109
109
|
artifact: e,
|
|
110
110
|
renderContext: t
|
|
111
111
|
}) => {
|
|
112
|
-
const s = e.data.delta, i = s ?
|
|
112
|
+
const s = e.data.delta, i = s ? G(
|
|
113
113
|
s.value,
|
|
114
114
|
s.format === "percent" ? { style: "percent" } : void 0,
|
|
115
115
|
t.context.locale
|
|
116
116
|
) : void 0;
|
|
117
|
-
return
|
|
117
|
+
return oe(
|
|
118
118
|
e,
|
|
119
|
-
/* @__PURE__ */ r(
|
|
120
|
-
/* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children:
|
|
119
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
120
|
+
/* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children: G(
|
|
121
121
|
e.data.value,
|
|
122
122
|
e.data.format,
|
|
123
123
|
t.context.locale
|
|
@@ -134,73 +134,73 @@ const z = (e, t, s) => {
|
|
|
134
134
|
}
|
|
135
135
|
) : null,
|
|
136
136
|
e.data.context ? /* @__PURE__ */ a("p", { className: "make-ai-artifact__context", children: e.data.context }) : null,
|
|
137
|
-
|
|
137
|
+
ie(e, t)
|
|
138
138
|
] }),
|
|
139
139
|
"make-ai-artifact--metric"
|
|
140
140
|
);
|
|
141
|
-
},
|
|
141
|
+
}, Lt = ({
|
|
142
142
|
artifact: e,
|
|
143
143
|
renderContext: t
|
|
144
|
-
}) =>
|
|
144
|
+
}) => oe(
|
|
145
145
|
e,
|
|
146
|
-
/* @__PURE__ */ r(
|
|
146
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
147
147
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((s) => /* @__PURE__ */ r("div", { className: "make-ai-artifact__comparison-item", children: [
|
|
148
148
|
/* @__PURE__ */ a("span", { children: s.label }),
|
|
149
|
-
/* @__PURE__ */ a("strong", { children:
|
|
149
|
+
/* @__PURE__ */ a("strong", { children: G(s.value, s.format, t.context.locale) }),
|
|
150
150
|
s.hint ? /* @__PURE__ */ a("small", { children: s.hint }) : null
|
|
151
151
|
] }, s.id)) }),
|
|
152
|
-
|
|
152
|
+
ie(e, t)
|
|
153
153
|
] }),
|
|
154
154
|
"make-ai-artifact--comparison"
|
|
155
|
-
),
|
|
155
|
+
), Dt = ({
|
|
156
156
|
artifact: e,
|
|
157
157
|
renderContext: t
|
|
158
158
|
}) => {
|
|
159
|
-
const s = e.data.series.flatMap((l) => l.points.map((
|
|
160
|
-
return
|
|
159
|
+
const s = e.data.series.flatMap((l) => l.points.map((u) => u.y)), { max: i, min: n } = nt(s), o = i - n || 1;
|
|
160
|
+
return oe(
|
|
161
161
|
e,
|
|
162
|
-
/* @__PURE__ */ r(
|
|
162
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
163
163
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend", children: e.data.series.map((l) => /* @__PURE__ */ r("div", { className: "make-ai-artifact__trend-series", children: [
|
|
164
164
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-label", children: l.label }),
|
|
165
|
-
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: l.points.map((
|
|
166
|
-
const
|
|
165
|
+
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: l.points.map((u, b) => {
|
|
166
|
+
const f = 18 + (u.y - n) / o * 70;
|
|
167
167
|
return /* @__PURE__ */ r("div", { className: "make-ai-artifact__trend-point", children: [
|
|
168
168
|
/* @__PURE__ */ a(
|
|
169
169
|
"span",
|
|
170
170
|
{
|
|
171
|
-
"aria-label": `${
|
|
172
|
-
|
|
171
|
+
"aria-label": `${u.x}: ${G(
|
|
172
|
+
u.y,
|
|
173
173
|
l.format,
|
|
174
174
|
t.context.locale
|
|
175
175
|
)}`,
|
|
176
176
|
className: "make-ai-artifact__trend-bar",
|
|
177
177
|
role: "img",
|
|
178
|
-
style: { height: `${
|
|
179
|
-
title: `${
|
|
180
|
-
|
|
178
|
+
style: { height: `${f}%` },
|
|
179
|
+
title: `${u.x}: ${G(
|
|
180
|
+
u.y,
|
|
181
181
|
l.format,
|
|
182
182
|
t.context.locale
|
|
183
183
|
)}`
|
|
184
184
|
}
|
|
185
185
|
),
|
|
186
|
-
/* @__PURE__ */ a("small", { children:
|
|
187
|
-
] }, `${
|
|
186
|
+
/* @__PURE__ */ a("small", { children: u.x })
|
|
187
|
+
] }, `${u.x}-${b}`);
|
|
188
188
|
}) })
|
|
189
189
|
] }, l.id)) }),
|
|
190
|
-
|
|
190
|
+
ie(e, t)
|
|
191
191
|
] }),
|
|
192
192
|
"make-ai-artifact--trend"
|
|
193
193
|
);
|
|
194
|
-
},
|
|
194
|
+
}, Ft = ({
|
|
195
195
|
artifact: e,
|
|
196
196
|
renderContext: t
|
|
197
197
|
}) => {
|
|
198
|
-
const { max: s } =
|
|
198
|
+
const { max: s } = nt(
|
|
199
199
|
e.data.items.map((n) => Math.abs(n.value))
|
|
200
200
|
), i = Math.max(s, 1);
|
|
201
|
-
return
|
|
201
|
+
return oe(
|
|
202
202
|
e,
|
|
203
|
-
/* @__PURE__ */ r(
|
|
203
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
204
204
|
/* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((n, o) => /* @__PURE__ */ r("li", { children: [
|
|
205
205
|
/* @__PURE__ */ a("span", { className: "make-ai-artifact__rank", children: o + 1 }),
|
|
206
206
|
/* @__PURE__ */ r("span", { className: "make-ai-artifact__ranking-label", children: [
|
|
@@ -208,29 +208,29 @@ const z = (e, t, s) => {
|
|
|
208
208
|
n.description ? /* @__PURE__ */ a("small", { children: n.description }) : null
|
|
209
209
|
] }),
|
|
210
210
|
/* @__PURE__ */ a("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ a("span", { style: { width: `${Math.abs(n.value) / i * 100}%` } }) }),
|
|
211
|
-
/* @__PURE__ */ a("strong", { children:
|
|
211
|
+
/* @__PURE__ */ a("strong", { children: G(n.value, n.format, t.context.locale) })
|
|
212
212
|
] }, n.id)) }),
|
|
213
|
-
|
|
213
|
+
ie(e, t)
|
|
214
214
|
] }),
|
|
215
215
|
"make-ai-artifact--ranking"
|
|
216
216
|
);
|
|
217
|
-
},
|
|
217
|
+
}, Pt = (e, t) => t.action ?? {
|
|
218
218
|
id: `open-${t.id}`,
|
|
219
219
|
label: t.title ?? t.id,
|
|
220
220
|
intent: "open-record",
|
|
221
221
|
target: { entityKey: e.data.entity.key, recordId: t.id }
|
|
222
|
-
},
|
|
222
|
+
}, Wt = ({
|
|
223
223
|
artifact: e,
|
|
224
224
|
renderContext: t
|
|
225
|
-
}) =>
|
|
225
|
+
}) => oe(
|
|
226
226
|
e,
|
|
227
|
-
/* @__PURE__ */ r(
|
|
227
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
228
228
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__record-list", children: e.data.records.length === 0 ? /* @__PURE__ */ a("p", { className: "make-ai-artifact__empty", children: "没有符合条件的记录" }) : e.data.records.map((s) => {
|
|
229
|
-
const i =
|
|
229
|
+
const i = Pt(e, s), n = /* @__PURE__ */ r(Y, { children: [
|
|
230
230
|
/* @__PURE__ */ a("strong", { children: s.title ?? s.id }),
|
|
231
231
|
/* @__PURE__ */ a("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((o) => /* @__PURE__ */ r("span", { children: [
|
|
232
232
|
/* @__PURE__ */ a("small", { children: o.label }),
|
|
233
|
-
|
|
233
|
+
G(
|
|
234
234
|
s.values[o.key],
|
|
235
235
|
o.format,
|
|
236
236
|
t.context.locale
|
|
@@ -243,7 +243,7 @@ const z = (e, t, s) => {
|
|
|
243
243
|
{
|
|
244
244
|
className: "make-ai-artifact__record",
|
|
245
245
|
type: "button",
|
|
246
|
-
onClick: () =>
|
|
246
|
+
onClick: () => rt(i, {
|
|
247
247
|
artifact: e,
|
|
248
248
|
context: t.context
|
|
249
249
|
}, t),
|
|
@@ -257,54 +257,54 @@ const z = (e, t, s) => {
|
|
|
257
257
|
e.data.total,
|
|
258
258
|
" 条"
|
|
259
259
|
] }) : null,
|
|
260
|
-
|
|
260
|
+
ie(e, t)
|
|
261
261
|
] }),
|
|
262
262
|
"make-ai-artifact--record-list"
|
|
263
|
-
),
|
|
263
|
+
), Bt = ({
|
|
264
264
|
artifact: e,
|
|
265
265
|
renderContext: t
|
|
266
|
-
}) =>
|
|
266
|
+
}) => oe(
|
|
267
267
|
e,
|
|
268
|
-
/* @__PURE__ */ r(
|
|
268
|
+
/* @__PURE__ */ r(Y, { children: [
|
|
269
269
|
/* @__PURE__ */ r("div", { className: `make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`, children: [
|
|
270
270
|
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: e.data.tone === "success" ? "✓" : e.data.tone === "warning" ? "!" : e.data.tone === "danger" ? "×" : "i" }),
|
|
271
271
|
/* @__PURE__ */ a("p", { children: e.data.body })
|
|
272
272
|
] }),
|
|
273
|
-
|
|
273
|
+
ie(e, t)
|
|
274
274
|
] }),
|
|
275
275
|
"make-ai-artifact--notice"
|
|
276
|
-
),
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
],
|
|
276
|
+
), ne = (e, t, s) => ({ id: e, kinds: [t], priority: 0, render: s }), zt = [
|
|
277
|
+
ne("platform.metric.default", "metric", (e, t, s) => /* @__PURE__ */ a(St, { artifact: e, renderContext: s })),
|
|
278
|
+
ne("platform.comparison.default", "comparison", (e, t, s) => /* @__PURE__ */ a(Lt, { artifact: e, renderContext: s })),
|
|
279
|
+
ne("platform.trend.default", "trend", (e, t, s) => /* @__PURE__ */ a(Dt, { artifact: e, renderContext: s })),
|
|
280
|
+
ne("platform.ranking.default", "ranking", (e, t, s) => /* @__PURE__ */ a(Ft, { artifact: e, renderContext: s })),
|
|
281
|
+
ne("platform.record-list.default", "record-list", (e, t, s) => /* @__PURE__ */ a(Wt, { artifact: e, renderContext: s })),
|
|
282
|
+
ne("platform.notice.default", "notice", (e, t, s) => /* @__PURE__ */ a(Bt, { artifact: e, renderContext: s }))
|
|
283
|
+
], qt = st(zt).templates, Ht = (e = qt) => st(e), Ut = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, Vt = "Make", Kt = [
|
|
284
284
|
"总结当前页面数据",
|
|
285
285
|
"找出需要关注的记录",
|
|
286
286
|
"列出我有权限查看的数据对象"
|
|
287
|
-
],
|
|
288
|
-
class
|
|
287
|
+
], it = (e, t) => t ?? `${e?.trim() || Vt} AI 助手`, Ot = (e) => e ?? Kt, jt = 432, Qe = 16, Je = (e, t, s) => Math.min(Math.max(e, Math.min(t, s)), s), Zt = (e) => typeof e == "number" ? Number.isFinite(e) ? `${e}px` : void 0 : e?.trim() || void 0;
|
|
288
|
+
class y extends Error {
|
|
289
289
|
}
|
|
290
|
-
const
|
|
290
|
+
const Ne = (e, t) => {
|
|
291
291
|
if (!(typeof e != "object" || e === null))
|
|
292
292
|
return e[t];
|
|
293
|
-
},
|
|
294
|
-
const t =
|
|
295
|
-
return typeof t == "number" ? t :
|
|
296
|
-
|
|
293
|
+
}, Xt = (e) => {
|
|
294
|
+
const t = Ne(e, "status");
|
|
295
|
+
return typeof t == "number" ? t : Ne(
|
|
296
|
+
Ne(e, "response"),
|
|
297
297
|
"status"
|
|
298
298
|
);
|
|
299
|
-
},
|
|
300
|
-
const t =
|
|
299
|
+
}, Yt = (e) => {
|
|
300
|
+
const t = Ne(e, "code"), s = Xt(e), i = e instanceof Error ? e.message : "", n = [t, i].filter((b) => typeof b == "string").join(" ").toLowerCase(), l = globalThis.navigator?.onLine === !1 || /network|fetch|timeout|offline|connection|网络|连接|超时/.test(n), u = typeof s == "number" && s >= 500 || /server|service|服务器|服务异常/.test(n);
|
|
301
301
|
return l ? {
|
|
302
302
|
actionLabel: "重新连接",
|
|
303
303
|
description: "请检查网络后再试。",
|
|
304
304
|
kind: "network",
|
|
305
305
|
label: "网络连接",
|
|
306
306
|
title: "网络连接不可用"
|
|
307
|
-
} :
|
|
307
|
+
} : u ? {
|
|
308
308
|
actionLabel: "重新加载",
|
|
309
309
|
description: "服务暂时未能响应,请稍后重试。",
|
|
310
310
|
kind: "service",
|
|
@@ -317,7 +317,7 @@ const ve = (e, t) => {
|
|
|
317
317
|
label: "加载异常",
|
|
318
318
|
title: "暂时无法加载对话"
|
|
319
319
|
};
|
|
320
|
-
},
|
|
320
|
+
}, et = (e) => {
|
|
321
321
|
try {
|
|
322
322
|
const t = e?.return?.();
|
|
323
323
|
if (!t) return;
|
|
@@ -331,7 +331,7 @@ const ve = (e, t) => {
|
|
|
331
331
|
errorType: t instanceof Error ? t.name : typeof t
|
|
332
332
|
});
|
|
333
333
|
}
|
|
334
|
-
},
|
|
334
|
+
}, Gt = async (e) => {
|
|
335
335
|
if (globalThis.navigator?.clipboard?.writeText) {
|
|
336
336
|
await globalThis.navigator.clipboard.writeText(e);
|
|
337
337
|
return;
|
|
@@ -343,112 +343,111 @@ const ve = (e, t) => {
|
|
|
343
343
|
const s = document.execCommand("copy");
|
|
344
344
|
if (t.remove(), !s)
|
|
345
345
|
throw new Error("Clipboard copy failed");
|
|
346
|
-
},
|
|
346
|
+
}, ot = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
347
347
|
/* @__PURE__ */ a("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" }),
|
|
348
348
|
/* @__PURE__ */ a("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" })
|
|
349
|
-
] }),
|
|
349
|
+
] }), Qt = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m6 6 12 12M18 6 6 18" }) }), Jt = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
350
350
|
/* @__PURE__ */ a("path", { d: "M8 8h10v12H8z" }),
|
|
351
351
|
/* @__PURE__ */ a("path", { d: "M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
|
|
352
|
-
] }),
|
|
352
|
+
] }), ea = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
353
353
|
/* @__PURE__ */ a("path", { d: "M20 11a8 8 0 0 0-14.7-4.4L4 8" }),
|
|
354
354
|
/* @__PURE__ */ a("path", { d: "M4 4v4h4" }),
|
|
355
355
|
/* @__PURE__ */ a("path", { d: "M4 13a8 8 0 0 0 14.7 4.4L20 16" }),
|
|
356
356
|
/* @__PURE__ */ a("path", { d: "M20 20v-4h-4" })
|
|
357
|
-
] }),
|
|
358
|
-
/* @__PURE__ */ a("
|
|
359
|
-
/* @__PURE__ */ a("path", { d: "
|
|
360
|
-
/* @__PURE__ */ a("path", { d: "
|
|
361
|
-
|
|
362
|
-
] }), Gt = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
357
|
+
] }), ta = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
358
|
+
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "8" }),
|
|
359
|
+
/* @__PURE__ */ a("path", { d: "M9.8 9.4a2.35 2.35 0 1 1 3.93 1.73c-.96.86-1.73 1.42-1.73 2.87" }),
|
|
360
|
+
/* @__PURE__ */ a("path", { d: "M12 17h.01" })
|
|
361
|
+
] }), aa = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
363
362
|
/* @__PURE__ */ a("path", { d: "M12 4v11" }),
|
|
364
363
|
/* @__PURE__ */ a("path", { d: "m7 10 5 5 5-5" }),
|
|
365
364
|
/* @__PURE__ */ a("path", { d: "M5 20h14" })
|
|
366
|
-
] }),
|
|
365
|
+
] }), sa = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }), na = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
367
366
|
/* @__PURE__ */ a("path", { d: "m4 4 17 8-17 8 3-8-3-8Z" }),
|
|
368
367
|
/* @__PURE__ */ a("path", { d: "M7 12h14" })
|
|
369
|
-
] }),
|
|
368
|
+
] }), ct = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
370
369
|
/* @__PURE__ */ a("path", { d: "M20 11a8 8 0 0 0-14.7-4.4L4 8" }),
|
|
371
370
|
/* @__PURE__ */ a("path", { d: "M4 4v4h4" }),
|
|
372
371
|
/* @__PURE__ */ a("path", { d: "M4 13a8 8 0 0 0 14.7 4.4L20 16" }),
|
|
373
372
|
/* @__PURE__ */ a("path", { d: "M20 20v-4h-4" })
|
|
374
|
-
] }),
|
|
373
|
+
] }), ra = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
375
374
|
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "8" }),
|
|
376
375
|
/* @__PURE__ */ a("path", { d: "M12 8v4.5" }),
|
|
377
376
|
/* @__PURE__ */ a("path", { d: "M12 16h.01" })
|
|
378
|
-
] }),
|
|
377
|
+
] }), Me = ({ className: e = "" }) => /* @__PURE__ */ a("span", { className: `make-ai-assistant__avatar ${e}`.trim(), "aria-hidden": "true", children: /* @__PURE__ */ a(ot, {}) }), ia = ({ src: e }) => e ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__user-avatar", "aria-hidden": "true", children: /* @__PURE__ */ a("img", { alt: "", src: e }) }) : null, oa = ({
|
|
379
378
|
userAvatarUrl: e,
|
|
380
379
|
userName: t
|
|
381
380
|
}) => {
|
|
382
381
|
const s = t?.trim();
|
|
383
382
|
return !s && !e ? null : /* @__PURE__ */ r("div", { className: "make-ai-assistant__message-identity", children: [
|
|
384
383
|
s ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__message-sender", children: s }) : null,
|
|
385
|
-
/* @__PURE__ */ a(
|
|
384
|
+
/* @__PURE__ */ a(ia, { src: e })
|
|
386
385
|
] });
|
|
387
|
-
},
|
|
386
|
+
}, Ee = (e) => {
|
|
388
387
|
const t = e.trim();
|
|
389
388
|
if (!(!t.startsWith("|") || !t.endsWith("|")))
|
|
390
389
|
return t.slice(1, -1).split("|").map((s) => s.trim());
|
|
391
|
-
},
|
|
392
|
-
const s =
|
|
393
|
-
if (!s || !i || s.length !== i.length || !
|
|
390
|
+
}, ca = (e) => e.length > 0 && e.every((t) => /^:?-{3,}:?$/.test(t)), la = (e, t) => {
|
|
391
|
+
const s = Ee(e[t] ?? ""), i = Ee(e[t + 1] ?? "");
|
|
392
|
+
if (!s || !i || s.length !== i.length || !ca(i))
|
|
394
393
|
return;
|
|
395
394
|
const n = [];
|
|
396
395
|
let o = t + 2;
|
|
397
396
|
for (; o < e.length; ) {
|
|
398
|
-
const l =
|
|
397
|
+
const l = Ee(e[o] ?? "");
|
|
399
398
|
if (!l || l.length !== s.length) break;
|
|
400
399
|
n.push(l), o += 1;
|
|
401
400
|
}
|
|
402
401
|
return { headers: s, lastIndex: o - 1, rows: n };
|
|
403
|
-
},
|
|
402
|
+
}, da = (e) => {
|
|
404
403
|
const t = [], s = [], i = [], n = [], o = e.replace(/\r\n?/g, `
|
|
405
404
|
`).split(`
|
|
406
405
|
`), l = () => {
|
|
407
|
-
const
|
|
406
|
+
const f = s.join(`
|
|
408
407
|
`).trim();
|
|
409
|
-
s.length = 0,
|
|
410
|
-
},
|
|
408
|
+
s.length = 0, f && t.push({ type: "paragraph", text: f });
|
|
409
|
+
}, u = () => {
|
|
411
410
|
i.length && t.push({ type: "list", items: i.splice(0) });
|
|
412
|
-
},
|
|
413
|
-
const
|
|
411
|
+
}, b = () => {
|
|
412
|
+
const f = n.join(`
|
|
414
413
|
`).trim();
|
|
415
|
-
n.length = 0,
|
|
414
|
+
n.length = 0, f && t.push({ type: "pre", text: f });
|
|
416
415
|
};
|
|
417
|
-
for (let
|
|
418
|
-
const
|
|
419
|
-
if (!
|
|
420
|
-
l(),
|
|
416
|
+
for (let f = 0; f < o.length; f += 1) {
|
|
417
|
+
const P = o[f] ?? "", C = P.trim();
|
|
418
|
+
if (!C) {
|
|
419
|
+
l(), u(), b();
|
|
421
420
|
continue;
|
|
422
421
|
}
|
|
423
|
-
const
|
|
424
|
-
if (
|
|
425
|
-
l(),
|
|
422
|
+
const L = la(o, f);
|
|
423
|
+
if (L) {
|
|
424
|
+
l(), u(), b(), t.push({ headers: L.headers, rows: L.rows, type: "table" }), f = L.lastIndex;
|
|
426
425
|
continue;
|
|
427
426
|
}
|
|
428
|
-
const
|
|
429
|
-
if (
|
|
430
|
-
l(),
|
|
431
|
-
const
|
|
432
|
-
|
|
427
|
+
const g = /^(#{1,6})\s+(.+)$/.exec(C);
|
|
428
|
+
if (g) {
|
|
429
|
+
l(), u(), b();
|
|
430
|
+
const W = (g[2] ?? "").replace(/\s+#+\s*$/, "").trim();
|
|
431
|
+
W && t.push({
|
|
433
432
|
type: "heading",
|
|
434
|
-
level:
|
|
435
|
-
text:
|
|
433
|
+
level: g[1]?.length,
|
|
434
|
+
text: W
|
|
436
435
|
});
|
|
437
436
|
continue;
|
|
438
437
|
}
|
|
439
|
-
if (/^\s*\|.+\|\s*$/.test(
|
|
440
|
-
l(),
|
|
438
|
+
if (/^\s*\|.+\|\s*$/.test(P)) {
|
|
439
|
+
l(), u(), n.push(P.trim());
|
|
441
440
|
continue;
|
|
442
441
|
}
|
|
443
|
-
const
|
|
444
|
-
if (
|
|
445
|
-
l(),
|
|
442
|
+
const A = /^\s*[-*]\s+(.+)$/.exec(P);
|
|
443
|
+
if (A) {
|
|
444
|
+
l(), b(), i.push(A[1]?.trim() ?? "");
|
|
446
445
|
continue;
|
|
447
446
|
}
|
|
448
|
-
|
|
447
|
+
u(), b(), s.push(C);
|
|
449
448
|
}
|
|
450
|
-
return l(),
|
|
451
|
-
},
|
|
449
|
+
return l(), u(), b(), t;
|
|
450
|
+
}, pe = (e) => {
|
|
452
451
|
const t = [], s = /(\*\*[^*]+\*\*|`[^`]+`)/g;
|
|
453
452
|
let i = 0;
|
|
454
453
|
for (const n of e.matchAll(s)) {
|
|
@@ -456,8 +455,8 @@ const ve = (e, t) => {
|
|
|
456
455
|
l > i && t.push(e.slice(i, l)), o.startsWith("**") ? t.push(/* @__PURE__ */ a("strong", { children: o.slice(2, -2) }, `${l}-strong`)) : t.push(/* @__PURE__ */ a("code", { children: o.slice(1, -1) }, `${l}-code`)), i = l + o.length;
|
|
457
456
|
}
|
|
458
457
|
return i < e.length && t.push(e.slice(i)), t;
|
|
459
|
-
},
|
|
460
|
-
const t =
|
|
458
|
+
}, ma = ({ content: e }) => {
|
|
459
|
+
const t = da(e);
|
|
461
460
|
return t.length ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble make-ai-assistant__assistant-text", children: t.map((s, i) => {
|
|
462
461
|
if (s.type === "heading") {
|
|
463
462
|
const n = s.level <= 2 ? "h3" : "h4";
|
|
@@ -465,12 +464,12 @@ const ve = (e, t) => {
|
|
|
465
464
|
n,
|
|
466
465
|
{
|
|
467
466
|
className: `make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${s.level}`,
|
|
468
|
-
children:
|
|
467
|
+
children: pe(s.text)
|
|
469
468
|
},
|
|
470
469
|
`${i}-heading`
|
|
471
470
|
);
|
|
472
471
|
}
|
|
473
|
-
return s.type === "paragraph" ? /* @__PURE__ */ a("p", { children:
|
|
472
|
+
return s.type === "paragraph" ? /* @__PURE__ */ a("p", { children: pe(s.text) }, `${i}-paragraph`) : s.type === "pre" ? /* @__PURE__ */ a("pre", { children: /* @__PURE__ */ a("code", { children: s.text }) }, `${i}-pre`) : s.type === "table" ? /* @__PURE__ */ a(
|
|
474
473
|
"div",
|
|
475
474
|
{
|
|
476
475
|
"aria-label": "表格内容,可横向滚动",
|
|
@@ -478,46 +477,46 @@ const ve = (e, t) => {
|
|
|
478
477
|
role: "region",
|
|
479
478
|
tabIndex: 0,
|
|
480
479
|
children: /* @__PURE__ */ r("table", { className: "make-ai-assistant__markdown-table", children: [
|
|
481
|
-
/* @__PURE__ */ a("thead", { children: /* @__PURE__ */ a("tr", { children: s.headers.map((n, o) => /* @__PURE__ */ a("th", { scope: "col", children:
|
|
482
|
-
/* @__PURE__ */ a("tbody", { children: s.rows.map((n, o) => /* @__PURE__ */ a("tr", { children: n.map((l,
|
|
480
|
+
/* @__PURE__ */ a("thead", { children: /* @__PURE__ */ a("tr", { children: s.headers.map((n, o) => /* @__PURE__ */ a("th", { scope: "col", children: pe(n) }, `${o}-${n}`)) }) }),
|
|
481
|
+
/* @__PURE__ */ a("tbody", { children: s.rows.map((n, o) => /* @__PURE__ */ a("tr", { children: n.map((l, u) => /* @__PURE__ */ a("td", { children: pe(l) }, `${u}-${l}`)) }, `${o}-${n.join("|")}`)) })
|
|
483
482
|
] })
|
|
484
483
|
},
|
|
485
484
|
`${i}-table`
|
|
486
|
-
) : /* @__PURE__ */ a("ul", { children: s.items.map((n, o) => /* @__PURE__ */ a("li", { children:
|
|
485
|
+
) : /* @__PURE__ */ a("ul", { children: s.items.map((n, o) => /* @__PURE__ */ a("li", { children: pe(n) }, `${o}-${n}`)) }, `${i}-list`);
|
|
487
486
|
}) }) : null;
|
|
488
|
-
},
|
|
489
|
-
/* @__PURE__ */ a(
|
|
487
|
+
}, lt = ({ assistantName: e }) => /* @__PURE__ */ r("div", { className: "make-ai-assistant__message-identity", children: [
|
|
488
|
+
/* @__PURE__ */ a(Me, { className: "make-ai-assistant__avatar--message" }),
|
|
490
489
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-sender", children: e })
|
|
491
|
-
] }),
|
|
490
|
+
] }), dt = (e) => {
|
|
492
491
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
493
492
|
const s = e.messages[t];
|
|
494
493
|
if (s.role === "assistant" && s.status === "streaming")
|
|
495
494
|
return s.id;
|
|
496
495
|
}
|
|
497
|
-
},
|
|
496
|
+
}, ua = (e) => {
|
|
498
497
|
for (let t = e.messages.length - 1; t >= 0; t -= 1)
|
|
499
498
|
if (e.messages[t].role === "user") return t;
|
|
500
499
|
return -1;
|
|
501
|
-
},
|
|
502
|
-
const t =
|
|
500
|
+
}, mt = (e) => {
|
|
501
|
+
const t = ua(e);
|
|
503
502
|
if (!(t < 0))
|
|
504
503
|
for (let s = e.messages.length - 1; s > t; s -= 1) {
|
|
505
504
|
const i = e.messages[s];
|
|
506
505
|
if (i.role === "assistant") return i.id;
|
|
507
506
|
}
|
|
508
|
-
},
|
|
507
|
+
}, ha = (e) => {
|
|
509
508
|
if (e.status === "idle")
|
|
510
509
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
511
510
|
const s = e.messages[t];
|
|
512
511
|
if (s.role === "assistant" && s.status === "complete")
|
|
513
512
|
return s.id;
|
|
514
513
|
}
|
|
515
|
-
},
|
|
514
|
+
}, pa = (e) => {
|
|
516
515
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
517
516
|
const s = e.messages[t];
|
|
518
517
|
if (s.role === "user") return s;
|
|
519
518
|
}
|
|
520
|
-
},
|
|
519
|
+
}, fa = (e, t) => {
|
|
521
520
|
const s = e.messages.findIndex(
|
|
522
521
|
(i) => i.id === t && i.role === "user"
|
|
523
522
|
);
|
|
@@ -528,9 +527,9 @@ const ve = (e, t) => {
|
|
|
528
527
|
status: "streaming",
|
|
529
528
|
messages: s < 0 ? e.messages : e.messages.slice(0, s + 1)
|
|
530
529
|
};
|
|
531
|
-
},
|
|
530
|
+
}, ga = (e) => e.scrollHeight - e.scrollTop - e.clientHeight <= 48, tt = (e = "smooth") => globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : e, Ce = (e, t) => {
|
|
532
531
|
typeof e.scrollTo == "function" ? e.scrollTo({ top: e.scrollHeight, behavior: t }) : e.scrollTop = e.scrollHeight;
|
|
533
|
-
},
|
|
532
|
+
}, ut = ({
|
|
534
533
|
error: e,
|
|
535
534
|
onRetry: t
|
|
536
535
|
}) => /* @__PURE__ */ r(
|
|
@@ -541,7 +540,7 @@ const ve = (e, t) => {
|
|
|
541
540
|
role: "alert",
|
|
542
541
|
children: [
|
|
543
542
|
/* @__PURE__ */ r("div", { className: "make-ai-assistant__message-status-header", children: [
|
|
544
|
-
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-icon", "aria-hidden": "true", children: /* @__PURE__ */ a(
|
|
543
|
+
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-icon", "aria-hidden": "true", children: /* @__PURE__ */ a(ra, {}) }),
|
|
545
544
|
/* @__PURE__ */ a("strong", { children: "请求未完成" })
|
|
546
545
|
] }),
|
|
547
546
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-message", children: e.message }),
|
|
@@ -552,18 +551,18 @@ const ve = (e, t) => {
|
|
|
552
551
|
type: "button",
|
|
553
552
|
onClick: t,
|
|
554
553
|
children: [
|
|
555
|
-
/* @__PURE__ */ a(
|
|
554
|
+
/* @__PURE__ */ a(ct, {}),
|
|
556
555
|
"重新发送"
|
|
557
556
|
]
|
|
558
557
|
}
|
|
559
558
|
) : null
|
|
560
559
|
]
|
|
561
560
|
}
|
|
562
|
-
),
|
|
561
|
+
), _a = ({
|
|
563
562
|
error: e,
|
|
564
563
|
onRetry: t
|
|
565
564
|
}) => {
|
|
566
|
-
const s =
|
|
565
|
+
const s = Yt(e);
|
|
567
566
|
return /* @__PURE__ */ r(
|
|
568
567
|
"section",
|
|
569
568
|
{
|
|
@@ -588,7 +587,7 @@ const ve = (e, t) => {
|
|
|
588
587
|
type: "button",
|
|
589
588
|
onClick: t,
|
|
590
589
|
children: [
|
|
591
|
-
/* @__PURE__ */ a(
|
|
590
|
+
/* @__PURE__ */ a(ct, {}),
|
|
592
591
|
s.actionLabel
|
|
593
592
|
]
|
|
594
593
|
}
|
|
@@ -596,7 +595,7 @@ const ve = (e, t) => {
|
|
|
596
595
|
]
|
|
597
596
|
}
|
|
598
597
|
);
|
|
599
|
-
},
|
|
598
|
+
}, ht = ({
|
|
600
599
|
active: e,
|
|
601
600
|
steps: t
|
|
602
601
|
}) => {
|
|
@@ -625,7 +624,7 @@ const ve = (e, t) => {
|
|
|
625
624
|
`${n}-${i}`
|
|
626
625
|
)) })
|
|
627
626
|
] });
|
|
628
|
-
},
|
|
627
|
+
}, va = ({
|
|
629
628
|
copyFeedback: e,
|
|
630
629
|
onCopy: t,
|
|
631
630
|
onRegenerate: s
|
|
@@ -638,7 +637,7 @@ const ve = (e, t) => {
|
|
|
638
637
|
"data-tooltip": "复制",
|
|
639
638
|
type: "button",
|
|
640
639
|
onClick: t,
|
|
641
|
-
children: /* @__PURE__ */ a(
|
|
640
|
+
children: /* @__PURE__ */ a(Jt, {})
|
|
642
641
|
}
|
|
643
642
|
) : null,
|
|
644
643
|
s ? /* @__PURE__ */ a(
|
|
@@ -649,7 +648,7 @@ const ve = (e, t) => {
|
|
|
649
648
|
"data-tooltip": "重新生成",
|
|
650
649
|
type: "button",
|
|
651
650
|
onClick: s,
|
|
652
|
-
children: /* @__PURE__ */ a(
|
|
651
|
+
children: /* @__PURE__ */ a(ea, {})
|
|
653
652
|
}
|
|
654
653
|
) : null,
|
|
655
654
|
e ? /* @__PURE__ */ a(
|
|
@@ -661,7 +660,7 @@ const ve = (e, t) => {
|
|
|
661
660
|
children: e.message
|
|
662
661
|
}
|
|
663
662
|
) : null
|
|
664
|
-
] }),
|
|
663
|
+
] }), at = ({
|
|
665
664
|
assistantName: e,
|
|
666
665
|
error: t,
|
|
667
666
|
onRetry: s,
|
|
@@ -676,82 +675,82 @@ const ve = (e, t) => {
|
|
|
676
675
|
"data-message-role": "assistant",
|
|
677
676
|
"data-message-state": n,
|
|
678
677
|
children: /* @__PURE__ */ r("div", { className: "make-ai-assistant__message-turn", children: [
|
|
679
|
-
/* @__PURE__ */ a(
|
|
680
|
-
/* @__PURE__ */ a("div", { className: "make-ai-assistant__message-stack", children: t ? /* @__PURE__ */ a(
|
|
678
|
+
/* @__PURE__ */ a(lt, { assistantName: e }),
|
|
679
|
+
/* @__PURE__ */ a("div", { className: "make-ai-assistant__message-stack", children: t ? /* @__PURE__ */ a(ut, { error: t, onRetry: s }) : /* @__PURE__ */ a(ht, { active: !0, steps: i?.steps }) })
|
|
681
680
|
] })
|
|
682
681
|
}
|
|
683
682
|
) : null;
|
|
684
|
-
},
|
|
685
|
-
const
|
|
686
|
-
let
|
|
687
|
-
return e.messages.map((
|
|
688
|
-
const
|
|
689
|
-
|
|
690
|
-
const
|
|
683
|
+
}, ya = (e, t, s, i, n, o, l, u, b, f, P, C, L) => {
|
|
684
|
+
const g = mt(e), A = dt(e), W = ha(e);
|
|
685
|
+
let R;
|
|
686
|
+
return e.messages.map((m) => {
|
|
687
|
+
const N = m.role === "assistant", H = R;
|
|
688
|
+
N || (R = m);
|
|
689
|
+
const w = m.id === A, Q = m.id === g ? e.error : void 0, D = m.error ?? Q, B = !N && !!(u?.trim() || b), p = N ? o : u?.trim() || "用户", x = N && m.status === "complete" && !D && (m.content.trim() || m.id === W);
|
|
691
690
|
return /* @__PURE__ */ a(
|
|
692
691
|
"article",
|
|
693
692
|
{
|
|
694
|
-
"aria-label": `${
|
|
695
|
-
className: `make-ai-assistant__message make-ai-assistant__message--${
|
|
696
|
-
"data-message-role":
|
|
697
|
-
"data-message-state":
|
|
698
|
-
"data-message-status":
|
|
699
|
-
"data-message-has-identity":
|
|
693
|
+
"aria-label": `${p}的消息`,
|
|
694
|
+
className: `make-ai-assistant__message make-ai-assistant__message--${m.role}`,
|
|
695
|
+
"data-message-role": m.role,
|
|
696
|
+
"data-message-state": D ? "error" : void 0,
|
|
697
|
+
"data-message-status": m.status,
|
|
698
|
+
"data-message-has-identity": N || B ? !0 : void 0,
|
|
700
699
|
children: /* @__PURE__ */ r("div", { className: "make-ai-assistant__message-turn", children: [
|
|
701
|
-
|
|
700
|
+
N ? /* @__PURE__ */ a(lt, { assistantName: o }) : B ? /* @__PURE__ */ a(oa, { userAvatarUrl: b, userName: u }) : null,
|
|
702
701
|
/* @__PURE__ */ r("div", { className: "make-ai-assistant__message-stack", children: [
|
|
703
|
-
|
|
702
|
+
m.content ? N ? /* @__PURE__ */ a(ma, { content: m.content }) : /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble", children: m.content }) : m.status === "streaming" ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__typing", "aria-label": `${o}正在思考`, children: [
|
|
704
703
|
/* @__PURE__ */ a("span", {}),
|
|
705
704
|
/* @__PURE__ */ a("span", {}),
|
|
706
705
|
/* @__PURE__ */ a("span", {})
|
|
707
706
|
] }) : null,
|
|
708
|
-
|
|
709
|
-
|
|
707
|
+
N ? /* @__PURE__ */ a(
|
|
708
|
+
ht,
|
|
710
709
|
{
|
|
711
|
-
active:
|
|
712
|
-
steps:
|
|
710
|
+
active: w && e.status === "streaming",
|
|
711
|
+
steps: m.progressSteps
|
|
713
712
|
}
|
|
714
713
|
) : null,
|
|
715
|
-
|
|
716
|
-
|
|
714
|
+
D ? /* @__PURE__ */ a(
|
|
715
|
+
ut,
|
|
717
716
|
{
|
|
718
|
-
error:
|
|
719
|
-
onRetry:
|
|
717
|
+
error: D,
|
|
718
|
+
onRetry: Q ? l : void 0
|
|
720
719
|
}
|
|
721
720
|
) : null,
|
|
722
|
-
|
|
723
|
-
|
|
721
|
+
m.artifacts.map((z) => /* @__PURE__ */ a(
|
|
722
|
+
xt,
|
|
724
723
|
{
|
|
725
|
-
artifact:
|
|
724
|
+
artifact: z,
|
|
726
725
|
context: t,
|
|
727
726
|
onAction: i,
|
|
728
727
|
onActionError: n,
|
|
729
728
|
registry: s
|
|
730
729
|
},
|
|
731
|
-
|
|
730
|
+
z.id
|
|
732
731
|
)),
|
|
733
|
-
|
|
734
|
-
|
|
732
|
+
x ? /* @__PURE__ */ a(
|
|
733
|
+
va,
|
|
735
734
|
{
|
|
736
|
-
copyFeedback:
|
|
737
|
-
message:
|
|
738
|
-
status:
|
|
735
|
+
copyFeedback: f?.messageId === m.id ? {
|
|
736
|
+
message: f.message,
|
|
737
|
+
status: f.status
|
|
739
738
|
} : void 0,
|
|
740
|
-
onCopy:
|
|
741
|
-
onRegenerate:
|
|
742
|
-
userMessage:
|
|
743
|
-
assistantMessage:
|
|
739
|
+
onCopy: m.content.trim() ? () => C(m.id, m.content) : void 0,
|
|
740
|
+
onRegenerate: P && m.id === W && H ? () => L({
|
|
741
|
+
userMessage: H,
|
|
742
|
+
assistantMessage: m
|
|
744
743
|
}) : void 0
|
|
745
744
|
}
|
|
746
745
|
) : null
|
|
747
746
|
] })
|
|
748
747
|
] })
|
|
749
748
|
},
|
|
750
|
-
|
|
749
|
+
m.id
|
|
751
750
|
);
|
|
752
751
|
});
|
|
753
752
|
};
|
|
754
|
-
function
|
|
753
|
+
function pt({
|
|
755
754
|
assistantName: e = "AI 助手",
|
|
756
755
|
brandName: t,
|
|
757
756
|
context: s,
|
|
@@ -759,409 +758,423 @@ function it({
|
|
|
759
758
|
onActionError: n,
|
|
760
759
|
onClose: o,
|
|
761
760
|
onNewConversation: l,
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
761
|
+
headerHeight: u,
|
|
762
|
+
privacyNotice: b,
|
|
763
|
+
registry: f,
|
|
764
|
+
subtitle: P,
|
|
765
|
+
suggestions: C,
|
|
766
|
+
title: L,
|
|
767
|
+
transport: g,
|
|
768
|
+
userAvatarUrl: A,
|
|
769
|
+
userName: W,
|
|
770
|
+
visible: R
|
|
771
771
|
}) {
|
|
772
|
-
const
|
|
773
|
-
|
|
774
|
-
const [
|
|
775
|
-
() =>
|
|
776
|
-
[
|
|
777
|
-
),
|
|
778
|
-
() =>
|
|
779
|
-
[
|
|
780
|
-
),
|
|
781
|
-
const
|
|
782
|
-
return !
|
|
772
|
+
const m = it(t, L), N = b?.trim(), H = P?.trim() || `当前对象:${s.app.name ?? "未命名应用"}`, w = Zt(u), Q = w ? { "--make-ai-internal-header-height": w } : void 0, [D, B] = E(""), [p, x] = E(we), z = $(p);
|
|
773
|
+
z.current = p;
|
|
774
|
+
const [j, Z] = E(void 0), [ce, U] = E(void 0), [h, k] = E(0), [M, X] = E(() => g.loadConversation ? "loading" : "ready"), [ft, Te] = E(void 0), [gt, V] = E(!1), J = $(void 0), ee = $(void 0), te = $(0), xe = $(null), le = $(null), Se = $(null), Le = $(null), K = $(!0), De = $(s.app.id), Fe = $(R), Pe = Ge(
|
|
775
|
+
() => f ?? Ht(),
|
|
776
|
+
[f]
|
|
777
|
+
), We = Ge(
|
|
778
|
+
() => Ot(C),
|
|
779
|
+
[C]
|
|
780
|
+
), fe = (c) => {
|
|
781
|
+
const _ = J.current, v = ee.current?.iterator;
|
|
782
|
+
return !_ && !v ? !1 : (te.current += 1, J.current = void 0, ee.current = void 0, console.info("[make-ai-assistant] local run cancellation requested", { reason: c }), _?.abort(), et(v), !0);
|
|
783
783
|
};
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
}, []),
|
|
787
|
-
const c =
|
|
788
|
-
if (
|
|
789
|
-
|
|
784
|
+
re(() => () => {
|
|
785
|
+
fe("unmount");
|
|
786
|
+
}, []), re(() => {
|
|
787
|
+
const c = g.loadConversation, _ = De.current !== s.app.id;
|
|
788
|
+
if (De.current = s.app.id, fe("reinitialize"), _ && (B(""), K.current = !0), Z(void 0), U(void 0), V(!1), x(we()), !c) {
|
|
789
|
+
Te(void 0), X("ready");
|
|
790
790
|
return;
|
|
791
791
|
}
|
|
792
|
-
const
|
|
793
|
-
return
|
|
792
|
+
const v = new AbortController();
|
|
793
|
+
return Te(void 0), X("loading"), console.info("[make-ai-assistant] conversation load start", {
|
|
794
794
|
appId: s.app.id
|
|
795
|
-
}), c.call(
|
|
796
|
-
|
|
795
|
+
}), c.call(g, s, { signal: v.signal }).then((I) => {
|
|
796
|
+
v.signal.aborted || (x(we(I)), X("ready"), console.info("[make-ai-assistant] conversation load success", {
|
|
797
797
|
appId: s.app.id,
|
|
798
|
-
messageCount:
|
|
798
|
+
messageCount: I.messages.length
|
|
799
799
|
}));
|
|
800
|
-
}).catch((
|
|
801
|
-
|
|
800
|
+
}).catch((I) => {
|
|
801
|
+
v.signal.aborted || (console.error("[make-ai-assistant] conversation load failed", {
|
|
802
802
|
appId: s.app.id,
|
|
803
|
-
errorType:
|
|
804
|
-
}),
|
|
805
|
-
}), () =>
|
|
806
|
-
}, [s.app.id,
|
|
807
|
-
const c =
|
|
808
|
-
if (!c || !
|
|
809
|
-
|
|
810
|
-
const
|
|
811
|
-
if (!
|
|
812
|
-
const
|
|
813
|
-
|
|
803
|
+
errorType: I instanceof Error ? I.name : typeof I
|
|
804
|
+
}), Te(I), X("error"));
|
|
805
|
+
}), () => v.abort();
|
|
806
|
+
}, [s.app.id, h, g]), re(() => {
|
|
807
|
+
const c = le.current;
|
|
808
|
+
if (!c || !K.current) return;
|
|
809
|
+
V(!1);
|
|
810
|
+
const _ = requestAnimationFrame(() => {
|
|
811
|
+
if (!K.current) return;
|
|
812
|
+
const v = p.status === "streaming" || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
|
|
813
|
+
Ce(c, v);
|
|
814
814
|
});
|
|
815
|
-
return () => cancelAnimationFrame(
|
|
816
|
-
}, [
|
|
817
|
-
const c =
|
|
818
|
-
if (
|
|
819
|
-
const
|
|
820
|
-
const
|
|
821
|
-
if (
|
|
822
|
-
|
|
823
|
-
const
|
|
824
|
-
|
|
825
|
-
} else
|
|
826
|
-
const
|
|
827
|
-
(
|
|
815
|
+
return () => cancelAnimationFrame(_);
|
|
816
|
+
}, [p.messages, p.progress, p.status]), re(() => {
|
|
817
|
+
const c = R && !Fe.current;
|
|
818
|
+
if (Fe.current = R, !c) return;
|
|
819
|
+
const _ = requestAnimationFrame(() => {
|
|
820
|
+
const v = le.current;
|
|
821
|
+
if (v && K.current) {
|
|
822
|
+
V(!1);
|
|
823
|
+
const de = z.current.status === "streaming" ? "auto" : tt();
|
|
824
|
+
Ce(v, de);
|
|
825
|
+
} else v && V(z.current.messages.length > 0);
|
|
826
|
+
const I = Se.current;
|
|
827
|
+
(I && !I.disabled ? I : Le.current ?? xe.current?.querySelector("button:not(:disabled)"))?.focus();
|
|
828
828
|
});
|
|
829
|
-
return () => cancelAnimationFrame(
|
|
830
|
-
}, [
|
|
831
|
-
const
|
|
832
|
-
const c =
|
|
829
|
+
return () => cancelAnimationFrame(_);
|
|
830
|
+
}, [R]);
|
|
831
|
+
const _t = () => {
|
|
832
|
+
const c = le.current;
|
|
833
833
|
if (!c) return;
|
|
834
|
-
const
|
|
835
|
-
|
|
836
|
-
},
|
|
837
|
-
const c =
|
|
834
|
+
const _ = ga(c);
|
|
835
|
+
K.current = _, V(!_ && z.current.messages.length > 0);
|
|
836
|
+
}, vt = () => {
|
|
837
|
+
const c = le.current;
|
|
838
838
|
if (!c) return;
|
|
839
|
-
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
},
|
|
843
|
-
const
|
|
844
|
-
if (!
|
|
845
|
-
if (
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
) >
|
|
849
|
-
|
|
850
|
-
`输入内容过长,请控制在 ${
|
|
839
|
+
K.current = !0, V(!1);
|
|
840
|
+
const _ = tt();
|
|
841
|
+
Ce(c, _);
|
|
842
|
+
}, Be = async (c, _) => {
|
|
843
|
+
const v = c.trim(), I = z.current, q = _?.regenerateFrom, de = g.regenerate;
|
|
844
|
+
if (!v || M !== "ready" || I.status === "streaming" || J.current || q && !de) return;
|
|
845
|
+
if (Ae(
|
|
846
|
+
v,
|
|
847
|
+
S.messageCharacters
|
|
848
|
+
) > S.messageCharacters) {
|
|
849
|
+
Z(
|
|
850
|
+
`输入内容过长,请控制在 ${S.messageCharacters} 个字符以内`
|
|
851
851
|
);
|
|
852
852
|
return;
|
|
853
853
|
}
|
|
854
|
-
const
|
|
855
|
-
id:
|
|
856
|
-
content:
|
|
857
|
-
},
|
|
858
|
-
|
|
854
|
+
const ve = {
|
|
855
|
+
id: q?.userMessage.id ?? Ut("user"),
|
|
856
|
+
content: v
|
|
857
|
+
}, ye = q ? fa(I, q.userMessage.id) : Et(I, ve), ke = new AbortController(), ae = te.current + 1;
|
|
858
|
+
te.current = ae, J.current = ke, Z(void 0), U(void 0), V(!K.current && I.messages.length > 0), q || B(""), x(ye);
|
|
859
859
|
try {
|
|
860
|
-
let
|
|
861
|
-
const
|
|
860
|
+
let O = !1, T, He = 0, Ue = 0, Ve = 0, $e = 0, me = 0;
|
|
861
|
+
const ue = /* @__PURE__ */ new Map(), Ke = /* @__PURE__ */ new Set(), Oe = /* @__PURE__ */ new Set(
|
|
862
862
|
[
|
|
863
|
-
...
|
|
864
|
-
|
|
863
|
+
...ye.messages.map((be) => be.id),
|
|
864
|
+
ve.id
|
|
865
865
|
]
|
|
866
|
-
),
|
|
867
|
-
let
|
|
868
|
-
if (
|
|
869
|
-
if (!
|
|
870
|
-
throw new
|
|
871
|
-
|
|
872
|
-
threadId:
|
|
873
|
-
message:
|
|
866
|
+
), he = /* @__PURE__ */ new Set(), je = Rt(Pe), Ze = { signal: ke.signal };
|
|
867
|
+
let Re;
|
|
868
|
+
if (q) {
|
|
869
|
+
if (!de)
|
|
870
|
+
throw new y("当前 AI 助手不支持重新生成");
|
|
871
|
+
Re = de({
|
|
872
|
+
threadId: ye.threadId,
|
|
873
|
+
message: ve,
|
|
874
874
|
assistantMessage: {
|
|
875
|
-
id:
|
|
876
|
-
content:
|
|
875
|
+
id: q.assistantMessage.id,
|
|
876
|
+
content: q.assistantMessage.content
|
|
877
877
|
},
|
|
878
878
|
context: s,
|
|
879
|
-
capabilities:
|
|
880
|
-
},
|
|
879
|
+
capabilities: je
|
|
880
|
+
}, Ze);
|
|
881
881
|
} else
|
|
882
|
-
|
|
882
|
+
Re = g.run(
|
|
883
883
|
{
|
|
884
|
-
threadId:
|
|
885
|
-
message:
|
|
884
|
+
threadId: ye.threadId,
|
|
885
|
+
message: ve,
|
|
886
886
|
context: s,
|
|
887
|
-
capabilities:
|
|
887
|
+
capabilities: je
|
|
888
888
|
},
|
|
889
|
-
|
|
889
|
+
Ze
|
|
890
890
|
);
|
|
891
|
-
const
|
|
892
|
-
for (
|
|
893
|
-
const
|
|
894
|
-
if (
|
|
891
|
+
const Xe = Re[Symbol.asyncIterator]();
|
|
892
|
+
for (ee.current = { iterator: Xe, requestVersion: ae }; ; ) {
|
|
893
|
+
const be = await Xe.next();
|
|
894
|
+
if (te.current !== ae || be.done) break;
|
|
895
895
|
let d;
|
|
896
896
|
try {
|
|
897
|
-
d =
|
|
898
|
-
} catch (
|
|
899
|
-
throw new
|
|
900
|
-
|
|
897
|
+
d = Ct(be.value);
|
|
898
|
+
} catch (F) {
|
|
899
|
+
throw new y(
|
|
900
|
+
F instanceof Error ? F.message : "Invalid assistant event"
|
|
901
901
|
);
|
|
902
902
|
}
|
|
903
903
|
if (d.type === "message.start") {
|
|
904
|
-
if (
|
|
905
|
-
throw new
|
|
906
|
-
if (
|
|
907
|
-
throw new
|
|
908
|
-
if (
|
|
909
|
-
throw new
|
|
910
|
-
|
|
904
|
+
if (T !== void 0 && T !== d.runId)
|
|
905
|
+
throw new y("AI 助手响应 run id 不一致");
|
|
906
|
+
if (T ??= d.runId, Ue += 1, Ue > S.assistantMessagesPerRun)
|
|
907
|
+
throw new y("AI 助手单次响应消息数量超过限制");
|
|
908
|
+
if (Oe.has(d.messageId))
|
|
909
|
+
throw new y("AI 助手响应包含重复的 message id");
|
|
910
|
+
Oe.add(d.messageId), he.add(d.messageId), ue.set(d.messageId, 0);
|
|
911
911
|
}
|
|
912
912
|
if (d.type === "message.delta") {
|
|
913
|
-
if (!
|
|
914
|
-
throw new
|
|
915
|
-
const
|
|
913
|
+
if (!he.has(d.messageId))
|
|
914
|
+
throw new y("AI 助手响应事件顺序无效");
|
|
915
|
+
const F = ue.get(d.messageId) ?? 0, se = Ae(
|
|
916
916
|
d.delta,
|
|
917
|
-
|
|
917
|
+
S.messageCharacters - me
|
|
918
918
|
);
|
|
919
|
-
if (
|
|
920
|
-
throw new
|
|
921
|
-
|
|
919
|
+
if (me + se > S.messageCharacters)
|
|
920
|
+
throw new y("AI 助手响应文本超过大小限制");
|
|
921
|
+
me += se, ue.set(
|
|
922
922
|
d.messageId,
|
|
923
|
-
|
|
923
|
+
F + se
|
|
924
924
|
);
|
|
925
925
|
}
|
|
926
926
|
if (d.type === "message.replace") {
|
|
927
|
-
if (!
|
|
928
|
-
throw new
|
|
929
|
-
const
|
|
927
|
+
if (!he.has(d.messageId))
|
|
928
|
+
throw new y("AI 助手响应事件顺序无效");
|
|
929
|
+
const F = ue.get(d.messageId) ?? 0, se = Ae(
|
|
930
930
|
d.content,
|
|
931
|
-
|
|
932
|
-
),
|
|
933
|
-
if (
|
|
934
|
-
throw new
|
|
935
|
-
|
|
931
|
+
S.messageCharacters
|
|
932
|
+
), Ye = me - F + se;
|
|
933
|
+
if (Ye > S.messageCharacters)
|
|
934
|
+
throw new y("AI 助手响应文本超过大小限制");
|
|
935
|
+
me = Ye, ue.set(d.messageId, se);
|
|
936
936
|
}
|
|
937
937
|
if (d.type === "run.progress") {
|
|
938
|
-
if (
|
|
939
|
-
throw new
|
|
940
|
-
if (
|
|
941
|
-
throw new
|
|
942
|
-
const
|
|
938
|
+
if (T !== void 0 && T !== d.runId)
|
|
939
|
+
throw new y("AI 助手响应 run id 不一致");
|
|
940
|
+
if (T ??= d.runId, Ve += 1, Ve > S.progressStepsPerRun)
|
|
941
|
+
throw new y("AI 助手处理过程数量超过限制");
|
|
942
|
+
const F = Ae(
|
|
943
943
|
d.message,
|
|
944
|
-
|
|
944
|
+
S.progressCharactersPerRun - $e
|
|
945
945
|
);
|
|
946
|
-
if (
|
|
947
|
-
throw new
|
|
948
|
-
|
|
946
|
+
if ($e + F > S.progressCharactersPerRun)
|
|
947
|
+
throw new y("AI 助手处理过程文本超过大小限制");
|
|
948
|
+
$e += F;
|
|
949
949
|
}
|
|
950
950
|
if (d.type === "artifact") {
|
|
951
|
-
if (!
|
|
952
|
-
throw new
|
|
953
|
-
if (
|
|
954
|
-
throw new
|
|
955
|
-
if (
|
|
956
|
-
throw new
|
|
957
|
-
|
|
951
|
+
if (!he.has(d.messageId))
|
|
952
|
+
throw new y("AI 助手响应事件顺序无效");
|
|
953
|
+
if (He += 1, He > S.artifactsPerRun)
|
|
954
|
+
throw new y("AI 助手单次响应 Artifact 数量超过限制");
|
|
955
|
+
if (Ke.has(d.artifact.id))
|
|
956
|
+
throw new y("AI 助手响应包含重复的 Artifact id");
|
|
957
|
+
Ke.add(d.artifact.id);
|
|
958
958
|
}
|
|
959
|
-
if (d.type === "message.complete" && !
|
|
960
|
-
throw new
|
|
961
|
-
if (d.type === "run.complete" &&
|
|
962
|
-
throw new
|
|
963
|
-
if (d.type === "run.cancelled" && d.runId !== void 0 &&
|
|
964
|
-
throw new
|
|
965
|
-
if (
|
|
966
|
-
|
|
959
|
+
if (d.type === "message.complete" && !he.delete(d.messageId))
|
|
960
|
+
throw new y("AI 助手响应事件顺序无效");
|
|
961
|
+
if (d.type === "run.complete" && T !== void 0 && T !== d.runId)
|
|
962
|
+
throw new y("AI 助手响应 run id 不一致");
|
|
963
|
+
if (d.type === "run.cancelled" && d.runId !== void 0 && T !== void 0 && T !== d.runId)
|
|
964
|
+
throw new y("AI 助手响应 run id 不一致");
|
|
965
|
+
if (x((F) => Ie(F, d)), d.type === "error" || d.type === "run.cancelled" || d.type === "run.complete") {
|
|
966
|
+
O = !0;
|
|
967
967
|
break;
|
|
968
968
|
}
|
|
969
969
|
}
|
|
970
|
-
if (!
|
|
971
|
-
throw new
|
|
972
|
-
} catch (
|
|
973
|
-
if (
|
|
974
|
-
if (
|
|
975
|
-
|
|
976
|
-
(
|
|
970
|
+
if (!O)
|
|
971
|
+
throw new y("AI 助手流式响应在终止事件前结束");
|
|
972
|
+
} catch (O) {
|
|
973
|
+
if (te.current !== ae) return;
|
|
974
|
+
if (ke.signal.aborted) {
|
|
975
|
+
x(
|
|
976
|
+
(T) => Ie(T, { type: "run.cancelled" })
|
|
977
977
|
);
|
|
978
978
|
return;
|
|
979
979
|
}
|
|
980
980
|
console.error("[make-ai-assistant] assistant run failed", {
|
|
981
981
|
appId: s.app.id,
|
|
982
|
-
errorType:
|
|
983
|
-
}),
|
|
984
|
-
(
|
|
982
|
+
errorType: O instanceof Error ? O.name : typeof O
|
|
983
|
+
}), x(
|
|
984
|
+
(T) => Ie(T, {
|
|
985
985
|
type: "error",
|
|
986
986
|
code: "TRANSPORT_ERROR",
|
|
987
|
-
message:
|
|
987
|
+
message: O instanceof y ? O.message : "连接失败,请重试",
|
|
988
988
|
retryable: !0
|
|
989
989
|
})
|
|
990
990
|
);
|
|
991
991
|
} finally {
|
|
992
|
-
|
|
992
|
+
te.current === ae && J.current === ke && (J.current = void 0), ee.current?.requestVersion === ae && (et(ee.current.iterator), ee.current = void 0);
|
|
993
993
|
}
|
|
994
|
-
},
|
|
994
|
+
}, ge = (c) => Be(c), yt = (c) => Be(c.userMessage.content, { regenerateFrom: c }), kt = async (c, _) => {
|
|
995
995
|
try {
|
|
996
|
-
await
|
|
997
|
-
} catch (
|
|
996
|
+
await Gt(_), U({ messageId: c, message: "已复制", status: "success" });
|
|
997
|
+
} catch (v) {
|
|
998
998
|
console.error("[make-ai-assistant] copy answer failed", {
|
|
999
|
-
errorType:
|
|
1000
|
-
}),
|
|
999
|
+
errorType: v instanceof Error ? v.name : typeof v
|
|
1000
|
+
}), U({ messageId: c, message: "复制失败", status: "error" });
|
|
1001
1001
|
}
|
|
1002
|
-
},
|
|
1003
|
-
c.preventDefault(),
|
|
1004
|
-
},
|
|
1005
|
-
c.key === "Enter" && !c.shiftKey && !c.nativeEvent.isComposing && (c.preventDefault(),
|
|
1006
|
-
},
|
|
1007
|
-
|
|
1008
|
-
(c) =>
|
|
1002
|
+
}, bt = (c) => {
|
|
1003
|
+
c.preventDefault(), ge(D);
|
|
1004
|
+
}, wt = (c) => {
|
|
1005
|
+
c.key === "Enter" && !c.shiftKey && !c.nativeEvent.isComposing && (c.preventDefault(), ge(D));
|
|
1006
|
+
}, It = () => {
|
|
1007
|
+
fe("stop") && x(
|
|
1008
|
+
(c) => Ie(c, { type: "run.cancelled" })
|
|
1009
1009
|
);
|
|
1010
|
-
},
|
|
1011
|
-
|
|
1012
|
-
},
|
|
1013
|
-
|
|
1010
|
+
}, At = () => {
|
|
1011
|
+
fe("new-conversation"), B(""), Z(void 0), U(void 0), V(!1), K.current = !0, x(we()), l?.();
|
|
1012
|
+
}, ze = g.features?.remoteCancellation === !1 ? "停止接收" : "停止生成", Nt = dt(p), Mt = mt(p), _e = pa(p), Tt = typeof g.regenerate == "function" && g.features?.regeneration !== !1, qe = () => {
|
|
1013
|
+
_e && ge(_e.content);
|
|
1014
1014
|
};
|
|
1015
1015
|
return /* @__PURE__ */ r(
|
|
1016
1016
|
"section",
|
|
1017
1017
|
{
|
|
1018
1018
|
className: "make-ai-assistant make-ai-assistant__panel",
|
|
1019
|
-
ref:
|
|
1019
|
+
ref: xe,
|
|
1020
|
+
style: Q,
|
|
1020
1021
|
children: [
|
|
1021
1022
|
/* @__PURE__ */ r("header", { className: "make-ai-assistant__header", children: [
|
|
1022
|
-
/* @__PURE__ */ a(
|
|
1023
|
-
/* @__PURE__ */ r("div", { children: [
|
|
1024
|
-
/* @__PURE__ */
|
|
1025
|
-
|
|
1023
|
+
/* @__PURE__ */ a(Me, {}),
|
|
1024
|
+
/* @__PURE__ */ r("div", { className: "make-ai-assistant__header-content", children: [
|
|
1025
|
+
/* @__PURE__ */ r("div", { className: "make-ai-assistant__header-title-row", children: [
|
|
1026
|
+
/* @__PURE__ */ a("h2", { className: "make-ai-assistant__header-title", title: m, children: m }),
|
|
1027
|
+
/* @__PURE__ */ a("span", { className: "make-ai-assistant__read-only-tag", children: "只读" })
|
|
1028
|
+
] }),
|
|
1029
|
+
/* @__PURE__ */ r("div", { className: "make-ai-assistant__header-context", children: [
|
|
1030
|
+
/* @__PURE__ */ a("p", { title: H, children: H }),
|
|
1031
|
+
N ? /* @__PURE__ */ a(
|
|
1032
|
+
"span",
|
|
1033
|
+
{
|
|
1034
|
+
"aria-label": `使用提示:${N}`,
|
|
1035
|
+
className: "make-ai-assistant__header-context-help",
|
|
1036
|
+
"data-tooltip": N,
|
|
1037
|
+
role: "note",
|
|
1038
|
+
tabIndex: 0,
|
|
1039
|
+
children: /* @__PURE__ */ a(ta, {})
|
|
1040
|
+
}
|
|
1041
|
+
) : null
|
|
1042
|
+
] })
|
|
1026
1043
|
] }),
|
|
1027
1044
|
/* @__PURE__ */ r("div", { className: "make-ai-assistant__header-actions", children: [
|
|
1028
|
-
|
|
1045
|
+
g.features?.newConversation !== !1 ? /* @__PURE__ */ a(
|
|
1029
1046
|
"button",
|
|
1030
1047
|
{
|
|
1031
1048
|
"aria-label": "新建对话",
|
|
1032
1049
|
className: "make-ai-assistant__icon-button",
|
|
1033
1050
|
type: "button",
|
|
1034
|
-
onClick:
|
|
1035
|
-
children: /* @__PURE__ */ a(
|
|
1051
|
+
onClick: At,
|
|
1052
|
+
children: /* @__PURE__ */ a(sa, {})
|
|
1036
1053
|
}
|
|
1037
1054
|
) : null,
|
|
1038
1055
|
o ? /* @__PURE__ */ a(
|
|
1039
1056
|
"button",
|
|
1040
1057
|
{
|
|
1041
|
-
"aria-label": `关闭 ${
|
|
1058
|
+
"aria-label": `关闭 ${m}`,
|
|
1042
1059
|
className: "make-ai-assistant__icon-button",
|
|
1043
1060
|
type: "button",
|
|
1044
1061
|
onClick: o,
|
|
1045
|
-
children: /* @__PURE__ */ a(
|
|
1062
|
+
children: /* @__PURE__ */ a(Qt, {})
|
|
1046
1063
|
}
|
|
1047
1064
|
) : null
|
|
1048
1065
|
] })
|
|
1049
1066
|
] }),
|
|
1050
|
-
h ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__notice-region", children: /* @__PURE__ */ r("div", { className: "make-ai-assistant__privacy-note", role: "note", children: [
|
|
1051
|
-
/* @__PURE__ */ a("span", { className: "make-ai-assistant__privacy-icon", "aria-hidden": "true", children: /* @__PURE__ */ a(Zt, {}) }),
|
|
1052
|
-
/* @__PURE__ */ a("span", { children: h })
|
|
1053
|
-
] }) }) : null,
|
|
1054
1067
|
/* @__PURE__ */ r(
|
|
1055
1068
|
"div",
|
|
1056
1069
|
{
|
|
1057
|
-
className:
|
|
1070
|
+
className: "make-ai-assistant__body",
|
|
1058
1071
|
"aria-live": "polite",
|
|
1059
1072
|
"aria-relevant": "additions text",
|
|
1060
|
-
ref:
|
|
1073
|
+
ref: le,
|
|
1061
1074
|
role: "log",
|
|
1062
|
-
onScroll:
|
|
1075
|
+
onScroll: _t,
|
|
1063
1076
|
children: [
|
|
1064
|
-
|
|
1065
|
-
/* @__PURE__ */ a(
|
|
1077
|
+
M === "loading" ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__empty", role: "status", children: [
|
|
1078
|
+
/* @__PURE__ */ a(Me, {}),
|
|
1066
1079
|
/* @__PURE__ */ a("h3", { children: "正在恢复对话" }),
|
|
1067
1080
|
/* @__PURE__ */ a("p", { children: "正在读取当前 App 的历史消息…" })
|
|
1068
|
-
] }) :
|
|
1069
|
-
|
|
1081
|
+
] }) : M === "error" ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__empty", children: /* @__PURE__ */ a(
|
|
1082
|
+
_a,
|
|
1070
1083
|
{
|
|
1071
|
-
error:
|
|
1072
|
-
onRetry: () =>
|
|
1084
|
+
error: ft,
|
|
1085
|
+
onRetry: () => k((c) => c + 1)
|
|
1073
1086
|
}
|
|
1074
|
-
) }) :
|
|
1075
|
-
/* @__PURE__ */ a(
|
|
1087
|
+
) }) : p.messages.length === 0 ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__empty", children: [
|
|
1088
|
+
/* @__PURE__ */ a(Me, {}),
|
|
1076
1089
|
/* @__PURE__ */ a("h3", { children: "有什么可以帮你?" }),
|
|
1077
1090
|
/* @__PURE__ */ a("p", { children: "我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。" })
|
|
1078
|
-
] }) :
|
|
1079
|
-
|
|
1091
|
+
] }) : ya(
|
|
1092
|
+
p,
|
|
1080
1093
|
s,
|
|
1081
|
-
|
|
1094
|
+
Pe,
|
|
1082
1095
|
i,
|
|
1083
1096
|
n,
|
|
1084
1097
|
e,
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
(c,
|
|
1091
|
-
|
|
1098
|
+
_e ? qe : void 0,
|
|
1099
|
+
W,
|
|
1100
|
+
A,
|
|
1101
|
+
ce,
|
|
1102
|
+
Tt,
|
|
1103
|
+
(c, _) => {
|
|
1104
|
+
kt(c, _);
|
|
1092
1105
|
},
|
|
1093
1106
|
(c) => {
|
|
1094
|
-
|
|
1107
|
+
yt(c);
|
|
1095
1108
|
}
|
|
1096
1109
|
),
|
|
1097
|
-
|
|
1098
|
-
|
|
1110
|
+
p.progress && !Nt ? /* @__PURE__ */ a(
|
|
1111
|
+
at,
|
|
1099
1112
|
{
|
|
1100
1113
|
assistantName: e,
|
|
1101
|
-
progress:
|
|
1114
|
+
progress: p.progress
|
|
1102
1115
|
}
|
|
1103
1116
|
) : null,
|
|
1104
|
-
|
|
1105
|
-
|
|
1117
|
+
p.error && !Mt ? /* @__PURE__ */ a(
|
|
1118
|
+
at,
|
|
1106
1119
|
{
|
|
1107
1120
|
assistantName: e,
|
|
1108
|
-
error:
|
|
1109
|
-
onRetry:
|
|
1121
|
+
error: p.error,
|
|
1122
|
+
onRetry: _e ? qe : void 0
|
|
1110
1123
|
}
|
|
1111
1124
|
) : null
|
|
1112
1125
|
]
|
|
1113
1126
|
}
|
|
1114
1127
|
),
|
|
1115
|
-
|
|
1128
|
+
gt ? /* @__PURE__ */ a(
|
|
1116
1129
|
"button",
|
|
1117
1130
|
{
|
|
1118
1131
|
"aria-label": "回到最新消息",
|
|
1119
1132
|
className: "make-ai-assistant__back-to-latest",
|
|
1120
1133
|
type: "button",
|
|
1121
|
-
onClick:
|
|
1122
|
-
children: /* @__PURE__ */ a(
|
|
1134
|
+
onClick: vt,
|
|
1135
|
+
children: /* @__PURE__ */ a(aa, {})
|
|
1123
1136
|
}
|
|
1124
1137
|
) : null,
|
|
1125
1138
|
/* @__PURE__ */ r("footer", { className: "make-ai-assistant__composer-region", children: [
|
|
1126
|
-
|
|
1139
|
+
M === "ready" && We.length > 0 && p.messages.length === 0 ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: We.map((c, _) => /* @__PURE__ */ a(
|
|
1127
1140
|
"button",
|
|
1128
1141
|
{
|
|
1129
1142
|
type: "button",
|
|
1130
1143
|
onClick: () => {
|
|
1131
|
-
|
|
1144
|
+
ge(c);
|
|
1132
1145
|
},
|
|
1133
1146
|
children: c
|
|
1134
1147
|
},
|
|
1135
|
-
`${
|
|
1148
|
+
`${_}-${c}`
|
|
1136
1149
|
)) }) : null,
|
|
1137
|
-
/* @__PURE__ */ r("form", { className: "make-ai-assistant__composer", onSubmit:
|
|
1150
|
+
/* @__PURE__ */ r("form", { className: "make-ai-assistant__composer", onSubmit: bt, children: [
|
|
1138
1151
|
/* @__PURE__ */ a(
|
|
1139
1152
|
"textarea",
|
|
1140
1153
|
{
|
|
1141
1154
|
"aria-label": `向 ${e} 提问`,
|
|
1142
|
-
"aria-describedby":
|
|
1143
|
-
"aria-invalid":
|
|
1155
|
+
"aria-describedby": j ? "make-ai-composer-error" : void 0,
|
|
1156
|
+
"aria-invalid": j ? !0 : void 0,
|
|
1144
1157
|
autoFocus: !0,
|
|
1145
|
-
disabled:
|
|
1158
|
+
disabled: M !== "ready" || p.status === "streaming",
|
|
1146
1159
|
placeholder: `询问当前 ${s.app.name ?? "App"} 中的数据…`,
|
|
1147
|
-
ref:
|
|
1160
|
+
ref: Se,
|
|
1148
1161
|
rows: 2,
|
|
1149
|
-
value:
|
|
1162
|
+
value: D,
|
|
1150
1163
|
onChange: (c) => {
|
|
1151
|
-
|
|
1164
|
+
B(c.currentTarget.value), Z(void 0);
|
|
1152
1165
|
},
|
|
1153
|
-
onKeyDown:
|
|
1166
|
+
onKeyDown: wt
|
|
1154
1167
|
}
|
|
1155
1168
|
),
|
|
1156
|
-
|
|
1169
|
+
p.status === "streaming" ? /* @__PURE__ */ a(
|
|
1157
1170
|
"button",
|
|
1158
1171
|
{
|
|
1159
|
-
"aria-label":
|
|
1172
|
+
"aria-label": ze,
|
|
1160
1173
|
className: "make-ai-assistant__send make-ai-assistant__send--stop",
|
|
1161
|
-
"data-tooltip":
|
|
1162
|
-
ref:
|
|
1174
|
+
"data-tooltip": ze,
|
|
1175
|
+
ref: Le,
|
|
1163
1176
|
type: "button",
|
|
1164
|
-
onClick:
|
|
1177
|
+
onClick: It,
|
|
1165
1178
|
children: /* @__PURE__ */ a("span", { "aria-hidden": "true" })
|
|
1166
1179
|
}
|
|
1167
1180
|
) : /* @__PURE__ */ a(
|
|
@@ -1169,23 +1182,23 @@ function it({
|
|
|
1169
1182
|
{
|
|
1170
1183
|
"aria-label": "发送",
|
|
1171
1184
|
className: "make-ai-assistant__send",
|
|
1172
|
-
disabled:
|
|
1185
|
+
disabled: M !== "ready" || !D.trim(),
|
|
1173
1186
|
type: "submit",
|
|
1174
|
-
children: /* @__PURE__ */ a(
|
|
1187
|
+
children: /* @__PURE__ */ a(na, {})
|
|
1175
1188
|
}
|
|
1176
1189
|
)
|
|
1177
1190
|
] }),
|
|
1178
|
-
|
|
1191
|
+
j ? /* @__PURE__ */ a("p", { id: "make-ai-composer-error", role: "alert", children: j }) : null,
|
|
1179
1192
|
/* @__PURE__ */ a("p", { children: "AI 生成的结果可能存在偏差,重要数据请核对明细。" })
|
|
1180
1193
|
] })
|
|
1181
1194
|
]
|
|
1182
1195
|
}
|
|
1183
1196
|
);
|
|
1184
1197
|
}
|
|
1185
|
-
function
|
|
1186
|
-
return /* @__PURE__ */ a(
|
|
1198
|
+
function Aa(e) {
|
|
1199
|
+
return /* @__PURE__ */ a(pt, { ...e, visible: !0 });
|
|
1187
1200
|
}
|
|
1188
|
-
function
|
|
1201
|
+
function Na({
|
|
1189
1202
|
defaultOpen: e = !1,
|
|
1190
1203
|
hideLauncher: t = !1,
|
|
1191
1204
|
launcher: s,
|
|
@@ -1193,74 +1206,132 @@ function _a({
|
|
|
1193
1206
|
open: n,
|
|
1194
1207
|
...o
|
|
1195
1208
|
}) {
|
|
1196
|
-
const l =
|
|
1209
|
+
const l = it(o.brandName, o.title), [u, b] = E(e), [f, P] = E(
|
|
1197
1210
|
() => e || n === !0
|
|
1198
|
-
),
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1211
|
+
), C = $(null), L = $(null), g = $(void 0), [A, W] = E(), [R, m] = E(jt), [N, H] = E(!1), w = n ?? u, Q = typeof window > "u" ? void 0 : window.innerWidth, D = A === void 0 ? void 0 : { "--make-ai-internal-drawer-width": `${A}px` }, B = () => {
|
|
1212
|
+
if (A !== void 0) return A;
|
|
1213
|
+
const h = L.current?.getBoundingClientRect().width;
|
|
1214
|
+
return h && Number.isFinite(h) && h > 0 ? h : R;
|
|
1215
|
+
}, p = () => typeof window > "u" ? Number.POSITIVE_INFINITY : window.innerWidth, x = (h) => {
|
|
1216
|
+
if (h.button !== 0) return;
|
|
1217
|
+
const k = B(), M = A === void 0 ? k : R;
|
|
1218
|
+
m(M), g.current = {
|
|
1219
|
+
minimumWidth: M,
|
|
1220
|
+
pointerId: h.pointerId,
|
|
1221
|
+
startWidth: k,
|
|
1222
|
+
startX: h.clientX
|
|
1223
|
+
}, H(!0), typeof h.currentTarget.setPointerCapture == "function" && h.currentTarget.setPointerCapture(h.pointerId), h.preventDefault();
|
|
1224
|
+
}, z = (h) => {
|
|
1225
|
+
const k = g.current;
|
|
1226
|
+
if (!k || k.pointerId !== h.pointerId) return;
|
|
1227
|
+
const M = Je(
|
|
1228
|
+
k.startWidth + k.startX - h.clientX,
|
|
1229
|
+
k.minimumWidth,
|
|
1230
|
+
p()
|
|
1231
|
+
);
|
|
1232
|
+
W(M);
|
|
1233
|
+
}, j = (h) => {
|
|
1234
|
+
const k = g.current;
|
|
1235
|
+
!k || k.pointerId !== h.pointerId || (g.current = void 0, H(!1));
|
|
1236
|
+
}, Z = (h) => {
|
|
1237
|
+
const k = h.key === "ArrowLeft" ? Qe : h.key === "ArrowRight" ? -Qe : void 0;
|
|
1238
|
+
if (k === void 0) return;
|
|
1239
|
+
h.preventDefault();
|
|
1240
|
+
const M = B(), X = A === void 0 ? M : R;
|
|
1241
|
+
m(X), W(Je(
|
|
1242
|
+
M + k,
|
|
1243
|
+
X,
|
|
1244
|
+
p()
|
|
1245
|
+
));
|
|
1246
|
+
}, ce = (h) => {
|
|
1247
|
+
n === void 0 && b(h), i?.(h), h || requestAnimationFrame(() => C.current?.focus());
|
|
1248
|
+
}, U = () => ce(!w);
|
|
1249
|
+
return re(() => {
|
|
1250
|
+
w && P(!0);
|
|
1251
|
+
}, [w]), re(() => {
|
|
1252
|
+
if (!w) return;
|
|
1253
|
+
const h = (k) => {
|
|
1254
|
+
k.key === "Escape" && (ce(!1), requestAnimationFrame(() => C.current?.focus()));
|
|
1207
1255
|
};
|
|
1208
|
-
return document.addEventListener("keydown",
|
|
1209
|
-
}, [i,
|
|
1210
|
-
!t && (!
|
|
1256
|
+
return document.addEventListener("keydown", h), () => document.removeEventListener("keydown", h);
|
|
1257
|
+
}, [i, w]), /* @__PURE__ */ r("div", { className: "make-ai-assistant", "data-open": w || void 0, children: [
|
|
1258
|
+
!t && (!w || s) ? s ? s({ open: w, toggle: U }) : /* @__PURE__ */ r(
|
|
1211
1259
|
"button",
|
|
1212
1260
|
{
|
|
1213
|
-
"aria-label":
|
|
1214
|
-
"aria-expanded":
|
|
1261
|
+
"aria-label": w ? `关闭 ${l}` : `打开 ${l}`,
|
|
1262
|
+
"aria-expanded": w,
|
|
1215
1263
|
className: "make-ai-assistant__launcher",
|
|
1216
|
-
ref:
|
|
1264
|
+
ref: C,
|
|
1217
1265
|
type: "button",
|
|
1218
|
-
onClick:
|
|
1266
|
+
onClick: U,
|
|
1219
1267
|
children: [
|
|
1220
1268
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__launcher-orbit", "aria-hidden": "true" }),
|
|
1221
|
-
/* @__PURE__ */ a(
|
|
1269
|
+
/* @__PURE__ */ a(ot, {})
|
|
1222
1270
|
]
|
|
1223
1271
|
}
|
|
1224
1272
|
) : null,
|
|
1225
|
-
|
|
1273
|
+
f ? /* @__PURE__ */ r(
|
|
1226
1274
|
"aside",
|
|
1227
1275
|
{
|
|
1228
1276
|
"aria-label": l,
|
|
1229
1277
|
"aria-modal": "false",
|
|
1230
1278
|
className: "make-ai-assistant__drawer",
|
|
1231
|
-
|
|
1279
|
+
"data-resizing": N || void 0,
|
|
1280
|
+
hidden: !w,
|
|
1281
|
+
ref: L,
|
|
1232
1282
|
role: "dialog",
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1283
|
+
style: D,
|
|
1284
|
+
children: [
|
|
1285
|
+
/* @__PURE__ */ a(
|
|
1286
|
+
"div",
|
|
1287
|
+
{
|
|
1288
|
+
"aria-label": "调整对话框宽度",
|
|
1289
|
+
"aria-orientation": "vertical",
|
|
1290
|
+
"aria-valuemax": Q,
|
|
1291
|
+
"aria-valuemin": R,
|
|
1292
|
+
"aria-valuenow": A ?? R,
|
|
1293
|
+
className: "make-ai-assistant__drawer-resize-handle",
|
|
1294
|
+
role: "separator",
|
|
1295
|
+
tabIndex: 0,
|
|
1296
|
+
onKeyDown: Z,
|
|
1297
|
+
onPointerCancel: j,
|
|
1298
|
+
onPointerDown: x,
|
|
1299
|
+
onPointerMove: z,
|
|
1300
|
+
onPointerUp: j
|
|
1301
|
+
}
|
|
1302
|
+
),
|
|
1303
|
+
/* @__PURE__ */ a(
|
|
1304
|
+
pt,
|
|
1305
|
+
{
|
|
1306
|
+
...o,
|
|
1307
|
+
onClose: () => ce(!1),
|
|
1308
|
+
visible: w
|
|
1309
|
+
}
|
|
1310
|
+
)
|
|
1311
|
+
]
|
|
1241
1312
|
}
|
|
1242
1313
|
) : null
|
|
1243
1314
|
] });
|
|
1244
1315
|
}
|
|
1245
1316
|
export {
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1317
|
+
xt as ArtifactRenderer,
|
|
1318
|
+
Aa as AssistantPanel,
|
|
1319
|
+
Ea as MAKE_AI_ARTIFACT_KINDS,
|
|
1320
|
+
Ca as MAKE_AI_ARTIFACT_LIMITS,
|
|
1321
|
+
xa as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
|
|
1322
|
+
S as MAKE_AI_CONVERSATION_LIMITS,
|
|
1323
|
+
Na as MakeAiAssistant,
|
|
1324
|
+
Et as appendUserMessage,
|
|
1325
|
+
Rt as createArtifactCapabilities,
|
|
1326
|
+
st as createArtifactTemplateRegistry,
|
|
1327
|
+
we as createAssistantConversationState,
|
|
1328
|
+
Ht as createPlatformArtifactRegistry,
|
|
1329
|
+
$a as extendArtifactTemplateRegistry,
|
|
1330
|
+
G as formatArtifactValue,
|
|
1331
|
+
Sa as parseArtifact,
|
|
1332
|
+
Ct as parseAssistantEvent,
|
|
1333
|
+
qt as platformArtifactTemplates,
|
|
1334
|
+
Ie as reduceAssistantEvent,
|
|
1335
|
+
$t as resolveArtifactTemplate,
|
|
1336
|
+
La as validateArtifact
|
|
1266
1337
|
};
|