@qfei-design/make-ai-assistant 0.1.0 → 0.1.2

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,102 +1,102 @@
1
- import { jsxs as r, jsx as a, Fragment as N } from "react/jsx-runtime";
2
- import { resolveArtifactTemplate as pe, createArtifactTemplateRegistry as re, createArtifactCapabilities as he } from "./index.mjs";
3
- import { extendArtifactTemplateRegistry as Oe } from "./index.mjs";
4
- import { useState as L, useRef as S, useMemo as fe, useEffect as Y } from "react";
5
- import { c as ae, a as te, M as b, b as _e, p as ke, r as B } from "./conversation-B5kECJz8.js";
6
- import { d as je, e as Ue, f as Ye, g as ze, v as Ge } from "./conversation-B5kECJz8.js";
7
- function ve({
1
+ import { jsxs as n, jsx as a, Fragment as M } from "react/jsx-runtime";
2
+ import { resolveArtifactTemplate as be, createArtifactTemplateRegistry as de, createArtifactCapabilities as Ae } from "./index.mjs";
3
+ import { extendArtifactTemplateRegistry as We } from "./index.mjs";
4
+ import { useState as P, useRef as T, useMemo as Ne, useEffect as Q } from "react";
5
+ import { a as G, c as ee, M as I, b as we, p as Te, r as J } from "./conversation-Dy2Sghjv.js";
6
+ import { d as ea, e as aa, f as ta, g as sa, v as na } from "./conversation-Dy2Sghjv.js";
7
+ function Me({
8
8
  artifact: e,
9
9
  context: t,
10
- fallback: n,
11
- onAction: c,
12
- onActionError: i,
13
- registry: s
10
+ fallback: s,
11
+ onAction: l,
12
+ onActionError: c,
13
+ registry: r
14
14
  }) {
15
- const m = pe(s, e, t);
15
+ const m = be(r, e, t);
16
16
  if (!m)
17
- return n ? n(e) : /* @__PURE__ */ r("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
17
+ return s ? s(e) : /* @__PURE__ */ n("section", { className: "make-ai-artifact make-ai-artifact--unsupported", role: "status", children: [
18
18
  /* @__PURE__ */ a("strong", { children: "暂不支持展示此结果" }),
19
- /* @__PURE__ */ r("span", { children: [
19
+ /* @__PURE__ */ n("span", { children: [
20
20
  "结果类型:",
21
21
  e.kind
22
22
  ] })
23
23
  ] });
24
- const u = {
24
+ const h = {
25
25
  context: t,
26
- onAction: c,
27
- onActionError: i
26
+ onAction: l,
27
+ onActionError: c
28
28
  };
29
- return m.template.render(e, t, u);
29
+ return m.template.render(e, t, h);
30
30
  }
31
- const w = (e, t, n) => {
31
+ const C = (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 ?? ""}`;
35
- const c = t?.precision, i = {
36
- maximumFractionDigits: c ?? 2,
37
- minimumFractionDigits: c
35
+ const l = t?.precision, c = {
36
+ maximumFractionDigits: l ?? 2,
37
+ minimumFractionDigits: l
38
38
  };
39
- t?.style === "currency" && t.currency ? (i.style = "currency", i.currency = t.currency) : t?.style === "percent" && (i.style = "percent");
39
+ t?.style === "currency" && t.currency ? (c.style = "currency", c.currency = t.currency) : t?.style === "percent" && (c.style = "percent");
40
40
  try {
41
- const s = t?.style === "percent" ? e / 100 : e;
42
- return `${new Intl.NumberFormat(n, i).format(s)}${t?.unit ?? ""}`;
41
+ const r = t?.style === "percent" ? e / 100 : e;
42
+ return `${new Intl.NumberFormat(s, c).format(r)}${t?.unit ?? ""}`;
43
43
  } catch {
44
44
  return `${e}${t?.unit ?? ""}`;
45
45
  }
46
- }, se = (e) => {
47
- let t = Number.POSITIVE_INFINITY, n = Number.NEGATIVE_INFINITY;
48
- for (const c of e)
49
- t = Math.min(t, c), n = Math.max(n, c);
50
- return Number.isFinite(t) && Number.isFinite(n) ? { min: t, max: n } : { min: 0, max: 0 };
51
- }, ie = (e, t, n) => {
52
- if (!n.onAction) return;
53
- const c = (s) => {
46
+ }, me = (e) => {
47
+ let t = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY;
48
+ for (const l of e)
49
+ t = Math.min(t, l), s = Math.max(s, l);
50
+ return Number.isFinite(t) && Number.isFinite(s) ? { min: t, max: s } : { min: 0, max: 0 };
51
+ }, ue = (e, t, s) => {
52
+ if (!s.onAction) return;
53
+ const l = (r) => {
54
54
  console.error("[make-ai-assistant] host action error handler failed", {
55
55
  actionId: e.id,
56
56
  artifactId: t.artifact.id,
57
- errorType: s instanceof Error ? s.name : typeof s,
57
+ errorType: r instanceof Error ? r.name : typeof r,
58
58
  intent: e.intent
59
59
  });
60
- }, i = (s) => {
61
- if (n.onActionError) {
60
+ }, c = (r) => {
61
+ if (s.onActionError) {
62
62
  try {
63
63
  Promise.resolve(
64
- n.onActionError(s, e, t)
65
- ).catch(c);
64
+ s.onActionError(r, e, t)
65
+ ).catch(l);
66
66
  } catch (m) {
67
- c(m);
67
+ l(m);
68
68
  }
69
69
  return;
70
70
  }
71
71
  console.error("[make-ai-assistant] host action failed", {
72
72
  actionId: e.id,
73
73
  artifactId: t.artifact.id,
74
- errorType: s instanceof Error ? s.name : typeof s,
74
+ errorType: r instanceof Error ? r.name : typeof r,
75
75
  intent: e.intent
76
76
  });
77
77
  };
78
78
  try {
79
- Promise.resolve(n.onAction(e, t)).catch(i);
80
- } catch (s) {
81
- i(s);
79
+ Promise.resolve(s.onAction(e, t)).catch(c);
80
+ } catch (r) {
81
+ c(r);
82
82
  }
83
- }, C = (e, t) => e.actions?.length && t.onAction ? /* @__PURE__ */ a("div", { className: "make-ai-artifact__actions", children: e.actions.map((n) => /* @__PURE__ */ r(
83
+ }, K = (e, t) => e.actions?.length && t.onAction ? /* @__PURE__ */ a("div", { className: "make-ai-artifact__actions", children: e.actions.map((s) => /* @__PURE__ */ n(
84
84
  "button",
85
85
  {
86
- className: `make-ai-artifact__action make-ai-artifact__action--${n.appearance ?? "link"}`,
86
+ className: `make-ai-artifact__action make-ai-artifact__action--${s.appearance ?? "link"}`,
87
87
  type: "button",
88
- onClick: () => ie(n, { artifact: e, context: t.context }, t),
88
+ onClick: () => ue(s, { artifact: e, context: t.context }, t),
89
89
  children: [
90
- n.label,
90
+ s.label,
91
91
  /* @__PURE__ */ a("span", { "aria-hidden": "true", children: "→" })
92
92
  ]
93
93
  },
94
- n.id
95
- )) }) : null, F = (e, t, n = "") => /* @__PURE__ */ r(
94
+ s.id
95
+ )) }) : null, V = (e, t, s = "") => /* @__PURE__ */ n(
96
96
  "section",
97
97
  {
98
98
  "aria-label": e.title ?? `${e.kind} result`,
99
- className: `make-ai-artifact ${n}`.trim(),
99
+ className: `make-ai-artifact ${s}`.trim(),
100
100
  "data-artifact-density": e.presentation?.density,
101
101
  "data-artifact-kind": e.kind,
102
102
  children: [
@@ -105,137 +105,137 @@ const w = (e, t, n) => {
105
105
  t
106
106
  ]
107
107
  }
108
- ), ye = ({
108
+ ), Ce = ({
109
109
  artifact: e,
110
110
  renderContext: t
111
111
  }) => {
112
- const n = e.data.delta, c = n ? w(
113
- n.value,
114
- n.format === "percent" ? { style: "percent" } : void 0,
112
+ const s = e.data.delta, l = s ? C(
113
+ s.value,
114
+ s.format === "percent" ? { style: "percent" } : void 0,
115
115
  t.context.locale
116
116
  ) : void 0;
117
- return F(
117
+ return V(
118
118
  e,
119
- /* @__PURE__ */ r(N, { children: [
120
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children: w(
119
+ /* @__PURE__ */ n(M, { children: [
120
+ /* @__PURE__ */ a("div", { className: "make-ai-artifact__metric-value", children: C(
121
121
  e.data.value,
122
122
  e.data.format,
123
123
  t.context.locale
124
124
  ) }),
125
- n ? /* @__PURE__ */ r(
125
+ s ? /* @__PURE__ */ n(
126
126
  "div",
127
127
  {
128
- className: `make-ai-artifact__delta make-ai-artifact__delta--${n.direction ?? "flat"}`,
128
+ className: `make-ai-artifact__delta make-ai-artifact__delta--${s.direction ?? "flat"}`,
129
129
  children: [
130
- /* @__PURE__ */ a("span", { "aria-hidden": "true", children: n.direction === "up" ? "↗" : n.direction === "down" ? "↘" : "→" }),
131
- /* @__PURE__ */ a("span", { children: c }),
132
- n.label ? /* @__PURE__ */ a("span", { children: n.label }) : null
130
+ /* @__PURE__ */ a("span", { "aria-hidden": "true", children: s.direction === "up" ? "↗" : s.direction === "down" ? "↘" : "→" }),
131
+ /* @__PURE__ */ a("span", { children: l }),
132
+ s.label ? /* @__PURE__ */ a("span", { children: s.label }) : null
133
133
  ]
134
134
  }
135
135
  ) : null,
136
136
  e.data.context ? /* @__PURE__ */ a("p", { className: "make-ai-artifact__context", children: e.data.context }) : null,
137
- C(e, t)
137
+ K(e, t)
138
138
  ] }),
139
139
  "make-ai-artifact--metric"
140
140
  );
141
- }, ge = ({
141
+ }, Ee = ({
142
142
  artifact: e,
143
143
  renderContext: t
144
- }) => F(
144
+ }) => V(
145
145
  e,
146
- /* @__PURE__ */ r(N, { children: [
147
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((n) => /* @__PURE__ */ r("div", { className: "make-ai-artifact__comparison-item", children: [
148
- /* @__PURE__ */ a("span", { children: n.label }),
149
- /* @__PURE__ */ a("strong", { children: w(n.value, n.format, t.context.locale) }),
150
- n.hint ? /* @__PURE__ */ a("small", { children: n.hint }) : null
151
- ] }, n.id)) }),
152
- C(e, t)
146
+ /* @__PURE__ */ n(M, { children: [
147
+ /* @__PURE__ */ a("div", { className: "make-ai-artifact__comparison", children: e.data.items.map((s) => /* @__PURE__ */ n("div", { className: "make-ai-artifact__comparison-item", children: [
148
+ /* @__PURE__ */ a("span", { children: s.label }),
149
+ /* @__PURE__ */ a("strong", { children: C(s.value, s.format, t.context.locale) }),
150
+ s.hint ? /* @__PURE__ */ a("small", { children: s.hint }) : null
151
+ ] }, s.id)) }),
152
+ K(e, t)
153
153
  ] }),
154
154
  "make-ai-artifact--comparison"
155
- ), be = ({
155
+ ), Re = ({
156
156
  artifact: e,
157
157
  renderContext: t
158
158
  }) => {
159
- const n = e.data.series.flatMap((m) => m.points.map((u) => u.y)), { max: c, min: i } = se(n), s = c - i || 1;
160
- return F(
159
+ const s = e.data.series.flatMap((m) => m.points.map((h) => h.y)), { max: l, min: c } = me(s), r = l - c || 1;
160
+ return V(
161
161
  e,
162
- /* @__PURE__ */ r(N, { children: [
163
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__trend", children: e.data.series.map((m) => /* @__PURE__ */ r("div", { className: "make-ai-artifact__trend-series", children: [
162
+ /* @__PURE__ */ n(M, { children: [
163
+ /* @__PURE__ */ a("div", { className: "make-ai-artifact__trend", children: e.data.series.map((m) => /* @__PURE__ */ n("div", { className: "make-ai-artifact__trend-series", children: [
164
164
  /* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-label", children: m.label }),
165
- /* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: m.points.map((u, A) => {
166
- const h = 18 + (u.y - i) / s * 70;
167
- return /* @__PURE__ */ r("div", { className: "make-ai-artifact__trend-point", children: [
165
+ /* @__PURE__ */ a("div", { className: "make-ai-artifact__trend-bars", children: m.points.map((h, N) => {
166
+ const u = 18 + (h.y - c) / r * 70;
167
+ return /* @__PURE__ */ n("div", { className: "make-ai-artifact__trend-point", children: [
168
168
  /* @__PURE__ */ a(
169
169
  "span",
170
170
  {
171
- "aria-label": `${u.x}: ${w(
172
- u.y,
171
+ "aria-label": `${h.x}: ${C(
172
+ h.y,
173
173
  m.format,
174
174
  t.context.locale
175
175
  )}`,
176
176
  className: "make-ai-artifact__trend-bar",
177
177
  role: "img",
178
- style: { height: `${h}%` },
179
- title: `${u.x}: ${w(
180
- u.y,
178
+ style: { height: `${u}%` },
179
+ title: `${h.x}: ${C(
180
+ h.y,
181
181
  m.format,
182
182
  t.context.locale
183
183
  )}`
184
184
  }
185
185
  ),
186
- /* @__PURE__ */ a("small", { children: u.x })
187
- ] }, `${u.x}-${A}`);
186
+ /* @__PURE__ */ a("small", { children: h.x })
187
+ ] }, `${h.x}-${N}`);
188
188
  }) })
189
189
  ] }, m.id)) }),
190
- C(e, t)
190
+ K(e, t)
191
191
  ] }),
192
192
  "make-ai-artifact--trend"
193
193
  );
194
- }, Ae = ({
194
+ }, $e = ({
195
195
  artifact: e,
196
196
  renderContext: t
197
197
  }) => {
198
- const { max: n } = se(
199
- e.data.items.map((i) => Math.abs(i.value))
200
- ), c = Math.max(n, 1);
201
- return F(
198
+ const { max: s } = me(
199
+ e.data.items.map((c) => Math.abs(c.value))
200
+ ), l = Math.max(s, 1);
201
+ return V(
202
202
  e,
203
- /* @__PURE__ */ r(N, { children: [
204
- /* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((i, s) => /* @__PURE__ */ r("li", { children: [
205
- /* @__PURE__ */ a("span", { className: "make-ai-artifact__rank", children: s + 1 }),
206
- /* @__PURE__ */ r("span", { className: "make-ai-artifact__ranking-label", children: [
207
- /* @__PURE__ */ a("span", { children: i.label }),
208
- i.description ? /* @__PURE__ */ a("small", { children: i.description }) : null
203
+ /* @__PURE__ */ n(M, { children: [
204
+ /* @__PURE__ */ a("ol", { className: "make-ai-artifact__ranking", children: e.data.items.map((c, r) => /* @__PURE__ */ n("li", { children: [
205
+ /* @__PURE__ */ a("span", { className: "make-ai-artifact__rank", children: r + 1 }),
206
+ /* @__PURE__ */ n("span", { className: "make-ai-artifact__ranking-label", children: [
207
+ /* @__PURE__ */ a("span", { children: c.label }),
208
+ c.description ? /* @__PURE__ */ a("small", { children: c.description }) : null
209
209
  ] }),
210
- /* @__PURE__ */ a("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ a("span", { style: { width: `${Math.abs(i.value) / c * 100}%` } }) }),
211
- /* @__PURE__ */ a("strong", { children: w(i.value, i.format, t.context.locale) })
212
- ] }, i.id)) }),
213
- C(e, t)
210
+ /* @__PURE__ */ a("span", { className: "make-ai-artifact__ranking-track", "aria-hidden": "true", children: /* @__PURE__ */ a("span", { style: { width: `${Math.abs(c.value) / l * 100}%` } }) }),
211
+ /* @__PURE__ */ a("strong", { children: C(c.value, c.format, t.context.locale) })
212
+ ] }, c.id)) }),
213
+ K(e, t)
214
214
  ] }),
215
215
  "make-ai-artifact--ranking"
216
216
  );
217
- }, Ie = (e, t) => t.action ?? {
217
+ }, Se = (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
- }, Ne = ({
222
+ }, Fe = ({
223
223
  artifact: e,
224
224
  renderContext: t
225
- }) => F(
225
+ }) => V(
226
226
  e,
227
- /* @__PURE__ */ r(N, { children: [
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((n) => {
229
- const c = Ie(e, n), i = /* @__PURE__ */ r(N, { children: [
230
- /* @__PURE__ */ a("strong", { children: n.title ?? n.id }),
231
- /* @__PURE__ */ a("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((s) => /* @__PURE__ */ r("span", { children: [
232
- /* @__PURE__ */ a("small", { children: s.label }),
233
- w(
234
- n.values[s.key],
235
- s.format,
227
+ /* @__PURE__ */ n(M, { children: [
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 l = Se(e, s), c = /* @__PURE__ */ n(M, { children: [
230
+ /* @__PURE__ */ a("strong", { children: s.title ?? s.id }),
231
+ /* @__PURE__ */ a("span", { className: "make-ai-artifact__record-values", children: e.data.columns.map((r) => /* @__PURE__ */ n("span", { children: [
232
+ /* @__PURE__ */ a("small", { children: r.label }),
233
+ C(
234
+ s.values[r.key],
235
+ r.format,
236
236
  t.context.locale
237
237
  )
238
- ] }, s.key)) }),
238
+ ] }, r.key)) }),
239
239
  t.onAction ? /* @__PURE__ */ a("span", { "aria-hidden": "true", children: "›" }) : null
240
240
  ] });
241
241
  return t.onAction ? /* @__PURE__ */ a(
@@ -243,53 +243,53 @@ const w = (e, t, n) => {
243
243
  {
244
244
  className: "make-ai-artifact__record",
245
245
  type: "button",
246
- onClick: () => ie(c, {
246
+ onClick: () => ue(l, {
247
247
  artifact: e,
248
248
  context: t.context
249
249
  }, t),
250
- children: i
250
+ children: c
251
251
  },
252
- n.id
253
- ) : /* @__PURE__ */ a("div", { className: "make-ai-artifact__record", children: i }, n.id);
252
+ s.id
253
+ ) : /* @__PURE__ */ a("div", { className: "make-ai-artifact__record", children: c }, s.id);
254
254
  }) }),
255
- e.data.total !== void 0 ? /* @__PURE__ */ r("p", { className: "make-ai-artifact__record-total", children: [
255
+ e.data.total !== void 0 ? /* @__PURE__ */ n("p", { className: "make-ai-artifact__record-total", children: [
256
256
  "共 ",
257
257
  e.data.total,
258
258
  " 条"
259
259
  ] }) : null,
260
- C(e, t)
260
+ K(e, t)
261
261
  ] }),
262
262
  "make-ai-artifact--record-list"
263
- ), we = ({
263
+ ), xe = ({
264
264
  artifact: e,
265
265
  renderContext: t
266
- }) => F(
266
+ }) => V(
267
267
  e,
268
- /* @__PURE__ */ r(N, { children: [
269
- /* @__PURE__ */ r("div", { className: `make-ai-artifact__notice make-ai-artifact__notice--${e.data.tone}`, children: [
268
+ /* @__PURE__ */ n(M, { children: [
269
+ /* @__PURE__ */ n("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
- C(e, t)
273
+ K(e, t)
274
274
  ] }),
275
275
  "make-ai-artifact--notice"
276
- ), x = (e, t, n) => ({ id: e, kinds: [t], priority: 0, render: n }), Te = [
277
- x("platform.metric.default", "metric", (e, t, n) => /* @__PURE__ */ a(ye, { artifact: e, renderContext: n })),
278
- x("platform.comparison.default", "comparison", (e, t, n) => /* @__PURE__ */ a(ge, { artifact: e, renderContext: n })),
279
- x("platform.trend.default", "trend", (e, t, n) => /* @__PURE__ */ a(be, { artifact: e, renderContext: n })),
280
- x("platform.ranking.default", "ranking", (e, t, n) => /* @__PURE__ */ a(Ae, { artifact: e, renderContext: n })),
281
- x("platform.record-list.default", "record-list", (e, t, n) => /* @__PURE__ */ a(Ne, { artifact: e, renderContext: n })),
282
- x("platform.notice.default", "notice", (e, t, n) => /* @__PURE__ */ a(we, { artifact: e, renderContext: n }))
283
- ], Me = re(Te).templates, Ee = (e = Me) => re(e), $e = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
276
+ ), D = (e, t, s) => ({ id: e, kinds: [t], priority: 0, render: s }), De = [
277
+ D("platform.metric.default", "metric", (e, t, s) => /* @__PURE__ */ a(Ce, { artifact: e, renderContext: s })),
278
+ D("platform.comparison.default", "comparison", (e, t, s) => /* @__PURE__ */ a(Ee, { artifact: e, renderContext: s })),
279
+ D("platform.trend.default", "trend", (e, t, s) => /* @__PURE__ */ a(Re, { artifact: e, renderContext: s })),
280
+ D("platform.ranking.default", "ranking", (e, t, s) => /* @__PURE__ */ a($e, { artifact: e, renderContext: s })),
281
+ D("platform.record-list.default", "record-list", (e, t, s) => /* @__PURE__ */ a(Fe, { artifact: e, renderContext: s })),
282
+ D("platform.notice.default", "notice", (e, t, s) => /* @__PURE__ */ a(xe, { artifact: e, renderContext: s }))
283
+ ], Pe = de(De).templates, Ke = (e = Pe) => de(e), Ve = (e) => `${e}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
284
284
  class p extends Error {
285
285
  }
286
- const ne = (e) => {
286
+ const le = (e) => {
287
287
  try {
288
288
  const t = e?.return?.();
289
289
  if (!t) return;
290
- Promise.resolve(t).catch((n) => {
290
+ Promise.resolve(t).catch((s) => {
291
291
  console.error("[make-ai-assistant] transport iterator close failed", {
292
- errorType: n instanceof Error ? n.name : typeof n
292
+ errorType: s instanceof Error ? s.name : typeof s
293
293
  });
294
294
  });
295
295
  } catch (t) {
@@ -297,283 +297,341 @@ const ne = (e) => {
297
297
  errorType: t instanceof Error ? t.name : typeof t
298
298
  });
299
299
  }
300
- }, oe = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
300
+ }, pe = () => /* @__PURE__ */ n("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
301
301
  /* @__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" }),
302
302
  /* @__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" })
303
- ] }), Re = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m6 6 12 12M18 6 6 18" }) }), xe = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }), Se = () => /* @__PURE__ */ r("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
303
+ ] }), qe = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "m6 6 12 12M18 6 6 18" }) }), ze = () => /* @__PURE__ */ a("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }), He = () => /* @__PURE__ */ n("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: [
304
304
  /* @__PURE__ */ a("path", { d: "m4 4 17 8-17 8 3-8-3-8Z" }),
305
305
  /* @__PURE__ */ a("path", { d: "M7 12h14" })
306
- ] }), z = () => /* @__PURE__ */ a("span", { className: "make-ai-assistant__avatar", "aria-hidden": "true", children: /* @__PURE__ */ a(oe, {}) }), Ce = (e, t, n, c, i) => e.messages.map((s) => /* @__PURE__ */ r(
306
+ ] }), B = () => /* @__PURE__ */ a("span", { className: "make-ai-assistant__avatar", "aria-hidden": "true", children: /* @__PURE__ */ a(pe, {}) }), Le = (e, t, s, l, c) => e.messages.map((r) => /* @__PURE__ */ n(
307
307
  "article",
308
308
  {
309
- className: `make-ai-assistant__message make-ai-assistant__message--${s.role}`,
309
+ className: `make-ai-assistant__message make-ai-assistant__message--${r.role}`,
310
310
  children: [
311
- s.role === "assistant" ? /* @__PURE__ */ a(z, {}) : null,
312
- /* @__PURE__ */ r("div", { className: "make-ai-assistant__message-stack", children: [
313
- s.content ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble", children: s.content }) : s.status === "streaming" ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__typing", "aria-label": "AI 正在思考", children: [
311
+ r.role === "assistant" ? /* @__PURE__ */ a(B, {}) : null,
312
+ /* @__PURE__ */ n("div", { className: "make-ai-assistant__message-stack", children: [
313
+ r.content ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__bubble", children: r.content }) : r.status === "streaming" ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__typing", "aria-label": "AI 正在思考", children: [
314
314
  /* @__PURE__ */ a("span", {}),
315
315
  /* @__PURE__ */ a("span", {}),
316
316
  /* @__PURE__ */ a("span", {})
317
317
  ] }) : null,
318
- s.artifacts.map((m) => /* @__PURE__ */ a(
319
- ve,
318
+ r.artifacts.map((m) => /* @__PURE__ */ a(
319
+ Me,
320
320
  {
321
321
  artifact: m,
322
322
  context: t,
323
- onAction: c,
324
- onActionError: i,
325
- registry: n
323
+ onAction: l,
324
+ onActionError: c,
325
+ registry: s
326
326
  },
327
327
  m.id
328
328
  ))
329
329
  ] })
330
330
  ]
331
331
  },
332
- s.id
332
+ r.id
333
333
  ));
334
- function Fe({
334
+ function Be({
335
335
  context: e,
336
336
  onAction: t,
337
- onActionError: n,
338
- onClose: c,
339
- onNewConversation: i,
340
- registry: s,
337
+ onActionError: s,
338
+ onClose: l,
339
+ onNewConversation: c,
340
+ registry: r,
341
341
  subtitle: m,
342
- suggestions: u = [],
343
- title: A = "Make AI 助手",
344
- transport: h
342
+ suggestions: h = [],
343
+ title: N = "Make AI 助手",
344
+ transport: u
345
345
  }) {
346
- const [v, T] = L(""), [d, y] = L(ae), [D, P] = L(void 0), M = S(void 0), E = S(void 0), $ = S(0), O = S(null), Z = S(!0), G = fe(
347
- () => s ?? Ee(),
348
- [s]
349
- ), j = (o) => {
350
- $.current += 1;
351
- const _ = M.current, g = E.current?.iterator;
352
- return M.current = void 0, E.current = void 0, !_ && !g ? !1 : (console.info("[make-ai-assistant] local run cancellation requested", { reason: o }), _?.abort(), ne(g), !0);
346
+ const [b, w] = P(""), [d, v] = P(G), [O, q] = P(void 0), [he, fe] = P(0), [E, Z] = P(() => u.loadConversation ? "loading" : "ready"), R = T(void 0), $ = T(void 0), S = T(0), W = T(null), j = T(!0), ae = T(e.app.id), te = Ne(
347
+ () => r ?? Ke(),
348
+ [r]
349
+ ), U = (o) => {
350
+ const k = R.current, _ = $.current?.iterator;
351
+ return !k && !_ ? !1 : (S.current += 1, R.current = void 0, $.current = void 0, console.info("[make-ai-assistant] local run cancellation requested", { reason: o }), k?.abort(), le(_), !0);
353
352
  };
354
- Y(() => () => {
355
- j("unmount");
356
- }, []), Y(() => {
357
- const o = O.current;
358
- if (!o || !Z.current) return;
359
- const _ = requestAnimationFrame(() => {
360
- if (!Z.current) return;
361
- const g = d.status === "streaming" || window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
362
- typeof o.scrollTo == "function" ? o.scrollTo({ top: o.scrollHeight, behavior: g }) : o.scrollTop = o.scrollHeight;
353
+ Q(() => () => {
354
+ U("unmount");
355
+ }, []), Q(() => {
356
+ const o = u.loadConversation, k = ae.current !== e.app.id;
357
+ if (ae.current = e.app.id, U("reinitialize"), k && (w(""), j.current = !0), q(void 0), v(G()), !o) {
358
+ Z("ready");
359
+ return;
360
+ }
361
+ const _ = new AbortController();
362
+ return Z("loading"), console.info("[make-ai-assistant] conversation load start", {
363
+ appId: e.app.id
364
+ }), o.call(u, e, { signal: _.signal }).then((g) => {
365
+ _.signal.aborted || (v(G(g)), Z("ready"), console.info("[make-ai-assistant] conversation load success", {
366
+ appId: e.app.id,
367
+ messageCount: g.messages.length
368
+ }));
369
+ }).catch((g) => {
370
+ _.signal.aborted || (console.error("[make-ai-assistant] conversation load failed", {
371
+ appId: e.app.id,
372
+ errorType: g instanceof Error ? g.name : typeof g
373
+ }), Z("error"));
374
+ }), () => _.abort();
375
+ }, [e.app.id, he, u]), Q(() => {
376
+ const o = W.current;
377
+ if (!o || !j.current) return;
378
+ const k = requestAnimationFrame(() => {
379
+ if (!j.current) return;
380
+ const _ = d.status === "streaming" || window.matchMedia?.("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth";
381
+ typeof o.scrollTo == "function" ? o.scrollTo({ top: o.scrollHeight, behavior: _ }) : o.scrollTop = o.scrollHeight;
363
382
  });
364
- return () => cancelAnimationFrame(_);
383
+ return () => cancelAnimationFrame(k);
365
384
  }, [d.messages, d.status]);
366
- const ce = () => {
367
- const o = O.current;
368
- o && (Z.current = o.scrollHeight - o.scrollTop - o.clientHeight <= 48);
369
- }, U = async (o) => {
370
- const _ = o.trim();
371
- if (!_ || d.status === "streaming" || M.current) return;
372
- if (te(
373
- _,
374
- b.messageCharacters
375
- ) > b.messageCharacters) {
376
- P(
377
- `输入内容过长,请控制在 ${b.messageCharacters} 个字符以内`
385
+ const _e = () => {
386
+ const o = W.current;
387
+ o && (j.current = o.scrollHeight - o.scrollTop - o.clientHeight <= 48);
388
+ }, X = async (o) => {
389
+ const k = o.trim();
390
+ if (!k || E !== "ready" || d.status === "streaming" || R.current) return;
391
+ if (ee(
392
+ k,
393
+ I.messageCharacters
394
+ ) > I.messageCharacters) {
395
+ q(
396
+ `输入内容过长,请控制在 ${I.messageCharacters} 个字符以内`
378
397
  );
379
398
  return;
380
399
  }
381
- const g = { id: $e("user"), content: _ }, K = new AbortController(), R = $.current + 1;
382
- $.current = R, M.current = K, P(void 0), T(""), y((k) => _e(k, g));
400
+ const _ = { id: Ve("user"), content: k }, g = new AbortController(), F = S.current + 1;
401
+ S.current = F, R.current = g, q(void 0), w(""), v((y) => we(y, _));
383
402
  try {
384
- let k = !1, f, J = 0, Q = 0, V = 0;
385
- const W = /* @__PURE__ */ new Set(), X = /* @__PURE__ */ new Set(
386
- [...d.messages.map((H) => H.id), g.id]
387
- ), q = /* @__PURE__ */ new Set(), ee = h.run(
403
+ let y = !1, f, se = 0, ne = 0, z = 0;
404
+ const H = /* @__PURE__ */ new Map(), re = /* @__PURE__ */ new Set(), ie = /* @__PURE__ */ new Set(
405
+ [...d.messages.map((Y) => Y.id), _.id]
406
+ ), L = /* @__PURE__ */ new Set(), oe = u.run(
388
407
  {
389
408
  threadId: d.threadId,
390
- message: g,
409
+ message: _,
391
410
  context: e,
392
- capabilities: he(G)
411
+ capabilities: Ae(te)
393
412
  },
394
- { signal: K.signal }
413
+ { signal: g.signal }
395
414
  )[Symbol.asyncIterator]();
396
- for (E.current = { iterator: ee, requestVersion: R }; ; ) {
397
- const H = await ee.next();
398
- if ($.current !== R || H.done) break;
399
- let l;
415
+ for ($.current = { iterator: oe, requestVersion: F }; ; ) {
416
+ const Y = await oe.next();
417
+ if (S.current !== F || Y.done) break;
418
+ let i;
400
419
  try {
401
- l = ke(H.value);
402
- } catch (I) {
420
+ i = Te(Y.value);
421
+ } catch (A) {
403
422
  throw new p(
404
- I instanceof Error ? I.message : "Invalid assistant event"
423
+ A instanceof Error ? A.message : "Invalid assistant event"
405
424
  );
406
425
  }
407
- if (l.type === "message.start") {
408
- if (f !== void 0 && f !== l.runId)
426
+ if (i.type === "message.start") {
427
+ if (f !== void 0 && f !== i.runId)
409
428
  throw new p("AI 助手响应 run id 不一致");
410
- if (f ??= l.runId, Q += 1, Q > b.assistantMessagesPerRun)
429
+ if (f ??= i.runId, ne += 1, ne > I.assistantMessagesPerRun)
411
430
  throw new p("AI 助手单次响应消息数量超过限制");
412
- if (X.has(l.messageId))
431
+ if (ie.has(i.messageId))
413
432
  throw new p("AI 助手响应包含重复的 message id");
414
- X.add(l.messageId), q.add(l.messageId);
433
+ ie.add(i.messageId), L.add(i.messageId), H.set(i.messageId, 0);
415
434
  }
416
- if (l.type === "message.delta") {
417
- if (!q.has(l.messageId))
435
+ if (i.type === "message.delta") {
436
+ if (!L.has(i.messageId))
418
437
  throw new p("AI 助手响应事件顺序无效");
419
- const I = te(
420
- l.delta,
421
- b.messageCharacters - V
438
+ const A = H.get(i.messageId) ?? 0, x = ee(
439
+ i.delta,
440
+ I.messageCharacters - z
422
441
  );
423
- if (V + I > b.messageCharacters)
442
+ if (z + x > I.messageCharacters)
424
443
  throw new p("AI 助手响应文本超过大小限制");
425
- if (V += I, V > b.messageCharacters)
444
+ z += x, H.set(
445
+ i.messageId,
446
+ A + x
447
+ );
448
+ }
449
+ if (i.type === "message.replace") {
450
+ if (!L.has(i.messageId))
451
+ throw new p("AI 助手响应事件顺序无效");
452
+ const A = H.get(i.messageId) ?? 0, x = ee(
453
+ i.content,
454
+ I.messageCharacters
455
+ ), ce = z - A + x;
456
+ if (ce > I.messageCharacters)
426
457
  throw new p("AI 助手响应文本超过大小限制");
458
+ z = ce, H.set(i.messageId, x);
427
459
  }
428
- if (l.type === "artifact") {
429
- if (!q.has(l.messageId))
460
+ if (i.type === "run.progress") {
461
+ if (f !== void 0 && f !== i.runId)
462
+ throw new p("AI 助手响应 run id 不一致");
463
+ f ??= i.runId;
464
+ }
465
+ if (i.type === "artifact") {
466
+ if (!L.has(i.messageId))
430
467
  throw new p("AI 助手响应事件顺序无效");
431
- if (J += 1, J > b.artifactsPerRun)
468
+ if (se += 1, se > I.artifactsPerRun)
432
469
  throw new p("AI 助手单次响应 Artifact 数量超过限制");
433
- if (W.has(l.artifact.id))
470
+ if (re.has(i.artifact.id))
434
471
  throw new p("AI 助手响应包含重复的 Artifact id");
435
- W.add(l.artifact.id);
472
+ re.add(i.artifact.id);
436
473
  }
437
- if (l.type === "message.complete" && !q.delete(l.messageId))
474
+ if (i.type === "message.complete" && !L.delete(i.messageId))
438
475
  throw new p("AI 助手响应事件顺序无效");
439
- if (l.type === "run.complete" && f !== void 0 && f !== l.runId)
476
+ if (i.type === "run.complete" && f !== void 0 && f !== i.runId)
440
477
  throw new p("AI 助手响应 run id 不一致");
441
- if (l.type === "run.cancelled" && l.runId !== void 0 && f !== void 0 && f !== l.runId)
478
+ if (i.type === "run.cancelled" && i.runId !== void 0 && f !== void 0 && f !== i.runId)
442
479
  throw new p("AI 助手响应 run id 不一致");
443
- if (y((I) => B(I, l)), l.type === "error" || l.type === "run.cancelled" || l.type === "run.complete") {
444
- k = !0;
480
+ if (v((A) => J(A, i)), i.type === "error" || i.type === "run.cancelled" || i.type === "run.complete") {
481
+ y = !0;
445
482
  break;
446
483
  }
447
484
  }
448
- if (!k)
485
+ if (!y)
449
486
  throw new p("AI 助手流式响应在终止事件前结束");
450
- } catch (k) {
451
- if ($.current !== R) return;
452
- if (K.signal.aborted) {
453
- y(
454
- (f) => B(f, { type: "run.cancelled" })
487
+ } catch (y) {
488
+ if (S.current !== F) return;
489
+ if (g.signal.aborted) {
490
+ v(
491
+ (f) => J(f, { type: "run.cancelled" })
455
492
  );
456
493
  return;
457
494
  }
458
495
  console.error("[make-ai-assistant] assistant run failed", {
459
496
  appId: e.app.id,
460
- errorType: k instanceof Error ? k.name : typeof k
461
- }), y(
462
- (f) => B(f, {
497
+ errorType: y instanceof Error ? y.name : typeof y
498
+ }), v(
499
+ (f) => J(f, {
463
500
  type: "error",
464
501
  code: "TRANSPORT_ERROR",
465
- message: k instanceof p ? k.message : "连接失败,请重试",
502
+ message: y instanceof p ? y.message : "连接失败,请重试",
466
503
  retryable: !0
467
504
  })
468
505
  );
469
506
  } finally {
470
- $.current === R && M.current === K && (M.current = void 0), E.current?.requestVersion === R && (ne(E.current.iterator), E.current = void 0);
507
+ S.current === F && R.current === g && (R.current = void 0), $.current?.requestVersion === F && (le($.current.iterator), $.current = void 0);
471
508
  }
472
- }, le = (o) => {
473
- o.preventDefault(), U(v);
474
- }, de = (o) => {
475
- o.key === "Enter" && !o.shiftKey && !o.nativeEvent.isComposing && (o.preventDefault(), U(v));
476
- }, me = () => {
477
- j("stop") && y(
478
- (o) => B(o, { type: "run.cancelled" })
509
+ }, ke = (o) => {
510
+ o.preventDefault(), X(b);
511
+ }, ge = (o) => {
512
+ o.key === "Enter" && !o.shiftKey && !o.nativeEvent.isComposing && (o.preventDefault(), X(b));
513
+ }, ve = () => {
514
+ U("stop") && v(
515
+ (o) => J(o, { type: "run.cancelled" })
479
516
  );
480
- }, ue = () => {
481
- j("new-conversation"), T(""), P(void 0), y(ae()), i?.();
482
- };
483
- return /* @__PURE__ */ r("section", { className: "make-ai-assistant make-ai-assistant__panel", children: [
484
- /* @__PURE__ */ r("header", { className: "make-ai-assistant__header", children: [
485
- /* @__PURE__ */ a(z, {}),
486
- /* @__PURE__ */ r("div", { children: [
487
- /* @__PURE__ */ a("h2", { children: A }),
488
- /* @__PURE__ */ r("p", { children: [
517
+ }, ye = () => {
518
+ U("new-conversation"), w(""), q(void 0), v(G()), c?.();
519
+ }, Ie = u.features?.remoteCancellation === !1 ? "停止接收" : "停止生成";
520
+ return /* @__PURE__ */ n("section", { className: "make-ai-assistant make-ai-assistant__panel", children: [
521
+ /* @__PURE__ */ n("header", { className: "make-ai-assistant__header", children: [
522
+ /* @__PURE__ */ a(B, {}),
523
+ /* @__PURE__ */ n("div", { children: [
524
+ /* @__PURE__ */ a("h2", { children: N }),
525
+ /* @__PURE__ */ n("p", { children: [
489
526
  /* @__PURE__ */ a("span", { className: "make-ai-assistant__online-dot" }),
490
527
  m ?? e.app.name ?? "当前应用"
491
528
  ] })
492
529
  ] }),
493
- /* @__PURE__ */ r("div", { className: "make-ai-assistant__header-actions", children: [
494
- /* @__PURE__ */ a(
530
+ /* @__PURE__ */ n("div", { className: "make-ai-assistant__header-actions", children: [
531
+ u.features?.newConversation !== !1 ? /* @__PURE__ */ a(
495
532
  "button",
496
533
  {
497
534
  "aria-label": "新建对话",
498
535
  className: "make-ai-assistant__icon-button",
499
536
  type: "button",
500
- onClick: ue,
501
- children: /* @__PURE__ */ a(xe, {})
537
+ onClick: ye,
538
+ children: /* @__PURE__ */ a(ze, {})
502
539
  }
503
- ),
504
- c ? /* @__PURE__ */ a(
540
+ ) : null,
541
+ l ? /* @__PURE__ */ a(
505
542
  "button",
506
543
  {
507
544
  "aria-label": "关闭 Make AI 助手",
508
545
  className: "make-ai-assistant__icon-button",
509
546
  type: "button",
510
- onClick: c,
511
- children: /* @__PURE__ */ a(Re, {})
547
+ onClick: l,
548
+ children: /* @__PURE__ */ a(qe, {})
512
549
  }
513
550
  ) : null
514
551
  ] })
515
552
  ] }),
516
- /* @__PURE__ */ r("div", { className: "make-ai-assistant__privacy-note", role: "note", children: [
553
+ /* @__PURE__ */ n("div", { className: "make-ai-assistant__privacy-note", role: "note", children: [
517
554
  /* @__PURE__ */ a("span", { "aria-hidden": "true", children: "◇" }),
518
555
  "当前页面上下文会随请求发送,数据权限以宿主服务端校验结果为准"
519
556
  ] }),
520
- /* @__PURE__ */ r(
557
+ /* @__PURE__ */ n(
521
558
  "div",
522
559
  {
523
560
  className: "make-ai-assistant__body",
524
561
  "aria-live": "polite",
525
- ref: O,
526
- onScroll: ce,
562
+ ref: W,
563
+ onScroll: _e,
527
564
  children: [
528
- d.messages.length === 0 ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__empty", children: [
529
- /* @__PURE__ */ a(z, {}),
565
+ E === "loading" ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__empty", role: "status", children: [
566
+ /* @__PURE__ */ a(B, {}),
567
+ /* @__PURE__ */ a("h3", { children: "正在恢复对话" }),
568
+ /* @__PURE__ */ a("p", { children: "正在读取当前 App 的历史消息…" })
569
+ ] }) : E === "error" ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__empty", role: "alert", children: [
570
+ /* @__PURE__ */ a(B, {}),
571
+ /* @__PURE__ */ a("h3", { children: "暂时无法加载对话" }),
572
+ /* @__PURE__ */ a("p", { children: "请检查网络后重试。" }),
573
+ /* @__PURE__ */ a(
574
+ "button",
575
+ {
576
+ className: "make-ai-assistant__retry",
577
+ type: "button",
578
+ onClick: () => fe((o) => o + 1),
579
+ children: "重新加载"
580
+ }
581
+ )
582
+ ] }) : d.messages.length === 0 ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__empty", children: [
583
+ /* @__PURE__ */ a(B, {}),
530
584
  /* @__PURE__ */ a("h3", { children: "有什么可以帮你?" }),
531
585
  /* @__PURE__ */ a("p", { children: "我会结合当前 App 和页面上下文理解问题,并用适合的方式展示结果。" })
532
- ] }) : Ce(d, e, G, t, n),
533
- d.error ? /* @__PURE__ */ r("div", { className: "make-ai-assistant__error", role: "alert", children: [
586
+ ] }) : Le(d, e, te, t, s),
587
+ d.progress ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__progress", role: "status", children: [
588
+ /* @__PURE__ */ a("span", { "aria-hidden": "true" }),
589
+ d.progress.message
590
+ ] }) : null,
591
+ d.error ? /* @__PURE__ */ n("div", { className: "make-ai-assistant__error", role: "alert", children: [
534
592
  /* @__PURE__ */ a("strong", { children: "暂时无法完成" }),
535
593
  /* @__PURE__ */ a("span", { children: d.error.message })
536
594
  ] }) : null
537
595
  ]
538
596
  }
539
597
  ),
540
- /* @__PURE__ */ r("footer", { className: "make-ai-assistant__composer-region", children: [
541
- u.length > 0 && d.messages.length === 0 ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: u.map((o, _) => /* @__PURE__ */ a(
598
+ /* @__PURE__ */ n("footer", { className: "make-ai-assistant__composer-region", children: [
599
+ E === "ready" && h.length > 0 && d.messages.length === 0 ? /* @__PURE__ */ a("div", { className: "make-ai-assistant__suggestions", "aria-label": "推荐问题", children: h.map((o, k) => /* @__PURE__ */ a(
542
600
  "button",
543
601
  {
544
602
  type: "button",
545
603
  onClick: () => {
546
- U(o);
604
+ X(o);
547
605
  },
548
606
  children: o
549
607
  },
550
- `${_}-${o}`
608
+ `${k}-${o}`
551
609
  )) }) : null,
552
- /* @__PURE__ */ r("form", { className: "make-ai-assistant__composer", onSubmit: le, children: [
610
+ /* @__PURE__ */ n("form", { className: "make-ai-assistant__composer", onSubmit: ke, children: [
553
611
  /* @__PURE__ */ a(
554
612
  "textarea",
555
613
  {
556
614
  "aria-label": "向 Make AI 助手提问",
557
- "aria-describedby": D ? "make-ai-composer-error" : void 0,
558
- "aria-invalid": D ? !0 : void 0,
615
+ "aria-describedby": O ? "make-ai-composer-error" : void 0,
616
+ "aria-invalid": O ? !0 : void 0,
559
617
  autoFocus: !0,
560
- disabled: d.status === "streaming",
618
+ disabled: E !== "ready" || d.status === "streaming",
561
619
  placeholder: `询问当前 ${e.app.name ?? "App"} 中的数据…`,
562
620
  rows: 2,
563
- value: v,
621
+ value: b,
564
622
  onChange: (o) => {
565
- T(o.currentTarget.value), P(void 0);
623
+ w(o.currentTarget.value), q(void 0);
566
624
  },
567
- onKeyDown: de
625
+ onKeyDown: ge
568
626
  }
569
627
  ),
570
628
  d.status === "streaming" ? /* @__PURE__ */ a(
571
629
  "button",
572
630
  {
573
- "aria-label": "停止生成",
631
+ "aria-label": Ie,
574
632
  className: "make-ai-assistant__send make-ai-assistant__send--stop",
575
633
  type: "button",
576
- onClick: me,
634
+ onClick: ve,
577
635
  children: /* @__PURE__ */ a("span", { "aria-hidden": "true" })
578
636
  }
579
637
  ) : /* @__PURE__ */ a(
@@ -581,81 +639,81 @@ function Fe({
581
639
  {
582
640
  "aria-label": "发送",
583
641
  className: "make-ai-assistant__send",
584
- disabled: !v.trim(),
642
+ disabled: E !== "ready" || !b.trim(),
585
643
  type: "submit",
586
- children: /* @__PURE__ */ a(Se, {})
644
+ children: /* @__PURE__ */ a(He, {})
587
645
  }
588
646
  )
589
647
  ] }),
590
- D ? /* @__PURE__ */ a("p", { id: "make-ai-composer-error", role: "alert", children: D }) : null,
648
+ O ? /* @__PURE__ */ a("p", { id: "make-ai-composer-error", role: "alert", children: O }) : null,
591
649
  /* @__PURE__ */ a("p", { children: "AI 生成的结果可能存在偏差,重要数据请核对明细。" })
592
650
  ] })
593
651
  ] });
594
652
  }
595
- function He({
653
+ function Ge({
596
654
  defaultOpen: e = !1,
597
655
  hideLauncher: t = !1,
598
- launcher: n,
599
- onOpenChange: c,
600
- open: i,
601
- ...s
656
+ launcher: s,
657
+ onOpenChange: l,
658
+ open: c,
659
+ ...r
602
660
  }) {
603
- const [m, u] = L(e), A = S(null), h = i ?? m, v = (d) => {
604
- i === void 0 && u(d), c?.(d), d || requestAnimationFrame(() => A.current?.focus());
605
- }, T = () => v(!h);
606
- return Y(() => {
607
- if (!h) return;
608
- const d = (y) => {
609
- y.key === "Escape" && (v(!1), requestAnimationFrame(() => A.current?.focus()));
661
+ const [m, h] = P(e), N = T(null), u = c ?? m, b = (d) => {
662
+ c === void 0 && h(d), l?.(d), d || requestAnimationFrame(() => N.current?.focus());
663
+ }, w = () => b(!u);
664
+ return Q(() => {
665
+ if (!u) return;
666
+ const d = (v) => {
667
+ v.key === "Escape" && (b(!1), requestAnimationFrame(() => N.current?.focus()));
610
668
  };
611
669
  return document.addEventListener("keydown", d), () => document.removeEventListener("keydown", d);
612
- }, [c, h]), /* @__PURE__ */ r("div", { className: "make-ai-assistant", "data-open": h || void 0, children: [
613
- !t && (!h || n) ? n ? n({ open: h, toggle: T }) : /* @__PURE__ */ r(
670
+ }, [l, u]), /* @__PURE__ */ n("div", { className: "make-ai-assistant", "data-open": u || void 0, children: [
671
+ !t && (!u || s) ? s ? s({ open: u, toggle: w }) : /* @__PURE__ */ n(
614
672
  "button",
615
673
  {
616
- "aria-label": h ? "关闭 Make AI 助手" : "打开 Make AI 助手",
617
- "aria-expanded": h,
674
+ "aria-label": u ? "关闭 Make AI 助手" : "打开 Make AI 助手",
675
+ "aria-expanded": u,
618
676
  className: "make-ai-assistant__launcher",
619
- ref: A,
677
+ ref: N,
620
678
  type: "button",
621
- onClick: T,
679
+ onClick: w,
622
680
  children: [
623
681
  /* @__PURE__ */ a("span", { className: "make-ai-assistant__launcher-orbit", "aria-hidden": "true" }),
624
- /* @__PURE__ */ a(oe, {})
682
+ /* @__PURE__ */ a(pe, {})
625
683
  ]
626
684
  }
627
685
  ) : null,
628
- h ? /* @__PURE__ */ a(
686
+ u ? /* @__PURE__ */ a(
629
687
  "aside",
630
688
  {
631
689
  "aria-label": "Make AI 助手",
632
690
  "aria-modal": "false",
633
691
  className: "make-ai-assistant__drawer",
634
692
  role: "dialog",
635
- children: /* @__PURE__ */ a(Fe, { ...s, onClose: () => v(!1) })
693
+ children: /* @__PURE__ */ a(Be, { ...r, onClose: () => b(!1) })
636
694
  }
637
695
  ) : null
638
696
  ] });
639
697
  }
640
698
  export {
641
- ve as ArtifactRenderer,
642
- Fe as AssistantPanel,
643
- je as MAKE_AI_ARTIFACT_KINDS,
644
- Ue as MAKE_AI_ARTIFACT_LIMITS,
645
- Ye as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
646
- b as MAKE_AI_CONVERSATION_LIMITS,
647
- He as MakeAiAssistant,
648
- _e as appendUserMessage,
649
- he as createArtifactCapabilities,
650
- re as createArtifactTemplateRegistry,
651
- ae as createAssistantConversationState,
652
- Ee as createPlatformArtifactRegistry,
653
- Oe as extendArtifactTemplateRegistry,
654
- w as formatArtifactValue,
655
- ze as parseArtifact,
656
- ke as parseAssistantEvent,
657
- Me as platformArtifactTemplates,
658
- B as reduceAssistantEvent,
659
- pe as resolveArtifactTemplate,
660
- Ge as validateArtifact
699
+ Me as ArtifactRenderer,
700
+ Be as AssistantPanel,
701
+ ea as MAKE_AI_ARTIFACT_KINDS,
702
+ aa as MAKE_AI_ARTIFACT_LIMITS,
703
+ ta as MAKE_AI_ARTIFACT_SCHEMA_VERSION,
704
+ I as MAKE_AI_CONVERSATION_LIMITS,
705
+ Ge as MakeAiAssistant,
706
+ we as appendUserMessage,
707
+ Ae as createArtifactCapabilities,
708
+ de as createArtifactTemplateRegistry,
709
+ G as createAssistantConversationState,
710
+ Ke as createPlatformArtifactRegistry,
711
+ We as extendArtifactTemplateRegistry,
712
+ C as formatArtifactValue,
713
+ sa as parseArtifact,
714
+ Te as parseAssistantEvent,
715
+ Pe as platformArtifactTemplates,
716
+ J as reduceAssistantEvent,
717
+ be as resolveArtifactTemplate,
718
+ na as validateArtifact
661
719
  };