rt-chat-messages 1.0.5 → 1.0.6

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