rt-chat-messages 1.0.6 → 1.0.7

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.
@@ -1,9 +1,9 @@
1
- import { defineComponent as Me, ref as C, onMounted as Ve, computed as Y, createBlock as de, createCommentVNode as B, openBlock as d, Teleport as at, createElementBlock as p, withModifiers as he, normalizeClass as le, createElementVNode as l, normalizeStyle as be, renderSlot as Fe, h as Oe, watch as ye, nextTick as oe, onUnmounted as He, createVNode as M, withCtx as W, unref as U, createTextVNode as We, toDisplayString as N, Fragment as ze, renderList as Ee, resolveDynamicComponent as Ke, withDirectives as nt, vShow as ot, createStaticVNode as lt, Transition as rt, getCurrentInstance as it } from "vue";
1
+ import { defineComponent as be, ref as _, onMounted as Ve, computed as N, createBlock as de, createCommentVNode as H, openBlock as d, Teleport as nt, createElementBlock as h, withModifiers as he, normalizeClass as re, createElementVNode as r, normalizeStyle as Me, renderSlot as Fe, h as Oe, watch as ye, nextTick as oe, onUnmounted as He, createVNode as b, withCtx as j, unref as T, createTextVNode as We, toDisplayString as X, Fragment as ze, renderList as Ee, resolveDynamicComponent as Ke, withDirectives as at, vShow as ot, createStaticVNode as rt, Transition as lt, getCurrentInstance as it } from "vue";
2
2
  import { useMessageProcessor as ct, A2UISurface as ut, useA2UIConfig as dt, DEFAULT_CATALOG as mt, provideA2UI as vt, defaultTheme as ft } from "a2ui-vue";
3
3
  import gt from "markdown-it";
4
4
  import pt from "@vscode/markdown-it-katex";
5
5
  import je from "mermaid";
6
- const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
6
+ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ be({
7
7
  __name: "Dialog",
8
8
  props: {
9
9
  visible: { type: Boolean, default: !1 },
@@ -14,63 +14,63 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
14
14
  appendToBody: { type: Boolean, default: !0 }
15
15
  },
16
16
  emits: ["update:visible", "close"],
17
- setup(r, { emit: y }) {
18
- const b = r, w = y, m = C(!1);
17
+ setup(i, { emit: y }) {
18
+ const M = i, w = y, m = _(!1);
19
19
  Ve(() => {
20
20
  m.value = !0;
21
21
  });
22
- const A = Y(() => b.fullscreen ? { width: "100%", height: "100%", margin: 0 } : { width: b.width }), $ = () => {
22
+ const A = N(() => M.fullscreen ? { width: "100%", height: "100%", margin: 0 } : { width: M.width }), $ = () => {
23
23
  w("update:visible", !1), w("close");
24
24
  }, x = () => {
25
- b.closeOnClickModal && $();
25
+ M.closeOnClickModal && $();
26
26
  };
27
- return (H, D) => m.value ? (d(), de(at, {
27
+ return (D, P) => m.value ? (d(), de(nt, {
28
28
  key: 0,
29
29
  to: "body"
30
30
  }, [
31
- r.visible ? (d(), p("div", {
31
+ i.visible ? (d(), h("div", {
32
32
  key: 0,
33
- class: le(["cm-dialog-overlay", { "is-fullscreen": r.fullscreen }]),
33
+ class: re(["cm-dialog-overlay", { "is-fullscreen": i.fullscreen }]),
34
34
  onClick: he(x, ["self"])
35
35
  }, [
36
- l("div", {
36
+ r("div", {
37
37
  class: "cm-dialog",
38
- style: be(A.value),
38
+ style: Me(A.value),
39
39
  role: "dialog",
40
40
  "aria-modal": "true"
41
41
  }, [
42
- l("div", ht, [
43
- Fe(H.$slots, "default", {}, void 0, !0)
42
+ r("div", ht, [
43
+ Fe(D.$slots, "default", {}, void 0, !0)
44
44
  ]),
45
- r.showClose ? (d(), p("button", {
45
+ i.showClose ? (d(), h("button", {
46
46
  key: 0,
47
47
  class: "cm-dialog__close",
48
48
  onClick: $
49
- }, [...D[0] || (D[0] = [
50
- l("svg", {
49
+ }, [...P[0] || (P[0] = [
50
+ r("svg", {
51
51
  viewBox: "0 0 1024 1024",
52
52
  width: "16",
53
53
  height: "16"
54
54
  }, [
55
- l("path", {
55
+ r("path", {
56
56
  fill: "currentColor",
57
57
  d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"
58
58
  })
59
59
  ], -1)
60
- ])])) : B("", !0)
60
+ ])])) : H("", !0)
61
61
  ], 4)
62
- ], 2)) : B("", !0)
63
- ])) : B("", !0);
62
+ ], 2)) : H("", !0)
63
+ ])) : H("", !0);
64
64
  }
65
- }), Ce = (r, y) => {
66
- const b = r.__vccOpts || r;
65
+ }), _e = (i, y) => {
66
+ const M = i.__vccOpts || i;
67
67
  for (const [w, m] of y)
68
- b[w] = m;
69
- return b;
70
- }, Pe = /* @__PURE__ */ Ce(yt, [["__scopeId", "data-v-efdf0259"]]), wt = ["disabled"], kt = {
68
+ M[w] = m;
69
+ return M;
70
+ }, Pe = /* @__PURE__ */ _e(yt, [["__scopeId", "data-v-efdf0259"]]), wt = ["disabled"], kt = {
71
71
  key: 0,
72
72
  class: "cm-icon-loading"
73
- }, bt = /* @__PURE__ */ Me({
73
+ }, Mt = /* @__PURE__ */ be({
74
74
  __name: "Button",
75
75
  props: {
76
76
  type: { default: "default" },
@@ -80,26 +80,26 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
80
80
  loading: { type: Boolean, default: !1 }
81
81
  },
82
82
  emits: ["click"],
83
- setup(r, { emit: y }) {
84
- const b = r, w = y, m = (A) => {
85
- b.disabled || b.loading || w("click", A);
83
+ setup(i, { emit: y }) {
84
+ const M = i, w = y, m = (A) => {
85
+ M.disabled || M.loading || w("click", A);
86
86
  };
87
- return (A, $) => (d(), p("button", {
88
- class: le(["cm-button", [
89
- `cm-button--${r.type}`,
90
- `cm-button--${r.size}`,
91
- { "is-circle": r.circle, "is-disabled": r.disabled, "is-loading": r.loading }
87
+ return (A, $) => (d(), h("button", {
88
+ class: re(["cm-button", [
89
+ `cm-button--${i.type}`,
90
+ `cm-button--${i.size}`,
91
+ { "is-circle": i.circle, "is-disabled": i.disabled, "is-loading": i.loading }
92
92
  ]]),
93
- disabled: r.disabled || r.loading,
93
+ disabled: i.disabled || i.loading,
94
94
  onClick: m
95
95
  }, [
96
- r.loading ? (d(), p("span", kt, [...$[0] || ($[0] = [
97
- l("svg", {
96
+ i.loading ? (d(), h("span", kt, [...$[0] || ($[0] = [
97
+ r("svg", {
98
98
  viewBox: "0 0 1024 1024",
99
99
  width: "1em",
100
100
  height: "1em"
101
101
  }, [
102
- l("path", {
102
+ r("path", {
103
103
  fill: "currentColor",
104
104
  d: "M512 64a448 448 0 0 1 448 448 32 32 0 1 1-64 0 416 416 0 0 0-416-416 416 416 0 0 0-416 416 32 32 0 1 1-64 0 448 448 0 0 1 448-448z"
105
105
  })
@@ -107,8 +107,8 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
107
107
  ])])) : Fe(A.$slots, "default", { key: 1 }, void 0, !0)
108
108
  ], 10, wt));
109
109
  }
110
- }), K = /* @__PURE__ */ Ce(bt, [["__scopeId", "data-v-bab126c7"]]), J = (r, y) => Me({
111
- name: r,
110
+ }), K = /* @__PURE__ */ _e(Mt, [["__scopeId", "data-v-bab126c7"]]), J = (i, y) => be({
111
+ name: i,
112
112
  render() {
113
113
  return Oe(
114
114
  "svg",
@@ -132,7 +132,7 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
132
132
  ), Ne = J(
133
133
  "ZoomOut",
134
134
  "M637.696 587.392a316.032 316.032 0 1 0-45.44 49.344l191.232 191.296a32 32 0 0 0 45.312-45.184L637.696 587.392zM73.152 357.696a284.48 284.48 0 1 1 284.48 284.48A284.672 284.672 0 0 1 73.152 357.568zm145.92-58.56a32 32 0 0 0 0 64h245.12a32 32 0 0 0 0-64H219.072z"
135
- ), Mt = J(
135
+ ), bt = J(
136
136
  "Document",
137
137
  "M854.6 288.7c0.4 0 0.7 0 1 0v431.5c0 17.6-14.4 32-32 32H200.4c-17.6 0-32-14.4-32-32l0-575.2c0-17.6 14.4-32 32-32h391.5c0 0.3 0 0.7 0 1l0 142.1c0 17.6 14.4 32.1 32 32.1h142.6c0-0.4 0-0.7 0-1.1L854.6 288.7zM790.2 220.2L668 97.9v122.3h122.2zM240 448h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h384a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64z"
138
138
  ), Xe = J(
@@ -141,10 +141,10 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
141
141
  ), St = J(
142
142
  "VideoPlay",
143
143
  "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.656-340.32a32 32 0 0 1 32 32V673.92a32 32 0 0 1-50.208 26.24l-236.8-161.92a32 32 0 0 1 0-52.48l236.8-161.92a32 32 0 0 1 18.208-5.632z"
144
- ), Ct = J(
144
+ ), _t = J(
145
145
  "VideoPause",
146
146
  "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-96-544a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32z"
147
- ), _t = J(
147
+ ), Ct = J(
148
148
  "ArrowLeft",
149
149
  "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"
150
150
  ), At = J(
@@ -168,14 +168,14 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
168
168
  }, Ut = ["innerHTML"], Tt = { class: "preview-controls" }, Bt = { class: "cm-button-group" }, Ht = {
169
169
  key: 0,
170
170
  class: "mobile-close-hint"
171
- }, Dt = /* @__PURE__ */ Me({
171
+ }, Dt = /* @__PURE__ */ be({
172
172
  __name: "MarkdownMessage",
173
173
  props: {
174
174
  content: {},
175
175
  isStreaming: { type: Boolean, default: !1 }
176
176
  },
177
- setup(r) {
178
- const y = r, b = C(), w = C(), m = C(!1), A = C(""), $ = C(""), x = C(!1), H = C(""), D = C(!1), k = C(1), V = C({ x: 0, y: 0 }), L = C(!1), R = C({ x: 0, y: 0 }), S = C(1), O = C({ x: 0, y: 0 }), _ = C(!1), we = C({ x: 0, y: 0 }), z = C(""), re = C(/* @__PURE__ */ new Map()), me = C(!1);
177
+ setup(i) {
178
+ const y = i, M = _(), w = _(), m = _(!1), A = _(""), $ = _(""), x = _(!1), D = _(""), P = _(!1), k = _(1), O = _({ x: 0, y: 0 }), L = _(!1), V = _({ x: 0, y: 0 }), S = _(1), W = _({ x: 0, y: 0 }), C = _(!1), we = _({ x: 0, y: 0 }), z = _(""), le = _(/* @__PURE__ */ new Map()), me = _(!1);
179
179
  let ke = 0;
180
180
  je.initialize({
181
181
  startOnLoad: !1,
@@ -183,13 +183,13 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
183
183
  securityLevel: "loose",
184
184
  fontFamily: "inherit"
185
185
  });
186
- const _e = (a) => {
187
- const o = a.renderer.rules.fence;
188
- a.renderer.rules.fence = (c, g, u, e, t) => {
189
- const s = c[g], n = s.content.trim();
190
- return (s.info ? s.info.trim() : "") === "mermaid" ? (ke++, `<div class="mermaid-container"><pre class="mermaid" data-mermaid-id="${`mermaid-${Date.now()}-${ke}`}">${n}</pre></div>`) : o(c, g, u, e, t);
186
+ const Ce = (n) => {
187
+ const o = n.renderer.rules.fence;
188
+ n.renderer.rules.fence = (c, p, u, e, t) => {
189
+ const s = c[p], a = s.content.trim();
190
+ return (s.info ? s.info.trim() : "") === "mermaid" ? (ke++, `<div class="mermaid-container"><pre class="mermaid" data-mermaid-id="${`mermaid-${Date.now()}-${ke}`}">${a}</pre></div>`) : o(c, p, u, e, t);
191
191
  };
192
- }, X = new gt({
192
+ }, q = new gt({
193
193
  html: !0,
194
194
  // 允许HTML标签,以便markdown渲染的标签能正常显示
195
195
  xhtmlOut: !1,
@@ -203,119 +203,119 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
203
203
  // 启用一些语言中性的替换 + 引号美化
204
204
  quotes: `""''`,
205
205
  // 双引号和单引号的替换对,中文环境
206
- highlight: function(a, o) {
207
- return o && o.trim() ? `<pre class="hljs language-${o}"><code>${((g) => g.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"))(a)}</code></pre>` : `<pre class="hljs"><code>${a}</code></pre>`;
206
+ highlight: function(n, o) {
207
+ return o && o.trim() ? `<pre class="hljs language-${o}"><code>${((p) => p.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;"))(n)}</code></pre>` : `<pre class="hljs"><code>${n}</code></pre>`;
208
208
  }
209
- }), ee = X.renderer.rules.image || function(a, o, c, g, u) {
210
- return u.renderToken(a, o, c);
209
+ }), ee = q.renderer.rules.image || function(n, o, c, p, u) {
210
+ return u.renderToken(n, o, c);
211
211
  };
212
- X.renderer.rules.image = function(a, o, c, g, u) {
213
- const e = a[o], t = e.attrIndex("src");
212
+ q.renderer.rules.image = function(n, o, c, p, u) {
213
+ const e = n[o], t = e.attrIndex("src");
214
214
  if (t >= 0) {
215
- const s = e.attrs[t][1], v = "img-" + ((E) => {
216
- let P = 0;
217
- for (let j = 0; j < E.length; j++) {
218
- const pe = E.charCodeAt(j);
219
- P = (P << 5) - P + pe, P = P & P;
215
+ const s = e.attrs[t][1], f = "img-" + ((U) => {
216
+ let R = 0;
217
+ for (let Y = 0; Y < U.length; Y++) {
218
+ const pe = U.charCodeAt(Y);
219
+ R = (R << 5) - R + pe, R = R & R;
220
220
  }
221
- return Math.abs(P).toString(36);
221
+ return Math.abs(R).toString(36);
222
222
  })(s);
223
- e.attrSet("id", v), e.attrSet("data-image-id", v), e.attrSet("key", v), e.attrSet("loading", "eager"), e.attrSet("decoding", "async"), e.attrSet("fetchpriority", "high"), e.attrSet("data-src", s), e.attrSet("data-cached", "true");
223
+ e.attrSet("id", f), e.attrSet("data-image-id", f), e.attrSet("key", f), e.attrSet("loading", "eager"), e.attrSet("decoding", "async"), e.attrSet("fetchpriority", "high"), e.attrSet("data-src", s), e.attrSet("data-cached", "true");
224
224
  }
225
- return ee(a, o, c, g, u);
226
- }, X.use(pt, {
225
+ return ee(n, o, c, p, u);
226
+ }, q.use(pt, {
227
227
  throwOnError: !1,
228
228
  errorColor: "#cc0000"
229
- }), X.use(_e);
230
- const q = (a) => {
231
- const o = a.match(/```[\w]*\n/g), c = a.match(/\n```/g), g = (o == null ? void 0 : o.length) || 0, u = (c == null ? void 0 : c.length) || 0;
232
- return g > u && (a += "\n```"), a;
233
- }, T = (a) => {
234
- if (!a) return "";
235
- a = a.replace(/;;\s*$/g, ""), a = a.replace(/;;\s*$/g, "");
236
- const o = /^```(?:markdown|md)\s*\n([\s\S]*?)\n```$/, c = a.match(o);
229
+ }), q.use(Ce);
230
+ const E = (n) => {
231
+ const o = n.match(/```[\w]*\n/g), c = n.match(/\n```/g), p = (o == null ? void 0 : o.length) || 0, u = (c == null ? void 0 : c.length) || 0;
232
+ return p > u && (n += "\n```"), n;
233
+ }, B = (n) => {
234
+ if (!n) return "";
235
+ n = n.replace(/;;\s*$/g, ""), n = n.replace(/;;\s*$/g, "");
236
+ const o = /^```(?:markdown|md)\s*\n([\s\S]*?)\n```$/, c = n.match(o);
237
237
  if (c)
238
- a = c[1];
238
+ n = c[1];
239
239
  else {
240
- const g = /^```\s*\n([\s\S]*?)\n```$/, u = a.match(g);
240
+ const p = /^```\s*\n([\s\S]*?)\n```$/, u = n.match(p);
241
241
  if (u) {
242
242
  const e = u[1];
243
- (/^#{1,6}\s/.test(e) || /^\*{1,2}[^*]+\*{1,2}/.test(e) || /^[-*+]\s/.test(e) || /^\d+\.\s/.test(e) || /!\[.*?\]\(.*?\)/.test(e) || /\[.*?\]\(.*?\)/.test(e) || /^\|.+\|/.test(e) || /^\|[\s-:]+\|/m.test(e)) && (a = e);
243
+ (/^#{1,6}\s/.test(e) || /^\*{1,2}[^*]+\*{1,2}/.test(e) || /^[-*+]\s/.test(e) || /^\d+\.\s/.test(e) || /!\[.*?\]\(.*?\)/.test(e) || /\[.*?\]\(.*?\)/.test(e) || /^\|.+\|/.test(e) || /^\|[\s-:]+\|/m.test(e)) && (n = e);
244
244
  }
245
245
  }
246
246
  if (y.isStreaming) {
247
- const g = /^```(?:markdown|md)?\s*\n/;
248
- if (g.test(a)) {
249
- const e = a.replace(g, "");
250
- (/^#{1,6}\s/.test(e) || /^\|.+\|/.test(e) || /^\|[\s-:]+\|/m.test(e) || /!\[.*?\]\(.*?\)/.test(e) || /\[.*?\]\(.*?\)/.test(e)) && (a = a.replace(g, ""));
247
+ const p = /^```(?:markdown|md)?\s*\n/;
248
+ if (p.test(n)) {
249
+ const e = n.replace(p, "");
250
+ (/^#{1,6}\s/.test(e) || /^\|.+\|/.test(e) || /^\|[\s-:]+\|/m.test(e) || /!\[.*?\]\(.*?\)/.test(e) || /\[.*?\]\(.*?\)/.test(e)) && (n = n.replace(p, ""));
251
251
  }
252
252
  if (/^```(?:markdown|md)?\s*\n/.test(y.content)) {
253
253
  const e = /\n```\s*$/;
254
- e.test(a) && (a = a.replace(e, ""));
254
+ e.test(n) && (n = n.replace(e, ""));
255
255
  }
256
256
  }
257
- return a = a.replace(
257
+ return n = n.replace(
258
258
  /```(?:markdown|md)\s*\n([\s\S]*?)\n```/g,
259
- (g, u) => u
260
- ), y.isStreaming && (a = q(a)), a;
261
- }, te = (a) => {
262
- if (!a.includes("<img"))
263
- return a;
259
+ (p, u) => u
260
+ ), y.isStreaming && (n = E(n)), n;
261
+ }, te = (n) => {
262
+ if (!n.includes("<img"))
263
+ return n;
264
264
  const o = /<img[^>]*?src="([^"]*)"[^>]*?>/g;
265
- let c, g = a;
265
+ let c, p = n;
266
266
  const u = [];
267
- for (; (c = o.exec(a)) !== null; ) {
267
+ for (; (c = o.exec(n)) !== null; ) {
268
268
  const e = c[0], t = c[1];
269
- if (re.value.has(t)) {
270
- const s = re.value.get(t);
269
+ if (le.value.has(t)) {
270
+ const s = le.value.get(t);
271
271
  e !== s && u.push({ original: e, cached: s });
272
272
  } else
273
- re.value.set(t, e);
273
+ le.value.set(t, e);
274
274
  }
275
275
  for (const { original: e, cached: t } of u)
276
- g = g.replace(e, t);
277
- return g;
278
- }, Ae = (a) => {
276
+ p = p.replace(e, t);
277
+ return p;
278
+ }, Ae = (n) => {
279
279
  if (!w.value)
280
280
  return;
281
281
  const o = w.value, c = /* @__PURE__ */ new Map();
282
- if (y.isStreaming && o.children.length > 0 && o.querySelectorAll("img[data-image-id]").forEach((g) => {
283
- const u = g.getAttribute("data-image-id");
284
- u && c.set(u, g);
285
- }), o.innerHTML = a, !y.isStreaming) {
282
+ if (y.isStreaming && o.children.length > 0 && o.querySelectorAll("img[data-image-id]").forEach((p) => {
283
+ const u = p.getAttribute("data-image-id");
284
+ u && c.set(u, p);
285
+ }), o.innerHTML = n, !y.isStreaming) {
286
286
  oe(() => {
287
- Be(), h();
287
+ Be(), g();
288
288
  });
289
289
  return;
290
290
  }
291
- c.size > 0 && o.querySelectorAll("img[data-image-id]").forEach((g) => {
292
- const u = g.getAttribute("data-image-id");
291
+ c.size > 0 && o.querySelectorAll("img[data-image-id]").forEach((p) => {
292
+ const u = p.getAttribute("data-image-id");
293
293
  if (u && c.has(u)) {
294
294
  const e = c.get(u);
295
- g.parentNode && e !== g && g.parentNode.replaceChild(e, g);
295
+ p.parentNode && e !== p && p.parentNode.replaceChild(e, p);
296
296
  }
297
297
  });
298
298
  }, G = () => {
299
299
  try {
300
300
  if (!y.content) {
301
- z.value = "", w.value && (w.value.innerHTML = ""), y.isStreaming || re.value.clear();
301
+ z.value = "", w.value && (w.value.innerHTML = ""), y.isStreaming || le.value.clear();
302
302
  return;
303
303
  }
304
304
  if (document.hidden && y.isStreaming) {
305
305
  me.value = !0;
306
306
  return;
307
307
  }
308
- const a = T(y.content);
309
- let o = X.render(a);
310
- y.isStreaming && o.includes("<img") && (o = te(o)), o !== z.value && (z.value = o, Ae(o)), y.isStreaming || re.value.clear();
311
- } catch (a) {
312
- console.error("Markdown rendering error:", a), w.value && (w.value.innerHTML = `<pre style="white-space: pre-wrap; word-wrap: break-word;">${y.content}</pre>`);
308
+ const n = B(y.content);
309
+ let o = q.render(n);
310
+ y.isStreaming && o.includes("<img") && (o = te(o)), o !== z.value && (z.value = o, Ae(o)), y.isStreaming || le.value.clear();
311
+ } catch (n) {
312
+ console.error("Markdown rendering error:", n), w.value && (w.value.innerHTML = `<pre style="white-space: pre-wrap; word-wrap: break-word;">${y.content}</pre>`);
313
313
  }
314
314
  };
315
315
  ye(() => y.content, G), ye(
316
316
  () => y.isStreaming,
317
- (a, o) => {
318
- o && !a && oe(() => {
317
+ (n, o) => {
318
+ o && !n && oe(() => {
319
319
  G();
320
320
  });
321
321
  }
@@ -328,39 +328,39 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
328
328
  document.addEventListener("visibilitychange", Q), He(() => {
329
329
  document.removeEventListener("visibilitychange", Q);
330
330
  });
331
- const i = () => {
332
- D.value = window.innerWidth < 768;
333
- }, f = (a) => {
334
- let o = a;
331
+ const l = () => {
332
+ P.value = window.innerWidth < 768;
333
+ }, v = (n) => {
334
+ let o = n;
335
335
  return o = o.replace(/!\[([^\]]*)\]\([^)]+\)/g, "$1"), [
336
336
  /([A-Za-z0-9_]+)\[([^\]]*[\u4e00-\u9fa5]+[^\]]*)\]/g,
337
337
  /([A-Za-z0-9_]+)\(([^)]*[\u4e00-\u9fa5]+[^)]*)\)/g,
338
338
  /([A-Za-z0-9_]+)\{([^}]*[\u4e00-\u9fa5]+[^}]*)\}/g
339
- ].forEach((g) => {
340
- o = o.replace(g, (u, e, t) => {
339
+ ].forEach((p) => {
340
+ o = o.replace(p, (u, e, t) => {
341
341
  if (t.startsWith('"') && t.endsWith('"'))
342
342
  return u;
343
343
  let s = t.replace(/^["']+|["']+$/g, "").replace(/["]/g, '\\"');
344
344
  return u.includes("[") ? `${e}["${s}"]` : u.includes("(") ? `${e}("${s}")` : u.includes("{") ? `${e}{"${s}"}` : u;
345
345
  });
346
346
  }), o;
347
- }, h = async () => {
347
+ }, g = async () => {
348
348
  var o, c;
349
- if (y.isStreaming || (await oe(), !b.value)) return;
350
- const a = b.value.querySelectorAll(".mermaid");
351
- if (a.length !== 0)
352
- for (const g of Array.from(a)) {
353
- const u = g;
349
+ if (y.isStreaming || (await oe(), !M.value)) return;
350
+ const n = M.value.querySelectorAll(".mermaid");
351
+ if (n.length !== 0)
352
+ for (const p of Array.from(n)) {
353
+ const u = p;
354
354
  let e = (o = u.textContent) == null ? void 0 : o.trim();
355
355
  if (e && u.getAttribute("data-processed") !== "true")
356
356
  try {
357
- u.setAttribute("data-processed", "true"), e = f(e);
358
- const t = u.getAttribute("data-mermaid-id") || `mermaid-${Date.now()}-${Math.random()}`, { svg: s } = await je.render(t, e), n = u.parentElement;
359
- if (n) {
360
- const v = document.createElement("div");
361
- v.className = "mermaid-svg", v.innerHTML = s, v.setAttribute("data-mermaid-svg", "true"), v.style.cursor = "pointer", v.title = "Click to zoom", v.addEventListener("click", (E) => {
362
- E.preventDefault(), E.stopPropagation(), H.value = s, S.value = 1, O.value = { x: 0, y: 0 }, x.value = !0;
363
- }), n.replaceChild(v, u);
357
+ u.setAttribute("data-processed", "true"), e = v(e);
358
+ const t = u.getAttribute("data-mermaid-id") || `mermaid-${Date.now()}-${Math.random()}`, { svg: s } = await je.render(t, e), a = u.parentElement;
359
+ if (a) {
360
+ const f = document.createElement("div");
361
+ f.className = "mermaid-svg", f.innerHTML = s, f.setAttribute("data-mermaid-svg", "true"), f.style.cursor = "pointer", f.title = "Click to zoom", f.addEventListener("click", (U) => {
362
+ U.preventDefault(), U.stopPropagation(), D.value = s, S.value = 1, W.value = { x: 0, y: 0 }, x.value = !0;
363
+ }), a.replaceChild(f, u);
364
364
  }
365
365
  } catch (t) {
366
366
  console.error("Mermaid render failure:", t);
@@ -368,56 +368,56 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
368
368
  s.className = "mermaid-error", s.textContent = `Mermaid render error: ${t}`, (c = u.parentElement) == null || c.replaceChild(s, u);
369
369
  }
370
370
  }
371
- }, I = (a) => {
372
- a.preventDefault(), a.stopPropagation();
373
- const o = a.target;
374
- A.value = o.src, $.value = o.alt || "Image Preview", k.value = 1, V.value = { x: 0, y: 0 }, m.value = !0;
371
+ }, I = (n) => {
372
+ n.preventDefault(), n.stopPropagation();
373
+ const o = n.target;
374
+ A.value = o.src, $.value = o.alt || "Image Preview", k.value = 1, O.value = { x: 0, y: 0 }, m.value = !0;
375
375
  }, F = () => {
376
- k.value <= 1 && (V.value = { x: 0, y: 0 });
376
+ k.value <= 1 && (O.value = { x: 0, y: 0 });
377
377
  }, ve = () => {
378
378
  k.value = Math.min(k.value + 1, 10), F();
379
379
  }, fe = () => {
380
380
  k.value = Math.max(k.value - 1, 0.5), F();
381
381
  }, ie = () => {
382
- k.value = 1, V.value = { x: 0, y: 0 };
382
+ k.value = 1, O.value = { x: 0, y: 0 };
383
383
  }, $e = () => {
384
384
  k.value <= 1 && (m.value = !1);
385
- }, se = (a) => {
386
- a.preventDefault();
387
- const o = a.deltaY > 0 ? -0.5 : 0.5, c = Math.max(0.5, Math.min(10, k.value + o));
385
+ }, se = (n) => {
386
+ n.preventDefault();
387
+ const o = n.deltaY > 0 ? -0.5 : 0.5, c = Math.max(0.5, Math.min(10, k.value + o));
388
388
  k.value = c, F();
389
- }, ae = (a) => {
389
+ }, ne = (n) => {
390
390
  var e;
391
391
  if (k.value <= 1) return;
392
- a.preventDefault(), L.value = !0, R.value = {
393
- x: a.clientX - V.value.x,
394
- y: a.clientY - V.value.y
392
+ n.preventDefault(), L.value = !0, V.value = {
393
+ x: n.clientX - O.value.x,
394
+ y: n.clientY - O.value.y
395
395
  };
396
- const o = a.target, c = (e = o.parentElement) == null ? void 0 : e.getBoundingClientRect(), g = (t) => {
396
+ const o = n.target, c = (e = o.parentElement) == null ? void 0 : e.getBoundingClientRect(), p = (t) => {
397
397
  if (!L.value || !c) return;
398
- let s = t.clientX - R.value.x, n = t.clientY - R.value.y;
399
- const v = o.offsetWidth, E = o.offsetHeight, P = v * k.value, j = E * k.value, pe = 0.3, De = c.width * (1 - pe - 0.5) - P / 2, Ie = P / 2 - c.width * (1 - pe - 0.5), Le = c.height * (1 - pe - 0.5) - j / 2, Se = j / 2 - c.height * (1 - pe - 0.5);
400
- P > c.width ? s = Math.max(De, Math.min(Ie, s)) : s = 0, j > c.height ? n = Math.max(Le, Math.min(Se, n)) : n = 0, V.value = { x: s, y: n };
398
+ let s = t.clientX - V.value.x, a = t.clientY - V.value.y;
399
+ const f = o.offsetWidth, U = o.offsetHeight, R = f * k.value, Y = U * k.value, pe = 0.3, De = c.width * (1 - pe - 0.5) - R / 2, Ie = R / 2 - c.width * (1 - pe - 0.5), Le = c.height * (1 - pe - 0.5) - Y / 2, Se = Y / 2 - c.height * (1 - pe - 0.5);
400
+ R > c.width ? s = Math.max(De, Math.min(Ie, s)) : s = 0, Y > c.height ? a = Math.max(Le, Math.min(Se, a)) : a = 0, O.value = { x: s, y: a };
401
401
  }, u = () => {
402
- L.value = !1, document.removeEventListener("mousemove", g), document.removeEventListener("mouseup", u);
402
+ L.value = !1, document.removeEventListener("mousemove", p), document.removeEventListener("mouseup", u);
403
403
  };
404
- document.addEventListener("mousemove", g), document.addEventListener("mouseup", u);
405
- }, ne = (a) => {
406
- var n;
407
- if (a.touches.length !== 1) return;
408
- const o = a.touches[0], c = o.clientX, g = o.clientY;
404
+ document.addEventListener("mousemove", p), document.addEventListener("mouseup", u);
405
+ }, ae = (n) => {
406
+ var a;
407
+ if (n.touches.length !== 1) return;
408
+ const o = n.touches[0], c = o.clientX, p = o.clientY;
409
409
  if (k.value <= 1) return;
410
- L.value = !0, R.value = {
411
- x: c - V.value.x,
412
- y: g - V.value.y
410
+ L.value = !0, V.value = {
411
+ x: c - O.value.x,
412
+ y: p - O.value.y
413
413
  };
414
- const u = a.target, e = (n = u.parentElement) == null ? void 0 : n.getBoundingClientRect(), t = (v) => {
415
- if (!L.value || v.touches.length !== 1 || !e)
414
+ const u = n.target, e = (a = u.parentElement) == null ? void 0 : a.getBoundingClientRect(), t = (f) => {
415
+ if (!L.value || f.touches.length !== 1 || !e)
416
416
  return;
417
- const E = v.touches[0];
418
- let P = E.clientX - R.value.x, j = E.clientY - R.value.y;
417
+ const U = f.touches[0];
418
+ let R = U.clientX - V.value.x, Y = U.clientY - V.value.y;
419
419
  const pe = u.offsetWidth, De = u.offsetHeight, Ie = pe * k.value, Le = De * k.value, Se = 0.3, Qe = e.width * (1 - Se - 0.5) - Ie / 2, et = Ie / 2 - e.width * (1 - Se - 0.5), tt = e.height * (1 - Se - 0.5) - Le / 2, st = Le / 2 - e.height * (1 - Se - 0.5);
420
- Ie > e.width ? P = Math.max(Qe, Math.min(et, P)) : P = 0, Le > e.height ? j = Math.max(tt, Math.min(st, j)) : j = 0, V.value = { x: P, y: j };
420
+ Ie > e.width ? R = Math.max(Qe, Math.min(et, R)) : R = 0, Le > e.height ? Y = Math.max(tt, Math.min(st, Y)) : Y = 0, O.value = { x: R, y: Y };
421
421
  }, s = () => {
422
422
  L.value = !1, document.removeEventListener("touchmove", t), document.removeEventListener("touchend", s);
423
423
  };
@@ -427,31 +427,31 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
427
427
  }, xe = () => {
428
428
  S.value = Math.max(S.value - 1, 0.5);
429
429
  }, ce = () => {
430
- S.value = 1, O.value = { x: 0, y: 0 };
431
- }, ge = (a) => {
432
- a.preventDefault();
433
- const o = a.deltaY > 0 ? -0.5 : 0.5;
430
+ S.value = 1, W.value = { x: 0, y: 0 };
431
+ }, ge = (n) => {
432
+ n.preventDefault();
433
+ const o = n.deltaY > 0 ? -0.5 : 0.5;
434
434
  S.value = Math.max(0.5, Math.min(10, S.value + o));
435
- }, Te = (a) => {
435
+ }, Te = (n) => {
436
436
  var e, t;
437
437
  if (S.value <= 1) return;
438
- a.preventDefault(), _.value = !0, we.value = {
439
- x: a.clientX - O.value.x,
440
- y: a.clientY - O.value.y
438
+ n.preventDefault(), C.value = !0, we.value = {
439
+ x: n.clientX - W.value.x,
440
+ y: n.clientY - W.value.y
441
441
  };
442
- const c = (t = (e = a.target.closest(".mermaid-preview-content")) == null ? void 0 : e.parentElement) == null ? void 0 : t.getBoundingClientRect(), g = (s) => {
443
- if (!_.value || !c) return;
444
- let n = s.clientX - we.value.x, v = s.clientY - we.value.y;
445
- O.value = { x: n, y: v };
442
+ const c = (t = (e = n.target.closest(".mermaid-preview-content")) == null ? void 0 : e.parentElement) == null ? void 0 : t.getBoundingClientRect(), p = (s) => {
443
+ if (!C.value || !c) return;
444
+ let a = s.clientX - we.value.x, f = s.clientY - we.value.y;
445
+ W.value = { x: a, y: f };
446
446
  }, u = () => {
447
- _.value = !1, document.removeEventListener("mousemove", g), document.removeEventListener("mouseup", u);
447
+ C.value = !1, document.removeEventListener("mousemove", p), document.removeEventListener("mouseup", u);
448
448
  };
449
- document.addEventListener("mousemove", g), document.addEventListener("mouseup", u);
450
- }, ue = (a) => {
449
+ document.addEventListener("mousemove", p), document.addEventListener("mouseup", u);
450
+ }, ue = (n) => {
451
451
  }, Be = () => {
452
452
  y.isStreaming || oe(() => {
453
- if (!b.value) return;
454
- b.value.querySelectorAll(
453
+ if (!M.value) return;
454
+ M.value.querySelectorAll(
455
455
  ".markdown-content img"
456
456
  ).forEach((o) => {
457
457
  const c = o;
@@ -460,174 +460,174 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
460
460
  });
461
461
  };
462
462
  return Ve(() => {
463
- i(), window.addEventListener("resize", i), G(), Be(), h();
463
+ l(), window.addEventListener("resize", l), G(), Be(), g();
464
464
  }), He(() => {
465
- b.value && b.value.querySelectorAll(
465
+ M.value && M.value.querySelectorAll(
466
466
  ".markdown-content img"
467
467
  ).forEach((o) => {
468
468
  o.removeEventListener("click", I);
469
469
  });
470
- }), (a, o) => (d(), p("div", {
470
+ }), (n, o) => (d(), h("div", {
471
471
  class: "markdown-message",
472
472
  ref_key: "markdownContainer",
473
- ref: b
473
+ ref: M
474
474
  }, [
475
- l("div", {
475
+ r("div", {
476
476
  ref_key: "markdownContent",
477
477
  ref: w,
478
478
  class: "markdown-content"
479
479
  }, null, 512),
480
- M(Pe, {
480
+ b(Pe, {
481
481
  visible: m.value,
482
482
  "onUpdate:visible": o[2] || (o[2] = (c) => m.value = c),
483
- width: D.value ? "95vw" : "80vw",
484
- fullscreen: D.value,
483
+ width: P.value ? "95vw" : "80vw",
484
+ fullscreen: P.value,
485
485
  class: "image-preview-dialog",
486
486
  "close-on-click-modal": !1,
487
487
  "append-to-body": ""
488
488
  }, {
489
- default: W(() => [
490
- l("div", {
489
+ default: j(() => [
490
+ r("div", {
491
491
  class: "image-preview-container",
492
492
  onClick: o[1] || (o[1] = he((c) => m.value = !1, ["self"]))
493
493
  }, [
494
- l("img", {
494
+ r("img", {
495
495
  src: A.value,
496
496
  alt: $.value,
497
497
  class: "preview-image",
498
- style: be({
499
- transform: `translate(${V.value.x}px, ${V.value.y}px) scale(${k.value})`
498
+ style: Me({
499
+ transform: `translate(${O.value.x}px, ${O.value.y}px) scale(${k.value})`
500
500
  }),
501
501
  onWheel: he(se, ["prevent"]),
502
502
  onDblclick: ie,
503
- onMousedown: ae,
504
- onTouchstart: he(ne, ["prevent"]),
503
+ onMousedown: ne,
504
+ onTouchstart: he(ae, ["prevent"]),
505
505
  onClick: $e
506
506
  }, null, 44, It),
507
- l("div", Lt, [
508
- l("div", zt, [
509
- M(K, {
507
+ r("div", Lt, [
508
+ r("div", zt, [
509
+ b(K, {
510
510
  size: "small",
511
511
  onClick: fe,
512
512
  disabled: k.value <= 0.5
513
513
  }, {
514
- default: W(() => [
515
- M(U(Ne))
514
+ default: j(() => [
515
+ b(T(Ne))
516
516
  ]),
517
517
  _: 1
518
518
  }, 8, ["disabled"]),
519
- M(K, {
519
+ b(K, {
520
520
  size: "small",
521
521
  onClick: ie
522
522
  }, {
523
- default: W(() => [
524
- We(N(Math.round(k.value * 100)) + "% ", 1)
523
+ default: j(() => [
524
+ We(X(Math.round(k.value * 100)) + "% ", 1)
525
525
  ]),
526
526
  _: 1
527
527
  }),
528
- M(K, {
528
+ b(K, {
529
529
  size: "small",
530
530
  onClick: ve,
531
531
  disabled: k.value >= 10
532
532
  }, {
533
- default: W(() => [
534
- M(U(Ye))
533
+ default: j(() => [
534
+ b(T(Ye))
535
535
  ]),
536
536
  _: 1
537
537
  }, 8, ["disabled"])
538
538
  ]),
539
- M(K, {
539
+ b(K, {
540
540
  size: "small",
541
541
  onClick: o[0] || (o[0] = (c) => m.value = !1),
542
542
  type: "danger"
543
543
  }, {
544
- default: W(() => [
545
- M(U(Ue))
544
+ default: j(() => [
545
+ b(T(Ue))
546
546
  ]),
547
547
  _: 1
548
548
  })
549
549
  ]),
550
- D.value ? (d(), p("div", Et, "双击重置 · 轻触关闭")) : B("", !0)
550
+ P.value ? (d(), h("div", Et, "双击重置 · 轻触关闭")) : H("", !0)
551
551
  ])
552
552
  ]),
553
553
  _: 1
554
554
  }, 8, ["visible", "width", "fullscreen"]),
555
- M(Pe, {
555
+ b(Pe, {
556
556
  visible: x.value,
557
557
  "onUpdate:visible": o[5] || (o[5] = (c) => x.value = c),
558
- width: D.value ? "95vw" : "90vw",
559
- fullscreen: D.value,
558
+ width: P.value ? "95vw" : "90vw",
559
+ fullscreen: P.value,
560
560
  class: "mermaid-preview-dialog",
561
561
  "close-on-click-modal": !1,
562
562
  "append-to-body": ""
563
563
  }, {
564
- default: W(() => [
565
- l("div", {
564
+ default: j(() => [
565
+ r("div", {
566
566
  class: "mermaid-preview-container",
567
567
  onClick: o[4] || (o[4] = he((c) => x.value = !1, ["self"]))
568
568
  }, [
569
- l("div", {
569
+ r("div", {
570
570
  class: "mermaid-preview-content",
571
- innerHTML: H.value,
572
- style: be({
573
- transform: `translate(${O.value.x}px, ${O.value.y}px) scale(${S.value})`
571
+ innerHTML: D.value,
572
+ style: Me({
573
+ transform: `translate(${W.value.x}px, ${W.value.y}px) scale(${S.value})`
574
574
  }),
575
575
  onWheel: he(ge, ["prevent"]),
576
576
  onDblclick: ce,
577
577
  onMousedown: Te,
578
578
  onTouchstart: he(ue, ["prevent"])
579
579
  }, null, 44, Ut),
580
- l("div", Tt, [
581
- l("div", Bt, [
582
- M(K, {
580
+ r("div", Tt, [
581
+ r("div", Bt, [
582
+ b(K, {
583
583
  size: "small",
584
584
  onClick: xe,
585
585
  disabled: S.value <= 0.5
586
586
  }, {
587
- default: W(() => [
588
- M(U(Ne))
587
+ default: j(() => [
588
+ b(T(Ne))
589
589
  ]),
590
590
  _: 1
591
591
  }, 8, ["disabled"]),
592
- M(K, {
592
+ b(K, {
593
593
  size: "small",
594
594
  onClick: ce
595
595
  }, {
596
- default: W(() => [
597
- We(N(Math.round(S.value * 100)) + "% ", 1)
596
+ default: j(() => [
597
+ We(X(Math.round(S.value * 100)) + "% ", 1)
598
598
  ]),
599
599
  _: 1
600
600
  }),
601
- M(K, {
601
+ b(K, {
602
602
  size: "small",
603
603
  onClick: Z,
604
604
  disabled: S.value >= 10
605
605
  }, {
606
- default: W(() => [
607
- M(U(Ye))
606
+ default: j(() => [
607
+ b(T(Ye))
608
608
  ]),
609
609
  _: 1
610
610
  }, 8, ["disabled"])
611
611
  ]),
612
- M(K, {
612
+ b(K, {
613
613
  size: "small",
614
614
  onClick: o[3] || (o[3] = (c) => x.value = !1),
615
615
  type: "danger"
616
616
  }, {
617
- default: W(() => [
618
- M(U(Ue))
617
+ default: j(() => [
618
+ b(T(Ue))
619
619
  ]),
620
620
  _: 1
621
621
  })
622
622
  ]),
623
- D.value ? (d(), p("div", Ht, "双击重置 · 轻触关闭")) : B("", !0)
623
+ P.value ? (d(), h("div", Ht, "双击重置 · 轻触关闭")) : H("", !0)
624
624
  ])
625
625
  ]),
626
626
  _: 1
627
627
  }, 8, ["visible", "width", "fullscreen"])
628
628
  ], 512));
629
629
  }
630
- }), Je = /* @__PURE__ */ Ce(Dt, [["__scopeId", "data-v-c6385dde"]]), Pt = {
630
+ }), Je = /* @__PURE__ */ _e(Dt, [["__scopeId", "data-v-c6385dde"]]), Pt = {
631
631
  key: 0,
632
632
  class: "text-content"
633
633
  }, Rt = {
@@ -642,10 +642,10 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
642
642
  }, jt = ["onClick"], Yt = { class: "file-icon-wrapper-small" }, Nt = ["title"], Xt = { class: "file-name" }, qt = { class: "file-type" }, Zt = { class: "file-actions" }, Kt = {
643
643
  key: 3,
644
644
  class: "audio-content"
645
- }, Jt = { class: "audio-player" }, Gt = { class: "audio-info" }, Qt = { class: "audio-progress" }, es = { class: "progress-bar" }, ts = { class: "audio-time" }, ss = { class: "image-preview-container" }, as = ["src"], ns = {
645
+ }, Jt = { class: "audio-player" }, Gt = { class: "audio-info" }, Qt = { class: "audio-progress" }, es = { class: "progress-bar" }, ts = { class: "audio-time" }, ss = { class: "image-preview-container" }, ns = ["src"], as = {
646
646
  key: 0,
647
647
  class: "image-nav"
648
- }, os = { class: "image-counter" }, ls = /* @__PURE__ */ Me({
648
+ }, os = { class: "image-counter" }, rs = /* @__PURE__ */ be({
649
649
  __name: "MultimodalMessage",
650
650
  props: {
651
651
  message: {},
@@ -654,80 +654,89 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
654
654
  apiBaseUrl: { default: "" },
655
655
  onDownload: {}
656
656
  },
657
- setup(r) {
658
- const y = r, b = Y(() => {
657
+ setup(i) {
658
+ const y = i, M = N(() => {
659
659
  try {
660
660
  return y.message.metadata ? JSON.parse(y.message.metadata) : {};
661
661
  } catch {
662
662
  return {};
663
663
  }
664
- }), w = Y(
665
- () => b.value.imageUrls || []
666
- ), m = Y(() => b.value.audioUrl), A = C(/* @__PURE__ */ new Set()), $ = Y(
667
- () => b.value.fileUrls || []
668
- ), x = Y(() => $.value), H = Y(() => y.message.attachments && y.message.attachments.length > 0 ? y.message.attachments : b.value.attachments && Array.isArray(b.value.attachments) ? b.value.attachments : []), D = Y(() => {
669
- const i = [];
670
- return H.value && H.value.length > 0 ? H.value.forEach((f) => {
664
+ }), w = N(
665
+ () => M.value.imageUrls || []
666
+ ), m = N(() => M.value.audioUrl), A = _(/* @__PURE__ */ new Set()), $ = N(
667
+ () => M.value.fileUrls || []
668
+ ), x = N(() => $.value), D = N(() => y.message.attachments && y.message.attachments.length > 0 ? y.message.attachments : M.value.attachments && Array.isArray(M.value.attachments) ? M.value.attachments : []), P = N(() => {
669
+ const l = [];
670
+ return D.value && D.value.length > 0 ? D.value.forEach((v) => {
671
671
  var I, F;
672
- ((I = f.type) == null ? void 0 : I.startsWith("image/")) || ((F = f.name) == null ? void 0 : F.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$/i)) || i.push({
673
- url: f.url || f.download_url || f.file_url || "",
674
- name: f.original_name || f.name || "Unknown File",
675
- type: ee(f.original_name || f.name || "Unknown File")
672
+ ((I = v.type) == null ? void 0 : I.startsWith("image/")) || ((F = v.name) == null ? void 0 : F.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$/i)) || l.push({
673
+ url: v.url || v.download_url || v.file_url || "",
674
+ name: v.original_name || v.name || "Unknown File",
675
+ type: ee(v.original_name || v.name || "Unknown File")
676
676
  });
677
- }) : x.value && x.value.length > 0 && x.value.forEach((f) => {
678
- i.push({
679
- url: f,
680
- name: X(f),
681
- type: ee(f)
677
+ }) : x.value && x.value.length > 0 && x.value.forEach((v) => {
678
+ l.push({
679
+ url: v,
680
+ name: q(v),
681
+ type: ee(v)
682
682
  });
683
- }), i;
684
- }), k = C(!1), V = C(""), L = C(0), R = C(!1), S = C(!1), O = C(0), _ = C(0), we = Y(() => _.value > 0 ? O.value / _.value * 100 : 0);
683
+ }), l;
684
+ }), k = _(!1), O = _(""), L = _(0), V = _(!1), S = _(!1), W = _(0), C = _(0), we = N(() => C.value > 0 ? W.value / C.value * 100 : 0);
685
685
  let z = null;
686
- const re = (i, f) => {
687
- V.value = i, L.value = f, k.value = !0;
686
+ const le = (l, v) => {
687
+ O.value = l, L.value = v, k.value = !0;
688
688
  }, me = () => {
689
- L.value > 0 && (L.value--, V.value = w.value[L.value]);
689
+ L.value > 0 && (L.value--, O.value = w.value[L.value]);
690
690
  }, ke = () => {
691
- L.value < w.value.length - 1 && (L.value++, V.value = w.value[L.value]);
692
- }, _e = (i, f) => {
693
- console.error("Image load failed:", f);
694
- const h = i.target;
695
- h.style.display = "none";
696
- }, X = (i) => {
697
- if (!i) return "Unknown File";
698
- if (!i.includes("/"))
699
- return decodeURIComponent(i) || "Unknown File";
691
+ L.value < w.value.length - 1 && (L.value++, O.value = w.value[L.value]);
692
+ }, Ce = (l, v) => {
693
+ console.error("Image load failed:", v);
694
+ const g = l.target;
695
+ g.style.display = "none";
696
+ }, q = (l) => {
697
+ if (!l) return "Unknown File";
698
+ if (!l.includes("/"))
699
+ return decodeURIComponent(l) || "Unknown File";
700
700
  try {
701
- const f = i.lastIndexOf("/"), h = f >= 0 ? i.substring(f + 1) : i;
702
- return decodeURIComponent(h) || "Unknown File";
701
+ const v = l.lastIndexOf("/"), g = v >= 0 ? l.substring(v + 1) : l;
702
+ return decodeURIComponent(g) || "Unknown File";
703
703
  } catch {
704
704
  return "Unknown File";
705
705
  }
706
- }, ee = (i) => {
706
+ }, ee = (l) => {
707
707
  var I;
708
- return ((I = X(i).split(".").pop()) == null ? void 0 : I.toUpperCase()) || "FILE";
709
- }, q = (i, f) => {
710
- te(i, f);
711
- }, T = (i) => !i || i.startsWith("http://") || i.startsWith("https://") || i.startsWith("blob:") ? i : (y.apiBaseUrl ? y.apiBaseUrl.replace(/\/$/, "") : "") + (i.startsWith("/") ? i : "/" + i), te = async (i, f) => {
708
+ return ((I = q(l).split(".").pop()) == null ? void 0 : I.toUpperCase()) || "FILE";
709
+ }, E = (l, v) => {
710
+ te(l, v);
711
+ }, B = (l) => {
712
+ if (!l || l.startsWith("http://") || l.startsWith("https://") || l.startsWith("blob:"))
713
+ return l;
714
+ const v = y.apiBaseUrl ? y.apiBaseUrl.replace(/\/$/, "") : "";
715
+ if (v) {
716
+ const g = new URL(v, window.location.origin).pathname.replace(/\/$/, "");
717
+ return g && (l === g || l.startsWith(`${g}/`)) ? `${window.location.origin}${l.startsWith("/") ? l : `/${l}`}` : v + (l.startsWith("/") ? l : "/" + l);
718
+ }
719
+ return l.startsWith("/") ? l : `/${l}`;
720
+ }, te = async (l, v) => {
712
721
  try {
713
- const h = T(i);
714
- if (console.log("正在下载文件...", h), y.onDownload && (A.value = /* @__PURE__ */ new Set([...A.value, i]), await y.onDownload(i, f) !== !1)) {
722
+ const g = B(l);
723
+ if (console.log("正在下载文件...", g), y.onDownload && (A.value = /* @__PURE__ */ new Set([...A.value, l]), await y.onDownload(l, v) !== !1)) {
715
724
  const Z = new Set(A.value);
716
- Z.delete(i), A.value = Z;
725
+ Z.delete(l), A.value = Z;
717
726
  return;
718
727
  }
719
- A.value = /* @__PURE__ */ new Set([...A.value, i]);
728
+ A.value = /* @__PURE__ */ new Set([...A.value, l]);
720
729
  const I = localStorage.getItem("token"), F = {};
721
730
  if (I && (F.Authorization = I.startsWith("Bearer ") ? I : `Bearer ${I}`), typeof window < "u" && typeof window.plus < "u") {
722
- const ne = window.plus, Z = ne.downloader.createDownload(
723
- h,
731
+ const ae = window.plus, Z = ae.downloader.createDownload(
732
+ g,
724
733
  {
725
734
  method: "GET",
726
- filename: "_downloads/" + (f || X(i))
735
+ filename: "_downloads/" + (v || q(l))
727
736
  },
728
737
  (xe, ce) => {
729
738
  const ge = new Set(A.value);
730
- ge.delete(i), A.value = ge, ce === 200 || ce === 206 ? ne.runtime.openFile(xe.filename) : console.error("App 环境原生下载失败, status:", ce);
739
+ ge.delete(l), A.value = ge, ce === 200 || ce === 206 ? ae.runtime.openFile(xe.filename) : console.error("App 环境原生下载失败, status:", ce);
731
740
  }
732
741
  );
733
742
  F.Authorization && Z.setRequestHeader(
@@ -736,204 +745,204 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
736
745
  ), Z.start();
737
746
  return;
738
747
  }
739
- const ve = await fetch(h, { headers: F });
748
+ const ve = await fetch(g, { headers: F });
740
749
  if (!ve.ok)
741
750
  throw new Error(`下载失败: ${ve.status}`);
742
- let fe = f;
751
+ let fe = v;
743
752
  const ie = ve.headers.get("Content-Disposition");
744
753
  if (ie) {
745
- const ne = ie.match(/filename\*=UTF-8''(.+)/i);
746
- if (ne)
747
- fe = decodeURIComponent(ne[1]);
754
+ const ae = ie.match(/filename\*=UTF-8''(.+)/i);
755
+ if (ae)
756
+ fe = decodeURIComponent(ae[1]);
748
757
  else {
749
758
  const Z = ie.match(/filename="?([^";\n]+)"?/i);
750
759
  Z && (fe = Z[1]);
751
760
  }
752
761
  }
753
- const $e = await ve.blob(), se = URL.createObjectURL($e), ae = document.createElement("a");
754
- ae.href = se, ae.download = fe || f || X(i), document.body.appendChild(ae), ae.click(), document.body.removeChild(ae), URL.revokeObjectURL(se);
755
- } catch (h) {
756
- console.error("下载文件失败:", h);
762
+ const $e = await ve.blob(), se = URL.createObjectURL($e), ne = document.createElement("a");
763
+ ne.href = se, ne.download = fe || v || q(l), document.body.appendChild(ne), ne.click(), document.body.removeChild(ne), URL.revokeObjectURL(se);
764
+ } catch (g) {
765
+ console.error("下载文件失败:", g);
757
766
  } finally {
758
- const h = new Set(A.value);
759
- h.delete(i), A.value = h;
767
+ const g = new Set(A.value);
768
+ g.delete(l), A.value = g;
760
769
  }
761
770
  }, Ae = async () => {
762
771
  if (m.value)
763
772
  try {
764
- z || (z = new Audio(), z.src = T(m.value), z.addEventListener("loadedmetadata", () => {
765
- _.value = (z == null ? void 0 : z.duration) || 0;
773
+ z || (z = new Audio(), z.src = B(m.value), z.addEventListener("loadedmetadata", () => {
774
+ C.value = (z == null ? void 0 : z.duration) || 0;
766
775
  }), z.addEventListener("timeupdate", () => {
767
- O.value = (z == null ? void 0 : z.currentTime) || 0;
776
+ W.value = (z == null ? void 0 : z.currentTime) || 0;
768
777
  }), z.addEventListener("ended", () => {
769
- R.value = !1, O.value = 0;
770
- }), z.addEventListener("error", (i) => {
771
- console.error("Audio playback error:", i), S.value = !1, R.value = !1;
772
- })), R.value ? (z.pause(), R.value = !1) : (S.value = !0, await z.play(), R.value = !0, S.value = !1);
773
- } catch (i) {
774
- console.error("Audio playback failed:", i), S.value = !1, R.value = !1;
778
+ V.value = !1, W.value = 0;
779
+ }), z.addEventListener("error", (l) => {
780
+ console.error("Audio playback error:", l), S.value = !1, V.value = !1;
781
+ })), V.value ? (z.pause(), V.value = !1) : (S.value = !0, await z.play(), V.value = !0, S.value = !1);
782
+ } catch (l) {
783
+ console.error("Audio playback failed:", l), S.value = !1, V.value = !1;
775
784
  }
776
- }, G = (i) => {
777
- const f = Math.floor(i / 60), h = Math.floor(i % 60);
778
- return `${f}:${h.toString().padStart(2, "0")}`;
779
- }, Q = (i) => {
780
- k.value && (i.key === "ArrowLeft" ? me() : i.key === "ArrowRight" ? ke() : i.key === "Escape" && (k.value = !1));
785
+ }, G = (l) => {
786
+ const v = Math.floor(l / 60), g = Math.floor(l % 60);
787
+ return `${v}:${g.toString().padStart(2, "0")}`;
788
+ }, Q = (l) => {
789
+ k.value && (l.key === "ArrowLeft" ? me() : l.key === "ArrowRight" ? ke() : l.key === "Escape" && (k.value = !1));
781
790
  };
782
- return ye(k, (i) => {
783
- i ? document.addEventListener("keydown", Q) : document.removeEventListener("keydown", Q);
791
+ return ye(k, (l) => {
792
+ l ? document.addEventListener("keydown", Q) : document.removeEventListener("keydown", Q);
784
793
  }), He(() => {
785
794
  z && (z.pause(), z = null), document.removeEventListener("keydown", Q);
786
- }), (i, f) => (d(), p("div", {
787
- class: le(["multimodal-message", { "is-user": r.isUser, "is-assistant": !r.isUser }])
795
+ }), (l, v) => (d(), h("div", {
796
+ class: re(["multimodal-message", { "is-user": i.isUser, "is-assistant": !i.isUser }])
788
797
  }, [
789
- r.message.content ? (d(), p("div", Pt, [
790
- M(Je, {
791
- content: r.message.content,
792
- "is-streaming": r.isStreaming
798
+ i.message.content ? (d(), h("div", Pt, [
799
+ b(Je, {
800
+ content: i.message.content,
801
+ "is-streaming": i.isStreaming
793
802
  }, null, 8, ["content", "is-streaming"])
794
- ])) : B("", !0),
795
- w.value && w.value.length > 0 ? (d(), p("div", Rt, [
796
- l("div", {
797
- class: le(["images-grid", `grid-${Math.min(w.value.length, 4)}`])
803
+ ])) : H("", !0),
804
+ w.value && w.value.length > 0 ? (d(), h("div", Rt, [
805
+ r("div", {
806
+ class: re(["images-grid", `grid-${Math.min(w.value.length, 4)}`])
798
807
  }, [
799
- (d(!0), p(ze, null, Ee(w.value.slice(0, 4), (h, I) => (d(), p("div", {
808
+ (d(!0), h(ze, null, Ee(w.value.slice(0, 4), (g, I) => (d(), h("div", {
800
809
  key: I,
801
810
  class: "image-item",
802
- onClick: (F) => re(h, I)
811
+ onClick: (F) => le(g, I)
803
812
  }, [
804
- l("img", {
805
- src: h,
813
+ r("img", {
814
+ src: g,
806
815
  alt: `图片 ${I + 1}`,
807
- onError: (F) => _e(F, h),
816
+ onError: (F) => Ce(F, g),
808
817
  loading: "lazy"
809
818
  }, null, 40, Ft),
810
- I === 3 && w.value.length > 4 ? (d(), p("div", Ot, " +" + N(w.value.length - 4), 1)) : B("", !0)
819
+ I === 3 && w.value.length > 4 ? (d(), h("div", Ot, " +" + X(w.value.length - 4), 1)) : H("", !0)
811
820
  ], 8, Vt))), 128))
812
821
  ], 2)
813
- ])) : B("", !0),
814
- D.value && D.value.length > 0 ? (d(), p("div", Wt, [
815
- (d(!0), p(ze, null, Ee(D.value, (h, I) => (d(), p("div", {
822
+ ])) : H("", !0),
823
+ P.value && P.value.length > 0 ? (d(), h("div", Wt, [
824
+ (d(!0), h(ze, null, Ee(P.value, (g, I) => (d(), h("div", {
816
825
  key: I,
817
826
  class: "file-item",
818
- onClick: (F) => q(h.url, h.name)
827
+ onClick: (F) => E(g.url, g.name)
819
828
  }, [
820
- l("div", Yt, [
821
- M(U(Mt), { class: "file-icon" })
829
+ r("div", Yt, [
830
+ b(T(bt), { class: "file-icon" })
822
831
  ]),
823
- l("div", {
832
+ r("div", {
824
833
  class: "file-info",
825
- title: h.name
834
+ title: g.name
826
835
  }, [
827
- l("span", Xt, N(h.name), 1),
828
- l("span", qt, N(h.type), 1)
836
+ r("span", Xt, X(g.name), 1),
837
+ r("span", qt, X(g.type), 1)
829
838
  ], 8, Nt),
830
- l("div", Zt, [
831
- M(K, {
839
+ r("div", Zt, [
840
+ b(K, {
832
841
  size: "small",
833
842
  type: "text",
834
- disabled: A.value.has(h.url),
835
- onClick: he((F) => te(h.url, h.name), ["stop"])
843
+ disabled: A.value.has(g.url),
844
+ onClick: he((F) => te(g.url, g.name), ["stop"])
836
845
  }, {
837
- default: W(() => [
838
- M(U(Xe), {
839
- class: le({ "icon-spin": A.value.has(h.url) })
846
+ default: j(() => [
847
+ b(T(Xe), {
848
+ class: re({ "icon-spin": A.value.has(g.url) })
840
849
  }, null, 8, ["class"])
841
850
  ]),
842
851
  _: 2
843
852
  }, 1032, ["disabled", "onClick"])
844
853
  ])
845
854
  ], 8, jt))), 128))
846
- ])) : B("", !0),
847
- m.value ? (d(), p("div", Kt, [
848
- l("div", Jt, [
849
- M(K, {
855
+ ])) : H("", !0),
856
+ m.value ? (d(), h("div", Kt, [
857
+ r("div", Jt, [
858
+ b(K, {
850
859
  onClick: Ae,
851
860
  loading: S.value,
852
861
  circle: "",
853
862
  size: "small",
854
863
  class: "play-btn"
855
864
  }, {
856
- default: W(() => [
857
- (d(), de(Ke(R.value ? U(Ct) : U(St))))
865
+ default: j(() => [
866
+ (d(), de(Ke(V.value ? T(_t) : T(St))))
858
867
  ]),
859
868
  _: 1
860
869
  }, 8, ["loading"]),
861
- l("div", Gt, [
862
- l("div", Qt, [
863
- l("div", es, [
864
- l("div", {
870
+ r("div", Gt, [
871
+ r("div", Qt, [
872
+ r("div", es, [
873
+ r("div", {
865
874
  class: "progress-fill",
866
- style: be({ width: we.value + "%" })
875
+ style: Me({ width: we.value + "%" })
867
876
  }, null, 4)
868
877
  ])
869
878
  ]),
870
- l("div", ts, [
871
- l("span", null, N(G(O.value)), 1),
872
- f[4] || (f[4] = l("span", null, "/", -1)),
873
- l("span", null, N(G(_.value)), 1)
879
+ r("div", ts, [
880
+ r("span", null, X(G(W.value)), 1),
881
+ v[4] || (v[4] = r("span", null, "/", -1)),
882
+ r("span", null, X(G(C.value)), 1)
874
883
  ])
875
884
  ]),
876
- M(K, {
877
- onClick: f[0] || (f[0] = (h) => te(m.value)),
885
+ b(K, {
886
+ onClick: v[0] || (v[0] = (g) => te(m.value)),
878
887
  size: "small",
879
888
  type: "text",
880
889
  class: "download-btn"
881
890
  }, {
882
- default: W(() => [
883
- M(U(Xe))
891
+ default: j(() => [
892
+ b(T(Xe))
884
893
  ]),
885
894
  _: 1
886
895
  })
887
896
  ])
888
- ])) : B("", !0),
889
- M(Pe, {
897
+ ])) : H("", !0),
898
+ b(Pe, {
890
899
  visible: k.value,
891
- "onUpdate:visible": f[3] || (f[3] = (h) => k.value = h),
900
+ "onUpdate:visible": v[3] || (v[3] = (g) => k.value = g),
892
901
  width: "90%",
893
902
  "show-close": !1,
894
903
  "append-to-body": "",
895
904
  class: "image-preview-dialog-wrapper"
896
905
  }, {
897
- default: W(() => [
898
- l("div", ss, [
899
- l("img", {
900
- src: V.value,
906
+ default: j(() => [
907
+ r("div", ss, [
908
+ r("img", {
909
+ src: O.value,
901
910
  alt: "预览图片",
902
911
  class: "preview-image",
903
- onClick: f[1] || (f[1] = (h) => k.value = !1)
904
- }, null, 8, as),
905
- w.value && w.value.length > 1 ? (d(), p("div", ns, [
906
- M(K, {
912
+ onClick: v[1] || (v[1] = (g) => k.value = !1)
913
+ }, null, 8, ns),
914
+ w.value && w.value.length > 1 ? (d(), h("div", as, [
915
+ b(K, {
907
916
  onClick: me,
908
917
  disabled: L.value === 0,
909
918
  circle: "",
910
919
  class: "nav-btn"
911
920
  }, {
912
- default: W(() => [
913
- M(U(_t))
921
+ default: j(() => [
922
+ b(T(Ct))
914
923
  ]),
915
924
  _: 1
916
925
  }, 8, ["disabled"]),
917
- l("span", os, N(L.value + 1) + " / " + N(w.value.length), 1),
918
- M(K, {
926
+ r("span", os, X(L.value + 1) + " / " + X(w.value.length), 1),
927
+ b(K, {
919
928
  onClick: ke,
920
929
  disabled: L.value === w.value.length - 1,
921
930
  circle: "",
922
931
  class: "nav-btn"
923
932
  }, {
924
- default: W(() => [
925
- M(U(At))
933
+ default: j(() => [
934
+ b(T(At))
926
935
  ]),
927
936
  _: 1
928
937
  }, 8, ["disabled"])
929
- ])) : B("", !0),
930
- M(K, {
931
- onClick: f[2] || (f[2] = (h) => k.value = !1),
938
+ ])) : H("", !0),
939
+ b(K, {
940
+ onClick: v[2] || (v[2] = (g) => k.value = !1),
932
941
  class: "close-btn",
933
942
  circle: ""
934
943
  }, {
935
- default: W(() => [
936
- M(U(Ue))
944
+ default: j(() => [
945
+ b(T(Ue))
937
946
  ]),
938
947
  _: 1
939
948
  })
@@ -943,7 +952,7 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
943
952
  }, 8, ["visible"])
944
953
  ], 2));
945
954
  }
946
- }), Re = /* @__PURE__ */ Ce(ls, [["__scopeId", "data-v-96cd8b34"]]), rs = ["aria-expanded"], is = { class: "steps-indicator" }, cs = {
955
+ }), Re = /* @__PURE__ */ _e(rs, [["__scopeId", "data-v-b3bc1307"]]), ls = ["aria-expanded"], is = { class: "steps-indicator" }, cs = {
947
956
  key: 0,
948
957
  class: "icon-running"
949
958
  }, us = {
@@ -958,93 +967,93 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
958
967
  }, ys = { class: "steps-list" }, ws = {
959
968
  class: "step-rail",
960
969
  "aria-hidden": "true"
961
- }, ks = { class: "step-icon" }, bs = {
970
+ }, ks = { class: "step-icon" }, Ms = {
962
971
  key: 3,
963
972
  class: "icon-dot"
964
- }, Ms = { class: "step-name" }, Ss = { class: "step-status" }, Cs = /* @__PURE__ */ Me({
973
+ }, bs = { class: "step-name" }, Ss = { class: "step-status" }, _s = /* @__PURE__ */ be({
965
974
  __name: "AgentSteps",
966
975
  props: {
967
976
  steps: {}
968
977
  },
969
978
  emits: ["resize"],
970
- setup(r, { emit: y }) {
971
- const b = r, w = C(!0), m = y, A = () => {
979
+ setup(i, { emit: y }) {
980
+ const M = i, w = _(!0), m = y, A = () => {
972
981
  w.value = !w.value, oe(() => {
973
982
  requestAnimationFrame(() => m("resize"));
974
983
  });
975
- }, $ = Y(
976
- () => b.steps.some((S) => S.status === "running")
977
- ), x = Y(() => b.steps.some((S) => S.status === "error")), H = Y(
978
- () => b.steps.filter((S) => S.status === "completed").length
979
- ), D = Y(() => b.steps.length === 0 ? 0 : Math.round(H.value / b.steps.length * 100)), k = Y(() => ({
980
- width: `${D.value}%`
981
- })), V = Y(() => $.value ? "智能处理流程" : x.value ? "需要关注" : "全部步骤已同步"), L = Y(() => {
982
- const S = b.steps.find((O) => O.status === "running");
983
- return S ? `正在处理 ${S.displayName}` : x.value ? "处理遇到问题" : H.value === b.steps.length ? "处理完成" : `已完成 ${H.value}/${b.steps.length} 个步骤`;
984
- }), R = (S) => S === "running" ? "进行中" : S === "error" ? "异常" : "完成";
985
- return (S, O) => r.steps.length > 0 ? (d(), p("div", {
984
+ }, $ = N(
985
+ () => M.steps.some((S) => S.status === "running")
986
+ ), x = N(() => M.steps.some((S) => S.status === "error")), D = N(
987
+ () => M.steps.filter((S) => S.status === "completed").length
988
+ ), P = N(() => M.steps.length === 0 ? 0 : Math.round(D.value / M.steps.length * 100)), k = N(() => ({
989
+ width: `${P.value}%`
990
+ })), O = N(() => $.value ? "智能处理流程" : x.value ? "需要关注" : "全部步骤已同步"), L = N(() => {
991
+ const S = M.steps.find((W) => W.status === "running");
992
+ return S ? `正在处理 ${S.displayName}` : x.value ? "处理遇到问题" : D.value === M.steps.length ? "处理完成" : `已完成 ${D.value}/${M.steps.length} 个步骤`;
993
+ }), V = (S) => S === "running" ? "进行中" : S === "error" ? "异常" : "完成";
994
+ return (S, W) => i.steps.length > 0 ? (d(), h("div", {
986
995
  key: 0,
987
- class: le(["agent-steps", {
996
+ class: re(["agent-steps", {
988
997
  "is-running": $.value,
989
998
  "is-error": x.value,
990
999
  "is-collapsed": !w.value
991
1000
  }])
992
1001
  }, [
993
- l("button", {
1002
+ r("button", {
994
1003
  type: "button",
995
1004
  class: "steps-header",
996
1005
  "aria-expanded": w.value,
997
1006
  onClick: A
998
1007
  }, [
999
- l("span", is, [
1000
- $.value ? (d(), p("span", cs, [
1001
- M(U(qe))
1002
- ])) : x.value ? (d(), p("span", us, [
1003
- M(U(Ue))
1004
- ])) : (d(), p("span", ds, [
1005
- M(U(Ze))
1008
+ r("span", is, [
1009
+ $.value ? (d(), h("span", cs, [
1010
+ b(T(qe))
1011
+ ])) : x.value ? (d(), h("span", us, [
1012
+ b(T(Ue))
1013
+ ])) : (d(), h("span", ds, [
1014
+ b(T(Ze))
1006
1015
  ]))
1007
1016
  ]),
1008
- l("span", ms, [
1009
- l("span", vs, N(L.value), 1),
1010
- l("span", fs, N(V.value), 1)
1017
+ r("span", ms, [
1018
+ r("span", vs, X(L.value), 1),
1019
+ r("span", fs, X(O.value), 1)
1011
1020
  ]),
1012
- l("span", gs, N(H.value) + "/" + N(r.steps.length), 1),
1013
- l("span", ps, [
1014
- (d(), de(Ke(w.value ? U($t) : U(xt))))
1021
+ r("span", gs, X(D.value) + "/" + X(i.steps.length), 1),
1022
+ r("span", ps, [
1023
+ (d(), de(Ke(w.value ? T($t) : T(xt))))
1015
1024
  ])
1016
- ], 8, rs),
1017
- l("div", hs, [
1018
- l("span", {
1019
- style: be(k.value)
1025
+ ], 8, ls),
1026
+ r("div", hs, [
1027
+ r("span", {
1028
+ style: Me(k.value)
1020
1029
  }, null, 4)
1021
1030
  ]),
1022
- nt(l("div", ys, [
1023
- (d(!0), p(ze, null, Ee(r.steps, (_) => (d(), p("div", {
1024
- key: _.name,
1025
- class: le(["step-item", {
1026
- "is-running": _.status === "running",
1027
- "is-completed": _.status === "completed",
1028
- "is-error": _.status === "error"
1031
+ at(r("div", ys, [
1032
+ (d(!0), h(ze, null, Ee(i.steps, (C) => (d(), h("div", {
1033
+ key: C.name,
1034
+ class: re(["step-item", {
1035
+ "is-running": C.status === "running",
1036
+ "is-completed": C.status === "completed",
1037
+ "is-error": C.status === "error"
1029
1038
  }])
1030
1039
  }, [
1031
- l("span", ws, [
1032
- l("span", ks, [
1033
- _.status === "running" ? (d(), de(U(qe), {
1040
+ r("span", ws, [
1041
+ r("span", ks, [
1042
+ C.status === "running" ? (d(), de(T(qe), {
1034
1043
  key: 0,
1035
1044
  class: "icon-spin"
1036
- })) : _.status === "completed" ? (d(), de(U(Ze), { key: 1 })) : _.status === "error" ? (d(), de(U(Ue), { key: 2 })) : (d(), p("span", bs))
1045
+ })) : C.status === "completed" ? (d(), de(T(Ze), { key: 1 })) : C.status === "error" ? (d(), de(T(Ue), { key: 2 })) : (d(), h("span", Ms))
1037
1046
  ])
1038
1047
  ]),
1039
- l("span", Ms, N(_.displayName), 1),
1040
- l("span", Ss, N(R(_.status)), 1)
1048
+ r("span", bs, X(C.displayName), 1),
1049
+ r("span", Ss, X(V(C.status)), 1)
1041
1050
  ], 2))), 128))
1042
1051
  ], 512), [
1043
1052
  [ot, w.value]
1044
1053
  ])
1045
- ], 2)) : B("", !0);
1054
+ ], 2)) : H("", !0);
1046
1055
  }
1047
- }), Ge = /* @__PURE__ */ Ce(Cs, [["__scopeId", "data-v-5030f19a"]]), _s = { class: "chat-message-list-root" }, As = {
1056
+ }), Ge = /* @__PURE__ */ _e(_s, [["__scopeId", "data-v-5030f19a"]]), Cs = { class: "chat-message-list-root" }, As = {
1048
1057
  key: 0,
1049
1058
  class: "bg-grid"
1050
1059
  }, $s = {
@@ -1079,7 +1088,7 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1079
1088
  key: 0,
1080
1089
  class: "loading-ring",
1081
1090
  viewBox: "0 0 36 36"
1082
- }, js = /* @__PURE__ */ Me({
1091
+ }, js = /* @__PURE__ */ be({
1083
1092
  __name: "ChatMessageList",
1084
1093
  props: {
1085
1094
  messages: { default: () => [] },
@@ -1109,8 +1118,8 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1109
1118
  "a2ui-action",
1110
1119
  "a2ui-error"
1111
1120
  ],
1112
- setup(r, { expose: y, emit: b }) {
1113
- const w = /* @__PURE__ */ new WeakMap(), m = r, A = b, $ = C(null), x = C(!1), H = C(!0), D = C({}), k = C({});
1121
+ setup(i, { expose: y, emit: M }) {
1122
+ const w = /* @__PURE__ */ new WeakMap(), m = i, A = M, $ = _(null), x = _(!1), D = _(!0), P = _({}), k = _({});
1114
1123
  (() => {
1115
1124
  var s;
1116
1125
  if (!m.autoProvideA2UI) return;
@@ -1127,46 +1136,46 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1127
1136
  theme: ft
1128
1137
  }), w.set(e, t));
1129
1138
  })();
1130
- const L = ct(), R = () => {
1139
+ const L = ct(), V = () => {
1131
1140
  if (!$.value) return !0;
1132
1141
  const { scrollTop: e, scrollHeight: t, clientHeight: s } = $.value;
1133
1142
  return t - e - s < 50;
1134
1143
  }, S = () => {
1135
- H.value = R();
1136
- }, O = (e) => {
1137
- var s, n;
1144
+ D.value = V();
1145
+ }, W = (e) => {
1146
+ var s, a;
1138
1147
  return !e || typeof e != "object" || e.version !== "v0.9" || [
1139
1148
  e.createSurface,
1140
1149
  e.updateComponents,
1141
1150
  e.updateDataModel,
1142
1151
  e.deleteSurface
1143
- ].filter(Boolean).length !== 1 ? !1 : e.createSurface ? we(e.createSurface) : e.updateComponents ? _e(e.updateComponents) : e.updateDataModel ? typeof ((s = _(e.updateDataModel)) == null ? void 0 : s.surfaceId) == "string" : e.deleteSurface ? typeof ((n = _(e.deleteSurface)) == null ? void 0 : n.surfaceId) == "string" : !1;
1144
- }, _ = (e) => e && typeof e == "object" && !Array.isArray(e) ? e : null, we = (e) => {
1145
- const t = _(e);
1152
+ ].filter(Boolean).length !== 1 ? !1 : e.createSurface ? we(e.createSurface) : e.updateComponents ? Ce(e.updateComponents) : e.updateDataModel ? typeof ((s = C(e.updateDataModel)) == null ? void 0 : s.surfaceId) == "string" : e.deleteSurface ? typeof ((a = C(e.deleteSurface)) == null ? void 0 : a.surfaceId) == "string" : !1;
1153
+ }, C = (e) => e && typeof e == "object" && !Array.isArray(e) ? e : null, we = (e) => {
1154
+ const t = C(e);
1146
1155
  if (!t) return !1;
1147
1156
  const s = Object.keys(t);
1148
- return typeof t.surfaceId == "string" && typeof t.catalogId == "string" && s.every((n) => n === "surfaceId" || n === "catalogId");
1157
+ return typeof t.surfaceId == "string" && typeof t.catalogId == "string" && s.every((a) => a === "surfaceId" || a === "catalogId");
1149
1158
  }, z = (e) => Array.isArray(e) ? e.every((t) => {
1150
- const s = _(t);
1159
+ const s = C(t);
1151
1160
  return !!(s && typeof s.label == "string" && typeof s.value == "string");
1152
- }) : !1, re = (e) => Array.isArray(e) && e.every((t) => typeof t == "string"), me = (e) => Array.isArray(e) ? e.every((t) => {
1153
- const s = _(t);
1161
+ }) : !1, le = (e) => Array.isArray(e) && e.every((t) => typeof t == "string"), me = (e) => Array.isArray(e) ? e.every((t) => {
1162
+ const s = C(t);
1154
1163
  return !!(s && typeof s.label == "string" && typeof s.value == "string");
1155
1164
  }) : !1, ke = (e) => {
1156
- const t = _(e);
1157
- return !(!t || typeof t.id != "string" || typeof t.component != "string" || Object.prototype.hasOwnProperty.call(t, "props") || Object.prototype.hasOwnProperty.call(t, "componentType") || Object.prototype.hasOwnProperty.call(t, "component_type") || t.facts !== void 0 && !z(t.facts) || t.tags !== void 0 && !re(t.tags) || ["policyOptions", "audienceOptions", "detailOptions"].some(
1158
- (n) => t[n] !== void 0 && !me(t[n])
1165
+ const t = C(e);
1166
+ return !(!t || typeof t.id != "string" || typeof t.component != "string" || Object.prototype.hasOwnProperty.call(t, "props") || Object.prototype.hasOwnProperty.call(t, "componentType") || Object.prototype.hasOwnProperty.call(t, "component_type") || t.facts !== void 0 && !z(t.facts) || t.tags !== void 0 && !le(t.tags) || ["policyOptions", "audienceOptions", "detailOptions"].some(
1167
+ (a) => t[a] !== void 0 && !me(t[a])
1159
1168
  ));
1160
- }, _e = (e) => {
1161
- const t = _(e);
1169
+ }, Ce = (e) => {
1170
+ const t = C(e);
1162
1171
  return !t || typeof t.surfaceId != "string" || !Array.isArray(t.components) || t.components.length === 0 ? !1 : t.components.every(ke);
1163
- }, X = (e) => {
1172
+ }, q = (e) => {
1164
1173
  const t = e.trim();
1165
1174
  if (!t) return null;
1166
- const s = t.match(/^```(?:json|a2ui|agui|ag-ui)?\s*([\s\S]*?)\s*```$/i), n = s ? s[1].trim() : t;
1167
- if (!n.startsWith("{") && !n.startsWith("[")) return null;
1175
+ const s = t.match(/^```(?:json|a2ui|agui|ag-ui)?\s*([\s\S]*?)\s*```$/i), a = s ? s[1].trim() : t;
1176
+ if (!a.startsWith("{") && !a.startsWith("[")) return null;
1168
1177
  try {
1169
- return JSON.parse(n);
1178
+ return JSON.parse(a);
1170
1179
  } catch {
1171
1180
  return null;
1172
1181
  }
@@ -1174,53 +1183,53 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1174
1183
  if (typeof e != "string") return null;
1175
1184
  const t = e.trim().toLowerCase();
1176
1185
  return t === "text_only" || t === "text-only" || t === "text" ? "text_only" : t === "ui_only" || t === "ui-only" || t === "ui" ? "ui_only" : t === "text_and_ui" || t === "text-and-ui" || t === "text+ui" || t === "both" ? "text_and_ui" : null;
1177
- }, q = (e) => {
1186
+ }, E = (e) => {
1178
1187
  const t = ee(e);
1179
1188
  if (t) return t;
1180
1189
  if (typeof e == "string") {
1181
- const n = X(e);
1182
- return n ? q(n) : null;
1190
+ const a = q(e);
1191
+ return a ? E(a) : null;
1183
1192
  }
1184
1193
  if (Array.isArray(e)) {
1185
- for (const n of e) {
1186
- const v = q(n);
1187
- if (v) return v;
1194
+ for (const a of e) {
1195
+ const f = E(a);
1196
+ if (f) return f;
1188
1197
  }
1189
1198
  return null;
1190
1199
  }
1191
- const s = _(e);
1192
- return s && (ee(s.displayMode) || ee(s.display_mode) || ee(s.a2uiDisplayMode) || ee(s.a2ui_display_mode) || q(s.metadata) || q(s.payload) || q(s.data)) || null;
1193
- }, T = (e) => {
1200
+ const s = C(e);
1201
+ return s && (ee(s.displayMode) || ee(s.display_mode) || ee(s.a2uiDisplayMode) || ee(s.a2ui_display_mode) || E(s.metadata) || E(s.payload) || E(s.data) || E(s.rawEvent) || E(s.raw_event) || E(s.state) || E(s.delta) || E(s.aguiEvents) || E(s.agui_events) || E(s.events)) || null;
1202
+ }, B = (e) => {
1194
1203
  if (!e) return [];
1195
1204
  if (typeof e == "string") {
1196
- const v = X(e);
1197
- return v ? T(v) : Array.from(
1205
+ const f = q(e);
1206
+ return f ? B(f) : Array.from(
1198
1207
  e.matchAll(/```(?:agui|ag-ui|a2ui|json)\s*\n([\s\S]*?)\n```/gi)
1199
- ).flatMap((E) => {
1200
- const P = X(E[1]);
1201
- return P ? T(P) : [];
1208
+ ).flatMap((U) => {
1209
+ const R = q(U[1]);
1210
+ return R ? B(R) : [];
1202
1211
  });
1203
1212
  }
1204
1213
  if (Array.isArray(e)) {
1205
- const v = e.map((E) => _(E)).filter((E) => !!E);
1206
- return v.length === e.length && v.every(O) ? v : te(e);
1214
+ const f = e.map((U) => C(U)).filter((U) => !!U);
1215
+ return f.length === e.length && f.every(W) ? f : te(e);
1207
1216
  }
1208
1217
  if (typeof e != "object") return [];
1209
1218
  const t = e;
1210
- if (O(t)) return [t];
1219
+ if (W(t)) return [t];
1211
1220
  const s = te(t);
1212
1221
  if (s.length > 0) return s;
1213
- const n = h(t);
1214
- return n.length > 0 ? n : [];
1222
+ const a = g(t);
1223
+ return a.length > 0 ? a : [];
1215
1224
  }, te = (e) => {
1216
1225
  if (!e) return [];
1217
1226
  if (typeof e == "string") {
1218
- const s = X(e);
1227
+ const s = q(e);
1219
1228
  return s ? te(s) : [];
1220
1229
  }
1221
1230
  if (typeof e != "object") return [];
1222
1231
  if (Array.isArray(e))
1223
- return e.map((n) => _(n)).filter((n) => !!n).flatMap(G);
1232
+ return e.map((a) => C(a)).filter((a) => !!a).flatMap(G);
1224
1233
  const t = e;
1225
1234
  return t.protocol === "ag-ui" ? te(t.aguiEvents || t.agui_events) : Ae(t) ? G(t) : [];
1226
1235
  }, Ae = (e) => {
@@ -1230,27 +1239,27 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1230
1239
  const t = String(e.type || "").toUpperCase();
1231
1240
  if (t === "STATE_SNAPSHOT") {
1232
1241
  const s = Q(e.state);
1233
- return s.length > 0 ? s : f(e);
1242
+ return s.length > 0 ? s : v(e);
1234
1243
  }
1235
1244
  if (t === "STATE_DELTA") {
1236
1245
  const s = Q(e.delta);
1237
- return s.length > 0 ? s : f(e);
1246
+ return s.length > 0 ? s : v(e);
1238
1247
  }
1239
1248
  return [];
1240
1249
  }, Q = (e) => {
1241
- const t = _(e);
1250
+ const t = C(e);
1242
1251
  return t ? [
1243
- ...T(t.a2uiMessages),
1244
- ...T(t.a2ui_messages),
1245
- ...T(t.a2ui)
1252
+ ...B(t.a2uiMessages),
1253
+ ...B(t.a2ui_messages),
1254
+ ...B(t.a2ui)
1246
1255
  ] : [];
1247
- }, i = (e) => {
1248
- const t = _(e);
1256
+ }, l = (e) => {
1257
+ const t = C(e);
1249
1258
  return t ? G(t) : [];
1250
- }, f = (e) => [
1251
- ...i(e.rawEvent),
1252
- ...i(e.raw_event)
1253
- ], h = (e) => {
1259
+ }, v = (e) => [
1260
+ ...l(e.rawEvent),
1261
+ ...l(e.raw_event)
1262
+ ], g = (e) => {
1254
1263
  const t = [
1255
1264
  e.value,
1256
1265
  e.metadata,
@@ -1265,39 +1274,39 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1265
1274
  ];
1266
1275
  for (const s of t) {
1267
1276
  if (s === void 0 || s === e) continue;
1268
- const n = T(s);
1269
- if (n.length > 0) return n;
1277
+ const a = B(s);
1278
+ if (a.length > 0) return a;
1270
1279
  }
1271
1280
  return [];
1272
1281
  }, I = (e) => [
1273
- ...T(e.a2ui),
1274
- ...T(e.a2uiMessage),
1275
- ...T(e.a2uiMessages),
1276
- ...T(e.a2ui_message),
1277
- ...T(e.a2ui_messages),
1278
- ...T(e.agui),
1279
- ...T(e.aguiEvents),
1280
- ...T(e.agui_events),
1281
- ...T(e.metadata),
1282
- ...T(e.content)
1283
- ], F = (e) => q(e.displayMode) || q(e.display_mode) || q(e.a2uiDisplayMode) || q(e.a2ui_display_mode) || q(e.metadata) || null, ve = (e) => {
1284
- var t, s, n, v;
1285
- return ((t = e == null ? void 0 : e.createSurface) == null ? void 0 : t.surfaceId) || ((s = e == null ? void 0 : e.updateComponents) == null ? void 0 : s.surfaceId) || ((n = e == null ? void 0 : e.updateDataModel) == null ? void 0 : n.surfaceId) || ((v = e == null ? void 0 : e.deleteSurface) == null ? void 0 : v.surfaceId) || null;
1282
+ ...B(e.a2ui),
1283
+ ...B(e.a2uiMessage),
1284
+ ...B(e.a2uiMessages),
1285
+ ...B(e.a2ui_message),
1286
+ ...B(e.a2ui_messages),
1287
+ ...B(e.agui),
1288
+ ...B(e.aguiEvents),
1289
+ ...B(e.agui_events),
1290
+ ...B(e.metadata),
1291
+ ...B(e.content)
1292
+ ], F = (e) => E(e.displayMode) || E(e.display_mode) || E(e.a2uiDisplayMode) || E(e.a2ui_display_mode) || E(e.agui) || E(e.aguiEvents) || E(e.agui_events) || E(e.metadata) || null, ve = (e) => {
1293
+ var t, s, a, f;
1294
+ return ((t = e == null ? void 0 : e.createSurface) == null ? void 0 : t.surfaceId) || ((s = e == null ? void 0 : e.updateComponents) == null ? void 0 : s.surfaceId) || ((a = e == null ? void 0 : e.updateDataModel) == null ? void 0 : a.surfaceId) || ((f = e == null ? void 0 : e.deleteSurface) == null ? void 0 : f.surfaceId) || null;
1286
1295
  }, fe = (e, t) => String(e.id || `index-${t}`), ie = (e, t, s = !1) => {
1287
- const n = { ...k.value }, v = { ...D.value }, E = s ? new Set(v[e] || []) : /* @__PURE__ */ new Set();
1288
- for (const P of t) {
1289
- const j = ve(P);
1290
- j && (n[j] = e, E.add(j));
1296
+ const a = { ...k.value }, f = { ...P.value }, U = s ? new Set(f[e] || []) : /* @__PURE__ */ new Set();
1297
+ for (const R of t) {
1298
+ const Y = ve(R);
1299
+ Y && (a[Y] = e, U.add(Y));
1291
1300
  }
1292
- v[e] = Array.from(E), k.value = n, D.value = v;
1301
+ f[e] = Array.from(U), k.value = a, P.value = f;
1293
1302
  }, $e = () => {
1294
- if (L.clearSurfaces(), D.value = {}, k.value = {}, !m.enableA2UI) return;
1303
+ if (L.clearSurfaces(), P.value = {}, k.value = {}, !m.enableA2UI) return;
1295
1304
  const e = [];
1296
1305
  if (m.messages.forEach((t, s) => {
1297
- const n = I(t);
1298
- if (n.length === 0) return;
1299
- const v = fe(t, s);
1300
- ie(v, n), e.push(...n);
1306
+ const a = I(t);
1307
+ if (a.length === 0) return;
1308
+ const f = fe(t, s);
1309
+ ie(f, a), e.push(...a);
1301
1310
  }), e.length !== 0)
1302
1311
  try {
1303
1312
  L.processMessages(e);
@@ -1307,45 +1316,48 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1307
1316
  }, se = (e, t) => {
1308
1317
  if (!m.enableA2UI) return [];
1309
1318
  if (F(e) === "text_only") return [];
1310
- const n = fe(e, t);
1311
- return (D.value[n] || []).filter(
1312
- (v) => k.value[v] === n
1319
+ const a = fe(e, t);
1320
+ return (P.value[a] || []).filter(
1321
+ (f) => k.value[f] === a
1313
1322
  );
1314
- }, ae = (e) => {
1323
+ }, ne = (e) => {
1315
1324
  const t = typeof e.content == "string" ? e.content.trimStart() : "";
1316
1325
  if (!t || I(e).length > 0) return !1;
1317
1326
  const s = t.match(/^```([^\s\n`]*)?/);
1318
1327
  if (!s) return !1;
1319
- const n = (s[1] || "").toLowerCase();
1320
- return n ? ["a", "ag", "agu", "agui", "ag-", "ag-u", "ag-ui", "a2", "a2u", "a2ui"].includes(n) : !1;
1321
- }, ne = (e, t) => !!(m.enableA2UI && m.showA2UISkeleton && m.isStreaming && t === m.messages.length - 1 && se(e, t).length === 0 && ae(e)), Z = (e, t) => {
1328
+ const a = (s[1] || "").toLowerCase();
1329
+ return a ? ["a", "ag", "agu", "agui", "ag-", "ag-u", "ag-ui", "a2", "a2u", "a2ui"].includes(a) : !1;
1330
+ }, ae = (e, t) => {
1331
+ const s = F(e);
1332
+ return !!(m.enableA2UI && m.showA2UISkeleton && m.isStreaming && t === m.messages.length - 1 && se(e, t).length === 0 && (ne(e) || s === "ui_only" || s === "text_and_ui"));
1333
+ }, Z = (e, t) => {
1322
1334
  if (!m.hideA2UIRawContent || e.attachments && e.attachments.length > 0) return !0;
1323
- if (ae(e) || !e.content) return !1;
1335
+ if (ne(e) || !e.content) return !1;
1324
1336
  if (I(e).length === 0) return !0;
1325
- const n = F(e);
1326
- return n === "text_only" || n === "text_and_ui" ? !0 : n === "ui_only" ? !1 : se(e, t).length === 0;
1337
+ const a = F(e);
1338
+ return a === "text_only" || a === "text_and_ui" ? !0 : a === "ui_only" ? !1 : se(e, t).length === 0;
1327
1339
  }, xe = async (e) => {
1328
1340
  var s;
1329
1341
  const t = (s = e == null ? void 0 : e.message) == null ? void 0 : s.action;
1330
1342
  A("a2ui-action", t, e);
1331
1343
  try {
1332
- const n = m.a2uiActionHandler ? await m.a2uiActionHandler(e) : [], v = T(n);
1333
- if (v.length > 0) {
1334
- const E = k.value[t == null ? void 0 : t.surfaceId];
1335
- E && ie(E, v, !0), L.processMessages(v), m.autoScroll && !x.value && (await oe(), ue("smooth"));
1344
+ const a = m.a2uiActionHandler ? await m.a2uiActionHandler(e) : [], f = B(a);
1345
+ if (f.length > 0) {
1346
+ const U = k.value[t == null ? void 0 : t.surfaceId];
1347
+ U && ie(U, f, !0), L.processMessages(f), m.autoScroll && !x.value && (await oe(), ue("smooth"));
1336
1348
  }
1337
- e.resolve(v);
1338
- } catch (n) {
1339
- A("a2ui-error", n), e.reject(n instanceof Error ? n : new Error(String(n)));
1349
+ e.resolve(f);
1350
+ } catch (a) {
1351
+ A("a2ui-error", a), e.reject(a instanceof Error ? a : new Error(String(a)));
1340
1352
  }
1341
1353
  };
1342
1354
  let ce = 0, ge = !1;
1343
1355
  const Te = () => {
1344
- R() || (H.value = !1, x.value = !0);
1356
+ V() || (D.value = !1, x.value = !0);
1345
1357
  }, ue = async (e = "smooth", t = !1) => {
1346
1358
  if (await oe(), $.value) {
1347
1359
  if (t && (x.value = !1), x.value) return;
1348
- H.value = !0, ge = !0, $.value.scrollTo({
1360
+ D.value = !0, ge = !0, $.value.scrollTo({
1349
1361
  top: $.value.scrollHeight,
1350
1362
  behavior: e
1351
1363
  }), setTimeout(() => {
@@ -1355,7 +1367,7 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1355
1367
  }, Be = (e) => {
1356
1368
  if (A("scroll", e), !$.value) return;
1357
1369
  const t = $.value.scrollTop, s = t < ce;
1358
- ce = t, !ge && s && (x.value = !0, H.value = !1), R() && (H.value = !0, x.value = !1, A("scroll-bottom"));
1370
+ ce = t, !ge && s && (x.value = !0, D.value = !1), V() && (D.value = !0, x.value = !1, A("scroll-bottom"));
1359
1371
  };
1360
1372
  ye(
1361
1373
  () => m.messages.length,
@@ -1367,14 +1379,14 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1367
1379
  $e,
1368
1380
  { deep: !0, immediate: !0 }
1369
1381
  );
1370
- let a = null;
1382
+ let n = null;
1371
1383
  ye(
1372
1384
  () => m.messages,
1373
1385
  async () => {
1374
1386
  if (!m.isStreaming || !m.autoScroll || x.value || document.hidden)
1375
1387
  return;
1376
1388
  const e = m.messages[m.messages.length - 1];
1377
- !e || e.role !== "assistant" || (a && cancelAnimationFrame(a), a = requestAnimationFrame(async () => {
1389
+ !e || e.role !== "assistant" || (n && cancelAnimationFrame(n), n = requestAnimationFrame(async () => {
1378
1390
  await oe(), $.value && !x.value && $.value.scrollTo({
1379
1391
  top: $.value.scrollHeight,
1380
1392
  behavior: "instant"
@@ -1400,177 +1412,177 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1400
1412
  );
1401
1413
  const c = () => {
1402
1414
  m.autoScroll && !x.value && ue();
1403
- }, g = () => {
1415
+ }, p = () => {
1404
1416
  !document.hidden && m.isStreaming && m.autoScroll && !x.value && oe(() => {
1405
1417
  $.value && ($.value.scrollTo({
1406
1418
  top: $.value.scrollHeight,
1407
1419
  behavior: "instant"
1408
- }), H.value = !0);
1420
+ }), D.value = !0);
1409
1421
  });
1410
1422
  };
1411
1423
  let u;
1412
1424
  return Ve(() => {
1413
- S(), u = L.onEvent(xe), document.addEventListener("visibilitychange", g);
1425
+ S(), u = L.onEvent(xe), document.addEventListener("visibilitychange", p);
1414
1426
  }), He(() => {
1415
- u == null || u(), document.removeEventListener("visibilitychange", g);
1427
+ u == null || u(), document.removeEventListener("visibilitychange", p);
1416
1428
  }), y({
1417
1429
  scrollToBottom: ue,
1418
1430
  containerRef: $
1419
- }), (e, t) => (d(), p("div", _s, [
1420
- r.showBackground ? (d(), p("div", As)) : B("", !0),
1421
- l("div", {
1431
+ }), (e, t) => (d(), h("div", Cs, [
1432
+ i.showBackground ? (d(), h("div", As)) : H("", !0),
1433
+ r("div", {
1422
1434
  class: "chat-message-list",
1423
1435
  ref_key: "containerRef",
1424
1436
  ref: $,
1425
1437
  onScroll: Be,
1426
1438
  onWheel: Te,
1427
1439
  onTouchmove: Te,
1428
- style: be({
1429
- paddingTop: r.contentPaddingTop,
1430
- paddingBottom: r.contentPaddingBottom
1440
+ style: Me({
1441
+ paddingTop: i.contentPaddingTop,
1442
+ paddingBottom: i.contentPaddingBottom
1431
1443
  })
1432
1444
  }, [
1433
- r.showWelcome && r.messages.length === 0 ? (d(), p("div", $s, [
1445
+ i.showWelcome && i.messages.length === 0 ? (d(), h("div", $s, [
1434
1446
  Fe(e.$slots, "welcome", {}, () => [
1435
- l("div", xs, [
1436
- l("div", Is, [
1437
- r.appLogo ? (d(), p("img", {
1447
+ r("div", xs, [
1448
+ r("div", Is, [
1449
+ i.appLogo ? (d(), h("img", {
1438
1450
  key: 0,
1439
- src: r.appLogo,
1451
+ src: i.appLogo,
1440
1452
  alt: "Logo"
1441
- }, null, 8, Ls)) : (d(), p("div", zs, [...t[1] || (t[1] = [
1442
- l("svg", {
1453
+ }, null, 8, Ls)) : (d(), h("div", zs, [...t[1] || (t[1] = [
1454
+ r("svg", {
1443
1455
  viewBox: "0 0 1024 1024",
1444
1456
  width: "32",
1445
1457
  height: "32"
1446
1458
  }, [
1447
- l("path", {
1459
+ r("path", {
1448
1460
  fill: "currentColor",
1449
1461
  d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"
1450
1462
  })
1451
1463
  ], -1)
1452
1464
  ])]))
1453
1465
  ]),
1454
- l("h2", Es, N(r.appName), 1),
1455
- t[2] || (t[2] = l("p", { class: "welcome-desc" }, "今天有什么可以帮您?", -1))
1466
+ r("h2", Es, X(i.appName), 1),
1467
+ t[2] || (t[2] = r("p", { class: "welcome-desc" }, "今天有什么可以帮您?", -1))
1456
1468
  ])
1457
1469
  ], !0)
1458
- ])) : (d(), p("div", Us, [
1459
- (d(!0), p(ze, null, Ee(r.messages, (s, n) => (d(), p("div", {
1460
- key: s.id || n,
1461
- class: le([
1470
+ ])) : (d(), h("div", Us, [
1471
+ (d(!0), h(ze, null, Ee(i.messages, (s, a) => (d(), h("div", {
1472
+ key: s.id || a,
1473
+ class: re([
1462
1474
  "message-row",
1463
1475
  s.role === "user" ? "message-user" : "message-assistant"
1464
1476
  ])
1465
1477
  }, [
1466
- s.role === "user" ? (d(), p("div", Ts, [
1467
- l("div", Bs, [
1468
- M(Re, {
1478
+ s.role === "user" ? (d(), h("div", Ts, [
1479
+ r("div", Bs, [
1480
+ b(Re, {
1469
1481
  message: s,
1470
1482
  "is-user": !0,
1471
- "api-base-url": r.apiBaseUrl
1483
+ "api-base-url": i.apiBaseUrl
1472
1484
  }, null, 8, ["message", "api-base-url"])
1473
1485
  ]),
1474
- s.content ? (d(), p("div", Hs, [
1475
- l("button", {
1486
+ s.content ? (d(), h("div", Hs, [
1487
+ r("button", {
1476
1488
  class: "action-btn",
1477
- onClick: (v) => o(s),
1489
+ onClick: (f) => o(s),
1478
1490
  title: "复制"
1479
1491
  }, [...t[3] || (t[3] = [
1480
- l("svg", {
1492
+ r("svg", {
1481
1493
  viewBox: "0 0 1024 1024",
1482
1494
  width: "12",
1483
1495
  height: "12"
1484
1496
  }, [
1485
- l("path", {
1497
+ r("path", {
1486
1498
  fill: "currentColor",
1487
1499
  d: "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c6 6 14.1 9.4 22.6 9.4H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM352 853.3V704h149.3l-149.3 149.3zM224 256h448v640H416V672c0-17.7-14.3-32-32-32H224V256z"
1488
1500
  })
1489
1501
  ], -1),
1490
- l("span", null, "复制", -1)
1502
+ r("span", null, "复制", -1)
1491
1503
  ])], 8, Ds)
1492
- ])) : B("", !0)
1493
- ])) : (d(), p("div", Ps, [
1494
- r.showAgentSteps && n === r.messages.length - 1 && r.agentSteps && r.agentSteps.length > 0 ? (d(), de(Ge, {
1504
+ ])) : H("", !0)
1505
+ ])) : (d(), h("div", Ps, [
1506
+ i.showAgentSteps && a === i.messages.length - 1 && i.agentSteps && i.agentSteps.length > 0 ? (d(), de(Ge, {
1495
1507
  key: 0,
1496
- steps: r.agentSteps,
1508
+ steps: i.agentSteps,
1497
1509
  onResize: c
1498
- }, null, 8, ["steps"])) : B("", !0),
1499
- l("div", {
1500
- class: le(["message-bubble assistant-bubble", { "assistant-bubble-a2ui": se(s, n).length > 0 }])
1510
+ }, null, 8, ["steps"])) : H("", !0),
1511
+ r("div", {
1512
+ class: re(["message-bubble assistant-bubble", { "assistant-bubble-a2ui": se(s, a).length > 0 }])
1501
1513
  }, [
1502
- Z(s, n) ? (d(), de(Re, {
1514
+ Z(s, a) ? (d(), de(Re, {
1503
1515
  key: 0,
1504
1516
  message: s,
1505
1517
  "is-user": !1,
1506
- "api-base-url": r.apiBaseUrl,
1507
- "is-streaming": r.isStreaming && n === r.messages.length - 1
1508
- }, null, 8, ["message", "api-base-url", "is-streaming"])) : B("", !0),
1509
- se(s, n).length > 0 ? (d(), p("div", {
1518
+ "api-base-url": i.apiBaseUrl,
1519
+ "is-streaming": i.isStreaming && a === i.messages.length - 1
1520
+ }, null, 8, ["message", "api-base-url", "is-streaming"])) : H("", !0),
1521
+ se(s, a).length > 0 ? (d(), h("div", {
1510
1522
  key: 1,
1511
- class: le(["a2ui-surfaces", { "a2ui-surfaces-with-content": Z(s, n) }])
1523
+ class: re(["a2ui-surfaces", { "a2ui-surfaces-with-content": Z(s, a) }])
1512
1524
  }, [
1513
- (d(!0), p(ze, null, Ee(se(s, n), (v) => (d(), de(U(ut), {
1514
- key: v,
1515
- "surface-id": v
1525
+ (d(!0), h(ze, null, Ee(se(s, a), (f) => (d(), de(T(ut), {
1526
+ key: f,
1527
+ "surface-id": f
1516
1528
  }, null, 8, ["surface-id"]))), 128))
1517
- ], 2)) : B("", !0),
1518
- ne(s, n) ? (d(), p("div", Rs, [...t[4] || (t[4] = [
1519
- lt('<div class="skeleton-header" data-v-eac8b914><div class="skeleton-avatar skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-title-group" data-v-eac8b914><div class="skeleton-line skeleton-title skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-line skeleton-subtitle skeleton-shimmer" data-v-eac8b914></div></div></div><div class="skeleton-line skeleton-summary skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-line skeleton-summary short skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-facts" data-v-eac8b914><div class="skeleton-fact skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-fact skeleton-shimmer" data-v-eac8b914></div><div class="skeleton-fact skeleton-shimmer" data-v-eac8b914></div></div>', 4)
1520
- ])])) : B("", !0)
1529
+ ], 2)) : H("", !0),
1530
+ ae(s, a) ? (d(), h("div", Rs, [...t[4] || (t[4] = [
1531
+ rt('<div class="skeleton-header" data-v-7758e8ae><div class="skeleton-avatar skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-title-group" data-v-7758e8ae><div class="skeleton-line skeleton-title skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-line skeleton-subtitle skeleton-shimmer" data-v-7758e8ae></div></div></div><div class="skeleton-line skeleton-summary skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-line skeleton-summary short skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-facts" data-v-7758e8ae><div class="skeleton-fact skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-fact skeleton-shimmer" data-v-7758e8ae></div><div class="skeleton-fact skeleton-shimmer" data-v-7758e8ae></div></div>', 4)
1532
+ ])])) : H("", !0)
1521
1533
  ], 2),
1522
- Z(s, n) && s.content && !(r.isStreaming && n === r.messages.length - 1) ? (d(), p("div", Vs, [
1523
- l("button", {
1534
+ Z(s, a) && s.content && !(i.isStreaming && a === i.messages.length - 1) ? (d(), h("div", Vs, [
1535
+ r("button", {
1524
1536
  class: "action-btn",
1525
- onClick: (v) => o(s),
1537
+ onClick: (f) => o(s),
1526
1538
  title: "复制"
1527
1539
  }, [...t[5] || (t[5] = [
1528
- l("svg", {
1540
+ r("svg", {
1529
1541
  viewBox: "0 0 1024 1024",
1530
1542
  width: "12",
1531
1543
  height: "12"
1532
1544
  }, [
1533
- l("path", {
1545
+ r("path", {
1534
1546
  fill: "currentColor",
1535
1547
  d: "M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c6 6 14.1 9.4 22.6 9.4H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM352 853.3V704h149.3l-149.3 149.3zM224 256h448v640H416V672c0-17.7-14.3-32-32-32H224V256z"
1536
1548
  })
1537
1549
  ], -1),
1538
- l("span", null, "复制", -1)
1550
+ r("span", null, "复制", -1)
1539
1551
  ])], 8, Fs)
1540
- ])) : B("", !0)
1552
+ ])) : H("", !0)
1541
1553
  ]))
1542
1554
  ], 2))), 128)),
1543
- r.isTyping ? (d(), p("div", Os, [...t[6] || (t[6] = [
1544
- l("div", { class: "typing-indicator" }, [
1545
- l("div", { class: "typing-dot" }),
1546
- l("div", {
1555
+ i.isTyping ? (d(), h("div", Os, [...t[6] || (t[6] = [
1556
+ r("div", { class: "typing-indicator" }, [
1557
+ r("div", { class: "typing-dot" }),
1558
+ r("div", {
1547
1559
  class: "typing-dot",
1548
1560
  style: { "animation-delay": "0.2s" }
1549
1561
  }),
1550
- l("div", {
1562
+ r("div", {
1551
1563
  class: "typing-dot",
1552
1564
  style: { "animation-delay": "0.4s" }
1553
1565
  })
1554
1566
  ], -1)
1555
- ])])) : B("", !0)
1567
+ ])])) : H("", !0)
1556
1568
  ]))
1557
1569
  ], 36),
1558
- M(rt, { name: "fade-slide" }, {
1559
- default: W(() => [
1560
- H.value ? B("", !0) : (d(), p("button", {
1570
+ b(lt, { name: "fade-slide" }, {
1571
+ default: j(() => [
1572
+ D.value ? H("", !0) : (d(), h("button", {
1561
1573
  key: 0,
1562
1574
  class: "scroll-to-bottom-btn",
1563
- style: be({ bottom: `calc(${r.contentPaddingBottom || "140px"} + 20px)` }),
1575
+ style: Me({ bottom: `calc(${i.contentPaddingBottom || "140px"} + 20px)` }),
1564
1576
  onClick: t[0] || (t[0] = (s) => ue("smooth", !0))
1565
1577
  }, [
1566
- t[8] || (t[8] = l("div", { class: "btn-inner" }, [
1567
- l("svg", {
1578
+ t[8] || (t[8] = r("div", { class: "btn-inner" }, [
1579
+ r("svg", {
1568
1580
  class: "arrow-icon",
1569
1581
  viewBox: "0 0 24 24",
1570
1582
  fill: "none",
1571
1583
  stroke: "currentColor"
1572
1584
  }, [
1573
- l("path", {
1585
+ r("path", {
1574
1586
  "stroke-linecap": "round",
1575
1587
  "stroke-linejoin": "round",
1576
1588
  "stroke-width": "2.5",
@@ -1578,23 +1590,23 @@ const ht = { class: "cm-dialog__body" }, yt = /* @__PURE__ */ Me({
1578
1590
  })
1579
1591
  ])
1580
1592
  ], -1)),
1581
- r.isStreaming ? (d(), p("svg", Ws, [...t[7] || (t[7] = [
1582
- l("circle", {
1593
+ i.isStreaming ? (d(), h("svg", Ws, [...t[7] || (t[7] = [
1594
+ r("circle", {
1583
1595
  class: "loading-circle",
1584
1596
  cx: "18",
1585
1597
  cy: "18",
1586
1598
  r: "16"
1587
1599
  }, null, -1)
1588
- ])])) : B("", !0)
1600
+ ])])) : H("", !0)
1589
1601
  ], 4))
1590
1602
  ]),
1591
1603
  _: 1
1592
1604
  })
1593
1605
  ]));
1594
1606
  }
1595
- }), Ys = /* @__PURE__ */ Ce(js, [["__scopeId", "data-v-eac8b914"]]), Js = {
1596
- install(r) {
1597
- r.component("ChatMessageList", Ys), r.component("MultimodalMessage", Re), r.component("MarkdownMessage", Je), r.component("AgentSteps", Ge);
1607
+ }), Ys = /* @__PURE__ */ _e(js, [["__scopeId", "data-v-7758e8ae"]]), Js = {
1608
+ install(i) {
1609
+ i.component("ChatMessageList", Ys), i.component("MultimodalMessage", Re), i.component("MarkdownMessage", Je), i.component("AgentSteps", Ge);
1598
1610
  }
1599
1611
  };
1600
1612
  export {