@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/dist/react.mjs CHANGED
@@ -1,109 +1,109 @@
1
- import { jsxs as c, jsx as a, Fragment as Ae } from "react/jsx-runtime";
2
- import { isValidElement as ba, cloneElement as ka, useRef as C, useState as N, useEffect as ae, useLayoutEffect as bt, useId as Dt, useMemo as Pt } from "react";
3
- import { resolveArtifactTemplate as _a, createArtifactTemplateRegistry as Vt, createArtifactCapabilities as wa } from "./index.mjs";
4
- import { extendArtifactTemplateRegistry as Fn } from "./index.mjs";
5
- import { n as he, k as ft, r as Ie, l as jt, o as Xt, c as dt, M as le } from "./conversation-CZfbgCXd.js";
6
- import { q as zn, s as Hn, t as On, u as Wn, v as Un } from "./conversation-CZfbgCXd.js";
7
- const Yt = (e) => e?.trim() || void 0, ye = (e, t) => Yt(e) ?? t, kt = (e) => {
8
- const t = Yt(e?.primary);
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": ye(
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": ye(
16
+ "--make-ai-theme-on-primary": _e(
17
17
  e?.onPrimary,
18
18
  "#fcfcff"
19
19
  ),
20
- "--make-ai-theme-bg": ye(
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": ye(
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": ye(
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": ye(
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": ye(
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": ye(
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": ye(
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": ye(
48
+ "--make-ai-theme-on-overlay": _e(
49
49
  e?.onOverlay,
50
50
  "#fcfcff"
51
51
  )
52
52
  };
53
- }, Ft = (e, t) => !t || !ba(e) || typeof e.type != "string" ? e : ka(e, {
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 Ia({
56
+ function ra({
57
57
  artifact: e,
58
58
  context: t,
59
- fallback: n,
59
+ fallback: s,
60
60
  onAction: i,
61
- onActionError: s,
61
+ onActionError: r,
62
62
  registry: o,
63
63
  theme: d
64
64
  }) {
65
- const g = kt(d), f = _a(o, e, t);
66
- if (!f) {
67
- const $ = n ? n(e) : /* @__PURE__ */ c("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
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 Ft($, g);
74
+ return Tt(F, p);
75
75
  }
76
- const p = {
76
+ const h = {
77
77
  context: t,
78
78
  onAction: i,
79
- onActionError: s,
79
+ onActionError: r,
80
80
  theme: d,
81
- themeStyle: g
82
- }, k = f.template.render(e, t, p);
83
- return Ft(k, g);
81
+ themeStyle: p
82
+ }, _ = v.template.render(e, t, h);
83
+ return Tt(_, p);
84
84
  }
85
- const Fe = (e, t, n) => {
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, s = {
89
+ const i = t?.precision, r = {
90
90
  maximumFractionDigits: i ?? 2,
91
91
  minimumFractionDigits: i
92
92
  };
93
- t?.style === "currency" && t.currency ? (s.style = "currency", s.currency = t.currency) : t?.style === "percent" && (s.style = "percent");
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(n, s).format(o)}${t?.unit ?? ""}`;
96
+ return `${new Intl.NumberFormat(s, r).format(o)}${t?.unit ?? ""}`;
97
97
  } catch {
98
98
  return `${e}${t?.unit ?? ""}`;
99
99
  }
100
- }, Zt = (e) => {
101
- let t = Number.POSITIVE_INFINITY, n = Number.NEGATIVE_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), n = Math.max(n, i);
104
- return Number.isFinite(t) && Number.isFinite(n) ? { min: t, max: n } : { min: 0, max: 0 };
105
- }, Gt = (e, t, n) => {
106
- if (!n.onAction) return;
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
- }, s = (o) => {
115
- if (n.onActionError) {
114
+ }, r = (o) => {
115
+ if (s.onActionError) {
116
116
  try {
117
117
  Promise.resolve(
118
- n.onActionError(o, e, t)
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(n.onAction(e, t)).catch(s);
133
+ Promise.resolve(s.onAction(e, t)).catch(r);
134
134
  } catch (o) {
135
- s(o);
135
+ r(o);
136
136
  }
137
- }, Ue = (e, t) => e.actions?.length && t.onAction ? /* @__PURE__ */ a("div", { className: "make-ai-artifact__actions", children: e.actions.map((n) => /* @__PURE__ */ c(
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--${n.appearance ?? "link"}`,
140
+ className: `make-ai-artifact__action make-ai-artifact__action--${s.appearance ?? "link"}`,
141
141
  type: "button",
142
- onClick: () => Gt(n, { artifact: e, context: t.context }, t),
142
+ onClick: () => Ot(s, { artifact: e, context: t.context }, t),
143
143
  children: [
144
- n.label,
144
+ s.label,
145
145
  /* @__PURE__ */ a("span", { "aria-hidden": "true", children: "→" })
146
146
  ]
147
147
  },
148
- n.id
149
- )) }) : null, qe = (e, t, n = "", i) => /* @__PURE__ */ c(
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 ${n}`.trim(),
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
- ), Aa = ({
163
+ ), ia = ({
164
164
  artifact: e,
165
165
  renderContext: t
166
166
  }) => {
167
- const n = e.data.delta, i = n ? Fe(
168
- n.value,
169
- n.format === "percent" ? { style: "percent" } : void 0,
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 qe(
172
+ return Be(
173
173
  e,
174
- /* @__PURE__ */ c(Ae, { children: [
175
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children: Fe(
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
- n ? /* @__PURE__ */ c(
180
+ s ? /* @__PURE__ */ c(
181
181
  "div",
182
182
  {
183
- className: `make-ai-artifact__delta make-ai-artifact__delta--${n.direction ?? "flat"}`,
183
+ className: `make-ai-artifact__delta make-ai-artifact__delta--${s.direction ?? "flat"}`,
184
184
  children: [
185
- /* @__PURE__ */ a("span", { "aria-hidden": "true", children: n.direction === "up" ? "↗" : n.direction === "down" ? "↘" : "→" }),
185
+ /* @__PURE__ */ a("span", { "aria-hidden": "true", children: s.direction === "up" ? "↗" : s.direction === "down" ? "↘" : "→" }),
186
186
  /* @__PURE__ */ a("span", { children: i }),
187
- n.label ? /* @__PURE__ */ a("span", { children: n.label }) : null
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
- Ue(e, t)
192
+ Pe(e, t)
193
193
  ] }),
194
194
  "make-ai-artifact--metric",
195
195
  t.themeStyle
196
196
  );
197
- }, Ma = ({
197
+ }, oa = ({
198
198
  artifact: e,
199
199
  renderContext: t
200
- }) => qe(
200
+ }) => Be(
201
201
  e,
202
- /* @__PURE__ */ c(Ae, { children: [
203
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((n) => /* @__PURE__ */ c("div", { className: "make-ai-artifact__comparison-item", children: [
204
- /* @__PURE__ */ a("span", { children: n.label }),
205
- /* @__PURE__ */ a("strong", { children: Fe(n.value, n.format, t.context.locale) }),
206
- n.hint ? /* @__PURE__ */ a("small", { children: n.hint }) : null
207
- ] }, n.id)) }),
208
- Ue(e, t)
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
- ), Ta = ({
212
+ ), ca = ({
213
213
  artifact: e,
214
214
  renderContext: t
215
215
  }) => {
216
- const n = e.data.series.flatMap((d) => d.points.map((g) => g.y)), { max: i, min: s } = Zt(n), o = i - s || 1;
217
- return qe(
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(Ae, { children: [
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((g, f) => {
223
- const p = 18 + (g.y - s) / o * 70;
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": `${g.x}: ${Fe(
229
- g.y,
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: `${p}%` },
236
- title: `${g.x}: ${Fe(
237
- g.y,
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: g.x })
244
- ] }, `${g.x}-${f}`);
243
+ /* @__PURE__ */ a("small", { children: p.x })
244
+ ] }, `${p.x}-${v}`);
245
245
  }) })
246
246
  ] }, d.id)) }),
247
- Ue(e, t)
247
+ Pe(e, t)
248
248
  ] }),
249
249
  "make-ai-artifact--trend",
250
250
  t.themeStyle
251
251
  );
252
- }, Ca = ({
252
+ }, la = ({
253
253
  artifact: e,
254
254
  renderContext: t
255
255
  }) => {
256
- const { max: n } = Zt(
257
- e.data.items.map((s) => Math.abs(s.value))
258
- ), i = Math.max(n, 1);
259
- return qe(
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(Ae, { children: [
262
- /* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((s, o) => /* @__PURE__ */ c("li", { children: [
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: s.label }),
266
- s.description ? /* @__PURE__ */ a("small", { children: s.description }) : null
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(s.value) / i * 100}%` } }) }),
269
- /* @__PURE__ */ a("strong", { children: Fe(s.value, s.format, t.context.locale) })
270
- ] }, s.id)) }),
271
- Ue(e, t)
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
- }, Na = (e, t) => t.action ?? {
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
- }, Ra = ({
281
+ }, ua = ({
282
282
  artifact: e,
283
283
  renderContext: t
284
- }) => qe(
284
+ }) => Be(
285
285
  e,
286
- /* @__PURE__ */ c(Ae, { 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((n) => {
288
- const i = Na(e, n), s = /* @__PURE__ */ c(Ae, { children: [
289
- /* @__PURE__ */ a("strong", { children: n.title ?? n.id }),
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
- Fe(
293
- n.values[o.key],
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: () => Gt(i, {
305
+ onClick: () => Ot(i, {
306
306
  artifact: e,
307
307
  context: t.context
308
308
  }, t),
309
- children: s
309
+ children: r
310
310
  },
311
- n.id
312
- ) : /* @__PURE__ */ a("div", { className: "make-ai-artifact__record", children: s }, n.id);
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
- Ue(e, t)
319
+ Pe(e, t)
320
320
  ] }),
321
321
  "make-ai-artifact--record-list",
322
322
  t.themeStyle
323
- ), Ea = ({
323
+ ), ma = ({
324
324
  artifact: e,
325
325
  renderContext: t
326
- }) => qe(
326
+ }) => Be(
327
327
  e,
328
- /* @__PURE__ */ c(Ae, { children: [
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
- Ue(e, t)
333
+ Pe(e, t)
334
334
  ] }),
335
335
  "make-ai-artifact--notice",
336
336
  t.themeStyle
337
- ), Oe = (e, t, n) => ({ id: e, kinds: [t], priority: 0, render: n }), Sa = [
338
- Oe("platform.metric.default", "metric", (e, t, n) => /* @__PURE__ */ a(Aa, { artifact: e, renderContext: n })),
339
- Oe("platform.comparison.default", "comparison", (e, t, n) => /* @__PURE__ */ a(Ma, { artifact: e, renderContext: n })),
340
- Oe("platform.trend.default", "trend", (e, t, n) => /* @__PURE__ */ a(Ta, { artifact: e, renderContext: n })),
341
- Oe("platform.ranking.default", "ranking", (e, t, n) => /* @__PURE__ */ a(Ca, { artifact: e, renderContext: n })),
342
- Oe("platform.record-list.default", "record-list", (e, t, n) => /* @__PURE__ */ a(Ra, { artifact: e, renderContext: n })),
343
- Oe("platform.notice.default", "notice", (e, t, n) => /* @__PURE__ */ a(Ea, { artifact: e, renderContext: n }))
344
- ], xa = Vt(Sa).templates, $a = (e = xa) => Vt(e), We = () => globalThis.crypto.randomUUID(), _t = (e) => {
345
- const t = e, n = t?.status ?? t?.response?.status;
346
- return n === 409 ? "数据已变化或对话仍在运行,请刷新后重试" : n === 401 || t?.code === "AI_AUTH_REQUIRED" || t?.code === "AI_AUTH_EXPIRED" ? "登录已失效,请重新登录" : n === 403 ? "当前账号无权访问该对话" : n === 404 ? "对话或回答已不可见,请刷新列表" : t?.message?.startsWith("输入内容过长") ? t.message : "操作未完成,请重试或刷新对话";
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 La(e, t) {
349
- const n = t.features?.conversationManagement === !0, i = n ? t.scopeKey?.(e) ?? e.app.id : "", s = C(i);
350
- s.current = i;
351
- const o = C(i), [d, g] = N(he), f = C(d), p = (r) => {
352
- const h = typeof r == "function" ? r(f.current) : r;
353
- f.current = h, g(h);
354
- }, [k, $] = N([]), [O, q] = N(), y = C(void 0), [V, ee] = N(""), [j, v] = N(-1), [u, l] = N(!1), [T, L] = N(!1), [re, E] = N(n), [J, K] = N(!1), [D, X] = N(), [ie, oe] = N([]), [pe, Me] = N([]), Te = C(/* @__PURE__ */ new Set()), Y = C(/* @__PURE__ */ new Map()), w = C(0), b = C(0), H = C(0), Z = C(void 0), te = C(void 0), De = C(/* @__PURE__ */ new Map()), S = (r, h = i) => b.current === r && s.current === h, ne = () => {
355
- const r = new AbortController();
356
- return Te.current.add(r), r;
357
- }, ce = (r) => Te.current.delete(r), fe = (r) => {
358
- y.current = r, q(r);
359
- }, Ce = () => {
360
- for (const r of Y.current.values()) r.abort();
361
- Y.current.clear();
362
- }, Q = (r) => {
363
- r instanceof Error && r.name === "AbortError" || (console.warn("[make-ai-assistant] conversation operation failed", {
364
- errorType: r instanceof Error ? r.name : typeof r
365
- }), X(_t(r)));
366
- }, ke = async (r) => {
367
- if (!n || !t.listConversations) return;
368
- const h = b.current, _ = ++H.current, A = ne();
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 M = await t.listConversations(
370
+ const I = await t.listConversations(
371
371
  e,
372
- { cursor: r },
373
- { signal: A.signal }
372
+ { cursor: n },
373
+ { signal: b.signal }
374
374
  );
375
- if (!S(h) || A.signal.aborted || _ !== H.current)
375
+ if (!$(m) || b.signal.aborted || y !== O.current)
376
376
  return;
377
- $((x) => [
377
+ F((D) => [
378
378
  ...new Map(
379
- [...r ? x : [], ...M.chats].map((I) => [
380
- I.chatId,
381
- I
379
+ [...n ? D : [], ...I.chats].map((k) => [
380
+ k.chatId,
381
+ k
382
382
  ])
383
383
  ).values()
384
- ]), ee(M.nextCursor);
385
- } catch (M) {
386
- S(h) && !A.signal.aborted && Q(M);
384
+ ]), g(I.nextCursor);
385
+ } catch (I) {
386
+ $(m) && !b.signal.aborted && Y(I);
387
387
  } finally {
388
- ce(A), S(h) && E(!1);
388
+ le(b), $(m) && R(!1);
389
389
  }
390
- }, Ne = async (r, h, _) => {
391
- const A = b.current, M = w.current;
392
- let x;
390
+ }, me = async (n, m, y) => {
391
+ const b = w.current, I = x.current;
392
+ let D;
393
393
  try {
394
- for await (const I of r) {
395
- if (!S(A) || h.signal.aborted || M !== w.current || y.current?.chatId !== _)
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 W = jt(I);
398
- if (W.type === "response.accepted" || W.type === "response.state") {
399
- x = W.responseId;
400
- const z = Y.current.get(x);
401
- if (z && z !== h) {
402
- W.type === "response.accepted" && p((B) => Ie(B, W)), h.abort();
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
- Y.current.set(x, h);
405
+ K.current.set(D, m);
406
406
  }
407
- p((z) => Ie(z, W)), W.type === "response.terminal" && (oe((z) => z.filter((B) => B !== W.responseId)), ke());
407
+ h((q) => Ne(q, V)), V.type === "response.terminal" && (ve((q) => q.filter((W) => W !== V.responseId)), re());
408
408
  }
409
- } catch (I) {
410
- S(A) && !h.signal.aborted && M === w.current && (Q(I), x || p((W) => ({
411
- ...W,
412
- status: Object.values(W.responses ?? {}).some(
413
- (z) => !ft(z.status)
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
- x && Y.current.get(x) === h && Y.current.delete(x), ce(h);
417
+ D && K.current.get(D) === m && K.current.delete(D), le(m);
418
418
  }
419
- }, Qe = async (r, h, _, A) => {
419
+ }, we = async (n, m, y, b) => {
420
420
  if (!t.getResponse || !t.watchResponse) return;
421
- const M = new Set(
422
- r.filter((I) => I.role === "assistant" && I.persistent).map((I) => I.responseId)
423
- ), x = [
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
- r.filter(
426
- (I) => I.role === "user" && I.responseId && !M.has(I.responseId)
427
- ).map((I) => [I.responseId, I.cursor ?? -1])
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 [I, W] of x) {
431
- if (!S(A) || _ !== w.current) return;
432
- if (Y.current.has(I)) continue;
433
- const z = ne();
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 B = await t.getResponse(
435
+ const W = await t.getResponse(
436
436
  e,
437
- { chatId: h, responseId: I },
438
- { signal: z.signal }
437
+ { chatId: m, responseId: k },
438
+ { signal: q.signal }
439
439
  );
440
- if (!S(A) || z.signal.aborted || _ !== w.current || Y.current.has(I)) continue;
441
- p(
442
- (ge) => Ie(
443
- ge,
444
- ft(B.status) ? { type: "response.snapshot", snapshot: B } : {
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: h,
447
- responseId: I,
448
- status: B.status
446
+ chatId: m,
447
+ responseId: k,
448
+ status: W.status
449
449
  }
450
450
  )
451
- ), B.status === "failed" || B.status === "cancelled" ? p(
452
- (ge) => Ie(ge, {
451
+ ), W.status === "failed" || W.status === "cancelled" ? h(
452
+ (be) => Ne(be, {
453
453
  type: "response.terminal",
454
- chatId: h,
455
- responseId: I,
456
- status: B.status
454
+ chatId: m,
455
+ responseId: k,
456
+ status: W.status
457
457
  })
458
- ) : (Y.current.set(I, z), Ne(
458
+ ) : (K.current.set(k, q), me(
459
459
  t.watchResponse(
460
460
  e,
461
- { chatId: h, responseId: I, historyCursor: W },
462
- { signal: z.signal }
461
+ { chatId: m, responseId: k, historyCursor: V },
462
+ { signal: q.signal }
463
463
  ),
464
- z,
465
- h
464
+ q,
465
+ m
466
466
  ));
467
- } catch (B) {
468
- S(A) && !z.signal.aborted && Q(B);
467
+ } catch (W) {
468
+ $(b) && !q.signal.aborted && Y(W);
469
469
  } finally {
470
- Y.current.get(I) !== z && ce(z);
470
+ K.current.get(k) !== q && le(q);
471
471
  }
472
472
  }
473
- }, de = async (r) => {
474
- const h = ++w.current, _ = b.current, A = ne();
475
- Ce(), X(void 0), E(!0), oe([]), te.current = void 0, fe(r), p({ messages: [], status: "idle", threadId: r.chatId }), v(-1), l(!1), L(!1);
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 [M, x] = await Promise.all([
477
+ const [I, D] = await Promise.all([
478
478
  t.getConversation(
479
479
  e,
480
- { chatId: r.chatId },
481
- { signal: A.signal }
480
+ { chatId: n.chatId },
481
+ { signal: b.signal }
482
482
  ),
483
483
  t.loadConversation(e, {
484
- threadId: r.chatId,
484
+ threadId: n.chatId,
485
485
  cursor: -1,
486
- signal: A.signal
486
+ signal: b.signal
487
487
  })
488
488
  ]);
489
- if (!S(_) || A.signal.aborted || h !== w.current)
489
+ if (!$(y) || b.signal.aborted || m !== x.current)
490
490
  return;
491
- if (M.chatId !== r.chatId || x.threadId !== r.chatId)
491
+ if (I.chatId !== n.chatId || D.threadId !== n.chatId)
492
492
  throw new Error("Conversation mismatch");
493
- fe(M), p(he(x)), v(x.nextCursor ?? -1), l(x.hasMore ?? !1), Qe(x.messages, r.chatId, h, _);
494
- } catch (M) {
495
- S(_) && !A.signal.aborted && h === w.current && Q(M);
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
- ce(A), S(_) && h === w.current && E(!1);
497
+ le(b), $(y) && m === x.current && R(!1);
498
498
  }
499
- }, ve = async () => {
500
- if (y.current) return y.current;
501
- if (Z.current ??= { requestId: We() }, Z.current.promise) return Z.current.promise;
502
- const r = b.current, h = w.current, _ = ne(), A = Z.current;
503
- return K(!0), A.promise = t.createConversation(
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: A.requestId },
506
- { signal: _.signal }
507
- ).then((M) => {
508
- if (!S(r) || _.signal.aborted || h !== w.current)
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 Z.current = void 0, fe(M), p({ messages: [], status: "idle", threadId: M.chatId }), ke(), M;
512
+ return ae.current = void 0, de(I), h({ messages: [], status: "idle", threadId: I.chatId }), re(), I;
513
513
  }).finally(() => {
514
- ce(_), A.promise = void 0, S(r) && K(!1);
515
- }), A.promise;
516
- }, et = async () => {
517
- if (!(J || Z.current?.promise)) {
518
- w.current += 1, Ce(), fe(void 0), X(void 0), te.current = void 0, p(he()), l(!1), v(-1);
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 ve();
521
- } catch (r) {
522
- Q(r);
520
+ await Ie();
521
+ } catch (n) {
522
+ Y(n);
523
523
  }
524
524
  }
525
- }, Re = async (r) => {
526
- const h = ne();
527
- te.current = r, X(void 0), f.current.messages.some((_) => _.id === r.message.id) || p((_) => Xt(_, r.message)), await Ne(
528
- t.run(r, { signal: h.signal }),
529
- h,
530
- r.threadId
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
- }, tt = async (r, h) => {
533
- if (!(!r.trim() && !h?.length))
532
+ }, Oe = async (n, m) => {
533
+ if (!(!n.trim() && !m?.length))
534
534
  try {
535
- const _ = await ve(), A = {
536
- id: We(),
537
- content: r,
538
- ...h ? { parts: h } : {}
535
+ const y = await Ie(), b = {
536
+ id: Fe(),
537
+ content: n,
538
+ ...m ? { parts: m } : {}
539
539
  };
540
- await Re({
541
- threadId: _.chatId,
542
- message: A,
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
- Q(_);
550
+ } catch (y) {
551
+ Y(y);
552
552
  }
553
- }, Ee = async () => {
554
- const r = te.current;
555
- if (!r || r.threadId !== y.current?.chatId) {
556
- y.current && await de(y.current);
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 h = f.current.messages.find(
560
- (_) => _.id === r.message.id
559
+ const m = v.current.messages.find(
560
+ (y) => y.id === n.message.id
561
561
  );
562
- if (h?.responseId && t.watchResponse) {
563
- const _ = h.responseId;
564
- if (Y.current.has(_)) return;
565
- const A = ne();
566
- Y.current.set(_, A), X(void 0), await Ne(
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: r.threadId,
571
- responseId: _,
572
- historyCursor: h.cursor
570
+ chatId: n.threadId,
571
+ responseId: y,
572
+ historyCursor: m.cursor
573
573
  },
574
- { signal: A.signal }
574
+ { signal: b.signal }
575
575
  ),
576
- A,
577
- r.threadId
576
+ b,
577
+ n.threadId
578
578
  );
579
- } else await Re(r);
580
- }, Se = async (r = f.current.activeRunId) => {
581
- const h = y.current;
582
- if (!h || !r || !t.cancelResponse || ie.includes(r))
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 _ = b.current, A = w.current, M = ne();
585
- oe((x) => [...x, r]), X(void 0);
584
+ const y = w.current, b = x.current, I = ee();
585
+ ve((D) => [...D, n]), Q(void 0);
586
586
  try {
587
- const x = await t.cancelResponse(
587
+ const D = await t.cancelResponse(
588
588
  e,
589
- { chatId: h.chatId, responseId: r },
590
- { signal: M.signal }
589
+ { chatId: m.chatId, responseId: n },
590
+ { signal: I.signal }
591
591
  );
592
- if (!S(_) || A !== w.current) return;
593
- if (ft(x.status))
594
- p(
595
- (I) => Ie(I, {
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: x
597
+ snapshot: D
598
598
  })
599
- ), oe((I) => I.filter((W) => W !== r));
600
- else if (!Y.current.has(r) && t.watchResponse) {
601
- const I = ne();
602
- Y.current.set(r, I), Ne(
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: h.chatId, responseId: r },
606
- { signal: I.signal }
605
+ { chatId: m.chatId, responseId: n },
606
+ { signal: k.signal }
607
607
  ),
608
- I,
609
- h.chatId
608
+ k,
609
+ m.chatId
610
610
  );
611
611
  }
612
- } catch (x) {
613
- S(_) && A === w.current && (Q(x), oe((I) => I.filter((W) => W !== r)));
612
+ } catch (D) {
613
+ $(y) && b === x.current && (Y(D), ve((k) => k.filter((V) => V !== n)));
614
614
  } finally {
615
- ce(M);
615
+ le(I);
616
616
  }
617
- }, xe = async (r, h = y.current) => {
618
- if (!h || J) return;
619
- const _ = b.current, A = ne();
620
- K(!0), X(void 0);
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 M = await t.updateConversation(
622
+ const I = await t.updateConversation(
623
623
  e,
624
- { chatId: h.chatId, expectedRevision: h.revision, ...r },
625
- { signal: A.signal }
624
+ { chatId: m.chatId, expectedRevision: m.revision, ...n },
625
+ { signal: b.signal }
626
626
  );
627
- if (!S(_)) return;
628
- y.current?.chatId === M.chatId && fe(M), await ke();
629
- } catch (M) {
630
- if (S(_)) {
631
- Q(M);
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 x = await t.getConversation(
633
+ const D = await t.getConversation(
634
634
  e,
635
- { chatId: h.chatId },
636
- { signal: A.signal }
635
+ { chatId: m.chatId },
636
+ { signal: b.signal }
637
637
  );
638
- S(_) && y.current?.chatId === h.chatId && fe(x);
638
+ $(y) && C.current?.chatId === m.chatId && de(D);
639
639
  } catch {
640
640
  }
641
- ke();
641
+ re();
642
642
  }
643
643
  } finally {
644
- ce(A), S(_) && K(!1);
644
+ le(b), $(y) && G(!1);
645
645
  }
646
- }, at = async (r = y.current) => {
647
- if (!r || J) return;
648
- const h = b.current, _ = ne();
649
- K(!0), X(void 0);
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: r.chatId, expectedRevision: r.revision },
654
- { signal: _.signal }
655
- ), !S(h)) return;
656
- y.current?.chatId === r.chatId && (w.current += 1, Ce(), fe(void 0), p(he())), await ke();
657
- } catch (A) {
658
- S(h) && Q(A);
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
- ce(_), S(h) && K(!1);
660
+ le(y), $(m) && G(!1);
661
661
  }
662
- }, Pe = async (r, h, _ = "", A = "") => {
663
- const M = y.current;
664
- if (!M || !r.persistent || !t.setFeedback || pe.includes(r.id))
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 x = {
667
- chatId: M.chatId,
668
- messageId: r.id,
669
- rating: h,
670
- ..._ ? { reason: _ } : {},
671
- ...A ? { comment: A } : {}
672
- }, I = De.current.get(r.id), { requestId: W, ...z } = I ?? {
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
- }, B = I && JSON.stringify(z) === JSON.stringify(x) ? I : { ...x, requestId: We() };
675
- De.current.set(r.id, B);
676
- const ge = b.current, Ke = w.current, Ve = ne();
677
- Me((ue) => [...ue, r.id]), X(void 0);
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 ue = await t.setFeedback(e, B, {
680
- signal: Ve.signal
679
+ const ke = await t.setFeedback(e, W, {
680
+ signal: tt.signal
681
681
  });
682
- return !S(ge) || Ke !== w.current || De.current.get(r.id) !== B ? void 0 : (p((Be) => ({
683
- ...Be,
684
- messages: Be.messages.map(
685
- (_e) => _e.id === r.id && ue.revision >= (_e.feedback?.revision ?? 0) ? { ..._e, feedback: ue } : _e
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
- })), De.current.delete(r.id), !0);
688
- } catch (ue) {
689
- return S(ge) && Ke === w.current && Q(ue), !1;
687
+ })), Ee.current.delete(n.id), !0);
688
+ } catch (ke) {
689
+ return $(be) && qe === x.current && Y(ke), !1;
690
690
  } finally {
691
- ce(Ve), S(ge) && Me((ue) => ue.filter((Be) => Be !== r.id));
691
+ le(tt), $(be) && ne((ke) => ke.filter((Ae) => Ae !== n.id));
692
692
  }
693
- }, nt = async () => {
694
- if (!y.current || !u || re) return;
695
- const r = b.current, h = w.current, _ = y.current, A = ne();
696
- E(!0);
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 M = await t.loadConversation(e, {
699
- threadId: _.chatId,
700
- cursor: j,
701
- signal: A.signal
698
+ const I = await t.loadConversation(e, {
699
+ threadId: y.chatId,
700
+ cursor: L,
701
+ signal: b.signal
702
702
  });
703
- if (!S(r) || h !== w.current) return;
704
- const x = he(M), I = [
703
+ if (!$(n) || m !== x.current) return;
704
+ const D = pe(I), k = [
705
705
  ...new Map(
706
- [...f.current.messages, ...x.messages].map((B) => [
707
- B.id,
708
- B
706
+ [...v.current.messages, ...D.messages].map((W) => [
707
+ W.id,
708
+ W
709
709
  ])
710
710
  ).values()
711
711
  ];
712
- let W = 0;
713
- const z = [];
714
- for (const B of I.slice(-200).reverse()) {
715
- if (W += [...B.content].length, W > 1e6) break;
716
- z.unshift(B);
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
- z.length < I.length && L(!0), p((B) => ({ ...B, messages: z })), v(M.nextCursor ?? j), l(M.hasMore ?? !1), Qe(M.messages, _.chatId, h, r);
719
- } catch (M) {
720
- S(r) && Q(M);
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
- ce(A), S(r) && E(!1);
722
+ le(b), $(n) && R(!1);
723
723
  }
724
724
  };
725
- ae(() => (b.current += 1, o.current = i, Z.current = void 0, te.current = void 0, De.current.clear(), fe(void 0), $([]), ee(""), p(he()), X(void 0), E(n), K(!1), oe([]), Me([]), n && ke(), () => {
726
- b.current += 1, w.current += 1;
727
- for (const r of Te.current) r.abort();
728
- Te.current.clear(), Y.current.clear();
729
- }), [n, i, t]);
730
- const $e = o.current === i;
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: n,
733
- state: $e ? d : he(),
734
- setState: p,
735
- chats: $e ? k : [],
736
- chat: $e ? O : void 0,
737
- listCursor: V,
738
- historyMore: u,
739
- historyTruncated: T,
740
- loading: !$e || re,
741
- busy: J,
742
- error: $e ? D : void 0,
743
- cancelling: ie,
744
- feedbackBusy: pe,
745
- refresh: ke,
746
- select: de,
747
- create: et,
748
- ensureChat: ve,
749
- send: tt,
750
- retry: Ee,
751
- stop: Se,
752
- update: xe,
753
- remove: at,
754
- feedback: Pe,
755
- moreHistory: nt,
756
- setError: X
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 Da = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), Pa = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) });
763
- function Fa({
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: n,
766
+ onDismiss: s,
767
767
  onNewConversation: i,
768
- triggerRef: s
768
+ triggerRef: r
769
769
  }) {
770
- const [o, d] = N(""), [g, f] = N(!1), p = C(null);
771
- return ae(() => {
772
- d(t.chat?.title ?? ""), f(!1);
773
- }, [t.chat?.chatId, t.chat?.title]), ae(() => {
774
- const k = ($) => {
775
- const O = $.target;
776
- O instanceof Node && (p.current?.contains(O) || s.current?.contains(O) || n());
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", k), () => {
779
- document.removeEventListener("pointerdown", k);
778
+ return document.addEventListener("pointerdown", _), () => {
779
+ document.removeEventListener("pointerdown", _);
780
780
  };
781
- }, [n, s]), /* @__PURE__ */ c(
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: p,
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((k) => /* @__PURE__ */ c(
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 === k.chatId,
821
+ "aria-pressed": t.chat?.chatId === _.chatId,
822
822
  onClick: () => {
823
- n(), t.select(k);
823
+ s(), t.select(_);
824
824
  },
825
825
  children: [
826
- /* @__PURE__ */ a(Da, {}),
827
- /* @__PURE__ */ a("span", { children: k.title || "未命名对话" })
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": `${k.pinned ? "取消置顶" : "置顶"} ${k.title}`,
836
+ "aria-label": `${_.pinned ? "取消置顶" : "置顶"} ${_.title}`,
837
837
  onClick: () => {
838
- t.update({ pinned: !k.pinned }, k);
838
+ t.update({ pinned: !_.pinned }, _);
839
839
  },
840
- children: k.pinned ? "★" : "☆"
840
+ children: _.pinned ? "★" : "☆"
841
841
  }
842
842
  )
843
843
  ]
844
844
  },
845
- k.chatId
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: (k) => d(k.currentTarget.value)
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: () => f(!0),
890
+ onClick: () => v(!0),
891
891
  children: "删除对话"
892
892
  }
893
893
  ),
894
- g ? /* @__PURE__ */ c("div", { role: "group", "aria-label": "确认删除对话", children: [
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
- f(!1), t.remove();
906
+ v(!1), t.remove();
907
907
  },
908
908
  children: "确认删除"
909
909
  }
910
910
  ),
911
- /* @__PURE__ */ a("button", { type: "button", onClick: () => f(!1), children: "保留" })
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(Pa, {}),
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 Ba({
949
+ function ka({
950
950
  message: e,
951
951
  manager: t
952
952
  }) {
953
- const [n, i] = N(!1), [s, o] = N(""), [d, g] = N(""), f = t.feedbackBusy.includes(e.id);
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 p = e.feedback?.rating ?? "none";
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": p === "like",
964
- disabled: f,
963
+ "aria-pressed": h === "like",
964
+ disabled: v,
965
965
  onClick: () => {
966
- t.feedback(e, p === "like" ? "none" : "like");
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": p === "dislike",
977
- disabled: f,
976
+ "aria-pressed": h === "dislike",
977
+ disabled: v,
978
978
  onClick: () => {
979
- if (p === "dislike") {
979
+ if (h === "dislike") {
980
980
  t.feedback(e, "none");
981
981
  return;
982
982
  }
983
- o(e.feedback?.reason ?? ""), g(e.feedback?.comment ?? ""), i(!0);
983
+ o(e.feedback?.reason ?? ""), p(e.feedback?.comment ?? ""), i(!0);
984
984
  },
985
985
  children: "踩"
986
986
  }
987
987
  ),
988
- p === "dislike" ? /* @__PURE__ */ a(
988
+ h === "dislike" ? /* @__PURE__ */ a(
989
989
  "button",
990
990
  {
991
991
  type: "button",
992
- disabled: f,
992
+ disabled: v,
993
993
  onClick: () => {
994
- o(e.feedback?.reason ?? ""), g(e.feedback?.comment ?? ""), i(!0);
994
+ o(e.feedback?.reason ?? ""), p(e.feedback?.comment ?? ""), i(!0);
995
995
  },
996
996
  children: "修改反馈"
997
997
  }
998
998
  ) : null,
999
- n ? /* @__PURE__ */ c(
999
+ s ? /* @__PURE__ */ c(
1000
1000
  "form",
1001
1001
  {
1002
- onSubmit: (k) => {
1003
- k.preventDefault(), t.feedback(e, "dislike", s, d).then(($) => {
1004
- $ && i(!1);
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: s,
1014
- onChange: (k) => o(k.currentTarget.value),
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: (k) => g(k.currentTarget.value),
1024
+ onChange: (_) => p(_.currentTarget.value),
1025
1025
  placeholder: "补充说明(可选)"
1026
1026
  }
1027
1027
  ),
1028
- /* @__PURE__ */ a("button", { type: "submit", disabled: f, children: "提交反馈" }),
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 Bt = /* @__PURE__ */ new Set([
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 za({
1048
+ function _a({
1049
1049
  part: e,
1050
1050
  context: t,
1051
- transport: n,
1051
+ transport: s,
1052
1052
  chatId: i
1053
1053
  }) {
1054
- const [s, o] = N(), [d, g] = N(), [f, p] = N(!1), k = C([]), $ = C(void 0);
1055
- ae(
1054
+ const [r, o] = E(), [d, p] = E(), [v, h] = E(!1), _ = N([]), F = N(void 0);
1055
+ oe(
1056
1056
  () => () => {
1057
- $.current?.abort(), k.current.forEach((q) => URL.revokeObjectURL(q));
1057
+ F.current?.abort(), _.current.forEach((X) => URL.revokeObjectURL(X));
1058
1058
  },
1059
1059
  []
1060
1060
  );
1061
- const O = async (q) => {
1062
- if (!n.readContent || f) return;
1063
- const y = new AbortController();
1064
- $.current = y, p(!0), g(void 0);
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 V = await n.readContent(
1066
+ const B = await s.readContent(
1067
1067
  t,
1068
1068
  { chatId: i, contentRef: e.media.contentRef },
1069
- { signal: y.signal }
1069
+ { signal: C.signal }
1070
1070
  );
1071
- if (y.signal.aborted) return;
1072
- const ee = new Blob([new Uint8Array(V).buffer], {
1073
- type: q && Bt.has(e.media.contentType) ? e.media.contentType : "application/octet-stream"
1074
- }), j = URL.createObjectURL(ee);
1075
- if (k.current.push(j), q) o(j);
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 v = document.createElement("a");
1078
- v.href = j, v.download = e.name ?? "attachment", v.click();
1077
+ const U = document.createElement("a");
1078
+ U.href = L, U.download = e.name ?? "attachment", U.click();
1079
1079
  }
1080
- } catch (V) {
1081
- y.signal.aborted || g(_t(V));
1080
+ } catch (B) {
1081
+ C.signal.aborted || p(vt(B));
1082
1082
  } finally {
1083
- y.signal.aborted || p(!1);
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__ */ a("button", { type: "button", disabled: f, onClick: () => {
1094
- O(!1);
1095
- }, children: "下载附件" }),
1096
- Bt.has(e.media.contentType) ? /* @__PURE__ */ a("button", { type: "button", disabled: f, onClick: () => {
1097
- O(!0);
1098
- }, children: "预览附件" }) : null,
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
- s && e.kind === "image" ? /* @__PURE__ */ a("img", { src: s, alt: e.name ?? "附件图片" }) : null,
1101
- s && e.kind === "audio" ? /* @__PURE__ */ a("audio", { src: s, controls: !0 }) : null,
1102
- s && e.kind === "video" ? /* @__PURE__ */ a("video", { src: s, controls: !0 }) : null
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 Ha({
1107
+ function wa({
1106
1108
  message: e,
1107
1109
  context: t,
1108
- transport: n,
1110
+ transport: s,
1109
1111
  chatId: i
1110
1112
  }) {
1111
- return /* @__PURE__ */ a(Ae, { children: e.parts?.map(
1112
- (s, o) => s.kind === "text" ? null : /* @__PURE__ */ a(
1113
- za,
1113
+ return /* @__PURE__ */ a(Ce, { children: e.parts?.map(
1114
+ (r, o) => r.kind === "text" ? null : /* @__PURE__ */ a(
1115
+ _a,
1114
1116
  {
1115
- part: s,
1117
+ part: r,
1116
1118
  context: t,
1117
- transport: n,
1119
+ transport: s,
1118
1120
  chatId: i
1119
1121
  },
1120
- s.id ?? `${e.id}:${o}`
1122
+ r.id ?? `${e.id}:${o}`
1121
1123
  )
1122
1124
  ) });
1123
1125
  }
1124
- const Oa = (e, t) => new Promise((n, i) => {
1125
- const s = new FileReader(), o = () => t.removeEventListener("abort", d), d = () => {
1126
- s.abort(), o(), i(Object.assign(new Error("Read aborted"), { name: "AbortError" }));
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 }), s.onload = () => {
1133
- o(), n(new Uint8Array(s.result));
1134
- }, s.onerror = () => {
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
- }, s.readAsArrayBuffer(e);
1138
+ }, r.readAsArrayBuffer(e);
1137
1139
  });
1138
- function Wa(e, t, n) {
1139
- const [i, s] = N([]), o = C(/* @__PURE__ */ new Map()), d = C(Promise.resolve()), g = t.scopeKey?.(e) ?? e.app.id, f = C(g);
1140
- f.current = g;
1141
- const p = C(void 0), k = n.enabled && t.features?.attachments === !0, $ = (u, l) => {
1142
- !o.current.has(u.draft.id) || u.scope !== f.current || (u.draft = { ...u.draft, ...l }, s([...o.current.values()].map((T) => T.draft)));
1143
- }, O = () => {
1144
- for (const u of o.current.values()) u.controller.abort();
1145
- o.current.clear(), s([]), p.current = void 0, d.current = Promise.resolve();
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
- ae(() => (O(), O), [g, t]), ae(() => {
1148
- p.current && n.chat?.chatId !== p.current && O();
1149
- }, [n.chat?.chatId]);
1150
- const q = async (u) => {
1151
- const l = u.controller.signal, T = () => {
1152
- if (l.aborted || u.scope !== f.current || !o.current.has(u.draft.id))
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 (T(), u.file.size > 64 << 20) throw new Error("文件不能超过 64 MiB");
1159
- const L = await n.ensureChat();
1160
- T(), p.current = L.chatId;
1161
- const re = u.file.type.split(";")[0].trim().toLowerCase() || "application/octet-stream";
1162
- $(u, { status: "uploading", error: void 0 });
1163
- let E = u.draft.upload ? await t.getUpload(
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: L.chatId, uploadId: u.draft.upload.id },
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: L.chatId,
1171
- fileId: u.draft.fileId,
1172
- name: u.file.name,
1173
- contentType: re,
1174
- sizeBytes: u.file.size
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 (T(), $(u, { upload: E }), E.name !== u.file.name || E.contentType !== re || E.sizeBytes !== u.file.size)
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 (E.status !== "ready") {
1181
- E = await t.getUpload(
1182
+ if (R.status !== "ready") {
1183
+ R = await t.getUpload(
1182
1184
  e,
1183
- { chatId: L.chatId, uploadId: E.id },
1185
+ { chatId: T.chatId, uploadId: R.id },
1184
1186
  { signal: l }
1185
- ), T();
1186
- const J = new Set(E.completedParts), K = Math.ceil(u.file.size / E.partSize);
1187
- for (let D = 0; D < K; D += 1) {
1188
- if (T(), !J.has(D)) {
1189
- const X = await Oa(
1190
- u.file.slice(
1191
- D * E.partSize,
1192
- Math.min(u.file.size, (D + 1) * E.partSize)
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
- T(), await t.uploadPart(
1198
+ S(), await t.uploadPart(
1197
1199
  e,
1198
- { chatId: L.chatId, uploadId: E.id, part: D, bytes: X },
1200
+ { chatId: T.chatId, uploadId: R.id, part: P, bytes: Q },
1199
1201
  { signal: l }
1200
- ), T(), J.add(D);
1202
+ ), S(), Z.add(P);
1201
1203
  }
1202
- $(u, { progress: J.size / Math.max(K, 1) });
1204
+ F(f, { progress: Z.size / Math.max(G, 1) });
1203
1205
  }
1204
- $(u, { status: "completing" }), E = await t.completeUpload(
1206
+ F(f, { status: "completing" }), R = await t.completeUpload(
1205
1207
  e,
1206
- { chatId: L.chatId, uploadId: E.id },
1208
+ { chatId: T.chatId, uploadId: R.id },
1207
1209
  { signal: l }
1208
- ), T();
1210
+ ), S();
1209
1211
  }
1210
- if (E.status !== "ready" || !E.content)
1212
+ if (R.status !== "ready" || !R.content)
1211
1213
  throw new Error("上传尚未完成");
1212
- $(u, { status: "ready", progress: 1, upload: E });
1213
- } catch (L) {
1214
- $(u, {
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 : _t(L)
1218
+ error: l.aborted ? void 0 : vt(T)
1217
1219
  });
1218
1220
  }
1219
- }, y = (u) => {
1220
- if (k) {
1221
- if (u.length + o.current.size > 32) {
1222
- n.setError("每条消息最多包含 32 个附件或文本片段");
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 u) {
1226
- const T = {
1227
- id: We(),
1228
- fileId: We(),
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
- }, L = {
1234
- draft: T,
1235
+ }, T = {
1236
+ draft: S,
1235
1237
  file: l,
1236
1238
  controller: new AbortController(),
1237
- scope: g
1239
+ scope: p
1238
1240
  };
1239
- o.current.set(T.id, L), d.current = d.current.then(() => q(L));
1241
+ o.current.set(S.id, T), d.current = d.current.then(() => X(T));
1240
1242
  }
1241
- s([...o.current.values()].map((l) => l.draft));
1243
+ r([...o.current.values()].map((l) => l.draft));
1242
1244
  }
1243
- }, V = (u) => {
1244
- const l = o.current.get(u);
1245
- !l || !["paused", "failed"].includes(l.draft.status) || (l.controller = new AbortController(), $(l, { status: "queued" }), d.current = d.current.then(() => q(l)));
1246
- }, ee = (u) => {
1247
- o.current.get(u)?.controller.abort(), o.current.delete(u), s([...o.current.values()].map((T) => T.draft));
1248
- }, j = (u) => o.current.get(u)?.controller.abort(), v = i.flatMap((u) => {
1249
- const l = u.upload;
1250
- if (u.status !== "ready" || !l?.content) return [];
1251
- const T = l.contentType.startsWith("image/") && l.contentType !== "image/svg+xml" ? "image" : l.contentType.startsWith("audio/") ? "audio" : l.contentType.startsWith("video/") ? "video" : "file";
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: u.id,
1255
- kind: T,
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: k,
1269
+ enabled: _,
1268
1270
  drafts: i,
1269
- parts: v,
1270
- pending: i.some((u) => u.status !== "ready"),
1271
- add: y,
1272
- retry: V,
1273
- remove: ee,
1274
- pause: j,
1275
- clear: O
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 Ua({
1280
+ function Ca({
1279
1281
  attachments: e,
1280
1282
  onOpenChange: t,
1281
- open: n,
1283
+ open: s,
1282
1284
  triggerRef: i
1283
1285
  }) {
1284
- const s = C(null), o = C(null), d = C(null);
1285
- ae(() => {
1286
- if (!n) return;
1287
- const f = (p) => {
1288
- const k = p.target;
1289
- k instanceof Node && !s.current?.contains(k) && t(!1);
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", f), () => {
1292
- document.removeEventListener("pointerdown", f);
1293
+ return document.addEventListener("pointerdown", p), () => {
1294
+ document.removeEventListener("pointerdown", p);
1293
1295
  };
1294
- }, [t, n]);
1295
- const g = (f) => {
1296
- e.add(Array.from(f.files ?? [])), f.value = "", t(!1);
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: s, children: [
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": n,
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(!n),
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
- n ? /* @__PURE__ */ c(
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
- /* @__PURE__ */ c(
1321
- "button",
1322
- {
1323
- role: "menuitem",
1324
- type: "button",
1325
- onClick: () => o.current?.click(),
1326
- children: [
1327
- /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
1328
- /* @__PURE__ */ a("rect", { height: "15", rx: "2", width: "18", x: "3", y: "4.5" }),
1329
- /* @__PURE__ */ a("circle", { cx: "8.5", cy: "9", r: "1.5" }),
1330
- /* @__PURE__ */ a("path", { d: "m5.5 17 4.2-4.2 2.8 2.7 2.2-2.1 3.8 3.6" })
1331
- ] }),
1332
- /* @__PURE__ */ a("span", { children: "上传图片" })
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
- accept: "image/*",
1358
- "aria-label": "上传图片",
1341
+ "aria-label": "上传文件或图片",
1359
1342
  hidden: !0,
1360
1343
  multiple: !0,
1361
1344
  ref: o,
1362
1345
  type: "file",
1363
- onChange: (f) => g(f.currentTarget)
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 qa({
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 Ka = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, Va = "Make", ja = [
1367
+ const Ra = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`, Ea = "Make", Sa = [
1396
1368
  "总结当前页面数据",
1397
1369
  "找出需要关注的记录",
1398
1370
  "列出我有权限查看的数据对象"
1399
- ], Jt = (e, t) => t ?? `${e?.trim() || Va} AI 助手`, Xa = (e) => e ?? ja, Ya = /^只读分析\s*[·•]\s*/u, Za = (e, t) => e?.trim().replace(Ya, "").trim() || `当前对象:${t ?? "未命名应用"}`, Ga = 480, Qt = 1024, Ja = 0.72, zt = 16, be = 16, Ge = 8, vt = (e, t, n) => Math.min(Math.max(e, Math.min(t, n)), n), Qa = (e) => typeof e == "number" && Number.isFinite(e) && e > 0 ? e : void 0, en = (e, t, n) => {
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
- Qt,
1402
- n * Ja
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 p || {
1437
- left: Ht(
1438
- d - s / 2,
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 ut = (e, t) => {
1380
+ const ot = (e, t) => {
1453
1381
  if (!(typeof e != "object" || e === null))
1454
1382
  return e[t];
1455
- }, nn = (e) => {
1456
- const t = ut(e, "status");
1457
- return typeof t == "number" ? t : ut(
1458
- ut(e, "response"),
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
- }, sn = (e) => {
1462
- const t = ut(e, "code"), n = nn(e), i = e instanceof Error ? e.message : "", s = [t, i].filter((f) => typeof f == "string").join(" ").toLowerCase(), d = globalThis.navigator?.onLine === !1 || /network|fetch|timeout|offline|connection|网络|连接|超时/.test(s), g = typeof n == "number" && n >= 500 || /server|service|服务器|服务异常/.test(s);
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
- } : g ? {
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
- }, Ot = (e) => {
1410
+ }, St = (e) => {
1483
1411
  try {
1484
1412
  const t = e?.return?.();
1485
1413
  if (!t) return;
1486
- Promise.resolve(t).catch((n) => {
1414
+ Promise.resolve(t).catch((s) => {
1487
1415
  console.error("[make-ai-assistant] transport iterator close failed", {
1488
- errorType: n instanceof Error ? n.name : typeof n
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
- }, rn = async (e) => {
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 n = document.execCommand("copy");
1506
- if (t.remove(), !n)
1433
+ const s = document.execCommand("copy");
1434
+ if (t.remove(), !s)
1507
1435
  throw new Error("Clipboard copy failed");
1508
- }, ea = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), on = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m6 6 12 12M18 6 6 18" }) }), cn = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), ln = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), dn = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), mn = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }), hn = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), pn = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m7 10 5 5 5-5" }) }), Wt = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), ta = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), fn = () => /* @__PURE__ */ c("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
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
- ] }), mt = ({ className: e = "" }) => /* @__PURE__ */ a("span", { className: `make-ai-assistant__avatar ${e}`.trim(), "aria-hidden": "true", children: /* @__PURE__ */ a(ea, {}) }), vn = ({ src: e }) => e ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__user-avatar", "aria-hidden": "true", children: /* @__PURE__ */ a("img", { alt: "", src: e }) }) : null, gn = ({
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 n = t?.trim();
1547
- return !n && !e ? null : /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-identity", children: [
1548
- n ? /* @__PURE__ */ a("span", { className: "make-ai-assistant__message-sender", children: n }) : null,
1549
- /* @__PURE__ */ a(vn, { src: e })
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
- }, gt = (e) => {
1475
+ }, ht = (e) => {
1552
1476
  const t = e.trim();
1553
1477
  if (!(!t.startsWith("|") || !t.endsWith("|")))
1554
- return t.slice(1, -1).split("|").map((n) => n.trim());
1555
- }, yn = (e) => e.length > 0 && e.every((t) => /^:?-{3,}:?$/.test(t)), bn = (e, t) => {
1556
- const n = gt(e[t] ?? ""), i = gt(e[t + 1] ?? "");
1557
- if (!n || !i || n.length !== i.length || !yn(i))
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 s = [];
1483
+ const r = [];
1560
1484
  let o = t + 2;
1561
1485
  for (; o < e.length; ) {
1562
- const d = gt(e[o] ?? "");
1563
- if (!d || d.length !== n.length) break;
1564
- s.push(d), o += 1;
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: n, lastIndex: o - 1, rows: s };
1567
- }, kn = (e) => {
1568
- const t = [], n = [], i = [], s = [], o = e.replace(/\r\n?/g, `
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 p = n.join(`
1495
+ const h = s.join(`
1572
1496
  `).trim();
1573
- n.length = 0, p && t.push({ type: "paragraph", text: p });
1574
- }, g = () => {
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
- }, f = () => {
1577
- const p = s.join(`
1500
+ }, v = () => {
1501
+ const h = r.join(`
1578
1502
  `).trim();
1579
- s.length = 0, p && t.push({ type: "pre", text: p });
1503
+ r.length = 0, h && t.push({ type: "pre", text: h });
1580
1504
  };
1581
- for (let p = 0; p < o.length; p += 1) {
1582
- const k = o[p] ?? "", $ = k.trim();
1583
- if (!$) {
1584
- d(), g(), f();
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 O = bn(o, p);
1588
- if (O) {
1589
- d(), g(), f(), t.push({ headers: O.headers, rows: O.rows, type: "table" }), p = O.lastIndex;
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 q = /^(#{1,6})\s+(.+)$/.exec($);
1593
- if (q) {
1594
- d(), g(), f();
1595
- const V = (q[2] ?? "").replace(/\s+#+\s*$/, "").trim();
1596
- V && t.push({
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: q[1]?.length,
1599
- text: V
1522
+ level: X[1]?.length,
1523
+ text: B
1600
1524
  });
1601
1525
  continue;
1602
1526
  }
1603
- if (/^\s*\|.+\|\s*$/.test(k)) {
1604
- d(), g(), s.push(k.trim());
1527
+ if (/^\s*\|.+\|\s*$/.test(_)) {
1528
+ d(), p(), r.push(_.trim());
1605
1529
  continue;
1606
1530
  }
1607
- const y = /^\s*[-*]\s+(.+)$/.exec(k);
1608
- if (y) {
1609
- d(), f(), i.push(y[1]?.trim() ?? "");
1531
+ const C = /^\s*[-*]\s+(.+)$/.exec(_);
1532
+ if (C) {
1533
+ d(), v(), i.push(C[1]?.trim() ?? "");
1610
1534
  continue;
1611
1535
  }
1612
- g(), f(), n.push($);
1536
+ p(), v(), s.push(F);
1613
1537
  }
1614
- return d(), g(), f(), t;
1615
- }, Je = (e) => {
1616
- const t = [], n = /(\*\*[^*]+\*\*|`[^`]+`)/g;
1538
+ return d(), p(), v(), t;
1539
+ }, Xe = (e) => {
1540
+ const t = [], s = /(\*\*[^*]+\*\*|`[^`]+`)/g;
1617
1541
  let i = 0;
1618
- for (const s of e.matchAll(n)) {
1619
- const o = s[0], d = s.index ?? 0;
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
- }, Ut = ({ content: e }) => {
1624
- const t = kn(e);
1625
- return t.length ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble make-ai-assistant__assistant-text", children: t.map((n, i) => {
1626
- if (n.type === "heading") {
1627
- const s = n.level <= 2 ? "h3" : "h4";
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
- s,
1553
+ r,
1630
1554
  {
1631
- className: `make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${n.level}`,
1632
- children: Je(n.text)
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 n.type === "paragraph" ? /* @__PURE__ */ a("p", { children: Je(n.text) }, `${i}-paragraph`) : n.type === "pre" ? /* @__PURE__ */ a("pre", { children: /* @__PURE__ */ a("code", { children: n.text }) }, `${i}-pre`) : n.type === "table" ? /* @__PURE__ */ a(
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: n.headers.map((s, o) => /* @__PURE__ */ a("th", { scope: "col", children: Je(s) }, `${o}-${s}`)) }) }),
1646
- /* @__PURE__ */ a("tbody", { children: n.rows.map((s, o) => /* @__PURE__ */ a("tr", { children: s.map((d, g) => /* @__PURE__ */ a("td", { children: Je(d) }, `${g}-${d}`)) }, `${o}-${s.join("|")}`)) })
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: n.items.map((s, o) => /* @__PURE__ */ a("li", { children: Je(s) }, `${o}-${s}`)) }, `${i}-list`);
1574
+ ) : /* @__PURE__ */ a("ul", { children: s.items.map((r, o) => /* @__PURE__ */ a("li", { children: Xe(r) }, `${o}-${r}`)) }, `${i}-list`);
1651
1575
  }) }) : null;
1652
- }, aa = ({ assistantName: e }) => /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-identity", children: [
1653
- /* @__PURE__ */ a(mt, { className: "make-ai-assistant__avatar--message" }),
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
- ] }), na = (e) => {
1579
+ ] }), Xt = (e) => {
1656
1580
  for (let t = e.messages.length - 1; t >= 0; t -= 1) {
1657
- const n = e.messages[t];
1658
- if (n.role === "assistant" && n.status === "streaming")
1659
- return n.id;
1581
+ const s = e.messages[t];
1582
+ if (s.role === "assistant" && s.status === "streaming")
1583
+ return s.id;
1660
1584
  }
1661
- }, _n = (e) => {
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
- }, sa = (e) => {
1666
- const t = _n(e);
1589
+ }, Zt = (e) => {
1590
+ const t = es(e);
1667
1591
  if (!(t < 0))
1668
- for (let n = e.messages.length - 1; n > t; n -= 1) {
1669
- const i = e.messages[n];
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
- }, wn = (e) => {
1596
+ }, ts = (e) => {
1673
1597
  if (e.status === "idle")
1674
1598
  for (let t = e.messages.length - 1; t >= 0; t -= 1) {
1675
- const n = e.messages[t];
1676
- if (n.role === "assistant" && n.status === "complete")
1677
- return n.id;
1599
+ const s = e.messages[t];
1600
+ if (s.role === "assistant" && s.status === "complete")
1601
+ return s.id;
1678
1602
  }
1679
- }, In = (e) => {
1603
+ }, as = (e) => {
1680
1604
  for (let t = e.messages.length - 1; t >= 0; t -= 1) {
1681
- const n = e.messages[t];
1682
- if (n.role === "user") return n;
1605
+ const s = e.messages[t];
1606
+ if (s.role === "user") return s;
1683
1607
  }
1684
- }, An = (e, t) => {
1685
- const n = e.messages.findIndex(
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: n < 0 ? e.messages : e.messages.slice(0, n + 1)
1617
+ messages: s < 0 ? e.messages : e.messages.slice(0, s + 1)
1694
1618
  };
1695
- }, Mn = (e) => e.scrollHeight - e.scrollTop - e.clientHeight <= 48, qt = (e = "smooth") => globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : e, yt = (e, t) => {
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
- }, ra = ({
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(fn, {}) }),
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(ta, {}),
1643
+ /* @__PURE__ */ a(Vt, {}),
1720
1644
  "重新发送"
1721
1645
  ]
1722
1646
  }
1723
1647
  ) : null
1724
1648
  ]
1725
1649
  }
1726
- ), Tn = ({
1650
+ ), rs = ({
1727
1651
  error: e,
1728
1652
  onRetry: t
1729
1653
  }) => {
1730
- const n = sn(e);
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": n.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: n.label }),
1745
- /* @__PURE__ */ a("h3", { children: n.title }),
1746
- /* @__PURE__ */ a("p", { children: n.description })
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(ta, {}),
1756
- n.actionLabel
1679
+ /* @__PURE__ */ a(Vt, {}),
1680
+ s.actionLabel
1757
1681
  ]
1758
1682
  }
1759
1683
  )
1760
1684
  ]
1761
1685
  }
1762
1686
  );
1763
- }, ia = ({
1687
+ }, Yt = ({
1764
1688
  active: e,
1765
1689
  steps: t
1766
1690
  }) => {
1767
1691
  if (!e || !t?.length) return null;
1768
- const n = t[t.length - 1] ?? "处理中";
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: n })
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, s) => /* @__PURE__ */ c(
1704
+ /* @__PURE__ */ a("ol", { children: t.map((i, r) => /* @__PURE__ */ c(
1781
1705
  "li",
1782
1706
  {
1783
- "data-step-active": s === t.length - 1 ? !0 : void 0,
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
- `${s}-${i}`
1713
+ `${r}-${i}`
1790
1714
  )) })
1791
1715
  ] });
1792
- }, Cn = ({
1716
+ }, is = ({
1793
1717
  copyFeedback: e,
1794
1718
  onCopy: t,
1795
- onRegenerate: n
1796
- }) => !t && !n ? null : /* @__PURE__ */ c("div", { className: "make-ai-assistant__reply-actions", "aria-label": "回复操作", children: [
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(cn, {})
1729
+ children: /* @__PURE__ */ a(Oa, {})
1806
1730
  }
1807
1731
  ) : null,
1808
- n ? /* @__PURE__ */ a(
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: n,
1816
- children: /* @__PURE__ */ a(ln, {})
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
- ] }), Kt = ({
1752
+ ] }), xt = ({
1829
1753
  assistantName: e,
1830
1754
  error: t,
1831
- onRetry: n,
1755
+ onRetry: s,
1832
1756
  progress: i
1833
1757
  }) => {
1834
- const s = t ? "error" : "progress";
1758
+ const r = t ? "error" : "progress";
1835
1759
  return t?.message ?? i?.message ? /* @__PURE__ */ a(
1836
1760
  "article",
1837
1761
  {
1838
- "aria-label": `${e}的${s === "error" ? "错误消息" : "状态消息"}`,
1839
- className: `make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${s}`,
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": s,
1765
+ "data-message-state": r,
1842
1766
  children: /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-turn", children: [
1843
- /* @__PURE__ */ a(aa, { assistantName: e }),
1844
- /* @__PURE__ */ a("div", { className: "make-ai-assistant__message-stack", children: t ? /* @__PURE__ */ a(ra, { error: t, onRetry: n }) : /* @__PURE__ */ a(ia, { active: !0, steps: i?.steps }) })
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
- }, Nn = (e, t, n, i, s, o, d, g, f, p, k, $, O, q, y, V) => {
1849
- const ee = sa(e), j = na(e), v = wn(e);
1850
- let u;
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(Ut, { content: l.content })
1778
+ /* @__PURE__ */ a(Dt, { content: l.content })
1855
1779
  ] }, l.id);
1856
- const T = l.role === "assistant", L = u;
1857
- T || (u = l);
1858
- const re = l.id === j, E = l.id === ee ? e.error : void 0, J = l.error ?? E, K = !T && !!(f?.trim() || p), D = T ? d : f?.trim() || "用户", X = T && l.status === "complete" && !J && (l.content.trim() || l.id === v);
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": `${D}的消息`,
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": J ? "error" : void 0,
1789
+ "data-message-state": Z ? "error" : void 0,
1866
1790
  "data-message-status": l.status,
1867
- "data-message-has-identity": T || K ? !0 : void 0,
1791
+ "data-message-has-identity": S || G ? !0 : void 0,
1868
1792
  children: /* @__PURE__ */ c("div", { className: "make-ai-assistant__message-turn", children: [
1869
- T ? /* @__PURE__ */ a(aa, { assistantName: d }) : K ? /* @__PURE__ */ a(gn, { userAvatarUrl: p, userName: f }) : null,
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
- T && l.responseId && e.responses?.[l.responseId]?.status === "cancelled" ? /* @__PURE__ */ a("p", { className: "make-ai-assistant__response-status", role: "status", children: "已停止生成" }) : null,
1872
- l.content ? T ? /* @__PURE__ */ a(Ut, { 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: [
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
- T ? /* @__PURE__ */ a(
1878
- ia,
1801
+ S ? /* @__PURE__ */ a(
1802
+ Yt,
1879
1803
  {
1880
- active: re && e.status === "streaming",
1804
+ active: te && e.status === "streaming",
1881
1805
  steps: l.progressSteps
1882
1806
  }
1883
1807
  ) : null,
1884
- J ? /* @__PURE__ */ a(
1885
- ra,
1808
+ Z ? /* @__PURE__ */ a(
1809
+ Gt,
1886
1810
  {
1887
- error: J,
1888
- onRetry: E ? g : void 0
1811
+ error: Z,
1812
+ onRetry: R ? p : void 0
1889
1813
  }
1890
1814
  ) : null,
1891
- l.artifacts.map((ie) => /* @__PURE__ */ a(
1892
- Ia,
1815
+ l.artifacts.map((fe) => /* @__PURE__ */ a(
1816
+ ra,
1893
1817
  {
1894
- artifact: ie,
1818
+ artifact: fe,
1895
1819
  context: t,
1896
- onAction: s,
1820
+ onAction: r,
1897
1821
  onActionError: o,
1898
- registry: n,
1822
+ registry: s,
1899
1823
  theme: i
1900
1824
  },
1901
- ie.id
1825
+ fe.id
1902
1826
  )),
1903
- y && V && e.threadId ? /* @__PURE__ */ a(Ha, { message: l, context: t, transport: V, chatId: e.threadId }) : null,
1904
- y && V?.features?.feedback ? /* @__PURE__ */ a(Ba, { message: l, manager: y }) : null,
1905
- X ? /* @__PURE__ */ a(
1906
- Cn,
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: k?.messageId === l.id ? {
1909
- message: k.message,
1910
- status: k.status
1832
+ copyFeedback: _?.messageId === l.id ? {
1833
+ message: _.message,
1834
+ status: _.status
1911
1835
  } : void 0,
1912
- onCopy: l.content.trim() ? () => O(l.id, l.content) : void 0,
1913
- onRegenerate: $ && l.id === v && L ? () => q({
1914
- userMessage: L,
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 oa({
1850
+ function Jt({
1927
1851
  assistantName: e = "AI 助手",
1928
1852
  brandName: t,
1929
- context: n,
1853
+ context: s,
1930
1854
  onAction: i,
1931
- onActionError: s,
1855
+ onActionError: r,
1932
1856
  onClose: o,
1933
1857
  onNewConversation: d,
1934
- headerHeight: g,
1935
- privacyNotice: f,
1936
- registry: p,
1937
- subtitle: k,
1938
- suggestions: $,
1939
- title: O,
1940
- theme: q,
1941
- transport: y,
1942
- userAvatarUrl: V,
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 v = La(n, y), u = Wa(n, y, v), l = Jt(t, O), T = f?.trim(), L = Za(k, n.app.name), re = an(g), E = kt(q), J = E || re ? {
1947
- ...E,
1948
- ...re ? { "--make-ai-internal-header-height": re } : {}
1949
- } : void 0, [K, D] = N(""), [X, ie] = N(!1), [oe, pe] = N(!1), Me = v.enabled ? y.scopeKey?.(n) ?? n.app.id : "";
1950
- bt(() => {
1951
- v.enabled && D("");
1952
- }, [Me, v.enabled]);
1953
- const [Te, Y] = N(he), w = v.enabled ? v.state : Te, b = v.enabled ? v.setState : Y, H = C(w);
1954
- H.current = w;
1955
- const [Z, te] = N(void 0), [De, S] = N(void 0), [ne, ce] = N(0), [fe, Ce] = N(() => y.loadConversation ? "loading" : "ready"), Q = v.enabled ? v.loading && !w.messages.length ? "loading" : "ready" : fe, [ke, Ne] = N(void 0), [Qe, de] = N(!1), [ve, et] = N(!1), [Re, tt] = N(void 0), Ee = C(void 0), Se = C(void 0), xe = C(0), at = C(null), Pe = C(null), nt = C(null), $e = C(null), r = C(null), h = C(null), _ = C(null), A = C(null), M = C(!0), x = C(n.app.id), I = C(j), W = Dt(), z = Dt(), B = Pt(
1956
- () => p ?? $a(),
1957
- [p]
1958
- ), ge = Pt(
1959
- () => Xa($),
1960
- [$]
1961
- ), Ke = () => {
1962
- const m = h.current, P = _.current;
1963
- if (!m || !P || typeof window > "u") return;
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
- ae(() => () => {
1995
- _e("unmount");
1996
- }, []), ae(() => {
1997
- if (v.enabled) return;
1998
- const m = y.loadConversation, P = x.current !== n.app.id;
1999
- if (x.current = n.app.id, _e("reinitialize"), P && (D(""), M.current = !0), te(void 0), S(void 0), de(!1), b(he()), !m) {
2000
- Ne(void 0), Ce("ready");
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 F = new AbortController();
2004
- return Ne(void 0), Ce("loading"), console.info("[make-ai-assistant] conversation load start", {
2005
- appId: n.app.id
2006
- }), m.call(y, n, { signal: F.signal }).then((U) => {
2007
- F.signal.aborted || (b(he(U)), Ce("ready"), console.info("[make-ai-assistant] conversation load success", {
2008
- appId: n.app.id,
2009
- messageCount: U.messages.length
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((U) => {
2012
- F.signal.aborted || (console.error("[make-ai-assistant] conversation load failed", {
2013
- appId: n.app.id,
2014
- errorType: U instanceof Error ? U.name : typeof U
2015
- }), Ne(U), Ce("error"));
2016
- }), () => F.abort();
2017
- }, [n.app.id, ne, y, v.enabled]), ae(() => {
2018
- const m = Pe.current;
2019
- if (!m || !M.current) return;
2020
- de(!1);
2021
- const P = requestAnimationFrame(() => {
2022
- if (!M.current) return;
2023
- const F = w.status === "streaming" || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
2024
- yt(m, F);
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(P);
2027
- }, [w.messages, w.progress, w.status]), ae(() => {
2028
- j || (ie(!1), pe(!1));
2029
- }, [j]), ae(() => {
2030
- const m = j && !I.current;
2031
- if (I.current = j, !m) return;
2032
- const P = requestAnimationFrame(() => {
2033
- const F = Pe.current;
2034
- if (F && M.current) {
2035
- de(!1);
2036
- const je = H.current.status === "streaming" ? "auto" : qt();
2037
- yt(F, je);
2038
- } else F && de(H.current.messages.length > 0);
2039
- const U = nt.current;
2040
- (U && !U.disabled ? U : A.current ?? at.current?.querySelector("button:not(:disabled)"))?.focus();
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(P);
2043
- }, [j]);
2044
- const ca = () => {
2045
- const m = Pe.current;
2046
- if (!m) return;
2047
- const P = Mn(m);
2048
- M.current = P, de(!P && H.current.messages.length > 0);
2049
- }, la = () => {
2050
- const m = Pe.current;
2051
- if (!m) return;
2052
- M.current = !0, de(!1);
2053
- const P = qt();
2054
- yt(m, P);
2055
- }, wt = async (m, P) => {
2056
- const F = m.trim(), U = H.current, we = P?.regenerateFrom, je = y.regenerate;
2057
- if (!F || Q !== "ready" || U.status === "streaming" || Ee.current || we && !je) return;
2058
- if (dt(
2059
- F,
2060
- le.messageCharacters
2061
- ) > le.messageCharacters) {
2062
- te(
2063
- `输入内容过长,请控制在 ${le.messageCharacters} 个字符以内`
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 it = {
2068
- id: we?.userMessage.id ?? Ka("user"),
2069
- content: F
2070
- }, ot = we ? An(U, we.userMessage.id) : Xt(U, it), ct = new AbortController(), ze = xe.current + 1;
2071
- xe.current = ze, Ee.current = ct, te(void 0), S(void 0), de(!M.current && U.messages.length > 0), we || D(""), b(ot);
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 Le = !1, se, Tt = 0, Ct = 0, Nt = 0, ht = 0, Xe = 0;
2074
- const Ye = /* @__PURE__ */ new Map(), Rt = /* @__PURE__ */ new Set(), Et = /* @__PURE__ */ new Set(
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
- ...ot.messages.map((lt) => lt.id),
2077
- it.id
1969
+ ...st.messages.map((rt) => rt.id),
1970
+ at.id
2078
1971
  ]
2079
- ), Ze = /* @__PURE__ */ new Set(), St = wa(B), xt = { signal: ct.signal };
2080
- let pt;
2081
- if (we) {
2082
- if (!je)
2083
- throw new G("当前 AI 助手不支持重新生成");
2084
- pt = je({
2085
- threadId: ot.threadId,
2086
- message: it,
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: we.assistantMessage.id,
2089
- content: we.assistantMessage.content
1981
+ id: Me.assistantMessage.id,
1982
+ content: Me.assistantMessage.content
2090
1983
  },
2091
- context: n,
2092
- capabilities: St
2093
- }, xt);
1984
+ context: s,
1985
+ capabilities: It
1986
+ }, At);
2094
1987
  } else
2095
- pt = y.run(
1988
+ dt = A.run(
2096
1989
  {
2097
- threadId: ot.threadId,
2098
- message: it,
2099
- context: n,
2100
- capabilities: St
1990
+ threadId: st.threadId,
1991
+ message: at,
1992
+ context: s,
1993
+ capabilities: It
2101
1994
  },
2102
- xt
1995
+ At
2103
1996
  );
2104
- const $t = pt[Symbol.asyncIterator]();
2105
- for (Se.current = { iterator: $t, requestVersion: ze }; ; ) {
2106
- const lt = await $t.next();
2107
- if (xe.current !== ze || lt.done) break;
2108
- let R;
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
- R = jt(lt.value);
2111
- } catch (me) {
2112
- throw new G(
2113
- me instanceof Error ? me.message : "Invalid assistant event"
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 (R.type === "message.start") {
2117
- if (se !== void 0 && se !== R.runId)
2118
- throw new G("AI 助手响应 run id 不一致");
2119
- if (se ??= R.runId, Ct += 1, Ct > le.assistantMessagesPerRun)
2120
- throw new G("AI 助手单次响应消息数量超过限制");
2121
- if (Et.has(R.messageId))
2122
- throw new G("AI 助手响应包含重复的 message id");
2123
- Et.add(R.messageId), Ze.add(R.messageId), Ye.set(R.messageId, 0);
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 (R.type === "message.delta") {
2126
- if (!Ze.has(R.messageId))
2127
- throw new G("AI 助手响应事件顺序无效");
2128
- const me = Ye.get(R.messageId) ?? 0, He = dt(
2129
- R.delta,
2130
- le.messageCharacters - Xe
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 (Xe + He > le.messageCharacters)
2133
- throw new G("AI 助手响应文本超过大小限制");
2134
- Xe += He, Ye.set(
2135
- R.messageId,
2136
- me + He
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 (R.type === "message.replace") {
2140
- if (!Ze.has(R.messageId))
2141
- throw new G("AI 助手响应事件顺序无效");
2142
- const me = Ye.get(R.messageId) ?? 0, He = dt(
2143
- R.content,
2144
- le.messageCharacters
2145
- ), Lt = Xe - me + He;
2146
- if (Lt > le.messageCharacters)
2147
- throw new G("AI 助手响应文本超过大小限制");
2148
- Xe = Lt, Ye.set(R.messageId, He);
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 (R.type === "run.progress") {
2151
- if (se !== void 0 && se !== R.runId)
2152
- throw new G("AI 助手响应 run id 不一致");
2153
- if (se ??= R.runId, Nt += 1, Nt > le.progressStepsPerRun)
2154
- throw new G("AI 助手处理过程数量超过限制");
2155
- const me = dt(
2156
- R.message,
2157
- le.progressCharactersPerRun - ht
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 (ht + me > le.progressCharactersPerRun)
2160
- throw new G("AI 助手处理过程文本超过大小限制");
2161
- ht += me;
2052
+ if (lt + he > ue.progressCharactersPerRun)
2053
+ throw new J("AI 助手处理过程文本超过大小限制");
2054
+ lt += he;
2162
2055
  }
2163
- if (R.type === "artifact") {
2164
- if (!Ze.has(R.messageId))
2165
- throw new G("AI 助手响应事件顺序无效");
2166
- if (Tt += 1, Tt > le.artifactsPerRun)
2167
- throw new G("AI 助手单次响应 Artifact 数量超过限制");
2168
- if (Rt.has(R.artifact.id))
2169
- throw new G("AI 助手响应包含重复的 Artifact id");
2170
- Rt.add(R.artifact.id);
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 (R.type === "message.complete" && !Ze.delete(R.messageId))
2173
- throw new G("AI 助手响应事件顺序无效");
2174
- if (R.type === "run.complete" && se !== void 0 && se !== R.runId)
2175
- throw new G("AI 助手响应 run id 不一致");
2176
- if (R.type === "run.cancelled" && R.runId !== void 0 && se !== void 0 && se !== R.runId)
2177
- throw new G("AI 助手响应 run id 不一致");
2178
- if (b((me) => Ie(me, R)), R.type === "error" || R.type === "run.cancelled" || R.type === "run.complete") {
2179
- Le = !0;
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 (!Le)
2184
- throw new G("AI 助手流式响应在终止事件前结束");
2185
- } catch (Le) {
2186
- if (xe.current !== ze) return;
2187
- if (ct.signal.aborted) {
2188
- b(
2189
- (se) => Ie(se, { type: "run.cancelled" })
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: n.app.id,
2195
- errorType: Le instanceof Error ? Le.name : typeof Le
2196
- }), b(
2197
- (se) => Ie(se, {
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: Le instanceof G ? Le.message : "连接失败,请重试",
2093
+ message: Re instanceof J ? Re.message : "连接失败,请重试",
2201
2094
  retryable: !0
2202
2095
  })
2203
2096
  );
2204
2097
  } finally {
2205
- xe.current === ze && Ee.current === ct && (Ee.current = void 0), Se.current?.requestVersion === ze && (Ot(Se.current.iterator), Se.current = void 0);
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
- }, st = (m) => {
2208
- if (v.enabled) {
2209
- if (u.pending)
2210
- return te("请等待附件上传完成,或移除失败的附件"), Promise.resolve();
2211
- if (u.parts.some((U) => !y.features?.modelInputKinds?.includes(U.kind)))
2212
- return te("当前模型尚未开放此类附件理解,已上传原件可保留或移除"), Promise.resolve();
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 wt(m);
2217
- }, da = (m) => wt(m.userMessage.content, { regenerateFrom: m }), ua = async (m, P) => {
2107
+ return b(u);
2108
+ }, D = (u) => b(u.userMessage.content, { regenerateFrom: u }), k = async (u, H) => {
2218
2109
  try {
2219
- await rn(P), S({ messageId: m, message: "已复制", status: "success" });
2220
- } catch (F) {
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: F instanceof Error ? F.name : typeof F
2223
- }), S({ messageId: m, message: "复制失败", status: "error" });
2113
+ errorType: j instanceof Error ? j.name : typeof j
2114
+ }), O({ messageId: u, message: "复制失败", status: "error" });
2224
2115
  }
2225
- }, ma = (m) => {
2226
- m.preventDefault(), st(K);
2227
- }, ha = (m) => {
2228
- m.key === "Enter" && !m.shiftKey && !m.nativeEvent.isComposing && (m.preventDefault(), st(K));
2229
- }, pa = () => {
2230
- if (v.enabled) {
2231
- v.stop();
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
- _e("stop") && b(
2235
- (m) => Ie(m, { type: "run.cancelled" })
2125
+ n("stop") && ne(
2126
+ (u) => Ne(u, { type: "run.cancelled" })
2236
2127
  );
2237
- }, It = () => {
2238
- if (pe(!1), v.enabled) {
2239
- D(""), v.create(), d?.();
2128
+ }, be = () => {
2129
+ if (P(!1), g.enabled) {
2130
+ te(""), g.create(), d?.();
2240
2131
  return;
2241
2132
  }
2242
- _e("new-conversation"), D(""), te(void 0), S(void 0), de(!1), M.current = !0, b(he()), d?.();
2243
- }, At = v.enabled && v.cancelling.length ? "停止中" : y.features?.remoteCancellation === !1 ? "停止接收" : "停止生成", fa = na(w), va = sa(w), rt = In(w), ga = typeof y.regenerate == "function" && y.features?.regeneration !== !1, Mt = () => {
2244
- if (v.enabled) {
2245
- v.retry();
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
- rt && st(rt.content);
2249
- }, ya = (m) => {
2250
- if (m.key === "Escape" && !(!X && !oe)) {
2251
- if (m.preventDefault(), m.stopPropagation(), X) {
2252
- ie(!1), $e.current?.focus();
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
- pe(!1), r.current?.focus();
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${v.enabled ? " make-ai-assistant__panel--managed" : ""}`,
2262
- ref: at,
2263
- style: J,
2264
- onKeyDown: ya,
2265
- onDragOver: (m) => {
2266
- u.enabled && m.dataTransfer.types.includes("Files") && m.preventDefault();
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: (m) => {
2269
- u.enabled && m.dataTransfer.files.length && (m.preventDefault(), u.add(Array.from(m.dataTransfer.files)));
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: v.enabled ? /* @__PURE__ */ c(
2164
+ /* @__PURE__ */ a("div", { className: "make-ai-assistant__header-leading", children: g.enabled ? /* @__PURE__ */ c(
2274
2165
  "button",
2275
2166
  {
2276
- "aria-controls": z,
2277
- "aria-expanded": oe,
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: r,
2172
+ ref: Oe,
2282
2173
  type: "button",
2283
- onClick: () => pe((m) => !m),
2174
+ onClick: () => P((u) => !u),
2284
2175
  children: [
2285
- /* @__PURE__ */ a(hn, {}),
2176
+ /* @__PURE__ */ a(Va, {}),
2286
2177
  /* @__PURE__ */ a("span", { children: "任务列表" }),
2287
- /* @__PURE__ */ a(pn, {})
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(mt, {}),
2293
- /* @__PURE__ */ c("div", { className: "make-ai-assistant__header-content", children: [
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
- y.features?.newConversation !== !1 ? /* @__PURE__ */ a(
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: It,
2346
- children: /* @__PURE__ */ a(mn, {})
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": `关闭 ${l}`,
2200
+ "aria-label": `关闭 ${U}`,
2353
2201
  className: "make-ai-assistant__icon-button",
2354
2202
  type: "button",
2355
2203
  onClick: o,
2356
- children: /* @__PURE__ */ a(on, {})
2204
+ children: /* @__PURE__ */ a(Ua, {})
2357
2205
  }
2358
2206
  ) : null
2359
2207
  ] })
2360
2208
  ] }),
2361
- v.enabled && oe ? /* @__PURE__ */ a(
2362
- Fa,
2209
+ g.enabled && G ? /* @__PURE__ */ a(
2210
+ ba,
2363
2211
  {
2364
- id: z,
2365
- manager: v,
2366
- triggerRef: r,
2367
- onDismiss: () => pe(!1),
2368
- onNewConversation: y.features?.newConversation !== !1 ? It : void 0
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: Pe,
2225
+ ref: Ie,
2378
2226
  role: "log",
2379
- onScroll: ca,
2227
+ onScroll: m,
2380
2228
  children: [
2381
- Q === "loading" ? /* @__PURE__ */ c("div", { className: "make-ai-assistant__empty", role: "status", children: [
2382
- /* @__PURE__ */ a(mt, {}),
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
- ] }) : Q === "error" ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__empty", children: /* @__PURE__ */ a(
2386
- Tn,
2233
+ ] }) : ee === "error" ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__empty", children: /* @__PURE__ */ a(
2234
+ rs,
2387
2235
  {
2388
- error: ke,
2389
- onRetry: () => ce((m) => m + 1)
2236
+ error: le,
2237
+ onRetry: () => ge((u) => u + 1)
2390
2238
  }
2391
- ) }) : w.messages.length === 0 ? /* @__PURE__ */ c("div", { className: "make-ai-assistant__empty", children: [
2392
- /* @__PURE__ */ a(mt, {}),
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
- ] }) : Nn(
2396
- w,
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
- rt ? Mt : void 0,
2404
- ee,
2405
- V,
2406
- De,
2407
- ga,
2408
- (m, P) => {
2409
- ua(m, P);
2251
+ Ae ? gt : void 0,
2252
+ C,
2253
+ X,
2254
+ w,
2255
+ $e,
2256
+ (u, H) => {
2257
+ k(u, H);
2410
2258
  },
2411
- (m) => {
2412
- da(m);
2259
+ (u) => {
2260
+ D(u);
2413
2261
  },
2414
- v.enabled ? v : void 0,
2415
- y
2262
+ g.enabled ? g : void 0,
2263
+ A
2416
2264
  ),
2417
- w.progress && !fa ? /* @__PURE__ */ a(
2418
- Kt,
2265
+ z.progress && !tt ? /* @__PURE__ */ a(
2266
+ xt,
2419
2267
  {
2420
2268
  assistantName: e,
2421
- progress: w.progress
2269
+ progress: z.progress
2422
2270
  }
2423
2271
  ) : null,
2424
- w.error && !va ? /* @__PURE__ */ a(
2425
- Kt,
2272
+ z.error && !ke ? /* @__PURE__ */ a(
2273
+ xt,
2426
2274
  {
2427
2275
  assistantName: e,
2428
- error: w.error,
2429
- onRetry: rt ? Mt : void 0
2276
+ error: z.error,
2277
+ onRetry: Ae ? gt : void 0
2430
2278
  }
2431
2279
  ) : null
2432
2280
  ]
2433
2281
  }
2434
2282
  ),
2435
- Qe ? /* @__PURE__ */ a(
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: la,
2442
- children: /* @__PURE__ */ a(un, {})
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
- u.enabled ? /* @__PURE__ */ a(qa, { attachments: u }) : null,
2447
- Q === "ready" && ge.length > 0 && w.messages.length === 0 ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: ge.map((m, P) => /* @__PURE__ */ a(
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
- st(m);
2300
+ I(u);
2453
2301
  },
2454
- children: m
2302
+ children: u
2455
2303
  },
2456
- `${P}-${m}`
2304
+ `${H}-${u}`
2457
2305
  )) }) : null,
2458
- /* @__PURE__ */ c("form", { className: "make-ai-assistant__composer", onSubmit: ma, children: [
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": Z ? "make-ai-composer-error" : void 0,
2464
- "aria-invalid": Z ? !0 : void 0,
2311
+ "aria-describedby": K ? "make-ai-composer-error" : void 0,
2312
+ "aria-invalid": K ? !0 : void 0,
2465
2313
  autoFocus: !0,
2466
- disabled: Q !== "ready" || !v.enabled && w.status === "streaming",
2467
- placeholder: `询问当前 ${n.app.name ?? "App"} 中的数据…`,
2468
- ref: nt,
2314
+ disabled: ee !== "ready" || !g.enabled && z.status === "streaming",
2315
+ placeholder: `询问当前 ${s.app.name ?? "App"} 中的数据…`,
2316
+ ref: Ze,
2469
2317
  rows: 2,
2470
- value: K,
2471
- onChange: (m) => {
2472
- D(m.currentTarget.value), te(void 0);
2318
+ value: T,
2319
+ onChange: (u) => {
2320
+ te(u.currentTarget.value), x(void 0);
2473
2321
  },
2474
- onKeyDown: ha,
2475
- onPaste: (m) => {
2476
- u.enabled && m.clipboardData.files.length && (m.preventDefault(), u.add(Array.from(m.clipboardData.files)));
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
- u.enabled ? /* @__PURE__ */ a(
2481
- Ua,
2328
+ L.enabled ? /* @__PURE__ */ a(
2329
+ Ca,
2482
2330
  {
2483
- attachments: u,
2484
- open: X,
2485
- triggerRef: $e,
2486
- onOpenChange: ie
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
- w.status === "streaming" ? /* @__PURE__ */ a(
2338
+ z.status === "streaming" ? /* @__PURE__ */ a(
2491
2339
  "button",
2492
2340
  {
2493
- "aria-label": At,
2341
+ "aria-label": qe,
2494
2342
  className: "make-ai-assistant__send make-ai-assistant__send--stop",
2495
- "data-tooltip": At,
2496
- ref: A,
2497
- disabled: v.enabled && v.cancelling.includes(w.activeRunId ?? ""),
2343
+ "data-tooltip": qe,
2344
+ ref: Ge,
2345
+ disabled: g.enabled && g.cancelling.includes(z.activeRunId ?? ""),
2498
2346
  type: "button",
2499
- onClick: pa,
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: Q !== "ready" || u.pending || !K.trim() && !u.parts.length,
2355
+ disabled: ee !== "ready" || L.pending || !T.trim() && !L.parts.length,
2508
2356
  type: "submit",
2509
- children: /* @__PURE__ */ a(Wt, {})
2357
+ children: /* @__PURE__ */ a($t, {})
2510
2358
  }
2511
2359
  ),
2512
- v.enabled && w.status === "streaming" ? /* @__PURE__ */ a("button", { "aria-label": "发送", className: "make-ai-assistant__send", disabled: v.busy || u.pending || !K.trim() && !u.parts.length, type: "submit", children: /* @__PURE__ */ a(Wt, {}) }) : null
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
- Z ? /* @__PURE__ */ a("p", { id: "make-ai-composer-error", role: "alert", children: Z }) : null,
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 $n(e) {
2523
- return /* @__PURE__ */ a(oa, { ...e, visible: !0 });
2370
+ function ms(e) {
2371
+ return /* @__PURE__ */ a(Jt, { ...e, visible: !0 });
2524
2372
  }
2525
- function Ln({
2373
+ function hs({
2526
2374
  defaultOpen: e = !1,
2527
2375
  hideLauncher: t = !1,
2528
- launcher: n,
2376
+ launcher: s,
2529
2377
  launcherPosition: i = "bottom-right",
2530
- maxDrawerWidth: s,
2378
+ maxDrawerWidth: r,
2531
2379
  onOpenChange: o,
2532
2380
  open: d,
2533
- ...g
2381
+ ...p
2534
2382
  }) {
2535
- const f = Jt(g.brandName, g.title), [p, k] = N(e), [$, O] = N(
2383
+ const v = qt(p.brandName, p.title), [h, _] = E(e), [F, A] = E(
2536
2384
  () => e || d === !0
2537
- ), q = C(null), y = C(null), V = C(void 0), [ee, j] = N(), [v, u] = N(Ga), [l, T] = N(!1), L = d ?? p, re = kt(g.theme), E = Qa(s), J = () => en(
2538
- v,
2539
- E,
2540
- typeof window > "u" ? Qt : window.innerWidth
2541
- ), K = J(), D = ee === void 0 ? void 0 : vt(ee, v, K), X = D === void 0 && E === void 0 ? void 0 : {
2542
- ...D === void 0 ? {} : { "--make-ai-internal-drawer-width": `${D}px` },
2543
- ...E === void 0 ? {} : {
2544
- "--make-ai-internal-drawer-max-width": `max(var(--make-ai-internal-drawer-min-width), ${E}px)`
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
- bt(() => {
2548
- D !== void 0 && D !== ee && j(D);
2549
- }, [D, ee]);
2550
- const ie = () => {
2551
- if (D !== void 0) return D;
2552
- const b = y.current?.getBoundingClientRect().width;
2553
- return b && Number.isFinite(b) && b > 0 ? b : v;
2554
- }, oe = (b) => {
2555
- if (b.button !== 0) return;
2556
- const H = ie(), Z = ee === void 0 ? H : v;
2557
- u(Z), V.current = {
2558
- minimumWidth: Z,
2559
- pointerId: b.pointerId,
2560
- startWidth: H,
2561
- startX: b.clientX
2562
- }, T(!0), typeof b.currentTarget.setPointerCapture == "function" && b.currentTarget.setPointerCapture(b.pointerId), b.preventDefault();
2563
- }, pe = (b) => {
2564
- const H = V.current;
2565
- if (!H || H.pointerId !== b.pointerId) return;
2566
- const Z = vt(
2567
- H.startWidth + H.startX - b.clientX,
2568
- H.minimumWidth,
2569
- J()
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
- j(Z);
2572
- }, Me = (b) => {
2573
- const H = V.current;
2574
- !H || H.pointerId !== b.pointerId || (V.current = void 0, T(!1));
2575
- }, Te = (b) => {
2576
- const H = b.key === "ArrowLeft" ? zt : b.key === "ArrowRight" ? -zt : void 0;
2577
- if (H === void 0) return;
2578
- b.preventDefault();
2579
- const Z = ie(), te = ee === void 0 ? Z : v;
2580
- u(te), j(vt(
2581
- Z + H,
2582
- te,
2583
- J()
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
- }, Y = (b) => {
2586
- d === void 0 && k(b), o?.(b), b || requestAnimationFrame(() => q.current?.focus());
2587
- }, w = () => Y(!L);
2588
- return ae(() => {
2589
- L && O(!0);
2590
- }, [L]), ae(() => {
2591
- if (!L) return;
2592
- const b = (H) => {
2593
- H.key === "Escape" && (Y(!1), requestAnimationFrame(() => q.current?.focus()));
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", b), () => document.removeEventListener("keydown", b);
2596
- }, [o, L]), /* @__PURE__ */ c(
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": L || void 0,
2601
- style: re,
2448
+ "data-open": T || void 0,
2449
+ style: te,
2602
2450
  children: [
2603
- !t && (!L || n) ? n ? n({ open: L, toggle: w }) : /* @__PURE__ */ c(
2451
+ !t && (!T || s) ? s ? s({ open: T, toggle: x }) : /* @__PURE__ */ c(
2604
2452
  "button",
2605
2453
  {
2606
- "aria-label": L ? `关闭 ${f}` : `打开 ${f}`,
2607
- "aria-expanded": L,
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: q,
2458
+ ref: X,
2611
2459
  type: "button",
2612
- onClick: w,
2460
+ onClick: x,
2613
2461
  children: [
2614
2462
  /* @__PURE__ */ a("span", { className: "make-ai-assistant__launcher-orbit", "aria-hidden": "true" }),
2615
- /* @__PURE__ */ a(ea, {})
2463
+ /* @__PURE__ */ a(Kt, {})
2616
2464
  ]
2617
2465
  }
2618
2466
  ) : null,
2619
- $ ? /* @__PURE__ */ c(
2467
+ F ? /* @__PURE__ */ c(
2620
2468
  "aside",
2621
2469
  {
2622
- "aria-label": f,
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: !L,
2627
- ref: y,
2474
+ hidden: !T,
2475
+ ref: C,
2628
2476
  role: "dialog",
2629
- style: X,
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": K,
2637
- "aria-valuemin": v,
2638
- "aria-valuenow": D ?? v,
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: Te,
2643
- onPointerCancel: Me,
2644
- onPointerDown: oe,
2645
- onPointerMove: pe,
2646
- onPointerUp: Me
2490
+ onKeyDown: ce,
2491
+ onPointerCancel: ne,
2492
+ onPointerDown: ve,
2493
+ onPointerMove: z,
2494
+ onPointerUp: ne
2647
2495
  }
2648
2496
  ),
2649
2497
  /* @__PURE__ */ a(
2650
- oa,
2498
+ Jt,
2651
2499
  {
2652
- ...g,
2653
- onClose: () => Y(!1),
2654
- visible: L
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
- Ia as ArtifactRenderer,
2666
- $n as AssistantPanel,
2667
- zn as MAKE_AI_ARTIFACT_KINDS,
2668
- Hn as MAKE_AI_ARTIFACT_LIMITS,
2669
- On as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
2670
- le as MAKE_AI_CONVERSATION_LIMITS,
2671
- Ln as MakeAiAssistant,
2672
- Xt as appendUserMessage,
2673
- wa as createArtifactCapabilities,
2674
- Vt as createArtifactTemplateRegistry,
2675
- he as createAssistantConversationState,
2676
- $a as createPlatformArtifactRegistry,
2677
- Fn as extendArtifactTemplateRegistry,
2678
- Fe as formatArtifactValue,
2679
- Wn as parseArtifact,
2680
- jt as parseAssistantEvent,
2681
- xa as platformArtifactTemplates,
2682
- Ie as reduceAssistantEvent,
2683
- _a as resolveArtifactTemplate,
2684
- Un as validateArtifact
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
  };