@qfei-design/make-ai-assistant 0.2.2 → 0.2.3

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