@qfei-design/make-ai-assistant 0.2.11 → 0.2.12
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 +2 -2
- package/README.md +5 -6
- package/dist/make-app.cjs +1 -1
- package/dist/make-app.d.ts +1 -1
- package/dist/make-app.mjs +418 -416
- package/dist/react.cjs +4 -4
- package/dist/react.mjs +1250 -1402
- package/dist/styles.css +10 -124
- package/docs/make-app-integration.md +4 -4
- package/examples/make-app/README.md +1 -1
- package/package.json +1 -1
package/dist/react.mjs
CHANGED
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
import { jsxs as c, jsx as a, Fragment as
|
|
2
|
-
import { isValidElement as
|
|
3
|
-
import { resolveArtifactTemplate as
|
|
4
|
-
import { extendArtifactTemplateRegistry as
|
|
5
|
-
import { n as
|
|
6
|
-
import { q as
|
|
7
|
-
const
|
|
8
|
-
const t =
|
|
1
|
+
import { jsxs as c, jsx as a, Fragment as Ce } from "react/jsx-runtime";
|
|
2
|
+
import { isValidElement as ea, cloneElement as ta, useRef as N, useState as E, useEffect as oe, useLayoutEffect as Ft, useId as aa, useMemo as Ct } from "react";
|
|
3
|
+
import { resolveArtifactTemplate as sa, createArtifactTemplateRegistry as Pt, createArtifactCapabilities as na } from "./index.mjs";
|
|
4
|
+
import { extendArtifactTemplateRegistry as vs } from "./index.mjs";
|
|
5
|
+
import { n as pe, k as ut, r as Ne, l as Bt, o as zt, c as it, M as ue } from "./conversation-CZfbgCXd.js";
|
|
6
|
+
import { q as ys, s as bs, t as ks, u as _s, v as ws } from "./conversation-CZfbgCXd.js";
|
|
7
|
+
const Wt = (e) => e?.trim() || void 0, _e = (e, t) => Wt(e) ?? t, ft = (e) => {
|
|
8
|
+
const t = Wt(e?.primary);
|
|
9
9
|
if (t)
|
|
10
10
|
return {
|
|
11
11
|
"--make-ai-theme-primary": t,
|
|
12
|
-
"--make-ai-theme-primary-hover":
|
|
12
|
+
"--make-ai-theme-primary-hover": _e(
|
|
13
13
|
e?.primaryHover,
|
|
14
14
|
"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"
|
|
15
15
|
),
|
|
16
|
-
"--make-ai-theme-on-primary":
|
|
16
|
+
"--make-ai-theme-on-primary": _e(
|
|
17
17
|
e?.onPrimary,
|
|
18
18
|
"#fcfcff"
|
|
19
19
|
),
|
|
20
|
-
"--make-ai-theme-bg":
|
|
20
|
+
"--make-ai-theme-bg": _e(
|
|
21
21
|
e?.background,
|
|
22
22
|
"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"
|
|
23
23
|
),
|
|
24
|
-
"--make-ai-theme-surface":
|
|
24
|
+
"--make-ai-theme-surface": _e(
|
|
25
25
|
e?.surface,
|
|
26
26
|
"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"
|
|
27
27
|
),
|
|
28
|
-
"--make-ai-theme-surface-strong":
|
|
28
|
+
"--make-ai-theme-surface-strong": _e(
|
|
29
29
|
e?.surfaceStrong,
|
|
30
30
|
"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"
|
|
31
31
|
),
|
|
32
|
-
"--make-ai-theme-text":
|
|
32
|
+
"--make-ai-theme-text": _e(
|
|
33
33
|
e?.text,
|
|
34
34
|
"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"
|
|
35
35
|
),
|
|
36
|
-
"--make-ai-theme-text-secondary":
|
|
36
|
+
"--make-ai-theme-text-secondary": _e(
|
|
37
37
|
e?.textSecondary,
|
|
38
38
|
"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"
|
|
39
39
|
),
|
|
40
|
-
"--make-ai-theme-border":
|
|
40
|
+
"--make-ai-theme-border": _e(
|
|
41
41
|
e?.border,
|
|
42
42
|
"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"
|
|
43
43
|
),
|
|
44
|
-
"--make-ai-theme-overlay":
|
|
44
|
+
"--make-ai-theme-overlay": _e(
|
|
45
45
|
e?.overlay,
|
|
46
46
|
"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"
|
|
47
47
|
),
|
|
48
|
-
"--make-ai-theme-on-overlay":
|
|
48
|
+
"--make-ai-theme-on-overlay": _e(
|
|
49
49
|
e?.onOverlay,
|
|
50
50
|
"#fcfcff"
|
|
51
51
|
)
|
|
52
52
|
};
|
|
53
|
-
},
|
|
53
|
+
}, Tt = (e, t) => !t || !ea(e) || typeof e.type != "string" ? e : ta(e, {
|
|
54
54
|
style: { ...e.props.style, ...t }
|
|
55
55
|
});
|
|
56
|
-
function
|
|
56
|
+
function ra({
|
|
57
57
|
artifact: e,
|
|
58
58
|
context: t,
|
|
59
|
-
fallback:
|
|
59
|
+
fallback: s,
|
|
60
60
|
onAction: i,
|
|
61
|
-
onActionError:
|
|
61
|
+
onActionError: r,
|
|
62
62
|
registry: o,
|
|
63
63
|
theme: d
|
|
64
64
|
}) {
|
|
65
|
-
const
|
|
66
|
-
if (!
|
|
67
|
-
const
|
|
65
|
+
const p = ft(d), v = sa(o, e, t);
|
|
66
|
+
if (!v) {
|
|
67
|
+
const F = s ? s(e) : /* @__PURE__ */ c("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
|
|
68
68
|
/* @__PURE__ */ a("strong", { children: "暂不支持展示此结果" }),
|
|
69
69
|
/* @__PURE__ */ c("span", { children: [
|
|
70
70
|
"结果类型:",
|
|
71
71
|
e.kind
|
|
72
72
|
] })
|
|
73
73
|
] });
|
|
74
|
-
return
|
|
74
|
+
return Tt(F, p);
|
|
75
75
|
}
|
|
76
|
-
const
|
|
76
|
+
const h = {
|
|
77
77
|
context: t,
|
|
78
78
|
onAction: i,
|
|
79
|
-
onActionError:
|
|
79
|
+
onActionError: r,
|
|
80
80
|
theme: d,
|
|
81
|
-
themeStyle:
|
|
82
|
-
},
|
|
83
|
-
return
|
|
81
|
+
themeStyle: p
|
|
82
|
+
}, _ = v.template.render(e, t, h);
|
|
83
|
+
return Tt(_, p);
|
|
84
84
|
}
|
|
85
|
-
const
|
|
85
|
+
const Se = (e, t, s) => {
|
|
86
86
|
if (e == null || e === "") return "—";
|
|
87
87
|
if (typeof e == "boolean") return e ? "是" : "否";
|
|
88
88
|
if (typeof e != "number") return `${e}${t?.unit ?? ""}`;
|
|
89
|
-
const i = t?.precision,
|
|
89
|
+
const i = t?.precision, r = {
|
|
90
90
|
maximumFractionDigits: i ?? 2,
|
|
91
91
|
minimumFractionDigits: i
|
|
92
92
|
};
|
|
93
|
-
t?.style === "currency" && t.currency ? (
|
|
93
|
+
t?.style === "currency" && t.currency ? (r.style = "currency", r.currency = t.currency) : t?.style === "percent" && (r.style = "percent");
|
|
94
94
|
try {
|
|
95
95
|
const o = t?.style === "percent" ? e / 100 : e;
|
|
96
|
-
return `${new Intl.NumberFormat(
|
|
96
|
+
return `${new Intl.NumberFormat(s, r).format(o)}${t?.unit ?? ""}`;
|
|
97
97
|
} catch {
|
|
98
98
|
return `${e}${t?.unit ?? ""}`;
|
|
99
99
|
}
|
|
100
|
-
},
|
|
101
|
-
let t = Number.POSITIVE_INFINITY,
|
|
100
|
+
}, Ut = (e) => {
|
|
101
|
+
let t = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY;
|
|
102
102
|
for (const i of e)
|
|
103
|
-
t = Math.min(t, i),
|
|
104
|
-
return Number.isFinite(t) && Number.isFinite(
|
|
105
|
-
},
|
|
106
|
-
if (!
|
|
103
|
+
t = Math.min(t, i), s = Math.max(s, i);
|
|
104
|
+
return Number.isFinite(t) && Number.isFinite(s) ? { min: t, max: s } : { min: 0, max: 0 };
|
|
105
|
+
}, Ot = (e, t, s) => {
|
|
106
|
+
if (!s.onAction) return;
|
|
107
107
|
const i = (o) => {
|
|
108
108
|
console.error("[make-ai-assistant] host action error handler failed", {
|
|
109
109
|
actionId: e.id,
|
|
@@ -111,11 +111,11 @@ const Fe = (e, t, n) => {
|
|
|
111
111
|
errorType: o instanceof Error ? o.name : typeof o,
|
|
112
112
|
intent: e.intent
|
|
113
113
|
});
|
|
114
|
-
},
|
|
115
|
-
if (
|
|
114
|
+
}, r = (o) => {
|
|
115
|
+
if (s.onActionError) {
|
|
116
116
|
try {
|
|
117
117
|
Promise.resolve(
|
|
118
|
-
|
|
118
|
+
s.onActionError(o, e, t)
|
|
119
119
|
).catch(i);
|
|
120
120
|
} catch (d) {
|
|
121
121
|
i(d);
|
|
@@ -130,27 +130,27 @@ const Fe = (e, t, n) => {
|
|
|
130
130
|
});
|
|
131
131
|
};
|
|
132
132
|
try {
|
|
133
|
-
Promise.resolve(
|
|
133
|
+
Promise.resolve(s.onAction(e, t)).catch(r);
|
|
134
134
|
} catch (o) {
|
|
135
|
-
|
|
135
|
+
r(o);
|
|
136
136
|
}
|
|
137
|
-
},
|
|
137
|
+
}, Pe = (e, t) => e.actions?.length && t.onAction ? /* @__PURE__ */ a("div", { className: "make-ai-artifact__actions", children: e.actions.map((s) => /* @__PURE__ */ c(
|
|
138
138
|
"button",
|
|
139
139
|
{
|
|
140
|
-
className: `make-ai-artifact__action make-ai-artifact__action--${
|
|
140
|
+
className: `make-ai-artifact__action make-ai-artifact__action--${s.appearance ?? "link"}`,
|
|
141
141
|
type: "button",
|
|
142
|
-
onClick: () =>
|
|
142
|
+
onClick: () => Ot(s, { artifact: e, context: t.context }, t),
|
|
143
143
|
children: [
|
|
144
|
-
|
|
144
|
+
s.label,
|
|
145
145
|
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: "→" })
|
|
146
146
|
]
|
|
147
147
|
},
|
|
148
|
-
|
|
149
|
-
)) }) : null,
|
|
148
|
+
s.id
|
|
149
|
+
)) }) : null, Be = (e, t, s = "", i) => /* @__PURE__ */ c(
|
|
150
150
|
"section",
|
|
151
151
|
{
|
|
152
152
|
"aria-label": e.title ?? `${e.kind} result`,
|
|
153
|
-
className: `make-ai-artifact ${
|
|
153
|
+
className: `make-ai-artifact ${s}`.trim(),
|
|
154
154
|
"data-artifact-density": e.presentation?.density,
|
|
155
155
|
"data-artifact-kind": e.kind,
|
|
156
156
|
style: i,
|
|
@@ -160,137 +160,137 @@ const Fe = (e, t, n) => {
|
|
|
160
160
|
t
|
|
161
161
|
]
|
|
162
162
|
}
|
|
163
|
-
),
|
|
163
|
+
), ia = ({
|
|
164
164
|
artifact: e,
|
|
165
165
|
renderContext: t
|
|
166
166
|
}) => {
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
const s = e.data.delta, i = s ? Se(
|
|
168
|
+
s.value,
|
|
169
|
+
s.format === "percent" ? { style: "percent" } : void 0,
|
|
170
170
|
t.context.locale
|
|
171
171
|
) : void 0;
|
|
172
|
-
return
|
|
172
|
+
return Be(
|
|
173
173
|
e,
|
|
174
|
-
/* @__PURE__ */ c(
|
|
175
|
-
/* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children:
|
|
174
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
175
|
+
/* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children: Se(
|
|
176
176
|
e.data.value,
|
|
177
177
|
e.data.format,
|
|
178
178
|
t.context.locale
|
|
179
179
|
) }),
|
|
180
|
-
|
|
180
|
+
s ? /* @__PURE__ */ c(
|
|
181
181
|
"div",
|
|
182
182
|
{
|
|
183
|
-
className: `make-ai-artifact__delta make-ai-artifact__delta--${
|
|
183
|
+
className: `make-ai-artifact__delta make-ai-artifact__delta--${s.direction ?? "flat"}`,
|
|
184
184
|
children: [
|
|
185
|
-
/* @__PURE__ */ a("span", { "aria-hidden": "true", children:
|
|
185
|
+
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: s.direction === "up" ? "↗" : s.direction === "down" ? "↘" : "→" }),
|
|
186
186
|
/* @__PURE__ */ a("span", { children: i }),
|
|
187
|
-
|
|
187
|
+
s.label ? /* @__PURE__ */ a("span", { children: s.label }) : null
|
|
188
188
|
]
|
|
189
189
|
}
|
|
190
190
|
) : null,
|
|
191
191
|
e.data.context ? /* @__PURE__ */ a("p", { className: "make-ai-artifact__context", children: e.data.context }) : null,
|
|
192
|
-
|
|
192
|
+
Pe(e, t)
|
|
193
193
|
] }),
|
|
194
194
|
"make-ai-artifact--metric",
|
|
195
195
|
t.themeStyle
|
|
196
196
|
);
|
|
197
|
-
},
|
|
197
|
+
}, oa = ({
|
|
198
198
|
artifact: e,
|
|
199
199
|
renderContext: t
|
|
200
|
-
}) =>
|
|
200
|
+
}) => Be(
|
|
201
201
|
e,
|
|
202
|
-
/* @__PURE__ */ c(
|
|
203
|
-
/* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((
|
|
204
|
-
/* @__PURE__ */ a("span", { children:
|
|
205
|
-
/* @__PURE__ */ a("strong", { children:
|
|
206
|
-
|
|
207
|
-
] },
|
|
208
|
-
|
|
202
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
203
|
+
/* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((s) => /* @__PURE__ */ c("div", { className: "make-ai-artifact__comparison-item", children: [
|
|
204
|
+
/* @__PURE__ */ a("span", { children: s.label }),
|
|
205
|
+
/* @__PURE__ */ a("strong", { children: Se(s.value, s.format, t.context.locale) }),
|
|
206
|
+
s.hint ? /* @__PURE__ */ a("small", { children: s.hint }) : null
|
|
207
|
+
] }, s.id)) }),
|
|
208
|
+
Pe(e, t)
|
|
209
209
|
] }),
|
|
210
210
|
"make-ai-artifact--comparison",
|
|
211
211
|
t.themeStyle
|
|
212
|
-
),
|
|
212
|
+
), ca = ({
|
|
213
213
|
artifact: e,
|
|
214
214
|
renderContext: t
|
|
215
215
|
}) => {
|
|
216
|
-
const
|
|
217
|
-
return
|
|
216
|
+
const s = e.data.series.flatMap((d) => d.points.map((p) => p.y)), { max: i, min: r } = Ut(s), o = i - r || 1;
|
|
217
|
+
return Be(
|
|
218
218
|
e,
|
|
219
|
-
/* @__PURE__ */ c(
|
|
219
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
220
220
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend", children: e.data.series.map((d) => /* @__PURE__ */ c("div", { className: "make-ai-artifact__trend-series", children: [
|
|
221
221
|
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-label", children: d.label }),
|
|
222
|
-
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: d.points.map((
|
|
223
|
-
const
|
|
222
|
+
/* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: d.points.map((p, v) => {
|
|
223
|
+
const h = 18 + (p.y - r) / o * 70;
|
|
224
224
|
return /* @__PURE__ */ c("div", { className: "make-ai-artifact__trend-point", children: [
|
|
225
225
|
/* @__PURE__ */ a(
|
|
226
226
|
"span",
|
|
227
227
|
{
|
|
228
|
-
"aria-label": `${
|
|
229
|
-
|
|
228
|
+
"aria-label": `${p.x}: ${Se(
|
|
229
|
+
p.y,
|
|
230
230
|
d.format,
|
|
231
231
|
t.context.locale
|
|
232
232
|
)}`,
|
|
233
233
|
className: "make-ai-artifact__trend-bar",
|
|
234
234
|
role: "img",
|
|
235
|
-
style: { height: `${
|
|
236
|
-
title: `${
|
|
237
|
-
|
|
235
|
+
style: { height: `${h}%` },
|
|
236
|
+
title: `${p.x}: ${Se(
|
|
237
|
+
p.y,
|
|
238
238
|
d.format,
|
|
239
239
|
t.context.locale
|
|
240
240
|
)}`
|
|
241
241
|
}
|
|
242
242
|
),
|
|
243
|
-
/* @__PURE__ */ a("small", { children:
|
|
244
|
-
] }, `${
|
|
243
|
+
/* @__PURE__ */ a("small", { children: p.x })
|
|
244
|
+
] }, `${p.x}-${v}`);
|
|
245
245
|
}) })
|
|
246
246
|
] }, d.id)) }),
|
|
247
|
-
|
|
247
|
+
Pe(e, t)
|
|
248
248
|
] }),
|
|
249
249
|
"make-ai-artifact--trend",
|
|
250
250
|
t.themeStyle
|
|
251
251
|
);
|
|
252
|
-
},
|
|
252
|
+
}, la = ({
|
|
253
253
|
artifact: e,
|
|
254
254
|
renderContext: t
|
|
255
255
|
}) => {
|
|
256
|
-
const { max:
|
|
257
|
-
e.data.items.map((
|
|
258
|
-
), i = Math.max(
|
|
259
|
-
return
|
|
256
|
+
const { max: s } = Ut(
|
|
257
|
+
e.data.items.map((r) => Math.abs(r.value))
|
|
258
|
+
), i = Math.max(s, 1);
|
|
259
|
+
return Be(
|
|
260
260
|
e,
|
|
261
|
-
/* @__PURE__ */ c(
|
|
262
|
-
/* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((
|
|
261
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
262
|
+
/* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((r, o) => /* @__PURE__ */ c("li", { children: [
|
|
263
263
|
/* @__PURE__ */ a("span", { className: "make-ai-artifact__rank", children: o + 1 }),
|
|
264
264
|
/* @__PURE__ */ c("span", { className: "make-ai-artifact__ranking-label", children: [
|
|
265
|
-
/* @__PURE__ */ a("span", { children:
|
|
266
|
-
|
|
265
|
+
/* @__PURE__ */ a("span", { children: r.label }),
|
|
266
|
+
r.description ? /* @__PURE__ */ a("small", { children: r.description }) : null
|
|
267
267
|
] }),
|
|
268
|
-
/* @__PURE__ */ a("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ a("span", { style: { width: `${Math.abs(
|
|
269
|
-
/* @__PURE__ */ a("strong", { children:
|
|
270
|
-
] },
|
|
271
|
-
|
|
268
|
+
/* @__PURE__ */ a("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ a("span", { style: { width: `${Math.abs(r.value) / i * 100}%` } }) }),
|
|
269
|
+
/* @__PURE__ */ a("strong", { children: Se(r.value, r.format, t.context.locale) })
|
|
270
|
+
] }, r.id)) }),
|
|
271
|
+
Pe(e, t)
|
|
272
272
|
] }),
|
|
273
273
|
"make-ai-artifact--ranking",
|
|
274
274
|
t.themeStyle
|
|
275
275
|
);
|
|
276
|
-
},
|
|
276
|
+
}, da = (e, t) => t.action ?? {
|
|
277
277
|
id: `open-${t.id}`,
|
|
278
278
|
label: t.title ?? t.id,
|
|
279
279
|
intent: "open-record",
|
|
280
280
|
target: { entityKey: e.data.entity.key, recordId: t.id }
|
|
281
|
-
},
|
|
281
|
+
}, ua = ({
|
|
282
282
|
artifact: e,
|
|
283
283
|
renderContext: t
|
|
284
|
-
}) =>
|
|
284
|
+
}) => Be(
|
|
285
285
|
e,
|
|
286
|
-
/* @__PURE__ */ c(
|
|
287
|
-
/* @__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((
|
|
288
|
-
const i =
|
|
289
|
-
/* @__PURE__ */ a("strong", { children:
|
|
286
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
287
|
+
/* @__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) => {
|
|
288
|
+
const i = da(e, s), r = /* @__PURE__ */ c(Ce, { children: [
|
|
289
|
+
/* @__PURE__ */ a("strong", { children: s.title ?? s.id }),
|
|
290
290
|
/* @__PURE__ */ a("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((o) => /* @__PURE__ */ c("span", { children: [
|
|
291
291
|
/* @__PURE__ */ a("small", { children: o.label }),
|
|
292
|
-
|
|
293
|
-
|
|
292
|
+
Se(
|
|
293
|
+
s.values[o.key],
|
|
294
294
|
o.format,
|
|
295
295
|
t.context.locale
|
|
296
296
|
)
|
|
@@ -302,244 +302,244 @@ const Fe = (e, t, n) => {
|
|
|
302
302
|
{
|
|
303
303
|
className: "make-ai-artifact__record",
|
|
304
304
|
type: "button",
|
|
305
|
-
onClick: () =>
|
|
305
|
+
onClick: () => Ot(i, {
|
|
306
306
|
artifact: e,
|
|
307
307
|
context: t.context
|
|
308
308
|
}, t),
|
|
309
|
-
children:
|
|
309
|
+
children: r
|
|
310
310
|
},
|
|
311
|
-
|
|
312
|
-
) : /* @__PURE__ */ a("div", { className: "make-ai-artifact__record", children:
|
|
311
|
+
s.id
|
|
312
|
+
) : /* @__PURE__ */ a("div", { className: "make-ai-artifact__record", children: r }, s.id);
|
|
313
313
|
}) }),
|
|
314
314
|
e.data.total !== void 0 ? /* @__PURE__ */ c("p", { className: "make-ai-artifact__record-total", children: [
|
|
315
315
|
"共 ",
|
|
316
316
|
e.data.total,
|
|
317
317
|
" 条"
|
|
318
318
|
] }) : null,
|
|
319
|
-
|
|
319
|
+
Pe(e, t)
|
|
320
320
|
] }),
|
|
321
321
|
"make-ai-artifact--record-list",
|
|
322
322
|
t.themeStyle
|
|
323
|
-
),
|
|
323
|
+
), ma = ({
|
|
324
324
|
artifact: e,
|
|
325
325
|
renderContext: t
|
|
326
|
-
}) =>
|
|
326
|
+
}) => Be(
|
|
327
327
|
e,
|
|
328
|
-
/* @__PURE__ */ c(
|
|
328
|
+
/* @__PURE__ */ c(Ce, { children: [
|
|
329
329
|
/* @__PURE__ */ c("div", { className: `make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`, children: [
|
|
330
330
|
/* @__PURE__ */ a("span", { "aria-hidden": "true", children: e.data.tone === "success" ? "✓" : e.data.tone === "warning" ? "!" : e.data.tone === "danger" ? "×" : "i" }),
|
|
331
331
|
/* @__PURE__ */ a("p", { children: e.data.body })
|
|
332
332
|
] }),
|
|
333
|
-
|
|
333
|
+
Pe(e, t)
|
|
334
334
|
] }),
|
|
335
335
|
"make-ai-artifact--notice",
|
|
336
336
|
t.themeStyle
|
|
337
|
-
),
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
],
|
|
345
|
-
const t = e,
|
|
346
|
-
return
|
|
337
|
+
), xe = (e, t, s) => ({ id: e, kinds: [t], priority: 0, render: s }), ha = [
|
|
338
|
+
xe("platform.metric.default", "metric", (e, t, s) => /* @__PURE__ */ a(ia, { artifact: e, renderContext: s })),
|
|
339
|
+
xe("platform.comparison.default", "comparison", (e, t, s) => /* @__PURE__ */ a(oa, { artifact: e, renderContext: s })),
|
|
340
|
+
xe("platform.trend.default", "trend", (e, t, s) => /* @__PURE__ */ a(ca, { artifact: e, renderContext: s })),
|
|
341
|
+
xe("platform.ranking.default", "ranking", (e, t, s) => /* @__PURE__ */ a(la, { artifact: e, renderContext: s })),
|
|
342
|
+
xe("platform.record-list.default", "record-list", (e, t, s) => /* @__PURE__ */ a(ua, { artifact: e, renderContext: s })),
|
|
343
|
+
xe("platform.notice.default", "notice", (e, t, s) => /* @__PURE__ */ a(ma, { artifact: e, renderContext: s }))
|
|
344
|
+
], pa = Pt(ha).templates, fa = (e = pa) => Pt(e), Fe = () => globalThis.crypto.randomUUID(), vt = (e) => {
|
|
345
|
+
const t = e, s = t?.status ?? t?.response?.status;
|
|
346
|
+
return s === 409 ? "数据已变化或对话仍在运行,请刷新后重试" : s === 401 || t?.code === "AI_AUTH_REQUIRED" || t?.code === "AI_AUTH_EXPIRED" ? "登录已失效,请重新登录" : s === 403 ? "当前账号无权访问该对话" : s === 404 ? "对话或回答已不可见,请刷新列表" : t?.message?.startsWith("输入内容过长") ? t.message : "操作未完成,请重试或刷新对话";
|
|
347
347
|
};
|
|
348
|
-
function
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
const o =
|
|
352
|
-
const
|
|
353
|
-
|
|
354
|
-
}, [
|
|
355
|
-
const
|
|
356
|
-
return
|
|
357
|
-
},
|
|
358
|
-
|
|
359
|
-
},
|
|
360
|
-
for (const
|
|
361
|
-
|
|
362
|
-
},
|
|
363
|
-
|
|
364
|
-
errorType:
|
|
365
|
-
}),
|
|
366
|
-
},
|
|
367
|
-
if (!
|
|
368
|
-
const
|
|
348
|
+
function va(e, t) {
|
|
349
|
+
const s = t.features?.conversationManagement === !0, i = s ? t.scopeKey?.(e) ?? e.app.id : "", r = N(i);
|
|
350
|
+
r.current = i;
|
|
351
|
+
const o = N(i), [d, p] = E(pe), v = N(d), h = (n) => {
|
|
352
|
+
const m = typeof n == "function" ? n(v.current) : n;
|
|
353
|
+
v.current = m, p(m);
|
|
354
|
+
}, [_, F] = E([]), [A, X] = E(), C = N(void 0), [B, g] = E(""), [L, U] = E(-1), [f, l] = E(!1), [S, T] = E(!1), [te, R] = E(s), [Z, G] = E(!1), [P, Q] = E(), [fe, ve] = E([]), [z, ne] = E([]), ce = N(/* @__PURE__ */ new Set()), K = N(/* @__PURE__ */ new Map()), x = N(0), w = N(0), O = N(0), ae = N(void 0), ge = N(void 0), Ee = N(/* @__PURE__ */ new Map()), $ = (n, m = i) => w.current === n && r.current === m, ee = () => {
|
|
355
|
+
const n = new AbortController();
|
|
356
|
+
return ce.current.add(n), n;
|
|
357
|
+
}, le = (n) => ce.current.delete(n), de = (n) => {
|
|
358
|
+
C.current = n, X(n);
|
|
359
|
+
}, ze = () => {
|
|
360
|
+
for (const n of K.current.values()) n.abort();
|
|
361
|
+
K.current.clear();
|
|
362
|
+
}, Y = (n) => {
|
|
363
|
+
n instanceof Error && n.name === "AbortError" || (console.warn("[make-ai-assistant] conversation operation failed", {
|
|
364
|
+
errorType: n instanceof Error ? n.name : typeof n
|
|
365
|
+
}), Q(vt(n)));
|
|
366
|
+
}, re = async (n) => {
|
|
367
|
+
if (!s || !t.listConversations) return;
|
|
368
|
+
const m = w.current, y = ++O.current, b = ee();
|
|
369
369
|
try {
|
|
370
|
-
const
|
|
370
|
+
const I = await t.listConversations(
|
|
371
371
|
e,
|
|
372
|
-
{ cursor:
|
|
373
|
-
{ signal:
|
|
372
|
+
{ cursor: n },
|
|
373
|
+
{ signal: b.signal }
|
|
374
374
|
);
|
|
375
|
-
if (
|
|
375
|
+
if (!$(m) || b.signal.aborted || y !== O.current)
|
|
376
376
|
return;
|
|
377
|
-
|
|
377
|
+
F((D) => [
|
|
378
378
|
...new Map(
|
|
379
|
-
[...
|
|
380
|
-
|
|
381
|
-
|
|
379
|
+
[...n ? D : [], ...I.chats].map((k) => [
|
|
380
|
+
k.chatId,
|
|
381
|
+
k
|
|
382
382
|
])
|
|
383
383
|
).values()
|
|
384
|
-
]),
|
|
385
|
-
} catch (
|
|
386
|
-
|
|
384
|
+
]), g(I.nextCursor);
|
|
385
|
+
} catch (I) {
|
|
386
|
+
$(m) && !b.signal.aborted && Y(I);
|
|
387
387
|
} finally {
|
|
388
|
-
|
|
388
|
+
le(b), $(m) && R(!1);
|
|
389
389
|
}
|
|
390
|
-
},
|
|
391
|
-
const
|
|
392
|
-
let
|
|
390
|
+
}, me = async (n, m, y) => {
|
|
391
|
+
const b = w.current, I = x.current;
|
|
392
|
+
let D;
|
|
393
393
|
try {
|
|
394
|
-
for await (const
|
|
395
|
-
if (
|
|
394
|
+
for await (const k of n) {
|
|
395
|
+
if (!$(b) || m.signal.aborted || I !== x.current || C.current?.chatId !== y)
|
|
396
396
|
return;
|
|
397
|
-
const
|
|
398
|
-
if (
|
|
399
|
-
|
|
400
|
-
const
|
|
401
|
-
if (
|
|
402
|
-
|
|
397
|
+
const V = Bt(k);
|
|
398
|
+
if (V.type === "response.accepted" || V.type === "response.state") {
|
|
399
|
+
D = V.responseId;
|
|
400
|
+
const q = K.current.get(D);
|
|
401
|
+
if (q && q !== m) {
|
|
402
|
+
V.type === "response.accepted" && h((W) => Ne(W, V)), m.abort();
|
|
403
403
|
return;
|
|
404
404
|
}
|
|
405
|
-
|
|
405
|
+
K.current.set(D, m);
|
|
406
406
|
}
|
|
407
|
-
|
|
407
|
+
h((q) => Ne(q, V)), V.type === "response.terminal" && (ve((q) => q.filter((W) => W !== V.responseId)), re());
|
|
408
408
|
}
|
|
409
|
-
} catch (
|
|
410
|
-
|
|
411
|
-
...
|
|
412
|
-
status: Object.values(
|
|
413
|
-
(
|
|
409
|
+
} catch (k) {
|
|
410
|
+
$(b) && !m.signal.aborted && I === x.current && (Y(k), D || h((V) => ({
|
|
411
|
+
...V,
|
|
412
|
+
status: Object.values(V.responses ?? {}).some(
|
|
413
|
+
(q) => !ut(q.status)
|
|
414
414
|
) ? "streaming" : "error"
|
|
415
415
|
})));
|
|
416
416
|
} finally {
|
|
417
|
-
|
|
417
|
+
D && K.current.get(D) === m && K.current.delete(D), le(m);
|
|
418
418
|
}
|
|
419
|
-
},
|
|
419
|
+
}, we = async (n, m, y, b) => {
|
|
420
420
|
if (!t.getResponse || !t.watchResponse) return;
|
|
421
|
-
const
|
|
422
|
-
|
|
423
|
-
),
|
|
421
|
+
const I = new Set(
|
|
422
|
+
n.filter((k) => k.role === "assistant" && k.persistent).map((k) => k.responseId)
|
|
423
|
+
), D = [
|
|
424
424
|
...new Map(
|
|
425
|
-
|
|
426
|
-
(
|
|
427
|
-
).map((
|
|
425
|
+
n.filter(
|
|
426
|
+
(k) => k.role === "user" && k.responseId && !I.has(k.responseId)
|
|
427
|
+
).map((k) => [k.responseId, k.cursor ?? -1])
|
|
428
428
|
).entries()
|
|
429
429
|
].slice(-20);
|
|
430
|
-
for (const [
|
|
431
|
-
if (
|
|
432
|
-
if (
|
|
433
|
-
const
|
|
430
|
+
for (const [k, V] of D) {
|
|
431
|
+
if (!$(b) || y !== x.current) return;
|
|
432
|
+
if (K.current.has(k)) continue;
|
|
433
|
+
const q = ee();
|
|
434
434
|
try {
|
|
435
|
-
const
|
|
435
|
+
const W = await t.getResponse(
|
|
436
436
|
e,
|
|
437
|
-
{ chatId:
|
|
438
|
-
{ signal:
|
|
437
|
+
{ chatId: m, responseId: k },
|
|
438
|
+
{ signal: q.signal }
|
|
439
439
|
);
|
|
440
|
-
if (
|
|
441
|
-
|
|
442
|
-
(
|
|
443
|
-
|
|
444
|
-
|
|
440
|
+
if (!$(b) || q.signal.aborted || y !== x.current || K.current.has(k)) continue;
|
|
441
|
+
h(
|
|
442
|
+
(be) => Ne(
|
|
443
|
+
be,
|
|
444
|
+
ut(W.status) ? { type: "response.snapshot", snapshot: W } : {
|
|
445
445
|
type: "response.state",
|
|
446
|
-
chatId:
|
|
447
|
-
responseId:
|
|
448
|
-
status:
|
|
446
|
+
chatId: m,
|
|
447
|
+
responseId: k,
|
|
448
|
+
status: W.status
|
|
449
449
|
}
|
|
450
450
|
)
|
|
451
|
-
),
|
|
452
|
-
(
|
|
451
|
+
), W.status === "failed" || W.status === "cancelled" ? h(
|
|
452
|
+
(be) => Ne(be, {
|
|
453
453
|
type: "response.terminal",
|
|
454
|
-
chatId:
|
|
455
|
-
responseId:
|
|
456
|
-
status:
|
|
454
|
+
chatId: m,
|
|
455
|
+
responseId: k,
|
|
456
|
+
status: W.status
|
|
457
457
|
})
|
|
458
|
-
) : (
|
|
458
|
+
) : (K.current.set(k, q), me(
|
|
459
459
|
t.watchResponse(
|
|
460
460
|
e,
|
|
461
|
-
{ chatId:
|
|
462
|
-
{ signal:
|
|
461
|
+
{ chatId: m, responseId: k, historyCursor: V },
|
|
462
|
+
{ signal: q.signal }
|
|
463
463
|
),
|
|
464
|
-
|
|
465
|
-
|
|
464
|
+
q,
|
|
465
|
+
m
|
|
466
466
|
));
|
|
467
|
-
} catch (
|
|
468
|
-
|
|
467
|
+
} catch (W) {
|
|
468
|
+
$(b) && !q.signal.aborted && Y(W);
|
|
469
469
|
} finally {
|
|
470
|
-
|
|
470
|
+
K.current.get(k) !== q && le(q);
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
|
-
},
|
|
474
|
-
const
|
|
475
|
-
|
|
473
|
+
}, We = async (n) => {
|
|
474
|
+
const m = ++x.current, y = w.current, b = ee();
|
|
475
|
+
ze(), Q(void 0), R(!0), ve([]), ge.current = void 0, de(n), h({ messages: [], status: "idle", threadId: n.chatId }), U(-1), l(!1), T(!1);
|
|
476
476
|
try {
|
|
477
|
-
const [
|
|
477
|
+
const [I, D] = await Promise.all([
|
|
478
478
|
t.getConversation(
|
|
479
479
|
e,
|
|
480
|
-
{ chatId:
|
|
481
|
-
{ signal:
|
|
480
|
+
{ chatId: n.chatId },
|
|
481
|
+
{ signal: b.signal }
|
|
482
482
|
),
|
|
483
483
|
t.loadConversation(e, {
|
|
484
|
-
threadId:
|
|
484
|
+
threadId: n.chatId,
|
|
485
485
|
cursor: -1,
|
|
486
|
-
signal:
|
|
486
|
+
signal: b.signal
|
|
487
487
|
})
|
|
488
488
|
]);
|
|
489
|
-
if (
|
|
489
|
+
if (!$(y) || b.signal.aborted || m !== x.current)
|
|
490
490
|
return;
|
|
491
|
-
if (
|
|
491
|
+
if (I.chatId !== n.chatId || D.threadId !== n.chatId)
|
|
492
492
|
throw new Error("Conversation mismatch");
|
|
493
|
-
|
|
494
|
-
} catch (
|
|
495
|
-
|
|
493
|
+
de(I), h(pe(D)), U(D.nextCursor ?? -1), l(D.hasMore ?? !1), we(D.messages, n.chatId, m, y);
|
|
494
|
+
} catch (I) {
|
|
495
|
+
$(y) && !b.signal.aborted && m === x.current && Y(I);
|
|
496
496
|
} finally {
|
|
497
|
-
|
|
497
|
+
le(b), $(y) && m === x.current && R(!1);
|
|
498
498
|
}
|
|
499
|
-
},
|
|
500
|
-
if (
|
|
501
|
-
if (
|
|
502
|
-
const
|
|
503
|
-
return
|
|
499
|
+
}, Ie = async () => {
|
|
500
|
+
if (C.current) return C.current;
|
|
501
|
+
if (ae.current ??= { requestId: Fe() }, ae.current.promise) return ae.current.promise;
|
|
502
|
+
const n = w.current, m = x.current, y = ee(), b = ae.current;
|
|
503
|
+
return G(!0), b.promise = t.createConversation(
|
|
504
504
|
e,
|
|
505
|
-
{ requestId:
|
|
506
|
-
{ signal:
|
|
507
|
-
).then((
|
|
508
|
-
if (
|
|
505
|
+
{ requestId: b.requestId },
|
|
506
|
+
{ signal: y.signal }
|
|
507
|
+
).then((I) => {
|
|
508
|
+
if (!$(n) || y.signal.aborted || m !== x.current)
|
|
509
509
|
throw Object.assign(new Error("Stale create"), {
|
|
510
510
|
name: "AbortError"
|
|
511
511
|
});
|
|
512
|
-
return
|
|
512
|
+
return ae.current = void 0, de(I), h({ messages: [], status: "idle", threadId: I.chatId }), re(), I;
|
|
513
513
|
}).finally(() => {
|
|
514
|
-
|
|
515
|
-
}),
|
|
516
|
-
},
|
|
517
|
-
if (!(
|
|
518
|
-
|
|
514
|
+
le(y), b.promise = void 0, $(n) && G(!1);
|
|
515
|
+
}), b.promise;
|
|
516
|
+
}, Ze = async () => {
|
|
517
|
+
if (!(Z || ae.current?.promise)) {
|
|
518
|
+
x.current += 1, ze(), de(void 0), Q(void 0), ge.current = void 0, h(pe()), l(!1), U(-1);
|
|
519
519
|
try {
|
|
520
|
-
await
|
|
521
|
-
} catch (
|
|
522
|
-
|
|
520
|
+
await Ie();
|
|
521
|
+
} catch (n) {
|
|
522
|
+
Y(n);
|
|
523
523
|
}
|
|
524
524
|
}
|
|
525
|
-
},
|
|
526
|
-
const
|
|
527
|
-
|
|
528
|
-
t.run(
|
|
529
|
-
|
|
530
|
-
|
|
525
|
+
}, Ue = async (n) => {
|
|
526
|
+
const m = ee();
|
|
527
|
+
ge.current = n, Q(void 0), v.current.messages.some((y) => y.id === n.message.id) || h((y) => zt(y, n.message)), await me(
|
|
528
|
+
t.run(n, { signal: m.signal }),
|
|
529
|
+
m,
|
|
530
|
+
n.threadId
|
|
531
531
|
);
|
|
532
|
-
},
|
|
533
|
-
if (!(!
|
|
532
|
+
}, Oe = async (n, m) => {
|
|
533
|
+
if (!(!n.trim() && !m?.length))
|
|
534
534
|
try {
|
|
535
|
-
const
|
|
536
|
-
id:
|
|
537
|
-
content:
|
|
538
|
-
...
|
|
535
|
+
const y = await Ie(), b = {
|
|
536
|
+
id: Fe(),
|
|
537
|
+
content: n,
|
|
538
|
+
...m ? { parts: m } : {}
|
|
539
539
|
};
|
|
540
|
-
await
|
|
541
|
-
threadId:
|
|
542
|
-
message:
|
|
540
|
+
await Ue({
|
|
541
|
+
threadId: y.chatId,
|
|
542
|
+
message: b,
|
|
543
543
|
context: e,
|
|
544
544
|
capabilities: {
|
|
545
545
|
artifactSchemaVersions: [],
|
|
@@ -547,244 +547,244 @@ function La(e, t) {
|
|
|
547
547
|
templates: []
|
|
548
548
|
}
|
|
549
549
|
});
|
|
550
|
-
} catch (
|
|
551
|
-
|
|
550
|
+
} catch (y) {
|
|
551
|
+
Y(y);
|
|
552
552
|
}
|
|
553
|
-
},
|
|
554
|
-
const
|
|
555
|
-
if (!
|
|
556
|
-
|
|
553
|
+
}, Ge = async () => {
|
|
554
|
+
const n = ge.current;
|
|
555
|
+
if (!n || n.threadId !== C.current?.chatId) {
|
|
556
|
+
C.current && await We(C.current);
|
|
557
557
|
return;
|
|
558
558
|
}
|
|
559
|
-
const
|
|
560
|
-
(
|
|
559
|
+
const m = v.current.messages.find(
|
|
560
|
+
(y) => y.id === n.message.id
|
|
561
561
|
);
|
|
562
|
-
if (
|
|
563
|
-
const
|
|
564
|
-
if (
|
|
565
|
-
const
|
|
566
|
-
|
|
562
|
+
if (m?.responseId && t.watchResponse) {
|
|
563
|
+
const y = m.responseId;
|
|
564
|
+
if (K.current.has(y)) return;
|
|
565
|
+
const b = ee();
|
|
566
|
+
K.current.set(y, b), Q(void 0), await me(
|
|
567
567
|
t.watchResponse(
|
|
568
568
|
e,
|
|
569
569
|
{
|
|
570
|
-
chatId:
|
|
571
|
-
responseId:
|
|
572
|
-
historyCursor:
|
|
570
|
+
chatId: n.threadId,
|
|
571
|
+
responseId: y,
|
|
572
|
+
historyCursor: m.cursor
|
|
573
573
|
},
|
|
574
|
-
{ signal:
|
|
574
|
+
{ signal: b.signal }
|
|
575
575
|
),
|
|
576
|
-
|
|
577
|
-
|
|
576
|
+
b,
|
|
577
|
+
n.threadId
|
|
578
578
|
);
|
|
579
|
-
} else await
|
|
580
|
-
},
|
|
581
|
-
const
|
|
582
|
-
if (!
|
|
579
|
+
} else await Ue(n);
|
|
580
|
+
}, ye = async (n = v.current.activeRunId) => {
|
|
581
|
+
const m = C.current;
|
|
582
|
+
if (!m || !n || !t.cancelResponse || fe.includes(n))
|
|
583
583
|
return;
|
|
584
|
-
const
|
|
585
|
-
|
|
584
|
+
const y = w.current, b = x.current, I = ee();
|
|
585
|
+
ve((D) => [...D, n]), Q(void 0);
|
|
586
586
|
try {
|
|
587
|
-
const
|
|
587
|
+
const D = await t.cancelResponse(
|
|
588
588
|
e,
|
|
589
|
-
{ chatId:
|
|
590
|
-
{ signal:
|
|
589
|
+
{ chatId: m.chatId, responseId: n },
|
|
590
|
+
{ signal: I.signal }
|
|
591
591
|
);
|
|
592
|
-
if (
|
|
593
|
-
if (
|
|
594
|
-
|
|
595
|
-
(
|
|
592
|
+
if (!$(y) || b !== x.current) return;
|
|
593
|
+
if (ut(D.status))
|
|
594
|
+
h(
|
|
595
|
+
(k) => Ne(k, {
|
|
596
596
|
type: "response.snapshot",
|
|
597
|
-
snapshot:
|
|
597
|
+
snapshot: D
|
|
598
598
|
})
|
|
599
|
-
),
|
|
600
|
-
else if (!
|
|
601
|
-
const
|
|
602
|
-
|
|
599
|
+
), ve((k) => k.filter((V) => V !== n));
|
|
600
|
+
else if (!K.current.has(n) && t.watchResponse) {
|
|
601
|
+
const k = ee();
|
|
602
|
+
K.current.set(n, k), me(
|
|
603
603
|
t.watchResponse(
|
|
604
604
|
e,
|
|
605
|
-
{ chatId:
|
|
606
|
-
{ signal:
|
|
605
|
+
{ chatId: m.chatId, responseId: n },
|
|
606
|
+
{ signal: k.signal }
|
|
607
607
|
),
|
|
608
|
-
|
|
609
|
-
|
|
608
|
+
k,
|
|
609
|
+
m.chatId
|
|
610
610
|
);
|
|
611
611
|
}
|
|
612
|
-
} catch (
|
|
613
|
-
|
|
612
|
+
} catch (D) {
|
|
613
|
+
$(y) && b === x.current && (Y(D), ve((k) => k.filter((V) => V !== n)));
|
|
614
614
|
} finally {
|
|
615
|
-
|
|
615
|
+
le(I);
|
|
616
616
|
}
|
|
617
|
-
},
|
|
618
|
-
if (!
|
|
619
|
-
const
|
|
620
|
-
|
|
617
|
+
}, Ye = async (n, m = C.current) => {
|
|
618
|
+
if (!m || Z) return;
|
|
619
|
+
const y = w.current, b = ee();
|
|
620
|
+
G(!0), Q(void 0);
|
|
621
621
|
try {
|
|
622
|
-
const
|
|
622
|
+
const I = await t.updateConversation(
|
|
623
623
|
e,
|
|
624
|
-
{ chatId:
|
|
625
|
-
{ signal:
|
|
624
|
+
{ chatId: m.chatId, expectedRevision: m.revision, ...n },
|
|
625
|
+
{ signal: b.signal }
|
|
626
626
|
);
|
|
627
|
-
if (
|
|
628
|
-
|
|
629
|
-
} catch (
|
|
630
|
-
if (
|
|
631
|
-
|
|
627
|
+
if (!$(y)) return;
|
|
628
|
+
C.current?.chatId === I.chatId && de(I), await re();
|
|
629
|
+
} catch (I) {
|
|
630
|
+
if ($(y)) {
|
|
631
|
+
Y(I);
|
|
632
632
|
try {
|
|
633
|
-
const
|
|
633
|
+
const D = await t.getConversation(
|
|
634
634
|
e,
|
|
635
|
-
{ chatId:
|
|
636
|
-
{ signal:
|
|
635
|
+
{ chatId: m.chatId },
|
|
636
|
+
{ signal: b.signal }
|
|
637
637
|
);
|
|
638
|
-
|
|
638
|
+
$(y) && C.current?.chatId === m.chatId && de(D);
|
|
639
639
|
} catch {
|
|
640
640
|
}
|
|
641
|
-
|
|
641
|
+
re();
|
|
642
642
|
}
|
|
643
643
|
} finally {
|
|
644
|
-
|
|
644
|
+
le(b), $(y) && G(!1);
|
|
645
645
|
}
|
|
646
|
-
},
|
|
647
|
-
if (!
|
|
648
|
-
const
|
|
649
|
-
|
|
646
|
+
}, Je = async (n = C.current) => {
|
|
647
|
+
if (!n || Z) return;
|
|
648
|
+
const m = w.current, y = ee();
|
|
649
|
+
G(!0), Q(void 0);
|
|
650
650
|
try {
|
|
651
651
|
if (await t.deleteConversation(
|
|
652
652
|
e,
|
|
653
|
-
{ chatId:
|
|
654
|
-
{ signal:
|
|
655
|
-
),
|
|
656
|
-
|
|
657
|
-
} catch (
|
|
658
|
-
|
|
653
|
+
{ chatId: n.chatId, expectedRevision: n.revision },
|
|
654
|
+
{ signal: y.signal }
|
|
655
|
+
), !$(m)) return;
|
|
656
|
+
C.current?.chatId === n.chatId && (x.current += 1, ze(), de(void 0), h(pe())), await re();
|
|
657
|
+
} catch (b) {
|
|
658
|
+
$(m) && Y(b);
|
|
659
659
|
} finally {
|
|
660
|
-
|
|
660
|
+
le(y), $(m) && G(!1);
|
|
661
661
|
}
|
|
662
|
-
},
|
|
663
|
-
const
|
|
664
|
-
if (!
|
|
662
|
+
}, Qe = async (n, m, y = "", b = "") => {
|
|
663
|
+
const I = C.current;
|
|
664
|
+
if (!I || !n.persistent || !t.setFeedback || z.includes(n.id))
|
|
665
665
|
return;
|
|
666
|
-
const
|
|
667
|
-
chatId:
|
|
668
|
-
messageId:
|
|
669
|
-
rating:
|
|
670
|
-
...
|
|
671
|
-
...
|
|
672
|
-
},
|
|
666
|
+
const D = {
|
|
667
|
+
chatId: I.chatId,
|
|
668
|
+
messageId: n.id,
|
|
669
|
+
rating: m,
|
|
670
|
+
...y ? { reason: y } : {},
|
|
671
|
+
...b ? { comment: b } : {}
|
|
672
|
+
}, k = Ee.current.get(n.id), { requestId: V, ...q } = k ?? {
|
|
673
673
|
requestId: ""
|
|
674
|
-
},
|
|
675
|
-
|
|
676
|
-
const
|
|
677
|
-
|
|
674
|
+
}, W = k && JSON.stringify(q) === JSON.stringify(D) ? k : { ...D, requestId: Fe() };
|
|
675
|
+
Ee.current.set(n.id, W);
|
|
676
|
+
const be = w.current, qe = x.current, tt = ee();
|
|
677
|
+
ne((ke) => [...ke, n.id]), Q(void 0);
|
|
678
678
|
try {
|
|
679
|
-
const
|
|
680
|
-
signal:
|
|
679
|
+
const ke = await t.setFeedback(e, W, {
|
|
680
|
+
signal: tt.signal
|
|
681
681
|
});
|
|
682
|
-
return
|
|
683
|
-
...
|
|
684
|
-
messages:
|
|
685
|
-
(
|
|
682
|
+
return !$(be) || qe !== x.current || Ee.current.get(n.id) !== W ? void 0 : (h((Ae) => ({
|
|
683
|
+
...Ae,
|
|
684
|
+
messages: Ae.messages.map(
|
|
685
|
+
($e) => $e.id === n.id && ke.revision >= ($e.feedback?.revision ?? 0) ? { ...$e, feedback: ke } : $e
|
|
686
686
|
)
|
|
687
|
-
})),
|
|
688
|
-
} catch (
|
|
689
|
-
return
|
|
687
|
+
})), Ee.current.delete(n.id), !0);
|
|
688
|
+
} catch (ke) {
|
|
689
|
+
return $(be) && qe === x.current && Y(ke), !1;
|
|
690
690
|
} finally {
|
|
691
|
-
|
|
691
|
+
le(tt), $(be) && ne((ke) => ke.filter((Ae) => Ae !== n.id));
|
|
692
692
|
}
|
|
693
|
-
},
|
|
694
|
-
if (!
|
|
695
|
-
const
|
|
696
|
-
|
|
693
|
+
}, et = async () => {
|
|
694
|
+
if (!C.current || !f || te) return;
|
|
695
|
+
const n = w.current, m = x.current, y = C.current, b = ee();
|
|
696
|
+
R(!0);
|
|
697
697
|
try {
|
|
698
|
-
const
|
|
699
|
-
threadId:
|
|
700
|
-
cursor:
|
|
701
|
-
signal:
|
|
698
|
+
const I = await t.loadConversation(e, {
|
|
699
|
+
threadId: y.chatId,
|
|
700
|
+
cursor: L,
|
|
701
|
+
signal: b.signal
|
|
702
702
|
});
|
|
703
|
-
if (
|
|
704
|
-
const
|
|
703
|
+
if (!$(n) || m !== x.current) return;
|
|
704
|
+
const D = pe(I), k = [
|
|
705
705
|
...new Map(
|
|
706
|
-
[...
|
|
707
|
-
|
|
708
|
-
|
|
706
|
+
[...v.current.messages, ...D.messages].map((W) => [
|
|
707
|
+
W.id,
|
|
708
|
+
W
|
|
709
709
|
])
|
|
710
710
|
).values()
|
|
711
711
|
];
|
|
712
|
-
let
|
|
713
|
-
const
|
|
714
|
-
for (const
|
|
715
|
-
if (
|
|
716
|
-
|
|
712
|
+
let V = 0;
|
|
713
|
+
const q = [];
|
|
714
|
+
for (const W of k.slice(-200).reverse()) {
|
|
715
|
+
if (V += [...W.content].length, V > 1e6) break;
|
|
716
|
+
q.unshift(W);
|
|
717
717
|
}
|
|
718
|
-
|
|
719
|
-
} catch (
|
|
720
|
-
|
|
718
|
+
q.length < k.length && T(!0), h((W) => ({ ...W, messages: q })), U(I.nextCursor ?? L), l(I.hasMore ?? !1), we(I.messages, y.chatId, m, n);
|
|
719
|
+
} catch (I) {
|
|
720
|
+
$(n) && Y(I);
|
|
721
721
|
} finally {
|
|
722
|
-
|
|
722
|
+
le(b), $(n) && R(!1);
|
|
723
723
|
}
|
|
724
724
|
};
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
for (const
|
|
728
|
-
|
|
729
|
-
}), [
|
|
730
|
-
const
|
|
725
|
+
oe(() => (w.current += 1, o.current = i, ae.current = void 0, ge.current = void 0, Ee.current.clear(), de(void 0), F([]), g(""), h(pe()), Q(void 0), R(s), G(!1), ve([]), ne([]), s && re(), () => {
|
|
726
|
+
w.current += 1, x.current += 1;
|
|
727
|
+
for (const n of ce.current) n.abort();
|
|
728
|
+
ce.current.clear(), K.current.clear();
|
|
729
|
+
}), [s, i, t]);
|
|
730
|
+
const Te = o.current === i;
|
|
731
731
|
return {
|
|
732
|
-
enabled:
|
|
733
|
-
state:
|
|
734
|
-
setState:
|
|
735
|
-
chats:
|
|
736
|
-
chat:
|
|
737
|
-
listCursor:
|
|
738
|
-
historyMore:
|
|
739
|
-
historyTruncated:
|
|
740
|
-
loading:
|
|
741
|
-
busy:
|
|
742
|
-
error:
|
|
743
|
-
cancelling:
|
|
744
|
-
feedbackBusy:
|
|
745
|
-
refresh:
|
|
746
|
-
select:
|
|
747
|
-
create:
|
|
748
|
-
ensureChat:
|
|
749
|
-
send:
|
|
750
|
-
retry:
|
|
751
|
-
stop:
|
|
752
|
-
update:
|
|
753
|
-
remove:
|
|
754
|
-
feedback:
|
|
755
|
-
moreHistory:
|
|
756
|
-
setError:
|
|
732
|
+
enabled: s,
|
|
733
|
+
state: Te ? d : pe(),
|
|
734
|
+
setState: h,
|
|
735
|
+
chats: Te ? _ : [],
|
|
736
|
+
chat: Te ? A : void 0,
|
|
737
|
+
listCursor: B,
|
|
738
|
+
historyMore: f,
|
|
739
|
+
historyTruncated: S,
|
|
740
|
+
loading: !Te || te,
|
|
741
|
+
busy: Z,
|
|
742
|
+
error: Te ? P : void 0,
|
|
743
|
+
cancelling: fe,
|
|
744
|
+
feedbackBusy: z,
|
|
745
|
+
refresh: re,
|
|
746
|
+
select: We,
|
|
747
|
+
create: Ze,
|
|
748
|
+
ensureChat: Ie,
|
|
749
|
+
send: Oe,
|
|
750
|
+
retry: Ge,
|
|
751
|
+
stop: ye,
|
|
752
|
+
update: Ye,
|
|
753
|
+
remove: Je,
|
|
754
|
+
feedback: Qe,
|
|
755
|
+
moreHistory: et,
|
|
756
|
+
setError: Q
|
|
757
757
|
};
|
|
758
758
|
}
|
|
759
|
-
const
|
|
759
|
+
const ga = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
760
760
|
/* @__PURE__ */ a("path", { d: "M5 5.5h14v10H9l-4 3v-13Z" }),
|
|
761
761
|
/* @__PURE__ */ a("path", { d: "M8 9h8M8 12h6" })
|
|
762
|
-
] }),
|
|
763
|
-
function
|
|
762
|
+
] }), ya = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) });
|
|
763
|
+
function ba({
|
|
764
764
|
id: e,
|
|
765
765
|
manager: t,
|
|
766
|
-
onDismiss:
|
|
766
|
+
onDismiss: s,
|
|
767
767
|
onNewConversation: i,
|
|
768
|
-
triggerRef:
|
|
768
|
+
triggerRef: r
|
|
769
769
|
}) {
|
|
770
|
-
const [o, d] =
|
|
771
|
-
return
|
|
772
|
-
d(t.chat?.title ?? ""),
|
|
773
|
-
}, [t.chat?.chatId, t.chat?.title]),
|
|
774
|
-
const
|
|
775
|
-
const
|
|
776
|
-
|
|
770
|
+
const [o, d] = E(""), [p, v] = E(!1), h = N(null);
|
|
771
|
+
return oe(() => {
|
|
772
|
+
d(t.chat?.title ?? ""), v(!1);
|
|
773
|
+
}, [t.chat?.chatId, t.chat?.title]), oe(() => {
|
|
774
|
+
const _ = (F) => {
|
|
775
|
+
const A = F.target;
|
|
776
|
+
A instanceof Node && (h.current?.contains(A) || r.current?.contains(A) || s());
|
|
777
777
|
};
|
|
778
|
-
return document.addEventListener("pointerdown",
|
|
779
|
-
document.removeEventListener("pointerdown",
|
|
778
|
+
return document.addEventListener("pointerdown", _), () => {
|
|
779
|
+
document.removeEventListener("pointerdown", _);
|
|
780
780
|
};
|
|
781
|
-
}, [
|
|
781
|
+
}, [s, r]), /* @__PURE__ */ c(
|
|
782
782
|
"div",
|
|
783
783
|
{
|
|
784
784
|
"aria-label": "任务列表",
|
|
785
785
|
className: "make-ai-assistant__conversation-controls",
|
|
786
786
|
id: e,
|
|
787
|
-
ref:
|
|
787
|
+
ref: h,
|
|
788
788
|
role: "dialog",
|
|
789
789
|
children: [
|
|
790
790
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__conversation-heading", children: [
|
|
@@ -809,7 +809,7 @@ function Fa({
|
|
|
809
809
|
"aria-label": "对话列表",
|
|
810
810
|
className: "make-ai-assistant__conversation-list",
|
|
811
811
|
children: [
|
|
812
|
-
t.chats.map((
|
|
812
|
+
t.chats.map((_) => /* @__PURE__ */ c(
|
|
813
813
|
"div",
|
|
814
814
|
{
|
|
815
815
|
className: "make-ai-assistant__conversation-row",
|
|
@@ -818,13 +818,13 @@ function Fa({
|
|
|
818
818
|
"button",
|
|
819
819
|
{
|
|
820
820
|
type: "button",
|
|
821
|
-
"aria-pressed": t.chat?.chatId ===
|
|
821
|
+
"aria-pressed": t.chat?.chatId === _.chatId,
|
|
822
822
|
onClick: () => {
|
|
823
|
-
|
|
823
|
+
s(), t.select(_);
|
|
824
824
|
},
|
|
825
825
|
children: [
|
|
826
|
-
/* @__PURE__ */ a(
|
|
827
|
-
/* @__PURE__ */ a("span", { children:
|
|
826
|
+
/* @__PURE__ */ a(ga, {}),
|
|
827
|
+
/* @__PURE__ */ a("span", { children: _.title || "未命名对话" })
|
|
828
828
|
]
|
|
829
829
|
}
|
|
830
830
|
),
|
|
@@ -833,16 +833,16 @@ function Fa({
|
|
|
833
833
|
{
|
|
834
834
|
type: "button",
|
|
835
835
|
disabled: t.busy,
|
|
836
|
-
"aria-label": `${
|
|
836
|
+
"aria-label": `${_.pinned ? "取消置顶" : "置顶"} ${_.title}`,
|
|
837
837
|
onClick: () => {
|
|
838
|
-
t.update({ pinned: !
|
|
838
|
+
t.update({ pinned: !_.pinned }, _);
|
|
839
839
|
},
|
|
840
|
-
children:
|
|
840
|
+
children: _.pinned ? "★" : "☆"
|
|
841
841
|
}
|
|
842
842
|
)
|
|
843
843
|
]
|
|
844
844
|
},
|
|
845
|
-
|
|
845
|
+
_.chatId
|
|
846
846
|
)),
|
|
847
847
|
!t.loading && !t.chats.length ? /* @__PURE__ */ a("p", { children: "暂无对话,发送消息即可新建" }) : null,
|
|
848
848
|
t.listCursor ? /* @__PURE__ */ a(
|
|
@@ -868,7 +868,7 @@ function Fa({
|
|
|
868
868
|
"aria-label": "对话标题",
|
|
869
869
|
maxLength: 255,
|
|
870
870
|
value: o,
|
|
871
|
-
onChange: (
|
|
871
|
+
onChange: (_) => d(_.currentTarget.value)
|
|
872
872
|
}
|
|
873
873
|
),
|
|
874
874
|
/* @__PURE__ */ a(
|
|
@@ -887,11 +887,11 @@ function Fa({
|
|
|
887
887
|
{
|
|
888
888
|
type: "button",
|
|
889
889
|
disabled: t.busy,
|
|
890
|
-
onClick: () =>
|
|
890
|
+
onClick: () => v(!0),
|
|
891
891
|
children: "删除对话"
|
|
892
892
|
}
|
|
893
893
|
),
|
|
894
|
-
|
|
894
|
+
p ? /* @__PURE__ */ c("div", { role: "group", "aria-label": "确认删除对话", children: [
|
|
895
895
|
/* @__PURE__ */ c("span", { children: [
|
|
896
896
|
"删除“",
|
|
897
897
|
t.chat.title,
|
|
@@ -903,12 +903,12 @@ function Fa({
|
|
|
903
903
|
type: "button",
|
|
904
904
|
disabled: t.busy,
|
|
905
905
|
onClick: () => {
|
|
906
|
-
|
|
906
|
+
v(!1), t.remove();
|
|
907
907
|
},
|
|
908
908
|
children: "确认删除"
|
|
909
909
|
}
|
|
910
910
|
),
|
|
911
|
-
/* @__PURE__ */ a("button", { type: "button", onClick: () =>
|
|
911
|
+
/* @__PURE__ */ a("button", { type: "button", onClick: () => v(!1), children: "保留" })
|
|
912
912
|
] }) : null,
|
|
913
913
|
t.historyMore ? /* @__PURE__ */ a(
|
|
914
914
|
"button",
|
|
@@ -937,7 +937,7 @@ function Fa({
|
|
|
937
937
|
type: "button",
|
|
938
938
|
onClick: i,
|
|
939
939
|
children: [
|
|
940
|
-
/* @__PURE__ */ a(
|
|
940
|
+
/* @__PURE__ */ a(ya, {}),
|
|
941
941
|
/* @__PURE__ */ a("span", { children: "新建对话" })
|
|
942
942
|
]
|
|
943
943
|
}
|
|
@@ -946,24 +946,24 @@ function Fa({
|
|
|
946
946
|
}
|
|
947
947
|
);
|
|
948
948
|
}
|
|
949
|
-
function
|
|
949
|
+
function ka({
|
|
950
950
|
message: e,
|
|
951
951
|
manager: t
|
|
952
952
|
}) {
|
|
953
|
-
const [
|
|
953
|
+
const [s, i] = E(!1), [r, o] = E(""), [d, p] = E(""), v = t.feedbackBusy.includes(e.id);
|
|
954
954
|
if (!e.persistent || e.role !== "assistant" || e.intermediate)
|
|
955
955
|
return null;
|
|
956
|
-
const
|
|
956
|
+
const h = e.feedback?.rating ?? "none";
|
|
957
957
|
return /* @__PURE__ */ c("div", { className: "make-ai-assistant__feedback", "aria-label": "回答反馈", children: [
|
|
958
958
|
/* @__PURE__ */ a(
|
|
959
959
|
"button",
|
|
960
960
|
{
|
|
961
961
|
type: "button",
|
|
962
962
|
"aria-label": "点赞",
|
|
963
|
-
"aria-pressed":
|
|
964
|
-
disabled:
|
|
963
|
+
"aria-pressed": h === "like",
|
|
964
|
+
disabled: v,
|
|
965
965
|
onClick: () => {
|
|
966
|
-
t.feedback(e,
|
|
966
|
+
t.feedback(e, h === "like" ? "none" : "like");
|
|
967
967
|
},
|
|
968
968
|
children: "赞"
|
|
969
969
|
}
|
|
@@ -973,35 +973,35 @@ function Ba({
|
|
|
973
973
|
{
|
|
974
974
|
type: "button",
|
|
975
975
|
"aria-label": "点踩",
|
|
976
|
-
"aria-pressed":
|
|
977
|
-
disabled:
|
|
976
|
+
"aria-pressed": h === "dislike",
|
|
977
|
+
disabled: v,
|
|
978
978
|
onClick: () => {
|
|
979
|
-
if (
|
|
979
|
+
if (h === "dislike") {
|
|
980
980
|
t.feedback(e, "none");
|
|
981
981
|
return;
|
|
982
982
|
}
|
|
983
|
-
o(e.feedback?.reason ?? ""),
|
|
983
|
+
o(e.feedback?.reason ?? ""), p(e.feedback?.comment ?? ""), i(!0);
|
|
984
984
|
},
|
|
985
985
|
children: "踩"
|
|
986
986
|
}
|
|
987
987
|
),
|
|
988
|
-
|
|
988
|
+
h === "dislike" ? /* @__PURE__ */ a(
|
|
989
989
|
"button",
|
|
990
990
|
{
|
|
991
991
|
type: "button",
|
|
992
|
-
disabled:
|
|
992
|
+
disabled: v,
|
|
993
993
|
onClick: () => {
|
|
994
|
-
o(e.feedback?.reason ?? ""),
|
|
994
|
+
o(e.feedback?.reason ?? ""), p(e.feedback?.comment ?? ""), i(!0);
|
|
995
995
|
},
|
|
996
996
|
children: "修改反馈"
|
|
997
997
|
}
|
|
998
998
|
) : null,
|
|
999
|
-
|
|
999
|
+
s ? /* @__PURE__ */ c(
|
|
1000
1000
|
"form",
|
|
1001
1001
|
{
|
|
1002
|
-
onSubmit: (
|
|
1003
|
-
|
|
1004
|
-
|
|
1002
|
+
onSubmit: (_) => {
|
|
1003
|
+
_.preventDefault(), t.feedback(e, "dislike", r, d).then((F) => {
|
|
1004
|
+
F && i(!1);
|
|
1005
1005
|
});
|
|
1006
1006
|
},
|
|
1007
1007
|
children: [
|
|
@@ -1010,8 +1010,8 @@ function Ba({
|
|
|
1010
1010
|
{
|
|
1011
1011
|
"aria-label": "反馈原因",
|
|
1012
1012
|
maxLength: 128,
|
|
1013
|
-
value:
|
|
1014
|
-
onChange: (
|
|
1013
|
+
value: r,
|
|
1014
|
+
onChange: (_) => o(_.currentTarget.value),
|
|
1015
1015
|
placeholder: "原因(可选)"
|
|
1016
1016
|
}
|
|
1017
1017
|
),
|
|
@@ -1021,18 +1021,18 @@ function Ba({
|
|
|
1021
1021
|
"aria-label": "反馈说明",
|
|
1022
1022
|
maxLength: 4e3,
|
|
1023
1023
|
value: d,
|
|
1024
|
-
onChange: (
|
|
1024
|
+
onChange: (_) => p(_.currentTarget.value),
|
|
1025
1025
|
placeholder: "补充说明(可选)"
|
|
1026
1026
|
}
|
|
1027
1027
|
),
|
|
1028
|
-
/* @__PURE__ */ a("button", { type: "submit", disabled:
|
|
1028
|
+
/* @__PURE__ */ a("button", { type: "submit", disabled: v, children: "提交反馈" }),
|
|
1029
1029
|
/* @__PURE__ */ a("button", { type: "button", onClick: () => i(!1), children: "取消" })
|
|
1030
1030
|
]
|
|
1031
1031
|
}
|
|
1032
1032
|
) : null
|
|
1033
1033
|
] });
|
|
1034
1034
|
}
|
|
1035
|
-
const
|
|
1035
|
+
const Rt = /* @__PURE__ */ new Set([
|
|
1036
1036
|
"image/png",
|
|
1037
1037
|
"image/jpeg",
|
|
1038
1038
|
"image/webp",
|
|
@@ -1045,42 +1045,42 @@ const Bt = /* @__PURE__ */ new Set([
|
|
|
1045
1045
|
"video/webm",
|
|
1046
1046
|
"video/ogg"
|
|
1047
1047
|
]);
|
|
1048
|
-
function
|
|
1048
|
+
function _a({
|
|
1049
1049
|
part: e,
|
|
1050
1050
|
context: t,
|
|
1051
|
-
transport:
|
|
1051
|
+
transport: s,
|
|
1052
1052
|
chatId: i
|
|
1053
1053
|
}) {
|
|
1054
|
-
const [
|
|
1055
|
-
|
|
1054
|
+
const [r, o] = E(), [d, p] = E(), [v, h] = E(!1), _ = N([]), F = N(void 0);
|
|
1055
|
+
oe(
|
|
1056
1056
|
() => () => {
|
|
1057
|
-
|
|
1057
|
+
F.current?.abort(), _.current.forEach((X) => URL.revokeObjectURL(X));
|
|
1058
1058
|
},
|
|
1059
1059
|
[]
|
|
1060
1060
|
);
|
|
1061
|
-
const
|
|
1062
|
-
if (!
|
|
1063
|
-
const
|
|
1064
|
-
|
|
1061
|
+
const A = async (X) => {
|
|
1062
|
+
if (!s.readContent || v) return;
|
|
1063
|
+
const C = new AbortController();
|
|
1064
|
+
F.current = C, h(!0), p(void 0);
|
|
1065
1065
|
try {
|
|
1066
|
-
const
|
|
1066
|
+
const B = await s.readContent(
|
|
1067
1067
|
t,
|
|
1068
1068
|
{ chatId: i, contentRef: e.media.contentRef },
|
|
1069
|
-
{ signal:
|
|
1069
|
+
{ signal: C.signal }
|
|
1070
1070
|
);
|
|
1071
|
-
if (
|
|
1072
|
-
const
|
|
1073
|
-
type:
|
|
1074
|
-
}),
|
|
1075
|
-
if (
|
|
1071
|
+
if (C.signal.aborted) return;
|
|
1072
|
+
const g = new Blob([new Uint8Array(B).buffer], {
|
|
1073
|
+
type: X && Rt.has(e.media.contentType) ? e.media.contentType : "application/octet-stream"
|
|
1074
|
+
}), L = URL.createObjectURL(g);
|
|
1075
|
+
if (_.current.push(L), X) o(L);
|
|
1076
1076
|
else {
|
|
1077
|
-
const
|
|
1078
|
-
|
|
1077
|
+
const U = document.createElement("a");
|
|
1078
|
+
U.href = L, U.download = e.name ?? "attachment", U.click();
|
|
1079
1079
|
}
|
|
1080
|
-
} catch (
|
|
1081
|
-
|
|
1080
|
+
} catch (B) {
|
|
1081
|
+
C.signal.aborted || p(vt(B));
|
|
1082
1082
|
} finally {
|
|
1083
|
-
|
|
1083
|
+
C.signal.aborted || h(!1);
|
|
1084
1084
|
}
|
|
1085
1085
|
};
|
|
1086
1086
|
return /* @__PURE__ */ c("div", { className: "make-ai-assistant__attachment", children: [
|
|
@@ -1090,169 +1090,171 @@ function za({
|
|
|
1090
1090
|
e.media.sizeBytes,
|
|
1091
1091
|
" 字节"
|
|
1092
1092
|
] }),
|
|
1093
|
-
/* @__PURE__ */
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1093
|
+
s.readContent ? /* @__PURE__ */ c(Ce, { children: [
|
|
1094
|
+
/* @__PURE__ */ a("button", { type: "button", disabled: v, onClick: () => {
|
|
1095
|
+
A(!1);
|
|
1096
|
+
}, children: "下载附件" }),
|
|
1097
|
+
Rt.has(e.media.contentType) ? /* @__PURE__ */ a("button", { type: "button", disabled: v, onClick: () => {
|
|
1098
|
+
A(!0);
|
|
1099
|
+
}, children: "预览附件" }) : null
|
|
1100
|
+
] }) : null,
|
|
1099
1101
|
d ? /* @__PURE__ */ a("span", { role: "alert", children: d }) : null,
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1102
|
+
r && e.kind === "image" ? /* @__PURE__ */ a("img", { src: r, alt: e.name ?? "附件图片" }) : null,
|
|
1103
|
+
r && e.kind === "audio" ? /* @__PURE__ */ a("audio", { src: r, controls: !0 }) : null,
|
|
1104
|
+
r && e.kind === "video" ? /* @__PURE__ */ a("video", { src: r, controls: !0 }) : null
|
|
1103
1105
|
] });
|
|
1104
1106
|
}
|
|
1105
|
-
function
|
|
1107
|
+
function wa({
|
|
1106
1108
|
message: e,
|
|
1107
1109
|
context: t,
|
|
1108
|
-
transport:
|
|
1110
|
+
transport: s,
|
|
1109
1111
|
chatId: i
|
|
1110
1112
|
}) {
|
|
1111
|
-
return /* @__PURE__ */ a(
|
|
1112
|
-
(
|
|
1113
|
-
|
|
1113
|
+
return /* @__PURE__ */ a(Ce, { children: e.parts?.map(
|
|
1114
|
+
(r, o) => r.kind === "text" ? null : /* @__PURE__ */ a(
|
|
1115
|
+
_a,
|
|
1114
1116
|
{
|
|
1115
|
-
part:
|
|
1117
|
+
part: r,
|
|
1116
1118
|
context: t,
|
|
1117
|
-
transport:
|
|
1119
|
+
transport: s,
|
|
1118
1120
|
chatId: i
|
|
1119
1121
|
},
|
|
1120
|
-
|
|
1122
|
+
r.id ?? `${e.id}:${o}`
|
|
1121
1123
|
)
|
|
1122
1124
|
) });
|
|
1123
1125
|
}
|
|
1124
|
-
const
|
|
1125
|
-
const
|
|
1126
|
-
|
|
1126
|
+
const Ia = (e) => e.type.split(";")[0].trim().toLowerCase() || "application/octet-stream", Aa = (e) => e.startsWith("image/") && e !== "image/svg+xml" ? "image" : e.startsWith("audio/") ? "audio" : e.startsWith("video/") ? "video" : "file", Ma = (e, t) => new Promise((s, i) => {
|
|
1127
|
+
const r = new FileReader(), o = () => t.removeEventListener("abort", d), d = () => {
|
|
1128
|
+
r.abort(), o(), i(Object.assign(new Error("Read aborted"), { name: "AbortError" }));
|
|
1127
1129
|
};
|
|
1128
1130
|
if (t.aborted) {
|
|
1129
1131
|
d();
|
|
1130
1132
|
return;
|
|
1131
1133
|
}
|
|
1132
|
-
t.addEventListener("abort", d, { once: !0 }),
|
|
1133
|
-
o(),
|
|
1134
|
-
},
|
|
1134
|
+
t.addEventListener("abort", d, { once: !0 }), r.onload = () => {
|
|
1135
|
+
o(), s(new Uint8Array(r.result));
|
|
1136
|
+
}, r.onerror = () => {
|
|
1135
1137
|
o(), i(new Error("无法读取文件"));
|
|
1136
|
-
},
|
|
1138
|
+
}, r.readAsArrayBuffer(e);
|
|
1137
1139
|
});
|
|
1138
|
-
function
|
|
1139
|
-
const [i,
|
|
1140
|
-
|
|
1141
|
-
const
|
|
1142
|
-
!o.current.has(
|
|
1143
|
-
},
|
|
1144
|
-
for (const
|
|
1145
|
-
o.current.clear(),
|
|
1140
|
+
function Na(e, t, s) {
|
|
1141
|
+
const [i, r] = E([]), o = N(/* @__PURE__ */ new Map()), d = N(Promise.resolve()), p = t.scopeKey?.(e) ?? e.app.id, v = N(p);
|
|
1142
|
+
v.current = p;
|
|
1143
|
+
const h = N(void 0), _ = s.enabled && t.features?.attachments === !0, F = (f, l) => {
|
|
1144
|
+
!o.current.has(f.draft.id) || f.scope !== v.current || (f.draft = { ...f.draft, ...l }, r([...o.current.values()].map((S) => S.draft)));
|
|
1145
|
+
}, A = () => {
|
|
1146
|
+
for (const f of o.current.values()) f.controller.abort();
|
|
1147
|
+
o.current.clear(), r([]), h.current = void 0, d.current = Promise.resolve();
|
|
1146
1148
|
};
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
}, [
|
|
1150
|
-
const
|
|
1151
|
-
const l =
|
|
1152
|
-
if (l.aborted ||
|
|
1149
|
+
oe(() => (A(), A), [p, t]), oe(() => {
|
|
1150
|
+
h.current && s.chat?.chatId !== h.current && A();
|
|
1151
|
+
}, [s.chat?.chatId]);
|
|
1152
|
+
const X = async (f) => {
|
|
1153
|
+
const l = f.controller.signal, S = () => {
|
|
1154
|
+
if (l.aborted || f.scope !== v.current || !o.current.has(f.draft.id))
|
|
1153
1155
|
throw Object.assign(new Error("Upload aborted"), {
|
|
1154
1156
|
name: "AbortError"
|
|
1155
1157
|
});
|
|
1156
1158
|
};
|
|
1157
1159
|
try {
|
|
1158
|
-
if (
|
|
1159
|
-
const
|
|
1160
|
-
|
|
1161
|
-
const
|
|
1162
|
-
|
|
1163
|
-
let
|
|
1160
|
+
if (S(), f.file.size > 64 << 20) throw new Error("文件不能超过 64 MiB");
|
|
1161
|
+
const T = await s.ensureChat();
|
|
1162
|
+
S(), h.current = T.chatId;
|
|
1163
|
+
const te = Ia(f.file);
|
|
1164
|
+
F(f, { status: "uploading", error: void 0 });
|
|
1165
|
+
let R = f.draft.upload ? await t.getUpload(
|
|
1164
1166
|
e,
|
|
1165
|
-
{ chatId:
|
|
1167
|
+
{ chatId: T.chatId, uploadId: f.draft.upload.id },
|
|
1166
1168
|
{ signal: l }
|
|
1167
1169
|
) : await t.startUpload(
|
|
1168
1170
|
e,
|
|
1169
1171
|
{
|
|
1170
|
-
chatId:
|
|
1171
|
-
fileId:
|
|
1172
|
-
name:
|
|
1173
|
-
contentType:
|
|
1174
|
-
sizeBytes:
|
|
1172
|
+
chatId: T.chatId,
|
|
1173
|
+
fileId: f.draft.fileId,
|
|
1174
|
+
name: f.file.name,
|
|
1175
|
+
contentType: te,
|
|
1176
|
+
sizeBytes: f.file.size
|
|
1175
1177
|
},
|
|
1176
1178
|
{ signal: l }
|
|
1177
1179
|
);
|
|
1178
|
-
if (
|
|
1180
|
+
if (S(), F(f, { upload: R }), R.name !== f.file.name || R.contentType !== te || R.sizeBytes !== f.file.size)
|
|
1179
1181
|
throw new Error("上传文件身份不一致");
|
|
1180
|
-
if (
|
|
1181
|
-
|
|
1182
|
+
if (R.status !== "ready") {
|
|
1183
|
+
R = await t.getUpload(
|
|
1182
1184
|
e,
|
|
1183
|
-
{ chatId:
|
|
1185
|
+
{ chatId: T.chatId, uploadId: R.id },
|
|
1184
1186
|
{ signal: l }
|
|
1185
|
-
),
|
|
1186
|
-
const
|
|
1187
|
-
for (let
|
|
1188
|
-
if (
|
|
1189
|
-
const
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
Math.min(
|
|
1187
|
+
), S();
|
|
1188
|
+
const Z = new Set(R.completedParts), G = Math.ceil(f.file.size / R.partSize);
|
|
1189
|
+
for (let P = 0; P < G; P += 1) {
|
|
1190
|
+
if (S(), !Z.has(P)) {
|
|
1191
|
+
const Q = await Ma(
|
|
1192
|
+
f.file.slice(
|
|
1193
|
+
P * R.partSize,
|
|
1194
|
+
Math.min(f.file.size, (P + 1) * R.partSize)
|
|
1193
1195
|
),
|
|
1194
1196
|
l
|
|
1195
1197
|
);
|
|
1196
|
-
|
|
1198
|
+
S(), await t.uploadPart(
|
|
1197
1199
|
e,
|
|
1198
|
-
{ chatId:
|
|
1200
|
+
{ chatId: T.chatId, uploadId: R.id, part: P, bytes: Q },
|
|
1199
1201
|
{ signal: l }
|
|
1200
|
-
),
|
|
1202
|
+
), S(), Z.add(P);
|
|
1201
1203
|
}
|
|
1202
|
-
|
|
1204
|
+
F(f, { progress: Z.size / Math.max(G, 1) });
|
|
1203
1205
|
}
|
|
1204
|
-
|
|
1206
|
+
F(f, { status: "completing" }), R = await t.completeUpload(
|
|
1205
1207
|
e,
|
|
1206
|
-
{ chatId:
|
|
1208
|
+
{ chatId: T.chatId, uploadId: R.id },
|
|
1207
1209
|
{ signal: l }
|
|
1208
|
-
),
|
|
1210
|
+
), S();
|
|
1209
1211
|
}
|
|
1210
|
-
if (
|
|
1212
|
+
if (R.status !== "ready" || !R.content)
|
|
1211
1213
|
throw new Error("上传尚未完成");
|
|
1212
|
-
|
|
1213
|
-
} catch (
|
|
1214
|
-
|
|
1214
|
+
F(f, { status: "ready", progress: 1, upload: R });
|
|
1215
|
+
} catch (T) {
|
|
1216
|
+
F(f, {
|
|
1215
1217
|
status: l.aborted ? "paused" : "failed",
|
|
1216
|
-
error: l.aborted ? void 0 :
|
|
1218
|
+
error: l.aborted ? void 0 : vt(T)
|
|
1217
1219
|
});
|
|
1218
1220
|
}
|
|
1219
|
-
},
|
|
1220
|
-
if (
|
|
1221
|
-
if (
|
|
1222
|
-
|
|
1221
|
+
}, C = (f) => {
|
|
1222
|
+
if (_) {
|
|
1223
|
+
if (f.length + o.current.size > 32) {
|
|
1224
|
+
s.setError("每条消息最多包含 32 个附件或文本片段");
|
|
1223
1225
|
return;
|
|
1224
1226
|
}
|
|
1225
|
-
for (const l of
|
|
1226
|
-
const
|
|
1227
|
-
id:
|
|
1228
|
-
fileId:
|
|
1227
|
+
for (const l of f) {
|
|
1228
|
+
const S = {
|
|
1229
|
+
id: Fe(),
|
|
1230
|
+
fileId: Fe(),
|
|
1229
1231
|
name: l.name,
|
|
1230
1232
|
size: l.size,
|
|
1231
1233
|
status: "queued",
|
|
1232
1234
|
progress: 0
|
|
1233
|
-
},
|
|
1234
|
-
draft:
|
|
1235
|
+
}, T = {
|
|
1236
|
+
draft: S,
|
|
1235
1237
|
file: l,
|
|
1236
1238
|
controller: new AbortController(),
|
|
1237
|
-
scope:
|
|
1239
|
+
scope: p
|
|
1238
1240
|
};
|
|
1239
|
-
o.current.set(
|
|
1241
|
+
o.current.set(S.id, T), d.current = d.current.then(() => X(T));
|
|
1240
1242
|
}
|
|
1241
|
-
|
|
1243
|
+
r([...o.current.values()].map((l) => l.draft));
|
|
1242
1244
|
}
|
|
1243
|
-
},
|
|
1244
|
-
const l = o.current.get(
|
|
1245
|
-
!l || !["paused", "failed"].includes(l.draft.status) || (l.controller = new AbortController(),
|
|
1246
|
-
},
|
|
1247
|
-
o.current.get(
|
|
1248
|
-
},
|
|
1249
|
-
const l =
|
|
1250
|
-
if (
|
|
1251
|
-
const
|
|
1245
|
+
}, B = (f) => {
|
|
1246
|
+
const l = o.current.get(f);
|
|
1247
|
+
!l || !["paused", "failed"].includes(l.draft.status) || (l.controller = new AbortController(), F(l, { status: "queued" }), d.current = d.current.then(() => X(l)));
|
|
1248
|
+
}, g = (f) => {
|
|
1249
|
+
o.current.get(f)?.controller.abort(), o.current.delete(f), r([...o.current.values()].map((S) => S.draft));
|
|
1250
|
+
}, L = (f) => o.current.get(f)?.controller.abort(), U = i.flatMap((f) => {
|
|
1251
|
+
const l = f.upload;
|
|
1252
|
+
if (f.status !== "ready" || !l?.content) return [];
|
|
1253
|
+
const S = Aa(l.contentType);
|
|
1252
1254
|
return [
|
|
1253
1255
|
{
|
|
1254
|
-
id:
|
|
1255
|
-
kind:
|
|
1256
|
+
id: f.id,
|
|
1257
|
+
kind: S,
|
|
1256
1258
|
name: l.name,
|
|
1257
1259
|
media: {
|
|
1258
1260
|
contentRef: l.content.contentRef,
|
|
@@ -1264,119 +1266,89 @@ function Wa(e, t, n) {
|
|
|
1264
1266
|
];
|
|
1265
1267
|
});
|
|
1266
1268
|
return {
|
|
1267
|
-
enabled:
|
|
1269
|
+
enabled: _,
|
|
1268
1270
|
drafts: i,
|
|
1269
|
-
parts:
|
|
1270
|
-
pending: i.some((
|
|
1271
|
-
add:
|
|
1272
|
-
retry:
|
|
1273
|
-
remove:
|
|
1274
|
-
pause:
|
|
1275
|
-
clear:
|
|
1271
|
+
parts: U,
|
|
1272
|
+
pending: i.some((f) => f.status !== "ready"),
|
|
1273
|
+
add: C,
|
|
1274
|
+
retry: B,
|
|
1275
|
+
remove: g,
|
|
1276
|
+
pause: L,
|
|
1277
|
+
clear: A
|
|
1276
1278
|
};
|
|
1277
1279
|
}
|
|
1278
|
-
function
|
|
1280
|
+
function Ca({
|
|
1279
1281
|
attachments: e,
|
|
1280
1282
|
onOpenChange: t,
|
|
1281
|
-
open:
|
|
1283
|
+
open: s,
|
|
1282
1284
|
triggerRef: i
|
|
1283
1285
|
}) {
|
|
1284
|
-
const
|
|
1285
|
-
|
|
1286
|
-
if (!
|
|
1287
|
-
const
|
|
1288
|
-
const
|
|
1289
|
-
|
|
1286
|
+
const r = N(null), o = N(null);
|
|
1287
|
+
oe(() => {
|
|
1288
|
+
if (!s) return;
|
|
1289
|
+
const p = (v) => {
|
|
1290
|
+
const h = v.target;
|
|
1291
|
+
h instanceof Node && !r.current?.contains(h) && t(!1);
|
|
1290
1292
|
};
|
|
1291
|
-
return document.addEventListener("pointerdown",
|
|
1292
|
-
document.removeEventListener("pointerdown",
|
|
1293
|
+
return document.addEventListener("pointerdown", p), () => {
|
|
1294
|
+
document.removeEventListener("pointerdown", p);
|
|
1293
1295
|
};
|
|
1294
|
-
}, [t,
|
|
1295
|
-
const
|
|
1296
|
-
e.add(Array.from(
|
|
1296
|
+
}, [t, s]);
|
|
1297
|
+
const d = (p) => {
|
|
1298
|
+
e.add(Array.from(p.files ?? [])), p.value = "", t(!1);
|
|
1297
1299
|
};
|
|
1298
|
-
return /* @__PURE__ */ c("div", { className: "make-ai-assistant__attachment-composer", ref:
|
|
1300
|
+
return /* @__PURE__ */ c("div", { className: "make-ai-assistant__attachment-composer", ref: r, children: [
|
|
1299
1301
|
/* @__PURE__ */ a(
|
|
1300
1302
|
"button",
|
|
1301
1303
|
{
|
|
1302
|
-
"aria-expanded":
|
|
1304
|
+
"aria-expanded": s,
|
|
1303
1305
|
"aria-haspopup": "menu",
|
|
1304
1306
|
"aria-label": "添加附件",
|
|
1305
1307
|
className: "make-ai-assistant__attachment-trigger",
|
|
1306
1308
|
ref: i,
|
|
1307
1309
|
title: "添加附件",
|
|
1308
1310
|
type: "button",
|
|
1309
|
-
onClick: () => t(!
|
|
1311
|
+
onClick: () => t(!s),
|
|
1310
1312
|
children: /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) })
|
|
1311
1313
|
}
|
|
1312
1314
|
),
|
|
1313
|
-
|
|
1315
|
+
s ? /* @__PURE__ */ a(
|
|
1314
1316
|
"div",
|
|
1315
1317
|
{
|
|
1316
1318
|
"aria-label": "附件选项",
|
|
1317
1319
|
className: "make-ai-assistant__attachment-menu",
|
|
1318
1320
|
role: "menu",
|
|
1319
|
-
children:
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
children: [
|
|
1327
|
-
/* @__PURE__ */
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
}
|
|
1335
|
-
),
|
|
1336
|
-
/* @__PURE__ */ c(
|
|
1337
|
-
"button",
|
|
1338
|
-
{
|
|
1339
|
-
role: "menuitem",
|
|
1340
|
-
type: "button",
|
|
1341
|
-
onClick: () => d.current?.click(),
|
|
1342
|
-
children: [
|
|
1343
|
-
/* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1344
|
-
/* @__PURE__ */ a("path", { d: "M7 3.5h7l4 4V20H7z" }),
|
|
1345
|
-
/* @__PURE__ */ a("path", { d: "M14 3.5v4h4M10 12h5M10 15h5" })
|
|
1346
|
-
] }),
|
|
1347
|
-
/* @__PURE__ */ a("span", { children: "上传文件" })
|
|
1348
|
-
]
|
|
1349
|
-
}
|
|
1350
|
-
)
|
|
1351
|
-
]
|
|
1321
|
+
children: /* @__PURE__ */ c(
|
|
1322
|
+
"button",
|
|
1323
|
+
{
|
|
1324
|
+
role: "menuitem",
|
|
1325
|
+
type: "button",
|
|
1326
|
+
onClick: () => o.current?.click(),
|
|
1327
|
+
children: [
|
|
1328
|
+
/* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1329
|
+
/* @__PURE__ */ a("path", { d: "M12 15V4M7.5 8.5 12 4l4.5 4.5" }),
|
|
1330
|
+
/* @__PURE__ */ a("path", { d: "M5 14v5h14v-5" })
|
|
1331
|
+
] }),
|
|
1332
|
+
/* @__PURE__ */ a("span", { children: "上传文件或图片" })
|
|
1333
|
+
]
|
|
1334
|
+
}
|
|
1335
|
+
)
|
|
1352
1336
|
}
|
|
1353
1337
|
) : null,
|
|
1354
1338
|
/* @__PURE__ */ a(
|
|
1355
1339
|
"input",
|
|
1356
1340
|
{
|
|
1357
|
-
|
|
1358
|
-
"aria-label": "上传图片",
|
|
1341
|
+
"aria-label": "上传文件或图片",
|
|
1359
1342
|
hidden: !0,
|
|
1360
1343
|
multiple: !0,
|
|
1361
1344
|
ref: o,
|
|
1362
1345
|
type: "file",
|
|
1363
|
-
onChange: (
|
|
1364
|
-
}
|
|
1365
|
-
),
|
|
1366
|
-
/* @__PURE__ */ a(
|
|
1367
|
-
"input",
|
|
1368
|
-
{
|
|
1369
|
-
"aria-label": "上传文件",
|
|
1370
|
-
hidden: !0,
|
|
1371
|
-
multiple: !0,
|
|
1372
|
-
ref: d,
|
|
1373
|
-
type: "file",
|
|
1374
|
-
onChange: (f) => g(f.currentTarget)
|
|
1346
|
+
onChange: (p) => d(p.currentTarget)
|
|
1375
1347
|
}
|
|
1376
1348
|
)
|
|
1377
1349
|
] });
|
|
1378
1350
|
}
|
|
1379
|
-
function
|
|
1351
|
+
function Ta({
|
|
1380
1352
|
attachments: e
|
|
1381
1353
|
}) {
|
|
1382
1354
|
return e.drafts.length ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__attachment-drafts", "aria-label": "待发送附件", children: /* @__PURE__ */ a("ul", { children: e.drafts.map((t) => /* @__PURE__ */ c("li", { children: [
|
|
@@ -1392,81 +1364,37 @@ function qa({
|
|
|
1392
1364
|
/* @__PURE__ */ a("button", { type: "button", onClick: () => e.remove(t.id), children: "移除附件" })
|
|
1393
1365
|
] }, t.id)) }) }) : null;
|
|
1394
1366
|
}
|
|
1395
|
-
const
|
|
1367
|
+
const Ra = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, Ea = "Make", Sa = [
|
|
1396
1368
|
"总结当前页面数据",
|
|
1397
1369
|
"找出需要关注的记录",
|
|
1398
1370
|
"列出我有权限查看的数据对象"
|
|
1399
|
-
],
|
|
1371
|
+
], qt = (e, t) => t ?? `${e?.trim() || Ea} AI 助手`, $a = (e) => e ?? Sa, Da = 480, Ht = 1024, La = 0.72, Et = 16, mt = (e, t, s) => Math.min(Math.max(e, Math.min(t, s)), s), xa = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 ? e : void 0, Fa = (e, t, s) => {
|
|
1400
1372
|
const i = Math.min(
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
);
|
|
1404
|
-
return Math.max(e, Math.min(t ?? i, n));
|
|
1405
|
-
}, Ht = (e, t, n) => Math.min(Math.max(e, t), Math.max(t, n)), tn = (e, t, n, i) => {
|
|
1406
|
-
const s = Math.min(
|
|
1407
|
-
Math.max(t.width, 1),
|
|
1408
|
-
Math.max(1, i - be * 2)
|
|
1409
|
-
), o = Math.min(
|
|
1410
|
-
Math.max(t.height, 1),
|
|
1411
|
-
Math.max(1, n - be * 2)
|
|
1412
|
-
), d = e.left + e.width / 2, g = e.top + e.height / 2, p = [
|
|
1413
|
-
{
|
|
1414
|
-
left: e.right + Ge,
|
|
1415
|
-
placement: "right",
|
|
1416
|
-
top: g - o / 2
|
|
1417
|
-
},
|
|
1418
|
-
{
|
|
1419
|
-
left: e.left - Ge - s,
|
|
1420
|
-
placement: "left",
|
|
1421
|
-
top: g - o / 2
|
|
1422
|
-
},
|
|
1423
|
-
{
|
|
1424
|
-
left: d - s / 2,
|
|
1425
|
-
placement: "bottom",
|
|
1426
|
-
top: e.bottom + Ge
|
|
1427
|
-
},
|
|
1428
|
-
{
|
|
1429
|
-
left: d - s / 2,
|
|
1430
|
-
placement: "top",
|
|
1431
|
-
top: e.top - Ge - o
|
|
1432
|
-
}
|
|
1433
|
-
].find(
|
|
1434
|
-
({ left: k, top: $ }) => k >= be && $ >= be && k + s <= i - be && $ + o <= n - be
|
|
1373
|
+
Ht,
|
|
1374
|
+
s * La
|
|
1435
1375
|
);
|
|
1436
|
-
return
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
be,
|
|
1440
|
-
i - be - s
|
|
1441
|
-
),
|
|
1442
|
-
placement: "bottom",
|
|
1443
|
-
top: Ht(
|
|
1444
|
-
e.bottom + Ge,
|
|
1445
|
-
be,
|
|
1446
|
-
n - be - o
|
|
1447
|
-
)
|
|
1448
|
-
};
|
|
1449
|
-
}, an = (e) => typeof e == "number" ? Number.isFinite(e) ? `${e}px` : void 0 : e?.trim() || void 0;
|
|
1450
|
-
class G extends Error {
|
|
1376
|
+
return Math.max(e, Math.min(t ?? i, s));
|
|
1377
|
+
}, Pa = (e) => typeof e == "number" ? Number.isFinite(e) ? `${e}px` : void 0 : e?.trim() || void 0;
|
|
1378
|
+
class J extends Error {
|
|
1451
1379
|
}
|
|
1452
|
-
const
|
|
1380
|
+
const ot = (e, t) => {
|
|
1453
1381
|
if (!(typeof e != "object" || e === null))
|
|
1454
1382
|
return e[t];
|
|
1455
|
-
},
|
|
1456
|
-
const t =
|
|
1457
|
-
return typeof t == "number" ? t :
|
|
1458
|
-
|
|
1383
|
+
}, Ba = (e) => {
|
|
1384
|
+
const t = ot(e, "status");
|
|
1385
|
+
return typeof t == "number" ? t : ot(
|
|
1386
|
+
ot(e, "response"),
|
|
1459
1387
|
"status"
|
|
1460
1388
|
);
|
|
1461
|
-
},
|
|
1462
|
-
const t =
|
|
1389
|
+
}, za = (e) => {
|
|
1390
|
+
const t = ot(e, "code"), s = Ba(e), i = e instanceof Error ? e.message : "", r = [t, i].filter((v) => typeof v == "string").join(" ").toLowerCase(), d = globalThis.navigator?.onLine === !1 || /network|fetch|timeout|offline|connection|网络|连接|超时/.test(r), p = typeof s == "number" && s >= 500 || /server|service|服务器|服务异常/.test(r);
|
|
1463
1391
|
return d ? {
|
|
1464
1392
|
actionLabel: "重新连接",
|
|
1465
1393
|
description: "请检查网络后再试。",
|
|
1466
1394
|
kind: "network",
|
|
1467
1395
|
label: "网络连接",
|
|
1468
1396
|
title: "网络连接不可用"
|
|
1469
|
-
} :
|
|
1397
|
+
} : p ? {
|
|
1470
1398
|
actionLabel: "重新加载",
|
|
1471
1399
|
description: "服务暂时未能响应,请稍后重试。",
|
|
1472
1400
|
kind: "service",
|
|
@@ -1479,13 +1407,13 @@ const ut = (e, t) => {
|
|
|
1479
1407
|
label: "加载异常",
|
|
1480
1408
|
title: "暂时无法加载对话"
|
|
1481
1409
|
};
|
|
1482
|
-
},
|
|
1410
|
+
}, St = (e) => {
|
|
1483
1411
|
try {
|
|
1484
1412
|
const t = e?.return?.();
|
|
1485
1413
|
if (!t) return;
|
|
1486
|
-
Promise.resolve(t).catch((
|
|
1414
|
+
Promise.resolve(t).catch((s) => {
|
|
1487
1415
|
console.error("[make-ai-assistant] transport iterator close failed", {
|
|
1488
|
-
errorType:
|
|
1416
|
+
errorType: s instanceof Error ? s.name : typeof s
|
|
1489
1417
|
});
|
|
1490
1418
|
});
|
|
1491
1419
|
} catch (t) {
|
|
@@ -1493,7 +1421,7 @@ const ut = (e, t) => {
|
|
|
1493
1421
|
errorType: t instanceof Error ? t.name : typeof t
|
|
1494
1422
|
});
|
|
1495
1423
|
}
|
|
1496
|
-
},
|
|
1424
|
+
}, Wa = async (e) => {
|
|
1497
1425
|
if (globalThis.navigator?.clipboard?.writeText) {
|
|
1498
1426
|
await globalThis.navigator.clipboard.writeText(e);
|
|
1499
1427
|
return;
|
|
@@ -1502,139 +1430,135 @@ const ut = (e, t) => {
|
|
|
1502
1430
|
throw new Error("Clipboard API is unavailable");
|
|
1503
1431
|
const t = document.createElement("textarea");
|
|
1504
1432
|
t.value = e, t.setAttribute("readonly", ""), t.style.position = "fixed", t.style.inset = "0 auto auto 0", t.style.opacity = "0", document.body.append(t), t.select();
|
|
1505
|
-
const
|
|
1506
|
-
if (t.remove(), !
|
|
1433
|
+
const s = document.execCommand("copy");
|
|
1434
|
+
if (t.remove(), !s)
|
|
1507
1435
|
throw new Error("Clipboard copy failed");
|
|
1508
|
-
},
|
|
1436
|
+
}, Kt = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1509
1437
|
/* @__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" }),
|
|
1510
1438
|
/* @__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" })
|
|
1511
|
-
] }),
|
|
1439
|
+
] }), Ua = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m6 6 12 12M18 6 6 18" }) }), Oa = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1512
1440
|
/* @__PURE__ */ a("path", { d: "M8 8h10v12H8z" }),
|
|
1513
1441
|
/* @__PURE__ */ a("path", { d: "M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
|
|
1514
|
-
] }),
|
|
1442
|
+
] }), qa = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1515
1443
|
/* @__PURE__ */ a("path", { d: "M20 11a8 8 0 0 0-14.7-4.4L4 8" }),
|
|
1516
1444
|
/* @__PURE__ */ a("path", { d: "M4 4v4h4" }),
|
|
1517
1445
|
/* @__PURE__ */ a("path", { d: "M4 13a8 8 0 0 0 14.7 4.4L20 16" }),
|
|
1518
1446
|
/* @__PURE__ */ a("path", { d: "M20 20v-4h-4" })
|
|
1519
|
-
] }),
|
|
1520
|
-
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "8" }),
|
|
1521
|
-
/* @__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" }),
|
|
1522
|
-
/* @__PURE__ */ a("path", { d: "M12 17h.01" })
|
|
1523
|
-
] }), un = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1447
|
+
] }), Ha = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1524
1448
|
/* @__PURE__ */ a("path", { d: "M12 4v11" }),
|
|
1525
1449
|
/* @__PURE__ */ a("path", { d: "m7 10 5 5 5-5" }),
|
|
1526
1450
|
/* @__PURE__ */ a("path", { d: "M5 20h14" })
|
|
1527
|
-
] }),
|
|
1451
|
+
] }), Ka = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }), Va = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1528
1452
|
/* @__PURE__ */ a("path", { d: "M10 6h9M10 12h9M10 18h9" }),
|
|
1529
1453
|
/* @__PURE__ */ a("path", { d: "M5 6h.01M5 12h.01M5 18h.01" })
|
|
1530
|
-
] }),
|
|
1454
|
+
] }), ja = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m7 10 5 5 5-5" }) }), $t = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1531
1455
|
/* @__PURE__ */ a("path", { d: "m4 4 17 8-17 8 3-8-3-8Z" }),
|
|
1532
1456
|
/* @__PURE__ */ a("path", { d: "M7 12h14" })
|
|
1533
|
-
] }),
|
|
1457
|
+
] }), Vt = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1534
1458
|
/* @__PURE__ */ a("path", { d: "M20 11a8 8 0 0 0-14.7-4.4L4 8" }),
|
|
1535
1459
|
/* @__PURE__ */ a("path", { d: "M4 4v4h4" }),
|
|
1536
1460
|
/* @__PURE__ */ a("path", { d: "M4 13a8 8 0 0 0 14.7 4.4L20 16" }),
|
|
1537
1461
|
/* @__PURE__ */ a("path", { d: "M20 20v-4h-4" })
|
|
1538
|
-
] }),
|
|
1462
|
+
] }), Xa = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
|
|
1539
1463
|
/* @__PURE__ */ a("circle", { cx: "12", cy: "12", r: "8" }),
|
|
1540
1464
|
/* @__PURE__ */ a("path", { d: "M12 8v4.5" }),
|
|
1541
1465
|
/* @__PURE__ */ a("path", { d: "M12 16h.01" })
|
|
1542
|
-
] }),
|
|
1466
|
+
] }), ct = ({ className: e = "" }) => /* @__PURE__ */ a("span", { className: `make-ai-assistant__avatar ${e}`.trim(), "aria-hidden": "true", children: /* @__PURE__ */ a(Kt, {}) }), Za = ({ src: e }) => e ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__user-avatar", "aria-hidden": "true", children: /* @__PURE__ */ a("img", { alt: "", src: e }) }) : null, Ga = ({
|
|
1543
1467
|
userAvatarUrl: e,
|
|
1544
1468
|
userName: t
|
|
1545
1469
|
}) => {
|
|
1546
|
-
const
|
|
1547
|
-
return !
|
|
1548
|
-
|
|
1549
|
-
/* @__PURE__ */ a(
|
|
1470
|
+
const s = t?.trim();
|
|
1471
|
+
return !s && !e ? null : /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-identity", children: [
|
|
1472
|
+
s ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__message-sender", children: s }) : null,
|
|
1473
|
+
/* @__PURE__ */ a(Za, { src: e })
|
|
1550
1474
|
] });
|
|
1551
|
-
},
|
|
1475
|
+
}, ht = (e) => {
|
|
1552
1476
|
const t = e.trim();
|
|
1553
1477
|
if (!(!t.startsWith("|") || !t.endsWith("|")))
|
|
1554
|
-
return t.slice(1, -1).split("|").map((
|
|
1555
|
-
},
|
|
1556
|
-
const
|
|
1557
|
-
if (!
|
|
1478
|
+
return t.slice(1, -1).split("|").map((s) => s.trim());
|
|
1479
|
+
}, Ya = (e) => e.length > 0 && e.every((t) => /^:?-{3,}:?$/.test(t)), Ja = (e, t) => {
|
|
1480
|
+
const s = ht(e[t] ?? ""), i = ht(e[t + 1] ?? "");
|
|
1481
|
+
if (!s || !i || s.length !== i.length || !Ya(i))
|
|
1558
1482
|
return;
|
|
1559
|
-
const
|
|
1483
|
+
const r = [];
|
|
1560
1484
|
let o = t + 2;
|
|
1561
1485
|
for (; o < e.length; ) {
|
|
1562
|
-
const d =
|
|
1563
|
-
if (!d || d.length !==
|
|
1564
|
-
|
|
1486
|
+
const d = ht(e[o] ?? "");
|
|
1487
|
+
if (!d || d.length !== s.length) break;
|
|
1488
|
+
r.push(d), o += 1;
|
|
1565
1489
|
}
|
|
1566
|
-
return { headers:
|
|
1567
|
-
},
|
|
1568
|
-
const t = [],
|
|
1490
|
+
return { headers: s, lastIndex: o - 1, rows: r };
|
|
1491
|
+
}, Qa = (e) => {
|
|
1492
|
+
const t = [], s = [], i = [], r = [], o = e.replace(/\r\n?/g, `
|
|
1569
1493
|
`).split(`
|
|
1570
1494
|
`), d = () => {
|
|
1571
|
-
const
|
|
1495
|
+
const h = s.join(`
|
|
1572
1496
|
`).trim();
|
|
1573
|
-
|
|
1574
|
-
},
|
|
1497
|
+
s.length = 0, h && t.push({ type: "paragraph", text: h });
|
|
1498
|
+
}, p = () => {
|
|
1575
1499
|
i.length && t.push({ type: "list", items: i.splice(0) });
|
|
1576
|
-
},
|
|
1577
|
-
const
|
|
1500
|
+
}, v = () => {
|
|
1501
|
+
const h = r.join(`
|
|
1578
1502
|
`).trim();
|
|
1579
|
-
|
|
1503
|
+
r.length = 0, h && t.push({ type: "pre", text: h });
|
|
1580
1504
|
};
|
|
1581
|
-
for (let
|
|
1582
|
-
const
|
|
1583
|
-
if (
|
|
1584
|
-
d(),
|
|
1505
|
+
for (let h = 0; h < o.length; h += 1) {
|
|
1506
|
+
const _ = o[h] ?? "", F = _.trim();
|
|
1507
|
+
if (!F) {
|
|
1508
|
+
d(), p(), v();
|
|
1585
1509
|
continue;
|
|
1586
1510
|
}
|
|
1587
|
-
const
|
|
1588
|
-
if (
|
|
1589
|
-
d(),
|
|
1511
|
+
const A = Ja(o, h);
|
|
1512
|
+
if (A) {
|
|
1513
|
+
d(), p(), v(), t.push({ headers: A.headers, rows: A.rows, type: "table" }), h = A.lastIndex;
|
|
1590
1514
|
continue;
|
|
1591
1515
|
}
|
|
1592
|
-
const
|
|
1593
|
-
if (
|
|
1594
|
-
d(),
|
|
1595
|
-
const
|
|
1596
|
-
|
|
1516
|
+
const X = /^(#{1,6})\s+(.+)$/.exec(F);
|
|
1517
|
+
if (X) {
|
|
1518
|
+
d(), p(), v();
|
|
1519
|
+
const B = (X[2] ?? "").replace(/\s+#+\s*$/, "").trim();
|
|
1520
|
+
B && t.push({
|
|
1597
1521
|
type: "heading",
|
|
1598
|
-
level:
|
|
1599
|
-
text:
|
|
1522
|
+
level: X[1]?.length,
|
|
1523
|
+
text: B
|
|
1600
1524
|
});
|
|
1601
1525
|
continue;
|
|
1602
1526
|
}
|
|
1603
|
-
if (/^\s*\|.+\|\s*$/.test(
|
|
1604
|
-
d(),
|
|
1527
|
+
if (/^\s*\|.+\|\s*$/.test(_)) {
|
|
1528
|
+
d(), p(), r.push(_.trim());
|
|
1605
1529
|
continue;
|
|
1606
1530
|
}
|
|
1607
|
-
const
|
|
1608
|
-
if (
|
|
1609
|
-
d(),
|
|
1531
|
+
const C = /^\s*[-*]\s+(.+)$/.exec(_);
|
|
1532
|
+
if (C) {
|
|
1533
|
+
d(), v(), i.push(C[1]?.trim() ?? "");
|
|
1610
1534
|
continue;
|
|
1611
1535
|
}
|
|
1612
|
-
|
|
1536
|
+
p(), v(), s.push(F);
|
|
1613
1537
|
}
|
|
1614
|
-
return d(),
|
|
1615
|
-
},
|
|
1616
|
-
const t = [],
|
|
1538
|
+
return d(), p(), v(), t;
|
|
1539
|
+
}, Xe = (e) => {
|
|
1540
|
+
const t = [], s = /(\*\*[^*]+\*\*|`[^`]+`)/g;
|
|
1617
1541
|
let i = 0;
|
|
1618
|
-
for (const
|
|
1619
|
-
const o =
|
|
1542
|
+
for (const r of e.matchAll(s)) {
|
|
1543
|
+
const o = r[0], d = r.index ?? 0;
|
|
1620
1544
|
d > i && t.push(e.slice(i, d)), o.startsWith("**") ? t.push(/* @__PURE__ */ a("strong", { children: o.slice(2, -2) }, `${d}-strong`)) : t.push(/* @__PURE__ */ a("code", { children: o.slice(1, -1) }, `${d}-code`)), i = d + o.length;
|
|
1621
1545
|
}
|
|
1622
1546
|
return i < e.length && t.push(e.slice(i)), t;
|
|
1623
|
-
},
|
|
1624
|
-
const t =
|
|
1625
|
-
return t.length ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble make-ai-assistant__assistant-text", children: t.map((
|
|
1626
|
-
if (
|
|
1627
|
-
const
|
|
1547
|
+
}, Dt = ({ content: e }) => {
|
|
1548
|
+
const t = Qa(e);
|
|
1549
|
+
return t.length ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble make-ai-assistant__assistant-text", children: t.map((s, i) => {
|
|
1550
|
+
if (s.type === "heading") {
|
|
1551
|
+
const r = s.level <= 2 ? "h3" : "h4";
|
|
1628
1552
|
return /* @__PURE__ */ a(
|
|
1629
|
-
|
|
1553
|
+
r,
|
|
1630
1554
|
{
|
|
1631
|
-
className: `make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${
|
|
1632
|
-
children:
|
|
1555
|
+
className: `make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${s.level}`,
|
|
1556
|
+
children: Xe(s.text)
|
|
1633
1557
|
},
|
|
1634
1558
|
`${i}-heading`
|
|
1635
1559
|
);
|
|
1636
1560
|
}
|
|
1637
|
-
return
|
|
1561
|
+
return s.type === "paragraph" ? /* @__PURE__ */ a("p", { children: Xe(s.text) }, `${i}-paragraph`) : s.type === "pre" ? /* @__PURE__ */ a("pre", { children: /* @__PURE__ */ a("code", { children: s.text }) }, `${i}-pre`) : s.type === "table" ? /* @__PURE__ */ a(
|
|
1638
1562
|
"div",
|
|
1639
1563
|
{
|
|
1640
1564
|
"aria-label": "表格内容,可横向滚动",
|
|
@@ -1642,47 +1566,47 @@ const ut = (e, t) => {
|
|
|
1642
1566
|
role: "region",
|
|
1643
1567
|
tabIndex: 0,
|
|
1644
1568
|
children: /* @__PURE__ */ c("table", { className: "make-ai-assistant__markdown-table", children: [
|
|
1645
|
-
/* @__PURE__ */ a("thead", { children: /* @__PURE__ */ a("tr", { children:
|
|
1646
|
-
/* @__PURE__ */ a("tbody", { children:
|
|
1569
|
+
/* @__PURE__ */ a("thead", { children: /* @__PURE__ */ a("tr", { children: s.headers.map((r, o) => /* @__PURE__ */ a("th", { scope: "col", children: Xe(r) }, `${o}-${r}`)) }) }),
|
|
1570
|
+
/* @__PURE__ */ a("tbody", { children: s.rows.map((r, o) => /* @__PURE__ */ a("tr", { children: r.map((d, p) => /* @__PURE__ */ a("td", { children: Xe(d) }, `${p}-${d}`)) }, `${o}-${r.join("|")}`)) })
|
|
1647
1571
|
] })
|
|
1648
1572
|
},
|
|
1649
1573
|
`${i}-table`
|
|
1650
|
-
) : /* @__PURE__ */ a("ul", { children:
|
|
1574
|
+
) : /* @__PURE__ */ a("ul", { children: s.items.map((r, o) => /* @__PURE__ */ a("li", { children: Xe(r) }, `${o}-${r}`)) }, `${i}-list`);
|
|
1651
1575
|
}) }) : null;
|
|
1652
|
-
},
|
|
1653
|
-
/* @__PURE__ */ a(
|
|
1576
|
+
}, jt = ({ assistantName: e }) => /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-identity", children: [
|
|
1577
|
+
/* @__PURE__ */ a(ct, { className: "make-ai-assistant__avatar--message" }),
|
|
1654
1578
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-sender", children: e })
|
|
1655
|
-
] }),
|
|
1579
|
+
] }), Xt = (e) => {
|
|
1656
1580
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
1657
|
-
const
|
|
1658
|
-
if (
|
|
1659
|
-
return
|
|
1581
|
+
const s = e.messages[t];
|
|
1582
|
+
if (s.role === "assistant" && s.status === "streaming")
|
|
1583
|
+
return s.id;
|
|
1660
1584
|
}
|
|
1661
|
-
},
|
|
1585
|
+
}, es = (e) => {
|
|
1662
1586
|
for (let t = e.messages.length - 1; t >= 0; t -= 1)
|
|
1663
1587
|
if (e.messages[t].role === "user") return t;
|
|
1664
1588
|
return -1;
|
|
1665
|
-
},
|
|
1666
|
-
const t =
|
|
1589
|
+
}, Zt = (e) => {
|
|
1590
|
+
const t = es(e);
|
|
1667
1591
|
if (!(t < 0))
|
|
1668
|
-
for (let
|
|
1669
|
-
const i = e.messages[
|
|
1592
|
+
for (let s = e.messages.length - 1; s > t; s -= 1) {
|
|
1593
|
+
const i = e.messages[s];
|
|
1670
1594
|
if (i.role === "assistant") return i.id;
|
|
1671
1595
|
}
|
|
1672
|
-
},
|
|
1596
|
+
}, ts = (e) => {
|
|
1673
1597
|
if (e.status === "idle")
|
|
1674
1598
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
1675
|
-
const
|
|
1676
|
-
if (
|
|
1677
|
-
return
|
|
1599
|
+
const s = e.messages[t];
|
|
1600
|
+
if (s.role === "assistant" && s.status === "complete")
|
|
1601
|
+
return s.id;
|
|
1678
1602
|
}
|
|
1679
|
-
},
|
|
1603
|
+
}, as = (e) => {
|
|
1680
1604
|
for (let t = e.messages.length - 1; t >= 0; t -= 1) {
|
|
1681
|
-
const
|
|
1682
|
-
if (
|
|
1605
|
+
const s = e.messages[t];
|
|
1606
|
+
if (s.role === "user") return s;
|
|
1683
1607
|
}
|
|
1684
|
-
},
|
|
1685
|
-
const
|
|
1608
|
+
}, ss = (e, t) => {
|
|
1609
|
+
const s = e.messages.findIndex(
|
|
1686
1610
|
(i) => i.id === t && i.role === "user"
|
|
1687
1611
|
);
|
|
1688
1612
|
return {
|
|
@@ -1690,11 +1614,11 @@ const ut = (e, t) => {
|
|
|
1690
1614
|
error: void 0,
|
|
1691
1615
|
progress: void 0,
|
|
1692
1616
|
status: "streaming",
|
|
1693
|
-
messages:
|
|
1617
|
+
messages: s < 0 ? e.messages : e.messages.slice(0, s + 1)
|
|
1694
1618
|
};
|
|
1695
|
-
},
|
|
1619
|
+
}, ns = (e) => e.scrollHeight - e.scrollTop - e.clientHeight <= 48, Lt = (e = "smooth") => globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : e, pt = (e, t) => {
|
|
1696
1620
|
typeof e.scrollTo == "function" ? e.scrollTo({ top: e.scrollHeight, behavior: t }) : e.scrollTop = e.scrollHeight;
|
|
1697
|
-
},
|
|
1621
|
+
}, Gt = ({
|
|
1698
1622
|
error: e,
|
|
1699
1623
|
onRetry: t
|
|
1700
1624
|
}) => /* @__PURE__ */ c(
|
|
@@ -1705,7 +1629,7 @@ const ut = (e, t) => {
|
|
|
1705
1629
|
role: "alert",
|
|
1706
1630
|
children: [
|
|
1707
1631
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__message-status-header", children: [
|
|
1708
|
-
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-icon", "aria-hidden": "true", children: /* @__PURE__ */ a(
|
|
1632
|
+
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-icon", "aria-hidden": "true", children: /* @__PURE__ */ a(Xa, {}) }),
|
|
1709
1633
|
/* @__PURE__ */ a("strong", { children: "请求未完成" })
|
|
1710
1634
|
] }),
|
|
1711
1635
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__message-status-message", children: e.message }),
|
|
@@ -1716,24 +1640,24 @@ const ut = (e, t) => {
|
|
|
1716
1640
|
type: "button",
|
|
1717
1641
|
onClick: t,
|
|
1718
1642
|
children: [
|
|
1719
|
-
/* @__PURE__ */ a(
|
|
1643
|
+
/* @__PURE__ */ a(Vt, {}),
|
|
1720
1644
|
"重新发送"
|
|
1721
1645
|
]
|
|
1722
1646
|
}
|
|
1723
1647
|
) : null
|
|
1724
1648
|
]
|
|
1725
1649
|
}
|
|
1726
|
-
),
|
|
1650
|
+
), rs = ({
|
|
1727
1651
|
error: e,
|
|
1728
1652
|
onRetry: t
|
|
1729
1653
|
}) => {
|
|
1730
|
-
const
|
|
1654
|
+
const s = za(e);
|
|
1731
1655
|
return /* @__PURE__ */ c(
|
|
1732
1656
|
"section",
|
|
1733
1657
|
{
|
|
1734
1658
|
"aria-live": "assertive",
|
|
1735
1659
|
className: "make-ai-assistant__load-failure",
|
|
1736
|
-
"data-load-failure-kind":
|
|
1660
|
+
"data-load-failure-kind": s.kind,
|
|
1737
1661
|
role: "alert",
|
|
1738
1662
|
children: [
|
|
1739
1663
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__load-failure-icon", "aria-hidden": "true", children: /* @__PURE__ */ c("svg", { viewBox: "0 0 24 24", children: [
|
|
@@ -1741,9 +1665,9 @@ const ut = (e, t) => {
|
|
|
1741
1665
|
/* @__PURE__ */ a("path", { d: "m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6" })
|
|
1742
1666
|
] }) }),
|
|
1743
1667
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__load-failure-copy", children: [
|
|
1744
|
-
/* @__PURE__ */ a("span", { className: "make-ai-assistant__load-failure-label", children:
|
|
1745
|
-
/* @__PURE__ */ a("h3", { children:
|
|
1746
|
-
/* @__PURE__ */ a("p", { children:
|
|
1668
|
+
/* @__PURE__ */ a("span", { className: "make-ai-assistant__load-failure-label", children: s.label }),
|
|
1669
|
+
/* @__PURE__ */ a("h3", { children: s.title }),
|
|
1670
|
+
/* @__PURE__ */ a("p", { children: s.description })
|
|
1747
1671
|
] }),
|
|
1748
1672
|
/* @__PURE__ */ c(
|
|
1749
1673
|
"button",
|
|
@@ -1752,48 +1676,48 @@ const ut = (e, t) => {
|
|
|
1752
1676
|
type: "button",
|
|
1753
1677
|
onClick: t,
|
|
1754
1678
|
children: [
|
|
1755
|
-
/* @__PURE__ */ a(
|
|
1756
|
-
|
|
1679
|
+
/* @__PURE__ */ a(Vt, {}),
|
|
1680
|
+
s.actionLabel
|
|
1757
1681
|
]
|
|
1758
1682
|
}
|
|
1759
1683
|
)
|
|
1760
1684
|
]
|
|
1761
1685
|
}
|
|
1762
1686
|
);
|
|
1763
|
-
},
|
|
1687
|
+
}, Yt = ({
|
|
1764
1688
|
active: e,
|
|
1765
1689
|
steps: t
|
|
1766
1690
|
}) => {
|
|
1767
1691
|
if (!e || !t?.length) return null;
|
|
1768
|
-
const
|
|
1692
|
+
const s = t[t.length - 1] ?? "处理中";
|
|
1769
1693
|
return /* @__PURE__ */ c("details", { className: "make-ai-assistant__process", open: !0, children: [
|
|
1770
1694
|
/* @__PURE__ */ c("summary", { children: [
|
|
1771
1695
|
/* @__PURE__ */ c("span", { className: "make-ai-assistant__progress", role: "status", children: [
|
|
1772
1696
|
/* @__PURE__ */ a("span", { "aria-hidden": "true" }),
|
|
1773
|
-
/* @__PURE__ */ a("span", { children:
|
|
1697
|
+
/* @__PURE__ */ a("span", { children: s })
|
|
1774
1698
|
] }),
|
|
1775
1699
|
/* @__PURE__ */ c("span", { className: "make-ai-assistant__process-count", children: [
|
|
1776
1700
|
t.length,
|
|
1777
1701
|
" 步"
|
|
1778
1702
|
] })
|
|
1779
1703
|
] }),
|
|
1780
|
-
/* @__PURE__ */ a("ol", { children: t.map((i,
|
|
1704
|
+
/* @__PURE__ */ a("ol", { children: t.map((i, r) => /* @__PURE__ */ c(
|
|
1781
1705
|
"li",
|
|
1782
1706
|
{
|
|
1783
|
-
"data-step-active":
|
|
1707
|
+
"data-step-active": r === t.length - 1 ? !0 : void 0,
|
|
1784
1708
|
children: [
|
|
1785
1709
|
/* @__PURE__ */ a("span", { "aria-hidden": "true" }),
|
|
1786
1710
|
/* @__PURE__ */ a("span", { children: i })
|
|
1787
1711
|
]
|
|
1788
1712
|
},
|
|
1789
|
-
`${
|
|
1713
|
+
`${r}-${i}`
|
|
1790
1714
|
)) })
|
|
1791
1715
|
] });
|
|
1792
|
-
},
|
|
1716
|
+
}, is = ({
|
|
1793
1717
|
copyFeedback: e,
|
|
1794
1718
|
onCopy: t,
|
|
1795
|
-
onRegenerate:
|
|
1796
|
-
}) => !t && !
|
|
1719
|
+
onRegenerate: s
|
|
1720
|
+
}) => !t && !s ? null : /* @__PURE__ */ c("div", { className: "make-ai-assistant__reply-actions", "aria-label": "回复操作", children: [
|
|
1797
1721
|
t ? /* @__PURE__ */ a(
|
|
1798
1722
|
"button",
|
|
1799
1723
|
{
|
|
@@ -1802,18 +1726,18 @@ const ut = (e, t) => {
|
|
|
1802
1726
|
"data-tooltip": "复制",
|
|
1803
1727
|
type: "button",
|
|
1804
1728
|
onClick: t,
|
|
1805
|
-
children: /* @__PURE__ */ a(
|
|
1729
|
+
children: /* @__PURE__ */ a(Oa, {})
|
|
1806
1730
|
}
|
|
1807
1731
|
) : null,
|
|
1808
|
-
|
|
1732
|
+
s ? /* @__PURE__ */ a(
|
|
1809
1733
|
"button",
|
|
1810
1734
|
{
|
|
1811
1735
|
"aria-label": "重新生成",
|
|
1812
1736
|
className: "make-ai-assistant__reply-action make-ai-assistant__reply-regenerate",
|
|
1813
1737
|
"data-tooltip": "重新生成",
|
|
1814
1738
|
type: "button",
|
|
1815
|
-
onClick:
|
|
1816
|
-
children: /* @__PURE__ */ a(
|
|
1739
|
+
onClick: s,
|
|
1740
|
+
children: /* @__PURE__ */ a(qa, {})
|
|
1817
1741
|
}
|
|
1818
1742
|
) : null,
|
|
1819
1743
|
e ? /* @__PURE__ */ a(
|
|
@@ -1825,93 +1749,93 @@ const ut = (e, t) => {
|
|
|
1825
1749
|
children: e.message
|
|
1826
1750
|
}
|
|
1827
1751
|
) : null
|
|
1828
|
-
] }),
|
|
1752
|
+
] }), xt = ({
|
|
1829
1753
|
assistantName: e,
|
|
1830
1754
|
error: t,
|
|
1831
|
-
onRetry:
|
|
1755
|
+
onRetry: s,
|
|
1832
1756
|
progress: i
|
|
1833
1757
|
}) => {
|
|
1834
|
-
const
|
|
1758
|
+
const r = t ? "error" : "progress";
|
|
1835
1759
|
return t?.message ?? i?.message ? /* @__PURE__ */ a(
|
|
1836
1760
|
"article",
|
|
1837
1761
|
{
|
|
1838
|
-
"aria-label": `${e}的${
|
|
1839
|
-
className: `make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${
|
|
1762
|
+
"aria-label": `${e}的${r === "error" ? "错误消息" : "状态消息"}`,
|
|
1763
|
+
className: `make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${r}`,
|
|
1840
1764
|
"data-message-role": "assistant",
|
|
1841
|
-
"data-message-state":
|
|
1765
|
+
"data-message-state": r,
|
|
1842
1766
|
children: /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-turn", children: [
|
|
1843
|
-
/* @__PURE__ */ a(
|
|
1844
|
-
/* @__PURE__ */ a("div", { className: "make-ai-assistant__message-stack", children: t ? /* @__PURE__ */ a(
|
|
1767
|
+
/* @__PURE__ */ a(jt, { assistantName: e }),
|
|
1768
|
+
/* @__PURE__ */ a("div", { className: "make-ai-assistant__message-stack", children: t ? /* @__PURE__ */ a(Gt, { error: t, onRetry: s }) : /* @__PURE__ */ a(Yt, { active: !0, steps: i?.steps }) })
|
|
1845
1769
|
] })
|
|
1846
1770
|
}
|
|
1847
1771
|
) : null;
|
|
1848
|
-
},
|
|
1849
|
-
const
|
|
1850
|
-
let
|
|
1772
|
+
}, os = (e, t, s, i, r, o, d, p, v, h, _, F, A, X, C, B) => {
|
|
1773
|
+
const g = Zt(e), L = Xt(e), U = ts(e);
|
|
1774
|
+
let f;
|
|
1851
1775
|
return e.messages.map((l) => {
|
|
1852
1776
|
if (l.intermediate) return /* @__PURE__ */ c("details", { className: "make-ai-assistant__process", children: [
|
|
1853
1777
|
/* @__PURE__ */ a("summary", { children: "处理过程" }),
|
|
1854
|
-
/* @__PURE__ */ a(
|
|
1778
|
+
/* @__PURE__ */ a(Dt, { content: l.content })
|
|
1855
1779
|
] }, l.id);
|
|
1856
|
-
const
|
|
1857
|
-
|
|
1858
|
-
const
|
|
1780
|
+
const S = l.role === "assistant", T = f;
|
|
1781
|
+
S || (f = l);
|
|
1782
|
+
const te = l.id === L, R = l.id === g ? e.error : void 0, Z = l.error ?? R, G = !S && !!(v?.trim() || h), P = S ? d : v?.trim() || "用户", Q = S && l.status === "complete" && !Z && (l.content.trim() || l.id === U);
|
|
1859
1783
|
return /* @__PURE__ */ a(
|
|
1860
1784
|
"article",
|
|
1861
1785
|
{
|
|
1862
|
-
"aria-label": `${
|
|
1786
|
+
"aria-label": `${P}的消息`,
|
|
1863
1787
|
className: `make-ai-assistant__message make-ai-assistant__message--${l.role}`,
|
|
1864
1788
|
"data-message-role": l.role,
|
|
1865
|
-
"data-message-state":
|
|
1789
|
+
"data-message-state": Z ? "error" : void 0,
|
|
1866
1790
|
"data-message-status": l.status,
|
|
1867
|
-
"data-message-has-identity":
|
|
1791
|
+
"data-message-has-identity": S || G ? !0 : void 0,
|
|
1868
1792
|
children: /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-turn", children: [
|
|
1869
|
-
|
|
1793
|
+
S ? /* @__PURE__ */ a(jt, { assistantName: d }) : G ? /* @__PURE__ */ a(Ga, { userAvatarUrl: h, userName: v }) : null,
|
|
1870
1794
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__message-stack", children: [
|
|
1871
|
-
|
|
1872
|
-
l.content ?
|
|
1795
|
+
S && l.responseId && e.responses?.[l.responseId]?.status === "cancelled" ? /* @__PURE__ */ a("p", { className: "make-ai-assistant__response-status", role: "status", children: "已停止生成" }) : null,
|
|
1796
|
+
l.content ? S ? /* @__PURE__ */ a(Dt, { content: l.content }) : /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble", children: l.content }) : l.status === "streaming" ? /* @__PURE__ */ c("div", { className: "make-ai-assistant__typing", "aria-label": `${d}正在思考`, children: [
|
|
1873
1797
|
/* @__PURE__ */ a("span", {}),
|
|
1874
1798
|
/* @__PURE__ */ a("span", {}),
|
|
1875
1799
|
/* @__PURE__ */ a("span", {})
|
|
1876
1800
|
] }) : null,
|
|
1877
|
-
|
|
1878
|
-
|
|
1801
|
+
S ? /* @__PURE__ */ a(
|
|
1802
|
+
Yt,
|
|
1879
1803
|
{
|
|
1880
|
-
active:
|
|
1804
|
+
active: te && e.status === "streaming",
|
|
1881
1805
|
steps: l.progressSteps
|
|
1882
1806
|
}
|
|
1883
1807
|
) : null,
|
|
1884
|
-
|
|
1885
|
-
|
|
1808
|
+
Z ? /* @__PURE__ */ a(
|
|
1809
|
+
Gt,
|
|
1886
1810
|
{
|
|
1887
|
-
error:
|
|
1888
|
-
onRetry:
|
|
1811
|
+
error: Z,
|
|
1812
|
+
onRetry: R ? p : void 0
|
|
1889
1813
|
}
|
|
1890
1814
|
) : null,
|
|
1891
|
-
l.artifacts.map((
|
|
1892
|
-
|
|
1815
|
+
l.artifacts.map((fe) => /* @__PURE__ */ a(
|
|
1816
|
+
ra,
|
|
1893
1817
|
{
|
|
1894
|
-
artifact:
|
|
1818
|
+
artifact: fe,
|
|
1895
1819
|
context: t,
|
|
1896
|
-
onAction:
|
|
1820
|
+
onAction: r,
|
|
1897
1821
|
onActionError: o,
|
|
1898
|
-
registry:
|
|
1822
|
+
registry: s,
|
|
1899
1823
|
theme: i
|
|
1900
1824
|
},
|
|
1901
|
-
|
|
1825
|
+
fe.id
|
|
1902
1826
|
)),
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1827
|
+
C && B && e.threadId ? /* @__PURE__ */ a(wa, { message: l, context: t, transport: B, chatId: e.threadId }) : null,
|
|
1828
|
+
C && B?.features?.feedback ? /* @__PURE__ */ a(ka, { message: l, manager: C }) : null,
|
|
1829
|
+
Q ? /* @__PURE__ */ a(
|
|
1830
|
+
is,
|
|
1907
1831
|
{
|
|
1908
|
-
copyFeedback:
|
|
1909
|
-
message:
|
|
1910
|
-
status:
|
|
1832
|
+
copyFeedback: _?.messageId === l.id ? {
|
|
1833
|
+
message: _.message,
|
|
1834
|
+
status: _.status
|
|
1911
1835
|
} : void 0,
|
|
1912
|
-
onCopy: l.content.trim() ? () =>
|
|
1913
|
-
onRegenerate:
|
|
1914
|
-
userMessage:
|
|
1836
|
+
onCopy: l.content.trim() ? () => A(l.id, l.content) : void 0,
|
|
1837
|
+
onRegenerate: F && l.id === U && T ? () => X({
|
|
1838
|
+
userMessage: T,
|
|
1915
1839
|
assistantMessage: l
|
|
1916
1840
|
}) : void 0
|
|
1917
1841
|
}
|
|
@@ -1923,449 +1847,373 @@ const ut = (e, t) => {
|
|
|
1923
1847
|
);
|
|
1924
1848
|
});
|
|
1925
1849
|
};
|
|
1926
|
-
function
|
|
1850
|
+
function Jt({
|
|
1927
1851
|
assistantName: e = "AI 助手",
|
|
1928
1852
|
brandName: t,
|
|
1929
|
-
context:
|
|
1853
|
+
context: s,
|
|
1930
1854
|
onAction: i,
|
|
1931
|
-
onActionError:
|
|
1855
|
+
onActionError: r,
|
|
1932
1856
|
onClose: o,
|
|
1933
1857
|
onNewConversation: d,
|
|
1934
|
-
headerHeight:
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
userName: ee,
|
|
1944
|
-
visible: j
|
|
1858
|
+
headerHeight: p,
|
|
1859
|
+
registry: v,
|
|
1860
|
+
suggestions: h,
|
|
1861
|
+
title: _,
|
|
1862
|
+
theme: F,
|
|
1863
|
+
transport: A,
|
|
1864
|
+
userAvatarUrl: X,
|
|
1865
|
+
userName: C,
|
|
1866
|
+
visible: B
|
|
1945
1867
|
}) {
|
|
1946
|
-
const
|
|
1947
|
-
...
|
|
1948
|
-
...
|
|
1949
|
-
} : void 0, [
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
}, [
|
|
1953
|
-
const [
|
|
1954
|
-
|
|
1955
|
-
const [
|
|
1956
|
-
() =>
|
|
1957
|
-
[
|
|
1958
|
-
),
|
|
1959
|
-
() =>
|
|
1960
|
-
[
|
|
1961
|
-
),
|
|
1962
|
-
const
|
|
1963
|
-
|
|
1964
|
-
const F = tn(
|
|
1965
|
-
m.getBoundingClientRect(),
|
|
1966
|
-
P.getBoundingClientRect(),
|
|
1967
|
-
window.innerHeight,
|
|
1968
|
-
window.innerWidth
|
|
1969
|
-
);
|
|
1970
|
-
tt(
|
|
1971
|
-
(U) => U?.left === F.left && U.top === F.top && U.placement === F.placement ? U : F
|
|
1972
|
-
);
|
|
1973
|
-
}, Ve = () => et(!0), ue = () => et(!1), Be = Re ? {
|
|
1974
|
-
left: `${Re.left}px`,
|
|
1975
|
-
top: `${Re.top}px`
|
|
1976
|
-
} : void 0;
|
|
1977
|
-
bt(() => {
|
|
1978
|
-
if (!ve || !T) {
|
|
1979
|
-
tt(void 0);
|
|
1980
|
-
return;
|
|
1981
|
-
}
|
|
1982
|
-
Ke();
|
|
1983
|
-
}, [ve, T]), ae(() => {
|
|
1984
|
-
if (!ve || !T) return;
|
|
1985
|
-
const m = () => Ke();
|
|
1986
|
-
return window.addEventListener("resize", m), window.addEventListener("scroll", m, !0), () => {
|
|
1987
|
-
window.removeEventListener("resize", m), window.removeEventListener("scroll", m, !0);
|
|
1988
|
-
};
|
|
1989
|
-
}, [ve, T]);
|
|
1990
|
-
const _e = (m) => {
|
|
1991
|
-
const P = Ee.current, F = Se.current?.iterator;
|
|
1992
|
-
return !P && !F ? !1 : (xe.current += 1, Ee.current = void 0, Se.current = void 0, console.info("[make-ai-assistant] local run cancellation requested", { reason: m }), P?.abort(), Ot(F), !0);
|
|
1868
|
+
const g = va(s, A), L = Na(s, A, g), U = qt(t, _), f = Pa(p), l = ft(F), S = l || f ? {
|
|
1869
|
+
...l,
|
|
1870
|
+
...f ? { "--make-ai-internal-header-height": f } : {}
|
|
1871
|
+
} : void 0, [T, te] = E(""), [R, Z] = E(!1), [G, P] = E(!1), Q = g.enabled ? A.scopeKey?.(s) ?? s.app.id : "";
|
|
1872
|
+
Ft(() => {
|
|
1873
|
+
g.enabled && te("");
|
|
1874
|
+
}, [Q, g.enabled]);
|
|
1875
|
+
const [fe, ve] = E(pe), z = g.enabled ? g.state : fe, ne = g.enabled ? g.setState : ve, ce = N(z);
|
|
1876
|
+
ce.current = z;
|
|
1877
|
+
const [K, x] = E(void 0), [w, O] = E(void 0), [ae, ge] = E(0), [Ee, $] = E(() => A.loadConversation ? "loading" : "ready"), ee = g.enabled ? g.loading && !z.messages.length ? "loading" : "ready" : Ee, [le, de] = E(void 0), [ze, Y] = E(!1), re = N(void 0), me = N(void 0), we = N(0), We = N(null), Ie = N(null), Ze = N(null), Ue = N(null), Oe = N(null), Ge = N(null), ye = N(!0), Ye = N(s.app.id), Je = N(B), Qe = aa(), et = Ct(
|
|
1878
|
+
() => v ?? fa(),
|
|
1879
|
+
[v]
|
|
1880
|
+
), Te = Ct(
|
|
1881
|
+
() => $a(h),
|
|
1882
|
+
[h]
|
|
1883
|
+
), n = (u) => {
|
|
1884
|
+
const H = re.current, j = me.current?.iterator;
|
|
1885
|
+
return !H && !j ? !1 : (we.current += 1, re.current = void 0, me.current = void 0, console.info("[make-ai-assistant] local run cancellation requested", { reason: u }), H?.abort(), St(j), !0);
|
|
1993
1886
|
};
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
}, []),
|
|
1997
|
-
if (
|
|
1998
|
-
const
|
|
1999
|
-
if (
|
|
2000
|
-
|
|
1887
|
+
oe(() => () => {
|
|
1888
|
+
n("unmount");
|
|
1889
|
+
}, []), oe(() => {
|
|
1890
|
+
if (g.enabled) return;
|
|
1891
|
+
const u = A.loadConversation, H = Ye.current !== s.app.id;
|
|
1892
|
+
if (Ye.current = s.app.id, n("reinitialize"), H && (te(""), ye.current = !0), x(void 0), O(void 0), Y(!1), ne(pe()), !u) {
|
|
1893
|
+
de(void 0), $("ready");
|
|
2001
1894
|
return;
|
|
2002
1895
|
}
|
|
2003
|
-
const
|
|
2004
|
-
return
|
|
2005
|
-
appId:
|
|
2006
|
-
}),
|
|
2007
|
-
|
|
2008
|
-
appId:
|
|
2009
|
-
messageCount:
|
|
1896
|
+
const j = new AbortController();
|
|
1897
|
+
return de(void 0), $("loading"), console.info("[make-ai-assistant] conversation load start", {
|
|
1898
|
+
appId: s.app.id
|
|
1899
|
+
}), u.call(A, s, { signal: j.signal }).then((se) => {
|
|
1900
|
+
j.signal.aborted || (ne(pe(se)), $("ready"), console.info("[make-ai-assistant] conversation load success", {
|
|
1901
|
+
appId: s.app.id,
|
|
1902
|
+
messageCount: se.messages.length
|
|
2010
1903
|
}));
|
|
2011
|
-
}).catch((
|
|
2012
|
-
|
|
2013
|
-
appId:
|
|
2014
|
-
errorType:
|
|
2015
|
-
}),
|
|
2016
|
-
}), () =>
|
|
2017
|
-
}, [
|
|
2018
|
-
const
|
|
2019
|
-
if (!
|
|
2020
|
-
|
|
2021
|
-
const
|
|
2022
|
-
if (!
|
|
2023
|
-
const
|
|
2024
|
-
|
|
1904
|
+
}).catch((se) => {
|
|
1905
|
+
j.signal.aborted || (console.error("[make-ai-assistant] conversation load failed", {
|
|
1906
|
+
appId: s.app.id,
|
|
1907
|
+
errorType: se instanceof Error ? se.name : typeof se
|
|
1908
|
+
}), de(se), $("error"));
|
|
1909
|
+
}), () => j.abort();
|
|
1910
|
+
}, [s.app.id, ae, A, g.enabled]), oe(() => {
|
|
1911
|
+
const u = Ie.current;
|
|
1912
|
+
if (!u || !ye.current) return;
|
|
1913
|
+
Y(!1);
|
|
1914
|
+
const H = requestAnimationFrame(() => {
|
|
1915
|
+
if (!ye.current) return;
|
|
1916
|
+
const j = z.status === "streaming" || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
|
|
1917
|
+
pt(u, j);
|
|
2025
1918
|
});
|
|
2026
|
-
return () => cancelAnimationFrame(
|
|
2027
|
-
}, [
|
|
2028
|
-
|
|
2029
|
-
}, [
|
|
2030
|
-
const
|
|
2031
|
-
if (
|
|
2032
|
-
const
|
|
2033
|
-
const
|
|
2034
|
-
if (
|
|
2035
|
-
|
|
2036
|
-
const
|
|
2037
|
-
|
|
2038
|
-
} else
|
|
2039
|
-
const
|
|
2040
|
-
(
|
|
1919
|
+
return () => cancelAnimationFrame(H);
|
|
1920
|
+
}, [z.messages, z.progress, z.status]), oe(() => {
|
|
1921
|
+
B || (Z(!1), P(!1));
|
|
1922
|
+
}, [B]), oe(() => {
|
|
1923
|
+
const u = B && !Je.current;
|
|
1924
|
+
if (Je.current = B, !u) return;
|
|
1925
|
+
const H = requestAnimationFrame(() => {
|
|
1926
|
+
const j = Ie.current;
|
|
1927
|
+
if (j && ye.current) {
|
|
1928
|
+
Y(!1);
|
|
1929
|
+
const He = ce.current.status === "streaming" ? "auto" : Lt();
|
|
1930
|
+
pt(j, He);
|
|
1931
|
+
} else j && Y(ce.current.messages.length > 0);
|
|
1932
|
+
const se = Ze.current;
|
|
1933
|
+
(se && !se.disabled ? se : Ge.current ?? We.current?.querySelector("button:not(:disabled)"))?.focus();
|
|
2041
1934
|
});
|
|
2042
|
-
return () => cancelAnimationFrame(
|
|
2043
|
-
}, [
|
|
2044
|
-
const
|
|
2045
|
-
const
|
|
2046
|
-
if (!
|
|
2047
|
-
const
|
|
2048
|
-
|
|
2049
|
-
},
|
|
2050
|
-
const
|
|
2051
|
-
if (!
|
|
2052
|
-
|
|
2053
|
-
const
|
|
2054
|
-
|
|
2055
|
-
},
|
|
2056
|
-
const
|
|
2057
|
-
if (!
|
|
2058
|
-
if (
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
) >
|
|
2062
|
-
|
|
2063
|
-
`输入内容过长,请控制在 ${
|
|
1935
|
+
return () => cancelAnimationFrame(H);
|
|
1936
|
+
}, [B]);
|
|
1937
|
+
const m = () => {
|
|
1938
|
+
const u = Ie.current;
|
|
1939
|
+
if (!u) return;
|
|
1940
|
+
const H = ns(u);
|
|
1941
|
+
ye.current = H, Y(!H && ce.current.messages.length > 0);
|
|
1942
|
+
}, y = () => {
|
|
1943
|
+
const u = Ie.current;
|
|
1944
|
+
if (!u) return;
|
|
1945
|
+
ye.current = !0, Y(!1);
|
|
1946
|
+
const H = Lt();
|
|
1947
|
+
pt(u, H);
|
|
1948
|
+
}, b = async (u, H) => {
|
|
1949
|
+
const j = u.trim(), se = ce.current, Me = H?.regenerateFrom, He = A.regenerate;
|
|
1950
|
+
if (!j || ee !== "ready" || se.status === "streaming" || re.current || Me && !He) return;
|
|
1951
|
+
if (it(
|
|
1952
|
+
j,
|
|
1953
|
+
ue.messageCharacters
|
|
1954
|
+
) > ue.messageCharacters) {
|
|
1955
|
+
x(
|
|
1956
|
+
`输入内容过长,请控制在 ${ue.messageCharacters} 个字符以内`
|
|
2064
1957
|
);
|
|
2065
1958
|
return;
|
|
2066
1959
|
}
|
|
2067
|
-
const
|
|
2068
|
-
id:
|
|
2069
|
-
content:
|
|
2070
|
-
},
|
|
2071
|
-
|
|
1960
|
+
const at = {
|
|
1961
|
+
id: Me?.userMessage.id ?? Ra("user"),
|
|
1962
|
+
content: j
|
|
1963
|
+
}, st = Me ? ss(se, Me.userMessage.id) : zt(se, at), nt = new AbortController(), De = we.current + 1;
|
|
1964
|
+
we.current = De, re.current = nt, x(void 0), O(void 0), Y(!ye.current && se.messages.length > 0), Me || te(""), ne(st);
|
|
2072
1965
|
try {
|
|
2073
|
-
let
|
|
2074
|
-
const
|
|
1966
|
+
let Re = !1, ie, yt = 0, bt = 0, kt = 0, lt = 0, Ke = 0;
|
|
1967
|
+
const Ve = /* @__PURE__ */ new Map(), _t = /* @__PURE__ */ new Set(), wt = /* @__PURE__ */ new Set(
|
|
2075
1968
|
[
|
|
2076
|
-
...
|
|
2077
|
-
|
|
1969
|
+
...st.messages.map((rt) => rt.id),
|
|
1970
|
+
at.id
|
|
2078
1971
|
]
|
|
2079
|
-
),
|
|
2080
|
-
let
|
|
2081
|
-
if (
|
|
2082
|
-
if (!
|
|
2083
|
-
throw new
|
|
2084
|
-
|
|
2085
|
-
threadId:
|
|
2086
|
-
message:
|
|
1972
|
+
), je = /* @__PURE__ */ new Set(), It = na(et), At = { signal: nt.signal };
|
|
1973
|
+
let dt;
|
|
1974
|
+
if (Me) {
|
|
1975
|
+
if (!He)
|
|
1976
|
+
throw new J("当前 AI 助手不支持重新生成");
|
|
1977
|
+
dt = He({
|
|
1978
|
+
threadId: st.threadId,
|
|
1979
|
+
message: at,
|
|
2087
1980
|
assistantMessage: {
|
|
2088
|
-
id:
|
|
2089
|
-
content:
|
|
1981
|
+
id: Me.assistantMessage.id,
|
|
1982
|
+
content: Me.assistantMessage.content
|
|
2090
1983
|
},
|
|
2091
|
-
context:
|
|
2092
|
-
capabilities:
|
|
2093
|
-
},
|
|
1984
|
+
context: s,
|
|
1985
|
+
capabilities: It
|
|
1986
|
+
}, At);
|
|
2094
1987
|
} else
|
|
2095
|
-
|
|
1988
|
+
dt = A.run(
|
|
2096
1989
|
{
|
|
2097
|
-
threadId:
|
|
2098
|
-
message:
|
|
2099
|
-
context:
|
|
2100
|
-
capabilities:
|
|
1990
|
+
threadId: st.threadId,
|
|
1991
|
+
message: at,
|
|
1992
|
+
context: s,
|
|
1993
|
+
capabilities: It
|
|
2101
1994
|
},
|
|
2102
|
-
|
|
1995
|
+
At
|
|
2103
1996
|
);
|
|
2104
|
-
const
|
|
2105
|
-
for (
|
|
2106
|
-
const
|
|
2107
|
-
if (
|
|
2108
|
-
let
|
|
1997
|
+
const Mt = dt[Symbol.asyncIterator]();
|
|
1998
|
+
for (me.current = { iterator: Mt, requestVersion: De }; ; ) {
|
|
1999
|
+
const rt = await Mt.next();
|
|
2000
|
+
if (we.current !== De || rt.done) break;
|
|
2001
|
+
let M;
|
|
2109
2002
|
try {
|
|
2110
|
-
|
|
2111
|
-
} catch (
|
|
2112
|
-
throw new
|
|
2113
|
-
|
|
2003
|
+
M = Bt(rt.value);
|
|
2004
|
+
} catch (he) {
|
|
2005
|
+
throw new J(
|
|
2006
|
+
he instanceof Error ? he.message : "Invalid assistant event"
|
|
2114
2007
|
);
|
|
2115
2008
|
}
|
|
2116
|
-
if (
|
|
2117
|
-
if (
|
|
2118
|
-
throw new
|
|
2119
|
-
if (
|
|
2120
|
-
throw new
|
|
2121
|
-
if (
|
|
2122
|
-
throw new
|
|
2123
|
-
|
|
2009
|
+
if (M.type === "message.start") {
|
|
2010
|
+
if (ie !== void 0 && ie !== M.runId)
|
|
2011
|
+
throw new J("AI 助手响应 run id 不一致");
|
|
2012
|
+
if (ie ??= M.runId, bt += 1, bt > ue.assistantMessagesPerRun)
|
|
2013
|
+
throw new J("AI 助手单次响应消息数量超过限制");
|
|
2014
|
+
if (wt.has(M.messageId))
|
|
2015
|
+
throw new J("AI 助手响应包含重复的 message id");
|
|
2016
|
+
wt.add(M.messageId), je.add(M.messageId), Ve.set(M.messageId, 0);
|
|
2124
2017
|
}
|
|
2125
|
-
if (
|
|
2126
|
-
if (!
|
|
2127
|
-
throw new
|
|
2128
|
-
const
|
|
2129
|
-
|
|
2130
|
-
|
|
2018
|
+
if (M.type === "message.delta") {
|
|
2019
|
+
if (!je.has(M.messageId))
|
|
2020
|
+
throw new J("AI 助手响应事件顺序无效");
|
|
2021
|
+
const he = Ve.get(M.messageId) ?? 0, Le = it(
|
|
2022
|
+
M.delta,
|
|
2023
|
+
ue.messageCharacters - Ke
|
|
2131
2024
|
);
|
|
2132
|
-
if (
|
|
2133
|
-
throw new
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2025
|
+
if (Ke + Le > ue.messageCharacters)
|
|
2026
|
+
throw new J("AI 助手响应文本超过大小限制");
|
|
2027
|
+
Ke += Le, Ve.set(
|
|
2028
|
+
M.messageId,
|
|
2029
|
+
he + Le
|
|
2137
2030
|
);
|
|
2138
2031
|
}
|
|
2139
|
-
if (
|
|
2140
|
-
if (!
|
|
2141
|
-
throw new
|
|
2142
|
-
const
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
),
|
|
2146
|
-
if (
|
|
2147
|
-
throw new
|
|
2148
|
-
|
|
2032
|
+
if (M.type === "message.replace") {
|
|
2033
|
+
if (!je.has(M.messageId))
|
|
2034
|
+
throw new J("AI 助手响应事件顺序无效");
|
|
2035
|
+
const he = Ve.get(M.messageId) ?? 0, Le = it(
|
|
2036
|
+
M.content,
|
|
2037
|
+
ue.messageCharacters
|
|
2038
|
+
), Nt = Ke - he + Le;
|
|
2039
|
+
if (Nt > ue.messageCharacters)
|
|
2040
|
+
throw new J("AI 助手响应文本超过大小限制");
|
|
2041
|
+
Ke = Nt, Ve.set(M.messageId, Le);
|
|
2149
2042
|
}
|
|
2150
|
-
if (
|
|
2151
|
-
if (
|
|
2152
|
-
throw new
|
|
2153
|
-
if (
|
|
2154
|
-
throw new
|
|
2155
|
-
const
|
|
2156
|
-
|
|
2157
|
-
|
|
2043
|
+
if (M.type === "run.progress") {
|
|
2044
|
+
if (ie !== void 0 && ie !== M.runId)
|
|
2045
|
+
throw new J("AI 助手响应 run id 不一致");
|
|
2046
|
+
if (ie ??= M.runId, kt += 1, kt > ue.progressStepsPerRun)
|
|
2047
|
+
throw new J("AI 助手处理过程数量超过限制");
|
|
2048
|
+
const he = it(
|
|
2049
|
+
M.message,
|
|
2050
|
+
ue.progressCharactersPerRun - lt
|
|
2158
2051
|
);
|
|
2159
|
-
if (
|
|
2160
|
-
throw new
|
|
2161
|
-
|
|
2052
|
+
if (lt + he > ue.progressCharactersPerRun)
|
|
2053
|
+
throw new J("AI 助手处理过程文本超过大小限制");
|
|
2054
|
+
lt += he;
|
|
2162
2055
|
}
|
|
2163
|
-
if (
|
|
2164
|
-
if (!
|
|
2165
|
-
throw new
|
|
2166
|
-
if (
|
|
2167
|
-
throw new
|
|
2168
|
-
if (
|
|
2169
|
-
throw new
|
|
2170
|
-
|
|
2056
|
+
if (M.type === "artifact") {
|
|
2057
|
+
if (!je.has(M.messageId))
|
|
2058
|
+
throw new J("AI 助手响应事件顺序无效");
|
|
2059
|
+
if (yt += 1, yt > ue.artifactsPerRun)
|
|
2060
|
+
throw new J("AI 助手单次响应 Artifact 数量超过限制");
|
|
2061
|
+
if (_t.has(M.artifact.id))
|
|
2062
|
+
throw new J("AI 助手响应包含重复的 Artifact id");
|
|
2063
|
+
_t.add(M.artifact.id);
|
|
2171
2064
|
}
|
|
2172
|
-
if (
|
|
2173
|
-
throw new
|
|
2174
|
-
if (
|
|
2175
|
-
throw new
|
|
2176
|
-
if (
|
|
2177
|
-
throw new
|
|
2178
|
-
if (
|
|
2179
|
-
|
|
2065
|
+
if (M.type === "message.complete" && !je.delete(M.messageId))
|
|
2066
|
+
throw new J("AI 助手响应事件顺序无效");
|
|
2067
|
+
if (M.type === "run.complete" && ie !== void 0 && ie !== M.runId)
|
|
2068
|
+
throw new J("AI 助手响应 run id 不一致");
|
|
2069
|
+
if (M.type === "run.cancelled" && M.runId !== void 0 && ie !== void 0 && ie !== M.runId)
|
|
2070
|
+
throw new J("AI 助手响应 run id 不一致");
|
|
2071
|
+
if (ne((he) => Ne(he, M)), M.type === "error" || M.type === "run.cancelled" || M.type === "run.complete") {
|
|
2072
|
+
Re = !0;
|
|
2180
2073
|
break;
|
|
2181
2074
|
}
|
|
2182
2075
|
}
|
|
2183
|
-
if (!
|
|
2184
|
-
throw new
|
|
2185
|
-
} catch (
|
|
2186
|
-
if (
|
|
2187
|
-
if (
|
|
2188
|
-
|
|
2189
|
-
(
|
|
2076
|
+
if (!Re)
|
|
2077
|
+
throw new J("AI 助手流式响应在终止事件前结束");
|
|
2078
|
+
} catch (Re) {
|
|
2079
|
+
if (we.current !== De) return;
|
|
2080
|
+
if (nt.signal.aborted) {
|
|
2081
|
+
ne(
|
|
2082
|
+
(ie) => Ne(ie, { type: "run.cancelled" })
|
|
2190
2083
|
);
|
|
2191
2084
|
return;
|
|
2192
2085
|
}
|
|
2193
2086
|
console.error("[make-ai-assistant] assistant run failed", {
|
|
2194
|
-
appId:
|
|
2195
|
-
errorType:
|
|
2196
|
-
}),
|
|
2197
|
-
(
|
|
2087
|
+
appId: s.app.id,
|
|
2088
|
+
errorType: Re instanceof Error ? Re.name : typeof Re
|
|
2089
|
+
}), ne(
|
|
2090
|
+
(ie) => Ne(ie, {
|
|
2198
2091
|
type: "error",
|
|
2199
2092
|
code: "TRANSPORT_ERROR",
|
|
2200
|
-
message:
|
|
2093
|
+
message: Re instanceof J ? Re.message : "连接失败,请重试",
|
|
2201
2094
|
retryable: !0
|
|
2202
2095
|
})
|
|
2203
2096
|
);
|
|
2204
2097
|
} finally {
|
|
2205
|
-
|
|
2098
|
+
we.current === De && re.current === nt && (re.current = void 0), me.current?.requestVersion === De && (St(me.current.iterator), me.current = void 0);
|
|
2206
2099
|
}
|
|
2207
|
-
},
|
|
2208
|
-
if (
|
|
2209
|
-
if (
|
|
2210
|
-
return
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
const P = m.trim(), F = u.parts.length ? [...P ? [{ id: We(), kind: "text", text: P }] : [], ...u.parts] : void 0;
|
|
2214
|
-
return D(""), u.clear(), v.send(P, F);
|
|
2100
|
+
}, I = (u) => {
|
|
2101
|
+
if (g.enabled) {
|
|
2102
|
+
if (L.pending)
|
|
2103
|
+
return x("请等待附件上传完成,或移除失败的附件"), Promise.resolve();
|
|
2104
|
+
const H = u.trim(), j = L.parts.length ? [...H ? [{ id: Fe(), kind: "text", text: H }] : [], ...L.parts] : void 0;
|
|
2105
|
+
return te(""), L.clear(), g.send(H, j);
|
|
2215
2106
|
}
|
|
2216
|
-
return
|
|
2217
|
-
},
|
|
2107
|
+
return b(u);
|
|
2108
|
+
}, D = (u) => b(u.userMessage.content, { regenerateFrom: u }), k = async (u, H) => {
|
|
2218
2109
|
try {
|
|
2219
|
-
await
|
|
2220
|
-
} catch (
|
|
2110
|
+
await Wa(H), O({ messageId: u, message: "已复制", status: "success" });
|
|
2111
|
+
} catch (j) {
|
|
2221
2112
|
console.error("[make-ai-assistant] copy answer failed", {
|
|
2222
|
-
errorType:
|
|
2223
|
-
}),
|
|
2113
|
+
errorType: j instanceof Error ? j.name : typeof j
|
|
2114
|
+
}), O({ messageId: u, message: "复制失败", status: "error" });
|
|
2224
2115
|
}
|
|
2225
|
-
},
|
|
2226
|
-
|
|
2227
|
-
},
|
|
2228
|
-
|
|
2229
|
-
},
|
|
2230
|
-
if (
|
|
2231
|
-
|
|
2116
|
+
}, V = (u) => {
|
|
2117
|
+
u.preventDefault(), I(T);
|
|
2118
|
+
}, q = (u) => {
|
|
2119
|
+
u.key === "Enter" && !u.shiftKey && !u.nativeEvent.isComposing && (u.preventDefault(), I(T));
|
|
2120
|
+
}, W = () => {
|
|
2121
|
+
if (g.enabled) {
|
|
2122
|
+
g.stop();
|
|
2232
2123
|
return;
|
|
2233
2124
|
}
|
|
2234
|
-
|
|
2235
|
-
(
|
|
2125
|
+
n("stop") && ne(
|
|
2126
|
+
(u) => Ne(u, { type: "run.cancelled" })
|
|
2236
2127
|
);
|
|
2237
|
-
},
|
|
2238
|
-
if (
|
|
2239
|
-
|
|
2128
|
+
}, be = () => {
|
|
2129
|
+
if (P(!1), g.enabled) {
|
|
2130
|
+
te(""), g.create(), d?.();
|
|
2240
2131
|
return;
|
|
2241
2132
|
}
|
|
2242
|
-
|
|
2243
|
-
},
|
|
2244
|
-
if (
|
|
2245
|
-
|
|
2133
|
+
n("new-conversation"), te(""), x(void 0), O(void 0), Y(!1), ye.current = !0, ne(pe()), d?.();
|
|
2134
|
+
}, qe = g.enabled && g.cancelling.length ? "停止中" : A.features?.remoteCancellation === !1 ? "停止接收" : "停止生成", tt = Xt(z), ke = Zt(z), Ae = as(z), $e = typeof A.regenerate == "function" && A.features?.regeneration !== !1, gt = () => {
|
|
2135
|
+
if (g.enabled) {
|
|
2136
|
+
g.retry();
|
|
2246
2137
|
return;
|
|
2247
2138
|
}
|
|
2248
|
-
|
|
2249
|
-
},
|
|
2250
|
-
if (
|
|
2251
|
-
if (
|
|
2252
|
-
|
|
2139
|
+
Ae && I(Ae.content);
|
|
2140
|
+
}, Qt = (u) => {
|
|
2141
|
+
if (u.key === "Escape" && !(!R && !G)) {
|
|
2142
|
+
if (u.preventDefault(), u.stopPropagation(), R) {
|
|
2143
|
+
Z(!1), Ue.current?.focus();
|
|
2253
2144
|
return;
|
|
2254
2145
|
}
|
|
2255
|
-
|
|
2146
|
+
P(!1), Oe.current?.focus();
|
|
2256
2147
|
}
|
|
2257
2148
|
};
|
|
2258
2149
|
return /* @__PURE__ */ c(
|
|
2259
2150
|
"section",
|
|
2260
2151
|
{
|
|
2261
|
-
className: `make-ai-assistant make-ai-assistant__panel${
|
|
2262
|
-
ref:
|
|
2263
|
-
style:
|
|
2264
|
-
onKeyDown:
|
|
2265
|
-
onDragOver: (
|
|
2266
|
-
|
|
2152
|
+
className: `make-ai-assistant make-ai-assistant__panel${g.enabled ? " make-ai-assistant__panel--managed" : ""}`,
|
|
2153
|
+
ref: We,
|
|
2154
|
+
style: S,
|
|
2155
|
+
onKeyDown: Qt,
|
|
2156
|
+
onDragOver: (u) => {
|
|
2157
|
+
L.enabled && u.dataTransfer.types.includes("Files") && u.preventDefault();
|
|
2267
2158
|
},
|
|
2268
|
-
onDrop: (
|
|
2269
|
-
|
|
2159
|
+
onDrop: (u) => {
|
|
2160
|
+
L.enabled && u.dataTransfer.files.length && (u.preventDefault(), L.add(Array.from(u.dataTransfer.files)));
|
|
2270
2161
|
},
|
|
2271
2162
|
children: [
|
|
2272
2163
|
/* @__PURE__ */ c("header", { className: "make-ai-assistant__header", children: [
|
|
2273
|
-
/* @__PURE__ */ a("div", { className: "make-ai-assistant__header-leading", children:
|
|
2164
|
+
/* @__PURE__ */ a("div", { className: "make-ai-assistant__header-leading", children: g.enabled ? /* @__PURE__ */ c(
|
|
2274
2165
|
"button",
|
|
2275
2166
|
{
|
|
2276
|
-
"aria-controls":
|
|
2277
|
-
"aria-expanded":
|
|
2167
|
+
"aria-controls": Qe,
|
|
2168
|
+
"aria-expanded": G,
|
|
2278
2169
|
"aria-haspopup": "dialog",
|
|
2279
2170
|
"aria-label": "任务列表",
|
|
2280
2171
|
className: "make-ai-assistant__task-list-trigger",
|
|
2281
|
-
ref:
|
|
2172
|
+
ref: Oe,
|
|
2282
2173
|
type: "button",
|
|
2283
|
-
onClick: () =>
|
|
2174
|
+
onClick: () => P((u) => !u),
|
|
2284
2175
|
children: [
|
|
2285
|
-
/* @__PURE__ */ a(
|
|
2176
|
+
/* @__PURE__ */ a(Va, {}),
|
|
2286
2177
|
/* @__PURE__ */ a("span", { children: "任务列表" }),
|
|
2287
|
-
/* @__PURE__ */ a(
|
|
2178
|
+
/* @__PURE__ */ a(ja, {})
|
|
2288
2179
|
]
|
|
2289
2180
|
}
|
|
2290
2181
|
) : null }),
|
|
2291
2182
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__header-center", children: [
|
|
2292
|
-
/* @__PURE__ */ a(
|
|
2293
|
-
/* @__PURE__ */
|
|
2294
|
-
/* @__PURE__ */ c("div", { className: "make-ai-assistant__header-title-row", children: [
|
|
2295
|
-
/* @__PURE__ */ a("h2", { className: "make-ai-assistant__header-title", title: l, children: l }),
|
|
2296
|
-
v.enabled ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__current-conversation", children: v.chat?.title || "新对话" }) : null,
|
|
2297
|
-
/* @__PURE__ */ a("span", { className: "make-ai-assistant__read-only-tag", children: "只读" })
|
|
2298
|
-
] }),
|
|
2299
|
-
/* @__PURE__ */ c("div", { className: "make-ai-assistant__header-context", children: [
|
|
2300
|
-
/* @__PURE__ */ a("p", { title: L, children: L }),
|
|
2301
|
-
T ? /* @__PURE__ */ c(Ae, { children: [
|
|
2302
|
-
/* @__PURE__ */ a(
|
|
2303
|
-
"span",
|
|
2304
|
-
{
|
|
2305
|
-
"aria-describedby": W,
|
|
2306
|
-
"aria-label": `使用提示:${T}`,
|
|
2307
|
-
className: "make-ai-assistant__header-context-help",
|
|
2308
|
-
"data-tooltip": T,
|
|
2309
|
-
ref: h,
|
|
2310
|
-
role: "note",
|
|
2311
|
-
tabIndex: 0,
|
|
2312
|
-
onBlur: ue,
|
|
2313
|
-
onFocus: Ve,
|
|
2314
|
-
onPointerEnter: Ve,
|
|
2315
|
-
onPointerLeave: ue,
|
|
2316
|
-
children: /* @__PURE__ */ a(dn, {})
|
|
2317
|
-
}
|
|
2318
|
-
),
|
|
2319
|
-
/* @__PURE__ */ a(
|
|
2320
|
-
"span",
|
|
2321
|
-
{
|
|
2322
|
-
"aria-hidden": !ve,
|
|
2323
|
-
className: "make-ai-assistant__header-context-tooltip",
|
|
2324
|
-
"data-placement": Re?.placement,
|
|
2325
|
-
"data-positioned": Re ? !0 : void 0,
|
|
2326
|
-
"data-visible": ve || void 0,
|
|
2327
|
-
id: W,
|
|
2328
|
-
ref: _,
|
|
2329
|
-
role: "tooltip",
|
|
2330
|
-
style: Be,
|
|
2331
|
-
children: T
|
|
2332
|
-
}
|
|
2333
|
-
)
|
|
2334
|
-
] }) : null
|
|
2335
|
-
] })
|
|
2336
|
-
] })
|
|
2183
|
+
/* @__PURE__ */ a(ct, {}),
|
|
2184
|
+
/* @__PURE__ */ a("h2", { className: "make-ai-assistant__header-title", title: U, children: U })
|
|
2337
2185
|
] }),
|
|
2338
2186
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__header-actions", children: [
|
|
2339
|
-
|
|
2187
|
+
A.features?.newConversation !== !1 ? /* @__PURE__ */ a(
|
|
2340
2188
|
"button",
|
|
2341
2189
|
{
|
|
2342
2190
|
"aria-label": "新建对话",
|
|
2343
2191
|
className: "make-ai-assistant__icon-button",
|
|
2344
2192
|
type: "button",
|
|
2345
|
-
onClick:
|
|
2346
|
-
children: /* @__PURE__ */ a(
|
|
2193
|
+
onClick: be,
|
|
2194
|
+
children: /* @__PURE__ */ a(Ka, {})
|
|
2347
2195
|
}
|
|
2348
2196
|
) : null,
|
|
2349
2197
|
o ? /* @__PURE__ */ a(
|
|
2350
2198
|
"button",
|
|
2351
2199
|
{
|
|
2352
|
-
"aria-label": `关闭 ${
|
|
2200
|
+
"aria-label": `关闭 ${U}`,
|
|
2353
2201
|
className: "make-ai-assistant__icon-button",
|
|
2354
2202
|
type: "button",
|
|
2355
2203
|
onClick: o,
|
|
2356
|
-
children: /* @__PURE__ */ a(
|
|
2204
|
+
children: /* @__PURE__ */ a(Ua, {})
|
|
2357
2205
|
}
|
|
2358
2206
|
) : null
|
|
2359
2207
|
] })
|
|
2360
2208
|
] }),
|
|
2361
|
-
|
|
2362
|
-
|
|
2209
|
+
g.enabled && G ? /* @__PURE__ */ a(
|
|
2210
|
+
ba,
|
|
2363
2211
|
{
|
|
2364
|
-
id:
|
|
2365
|
-
manager:
|
|
2366
|
-
triggerRef:
|
|
2367
|
-
onDismiss: () =>
|
|
2368
|
-
onNewConversation:
|
|
2212
|
+
id: Qe,
|
|
2213
|
+
manager: g,
|
|
2214
|
+
triggerRef: Oe,
|
|
2215
|
+
onDismiss: () => P(!1),
|
|
2216
|
+
onNewConversation: A.features?.newConversation !== !1 ? be : void 0
|
|
2369
2217
|
}
|
|
2370
2218
|
) : null,
|
|
2371
2219
|
/* @__PURE__ */ c(
|
|
@@ -2374,129 +2222,129 @@ function oa({
|
|
|
2374
2222
|
className: "make-ai-assistant__body",
|
|
2375
2223
|
"aria-live": "polite",
|
|
2376
2224
|
"aria-relevant": "additions text",
|
|
2377
|
-
ref:
|
|
2225
|
+
ref: Ie,
|
|
2378
2226
|
role: "log",
|
|
2379
|
-
onScroll:
|
|
2227
|
+
onScroll: m,
|
|
2380
2228
|
children: [
|
|
2381
|
-
|
|
2382
|
-
/* @__PURE__ */ a(
|
|
2229
|
+
ee === "loading" ? /* @__PURE__ */ c("div", { className: "make-ai-assistant__empty", role: "status", children: [
|
|
2230
|
+
/* @__PURE__ */ a(ct, {}),
|
|
2383
2231
|
/* @__PURE__ */ a("h3", { children: "正在恢复对话" }),
|
|
2384
2232
|
/* @__PURE__ */ a("p", { children: "正在读取当前 App 的历史消息…" })
|
|
2385
|
-
] }) :
|
|
2386
|
-
|
|
2233
|
+
] }) : ee === "error" ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__empty", children: /* @__PURE__ */ a(
|
|
2234
|
+
rs,
|
|
2387
2235
|
{
|
|
2388
|
-
error:
|
|
2389
|
-
onRetry: () =>
|
|
2236
|
+
error: le,
|
|
2237
|
+
onRetry: () => ge((u) => u + 1)
|
|
2390
2238
|
}
|
|
2391
|
-
) }) :
|
|
2392
|
-
/* @__PURE__ */ a(
|
|
2239
|
+
) }) : z.messages.length === 0 ? /* @__PURE__ */ c("div", { className: "make-ai-assistant__empty", children: [
|
|
2240
|
+
/* @__PURE__ */ a(ct, {}),
|
|
2393
2241
|
/* @__PURE__ */ a("h3", { children: "有什么可以帮你?" }),
|
|
2394
2242
|
/* @__PURE__ */ a("p", { children: "我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。" })
|
|
2395
|
-
] }) :
|
|
2396
|
-
|
|
2397
|
-
n,
|
|
2398
|
-
B,
|
|
2399
|
-
q,
|
|
2400
|
-
i,
|
|
2243
|
+
] }) : os(
|
|
2244
|
+
z,
|
|
2401
2245
|
s,
|
|
2246
|
+
et,
|
|
2247
|
+
F,
|
|
2248
|
+
i,
|
|
2249
|
+
r,
|
|
2402
2250
|
e,
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
(
|
|
2409
|
-
|
|
2251
|
+
Ae ? gt : void 0,
|
|
2252
|
+
C,
|
|
2253
|
+
X,
|
|
2254
|
+
w,
|
|
2255
|
+
$e,
|
|
2256
|
+
(u, H) => {
|
|
2257
|
+
k(u, H);
|
|
2410
2258
|
},
|
|
2411
|
-
(
|
|
2412
|
-
|
|
2259
|
+
(u) => {
|
|
2260
|
+
D(u);
|
|
2413
2261
|
},
|
|
2414
|
-
|
|
2415
|
-
|
|
2262
|
+
g.enabled ? g : void 0,
|
|
2263
|
+
A
|
|
2416
2264
|
),
|
|
2417
|
-
|
|
2418
|
-
|
|
2265
|
+
z.progress && !tt ? /* @__PURE__ */ a(
|
|
2266
|
+
xt,
|
|
2419
2267
|
{
|
|
2420
2268
|
assistantName: e,
|
|
2421
|
-
progress:
|
|
2269
|
+
progress: z.progress
|
|
2422
2270
|
}
|
|
2423
2271
|
) : null,
|
|
2424
|
-
|
|
2425
|
-
|
|
2272
|
+
z.error && !ke ? /* @__PURE__ */ a(
|
|
2273
|
+
xt,
|
|
2426
2274
|
{
|
|
2427
2275
|
assistantName: e,
|
|
2428
|
-
error:
|
|
2429
|
-
onRetry:
|
|
2276
|
+
error: z.error,
|
|
2277
|
+
onRetry: Ae ? gt : void 0
|
|
2430
2278
|
}
|
|
2431
2279
|
) : null
|
|
2432
2280
|
]
|
|
2433
2281
|
}
|
|
2434
2282
|
),
|
|
2435
|
-
|
|
2283
|
+
ze ? /* @__PURE__ */ a(
|
|
2436
2284
|
"button",
|
|
2437
2285
|
{
|
|
2438
2286
|
"aria-label": "回到最新消息",
|
|
2439
2287
|
className: "make-ai-assistant__back-to-latest",
|
|
2440
2288
|
type: "button",
|
|
2441
|
-
onClick:
|
|
2442
|
-
children: /* @__PURE__ */ a(
|
|
2289
|
+
onClick: y,
|
|
2290
|
+
children: /* @__PURE__ */ a(Ha, {})
|
|
2443
2291
|
}
|
|
2444
2292
|
) : null,
|
|
2445
2293
|
/* @__PURE__ */ c("footer", { className: "make-ai-assistant__composer-region", children: [
|
|
2446
|
-
|
|
2447
|
-
|
|
2294
|
+
L.enabled ? /* @__PURE__ */ a(Ta, { attachments: L }) : null,
|
|
2295
|
+
ee === "ready" && Te.length > 0 && z.messages.length === 0 ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: Te.map((u, H) => /* @__PURE__ */ a(
|
|
2448
2296
|
"button",
|
|
2449
2297
|
{
|
|
2450
2298
|
type: "button",
|
|
2451
2299
|
onClick: () => {
|
|
2452
|
-
|
|
2300
|
+
I(u);
|
|
2453
2301
|
},
|
|
2454
|
-
children:
|
|
2302
|
+
children: u
|
|
2455
2303
|
},
|
|
2456
|
-
`${
|
|
2304
|
+
`${H}-${u}`
|
|
2457
2305
|
)) }) : null,
|
|
2458
|
-
/* @__PURE__ */ c("form", { className: "make-ai-assistant__composer", onSubmit:
|
|
2306
|
+
/* @__PURE__ */ c("form", { className: "make-ai-assistant__composer", onSubmit: V, children: [
|
|
2459
2307
|
/* @__PURE__ */ a(
|
|
2460
2308
|
"textarea",
|
|
2461
2309
|
{
|
|
2462
2310
|
"aria-label": `向 ${e} 提问`,
|
|
2463
|
-
"aria-describedby":
|
|
2464
|
-
"aria-invalid":
|
|
2311
|
+
"aria-describedby": K ? "make-ai-composer-error" : void 0,
|
|
2312
|
+
"aria-invalid": K ? !0 : void 0,
|
|
2465
2313
|
autoFocus: !0,
|
|
2466
|
-
disabled:
|
|
2467
|
-
placeholder: `询问当前 ${
|
|
2468
|
-
ref:
|
|
2314
|
+
disabled: ee !== "ready" || !g.enabled && z.status === "streaming",
|
|
2315
|
+
placeholder: `询问当前 ${s.app.name ?? "App"} 中的数据…`,
|
|
2316
|
+
ref: Ze,
|
|
2469
2317
|
rows: 2,
|
|
2470
|
-
value:
|
|
2471
|
-
onChange: (
|
|
2472
|
-
|
|
2318
|
+
value: T,
|
|
2319
|
+
onChange: (u) => {
|
|
2320
|
+
te(u.currentTarget.value), x(void 0);
|
|
2473
2321
|
},
|
|
2474
|
-
onKeyDown:
|
|
2475
|
-
onPaste: (
|
|
2476
|
-
|
|
2322
|
+
onKeyDown: q,
|
|
2323
|
+
onPaste: (u) => {
|
|
2324
|
+
L.enabled && u.clipboardData.files.length && (u.preventDefault(), L.add(Array.from(u.clipboardData.files)));
|
|
2477
2325
|
}
|
|
2478
2326
|
}
|
|
2479
2327
|
),
|
|
2480
|
-
|
|
2481
|
-
|
|
2328
|
+
L.enabled ? /* @__PURE__ */ a(
|
|
2329
|
+
Ca,
|
|
2482
2330
|
{
|
|
2483
|
-
attachments:
|
|
2484
|
-
open:
|
|
2485
|
-
triggerRef:
|
|
2486
|
-
onOpenChange:
|
|
2331
|
+
attachments: L,
|
|
2332
|
+
open: R,
|
|
2333
|
+
triggerRef: Ue,
|
|
2334
|
+
onOpenChange: Z
|
|
2487
2335
|
}
|
|
2488
2336
|
) : null,
|
|
2489
2337
|
/* @__PURE__ */ c("div", { className: "make-ai-assistant__composer-actions", children: [
|
|
2490
|
-
|
|
2338
|
+
z.status === "streaming" ? /* @__PURE__ */ a(
|
|
2491
2339
|
"button",
|
|
2492
2340
|
{
|
|
2493
|
-
"aria-label":
|
|
2341
|
+
"aria-label": qe,
|
|
2494
2342
|
className: "make-ai-assistant__send make-ai-assistant__send--stop",
|
|
2495
|
-
"data-tooltip":
|
|
2496
|
-
ref:
|
|
2497
|
-
disabled:
|
|
2343
|
+
"data-tooltip": qe,
|
|
2344
|
+
ref: Ge,
|
|
2345
|
+
disabled: g.enabled && g.cancelling.includes(z.activeRunId ?? ""),
|
|
2498
2346
|
type: "button",
|
|
2499
|
-
onClick:
|
|
2347
|
+
onClick: W,
|
|
2500
2348
|
children: /* @__PURE__ */ a("span", { "aria-hidden": "true" })
|
|
2501
2349
|
}
|
|
2502
2350
|
) : /* @__PURE__ */ a(
|
|
@@ -2504,154 +2352,154 @@ function oa({
|
|
|
2504
2352
|
{
|
|
2505
2353
|
"aria-label": "发送",
|
|
2506
2354
|
className: "make-ai-assistant__send",
|
|
2507
|
-
disabled:
|
|
2355
|
+
disabled: ee !== "ready" || L.pending || !T.trim() && !L.parts.length,
|
|
2508
2356
|
type: "submit",
|
|
2509
|
-
children: /* @__PURE__ */ a(
|
|
2357
|
+
children: /* @__PURE__ */ a($t, {})
|
|
2510
2358
|
}
|
|
2511
2359
|
),
|
|
2512
|
-
|
|
2360
|
+
g.enabled && z.status === "streaming" ? /* @__PURE__ */ a("button", { "aria-label": "发送", className: "make-ai-assistant__send", disabled: g.busy || L.pending || !T.trim() && !L.parts.length, type: "submit", children: /* @__PURE__ */ a($t, {}) }) : null
|
|
2513
2361
|
] })
|
|
2514
2362
|
] }),
|
|
2515
|
-
|
|
2363
|
+
K ? /* @__PURE__ */ a("p", { id: "make-ai-composer-error", role: "alert", children: K }) : null,
|
|
2516
2364
|
/* @__PURE__ */ a("p", { children: "AI 生成的结果可能存在偏差,重要数据请核对明细。" })
|
|
2517
2365
|
] })
|
|
2518
2366
|
]
|
|
2519
2367
|
}
|
|
2520
2368
|
);
|
|
2521
2369
|
}
|
|
2522
|
-
function
|
|
2523
|
-
return /* @__PURE__ */ a(
|
|
2370
|
+
function ms(e) {
|
|
2371
|
+
return /* @__PURE__ */ a(Jt, { ...e, visible: !0 });
|
|
2524
2372
|
}
|
|
2525
|
-
function
|
|
2373
|
+
function hs({
|
|
2526
2374
|
defaultOpen: e = !1,
|
|
2527
2375
|
hideLauncher: t = !1,
|
|
2528
|
-
launcher:
|
|
2376
|
+
launcher: s,
|
|
2529
2377
|
launcherPosition: i = "bottom-right",
|
|
2530
|
-
maxDrawerWidth:
|
|
2378
|
+
maxDrawerWidth: r,
|
|
2531
2379
|
onOpenChange: o,
|
|
2532
2380
|
open: d,
|
|
2533
|
-
...
|
|
2381
|
+
...p
|
|
2534
2382
|
}) {
|
|
2535
|
-
const
|
|
2383
|
+
const v = qt(p.brandName, p.title), [h, _] = E(e), [F, A] = E(
|
|
2536
2384
|
() => e || d === !0
|
|
2537
|
-
),
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
typeof window > "u" ?
|
|
2541
|
-
),
|
|
2542
|
-
...
|
|
2543
|
-
...
|
|
2544
|
-
"--make-ai-internal-drawer-max-width": `max(var(--make-ai-internal-drawer-min-width), ${
|
|
2385
|
+
), X = N(null), C = N(null), B = N(void 0), [g, L] = E(), [U, f] = E(Da), [l, S] = E(!1), T = d ?? h, te = ft(p.theme), R = xa(r), Z = () => Fa(
|
|
2386
|
+
U,
|
|
2387
|
+
R,
|
|
2388
|
+
typeof window > "u" ? Ht : window.innerWidth
|
|
2389
|
+
), G = Z(), P = g === void 0 ? void 0 : mt(g, U, G), Q = P === void 0 && R === void 0 ? void 0 : {
|
|
2390
|
+
...P === void 0 ? {} : { "--make-ai-internal-drawer-width": `${P}px` },
|
|
2391
|
+
...R === void 0 ? {} : {
|
|
2392
|
+
"--make-ai-internal-drawer-max-width": `max(var(--make-ai-internal-drawer-min-width), ${R}px)`
|
|
2545
2393
|
}
|
|
2546
2394
|
};
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
}, [
|
|
2550
|
-
const
|
|
2551
|
-
if (
|
|
2552
|
-
const
|
|
2553
|
-
return
|
|
2554
|
-
},
|
|
2555
|
-
if (
|
|
2556
|
-
const
|
|
2557
|
-
|
|
2558
|
-
minimumWidth:
|
|
2559
|
-
pointerId:
|
|
2560
|
-
startWidth:
|
|
2561
|
-
startX:
|
|
2562
|
-
},
|
|
2563
|
-
},
|
|
2564
|
-
const
|
|
2565
|
-
if (!
|
|
2566
|
-
const
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2395
|
+
Ft(() => {
|
|
2396
|
+
P !== void 0 && P !== g && L(P);
|
|
2397
|
+
}, [P, g]);
|
|
2398
|
+
const fe = () => {
|
|
2399
|
+
if (P !== void 0) return P;
|
|
2400
|
+
const w = C.current?.getBoundingClientRect().width;
|
|
2401
|
+
return w && Number.isFinite(w) && w > 0 ? w : U;
|
|
2402
|
+
}, ve = (w) => {
|
|
2403
|
+
if (w.button !== 0) return;
|
|
2404
|
+
const O = fe(), ae = g === void 0 ? O : U;
|
|
2405
|
+
f(ae), B.current = {
|
|
2406
|
+
minimumWidth: ae,
|
|
2407
|
+
pointerId: w.pointerId,
|
|
2408
|
+
startWidth: O,
|
|
2409
|
+
startX: w.clientX
|
|
2410
|
+
}, S(!0), typeof w.currentTarget.setPointerCapture == "function" && w.currentTarget.setPointerCapture(w.pointerId), w.preventDefault();
|
|
2411
|
+
}, z = (w) => {
|
|
2412
|
+
const O = B.current;
|
|
2413
|
+
if (!O || O.pointerId !== w.pointerId) return;
|
|
2414
|
+
const ae = mt(
|
|
2415
|
+
O.startWidth + O.startX - w.clientX,
|
|
2416
|
+
O.minimumWidth,
|
|
2417
|
+
Z()
|
|
2570
2418
|
);
|
|
2571
|
-
|
|
2572
|
-
},
|
|
2573
|
-
const
|
|
2574
|
-
!
|
|
2575
|
-
},
|
|
2576
|
-
const
|
|
2577
|
-
if (
|
|
2578
|
-
|
|
2579
|
-
const
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2419
|
+
L(ae);
|
|
2420
|
+
}, ne = (w) => {
|
|
2421
|
+
const O = B.current;
|
|
2422
|
+
!O || O.pointerId !== w.pointerId || (B.current = void 0, S(!1));
|
|
2423
|
+
}, ce = (w) => {
|
|
2424
|
+
const O = w.key === "ArrowLeft" ? Et : w.key === "ArrowRight" ? -Et : void 0;
|
|
2425
|
+
if (O === void 0) return;
|
|
2426
|
+
w.preventDefault();
|
|
2427
|
+
const ae = fe(), ge = g === void 0 ? ae : U;
|
|
2428
|
+
f(ge), L(mt(
|
|
2429
|
+
ae + O,
|
|
2430
|
+
ge,
|
|
2431
|
+
Z()
|
|
2584
2432
|
));
|
|
2585
|
-
},
|
|
2586
|
-
d === void 0 &&
|
|
2587
|
-
},
|
|
2588
|
-
return
|
|
2589
|
-
|
|
2590
|
-
}, [
|
|
2591
|
-
if (!
|
|
2592
|
-
const
|
|
2593
|
-
|
|
2433
|
+
}, K = (w) => {
|
|
2434
|
+
d === void 0 && _(w), o?.(w), w || requestAnimationFrame(() => X.current?.focus());
|
|
2435
|
+
}, x = () => K(!T);
|
|
2436
|
+
return oe(() => {
|
|
2437
|
+
T && A(!0);
|
|
2438
|
+
}, [T]), oe(() => {
|
|
2439
|
+
if (!T) return;
|
|
2440
|
+
const w = (O) => {
|
|
2441
|
+
O.key === "Escape" && (K(!1), requestAnimationFrame(() => X.current?.focus()));
|
|
2594
2442
|
};
|
|
2595
|
-
return document.addEventListener("keydown",
|
|
2596
|
-
}, [o,
|
|
2443
|
+
return document.addEventListener("keydown", w), () => document.removeEventListener("keydown", w);
|
|
2444
|
+
}, [o, T]), /* @__PURE__ */ c(
|
|
2597
2445
|
"div",
|
|
2598
2446
|
{
|
|
2599
2447
|
className: "make-ai-assistant",
|
|
2600
|
-
"data-open":
|
|
2601
|
-
style:
|
|
2448
|
+
"data-open": T || void 0,
|
|
2449
|
+
style: te,
|
|
2602
2450
|
children: [
|
|
2603
|
-
!t && (!
|
|
2451
|
+
!t && (!T || s) ? s ? s({ open: T, toggle: x }) : /* @__PURE__ */ c(
|
|
2604
2452
|
"button",
|
|
2605
2453
|
{
|
|
2606
|
-
"aria-label":
|
|
2607
|
-
"aria-expanded":
|
|
2454
|
+
"aria-label": T ? `关闭 ${v}` : `打开 ${v}`,
|
|
2455
|
+
"aria-expanded": T,
|
|
2608
2456
|
className: "make-ai-assistant__launcher",
|
|
2609
2457
|
"data-launcher-position": i,
|
|
2610
|
-
ref:
|
|
2458
|
+
ref: X,
|
|
2611
2459
|
type: "button",
|
|
2612
|
-
onClick:
|
|
2460
|
+
onClick: x,
|
|
2613
2461
|
children: [
|
|
2614
2462
|
/* @__PURE__ */ a("span", { className: "make-ai-assistant__launcher-orbit", "aria-hidden": "true" }),
|
|
2615
|
-
/* @__PURE__ */ a(
|
|
2463
|
+
/* @__PURE__ */ a(Kt, {})
|
|
2616
2464
|
]
|
|
2617
2465
|
}
|
|
2618
2466
|
) : null,
|
|
2619
|
-
|
|
2467
|
+
F ? /* @__PURE__ */ c(
|
|
2620
2468
|
"aside",
|
|
2621
2469
|
{
|
|
2622
|
-
"aria-label":
|
|
2470
|
+
"aria-label": v,
|
|
2623
2471
|
"aria-modal": "false",
|
|
2624
2472
|
className: "make-ai-assistant__drawer",
|
|
2625
2473
|
"data-resizing": l || void 0,
|
|
2626
|
-
hidden: !
|
|
2627
|
-
ref:
|
|
2474
|
+
hidden: !T,
|
|
2475
|
+
ref: C,
|
|
2628
2476
|
role: "dialog",
|
|
2629
|
-
style:
|
|
2477
|
+
style: Q,
|
|
2630
2478
|
children: [
|
|
2631
2479
|
/* @__PURE__ */ a(
|
|
2632
2480
|
"div",
|
|
2633
2481
|
{
|
|
2634
2482
|
"aria-label": "调整对话框宽度",
|
|
2635
2483
|
"aria-orientation": "vertical",
|
|
2636
|
-
"aria-valuemax":
|
|
2637
|
-
"aria-valuemin":
|
|
2638
|
-
"aria-valuenow":
|
|
2484
|
+
"aria-valuemax": G,
|
|
2485
|
+
"aria-valuemin": U,
|
|
2486
|
+
"aria-valuenow": P ?? U,
|
|
2639
2487
|
className: "make-ai-assistant__drawer-resize-handle",
|
|
2640
2488
|
role: "separator",
|
|
2641
2489
|
tabIndex: 0,
|
|
2642
|
-
onKeyDown:
|
|
2643
|
-
onPointerCancel:
|
|
2644
|
-
onPointerDown:
|
|
2645
|
-
onPointerMove:
|
|
2646
|
-
onPointerUp:
|
|
2490
|
+
onKeyDown: ce,
|
|
2491
|
+
onPointerCancel: ne,
|
|
2492
|
+
onPointerDown: ve,
|
|
2493
|
+
onPointerMove: z,
|
|
2494
|
+
onPointerUp: ne
|
|
2647
2495
|
}
|
|
2648
2496
|
),
|
|
2649
2497
|
/* @__PURE__ */ a(
|
|
2650
|
-
|
|
2498
|
+
Jt,
|
|
2651
2499
|
{
|
|
2652
|
-
...
|
|
2653
|
-
onClose: () =>
|
|
2654
|
-
visible:
|
|
2500
|
+
...p,
|
|
2501
|
+
onClose: () => K(!1),
|
|
2502
|
+
visible: T
|
|
2655
2503
|
}
|
|
2656
2504
|
)
|
|
2657
2505
|
]
|
|
@@ -2662,24 +2510,24 @@ function Ln({
|
|
|
2662
2510
|
);
|
|
2663
2511
|
}
|
|
2664
2512
|
export {
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2513
|
+
ra as ArtifactRenderer,
|
|
2514
|
+
ms as AssistantPanel,
|
|
2515
|
+
ys as MAKE_AI_ARTIFACT_KINDS,
|
|
2516
|
+
bs as MAKE_AI_ARTIFACT_LIMITS,
|
|
2517
|
+
ks as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
|
|
2518
|
+
ue as MAKE_AI_CONVERSATION_LIMITS,
|
|
2519
|
+
hs as MakeAiAssistant,
|
|
2520
|
+
zt as appendUserMessage,
|
|
2521
|
+
na as createArtifactCapabilities,
|
|
2522
|
+
Pt as createArtifactTemplateRegistry,
|
|
2523
|
+
pe as createAssistantConversationState,
|
|
2524
|
+
fa as createPlatformArtifactRegistry,
|
|
2525
|
+
vs as extendArtifactTemplateRegistry,
|
|
2526
|
+
Se as formatArtifactValue,
|
|
2527
|
+
_s as parseArtifact,
|
|
2528
|
+
Bt as parseAssistantEvent,
|
|
2529
|
+
pa as platformArtifactTemplates,
|
|
2530
|
+
Ne as reduceAssistantEvent,
|
|
2531
|
+
sa as resolveArtifactTemplate,
|
|
2532
|
+
ws as validateArtifact
|
|
2685
2533
|
};
|