ai_co_discuss 0.3.49 → 0.3.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web/modern.js CHANGED
@@ -51148,7 +51148,7 @@ var F$ = {
51148
51148
  let S = PV, C = wV, D = MA, O = wH;
51149
51149
  return r.value || i.value || a.value.needs ? (U(), W("section", F$, [
51150
51150
  t[9] ||= K("h4", { id: "device-heading" }, "已配对的设备", -1),
51151
- t[10] ||= K("p", { class: "fine-print" }, "其他设备第一次连接这台电脑时,须输入在电脑或已配对设备上显示的配对码;之后用它自己的通行密钥确认。偷到密码的人无法配对新设备。", -1),
51151
+ t[10] ||= K("p", { class: "fine-print" }, "新设备须扫码配对后才能操作这台电脑。", -1),
51152
51152
  g.value ? (U(), W("form", {
51153
51153
  key: 0,
51154
51154
  class: "dialog-form device-pair",
@@ -51194,7 +51194,7 @@ var F$ = {
51194
51194
  });
51195
51195
  }
51196
51196
  }, null, 8, ["loading", "disabled"])])) : (U(), W(H, { key: 2 }, [
51197
- o.value && o.value.length < 2 ? (U(), W("p", R$, "建议至少配对两台设备(例如手机和平板):丢失其中一台时,还能在外面用另一台撤销它、配对新设备。")) : Y("", !0),
51197
+ o.value && o.value.length < 2 ? (U(), W("p", R$, "建议配对两台,丢了一台还能用另一台处理。")) : Y("", !0),
51198
51198
  o.value ? (U(), W("ul", z$, [(U(!0), W(H, null, B(o.value, (e) => (U(), W("li", { key: e.id }, [K("span", null, [
51199
51199
  K("strong", null, [
51200
51200
  J(P(e.label), 1),
@@ -51287,7 +51287,7 @@ var F$ = {
51287
51287
  ])) : Y("", !0);
51288
51288
  };
51289
51289
  }
51290
- }, [["__scopeId", "data-v-a304550a"]]), Q$ = {
51290
+ }, [["__scopeId", "data-v-e556c54d"]]), Q$ = {
51291
51291
  class: "account-settings",
51292
51292
  "aria-labelledby": "account-heading"
51293
51293
  }, $$ = {
@@ -52737,23 +52737,14 @@ var F$ = {
52737
52737
  class: "speech-rates",
52738
52738
  role: "group",
52739
52739
  "aria-label": "朗读语音服务"
52740
- }, w1 = { class: "fine-print speech-note" }, T1 = ["href"], E1 = { class: "speech-row" }, D1 = {
52741
- key: 0,
52742
- class: "speech-row"
52743
- }, O1 = { class: "speech-row" }, k1 = { class: "speech-inline" }, A1 = ["title"], j1 = { class: "speech-inline" }, M1 = { class: "speech-row" }, N1 = { class: "speech-inline" }, P1 = { class: "speech-row" }, F1 = {
52740
+ }, w1 = ["title"], T1 = ["href"], E1 = { class: "speech-row" }, D1 = { class: "speech-row" }, O1 = { class: "speech-row" }, k1 = { class: "speech-inline" }, A1 = { class: "speech-row" }, j1 = { class: "speech-inline" }, M1 = ["title"], N1 = { class: "speech-inline" }, P1 = { class: "speech-row" }, F1 = {
52744
52741
  class: "speech-rates",
52745
52742
  role: "group",
52746
52743
  "aria-label": "朗读语速"
52747
- }, I1 = {
52748
- key: 1,
52749
- class: "speech-row"
52750
- }, L1 = { class: "fine-print" }, R1 = {
52751
- key: 2,
52752
- class: "speech-row"
52753
- }, z1 = {
52744
+ }, I1 = { class: "speech-row" }, L1 = { class: "speech-row" }, R1 = {
52754
52745
  key: 2,
52755
52746
  class: "fine-print"
52756
- }, B1 = "••••••••••••", V1 = "你好,我会用这个声音为你朗读房间里的消息。", H1 = "volcengine", U1 = ":file", W1 = /*#__PURE__*/ TH({
52747
+ }, z1 = "••••••••••••", B1 = "你好,我会用这个声音为你朗读房间里的消息。", V1 = "volcengine", H1 = ":file", U1 = /*#__PURE__*/ TH({
52757
52748
  __name: "SpeechSettings",
52758
52749
  setup(e) {
52759
52750
  let { bridge: t } = xr("discussion"), n = [
@@ -52787,7 +52778,7 @@ var F$ = {
52787
52778
  }), i = Object.keys(t.launch_clients).map((e) => ({
52788
52779
  name: e,
52789
52780
  label: t.identities[e]?.label || e
52790
- })), a = /* @__PURE__ */ F(!1), o = /* @__PURE__ */ F(""), s = /* @__PURE__ */ F(""), c = /* @__PURE__ */ Yt({}), l = /* @__PURE__ */ F(!1), u = Z(() => r.catalog.find((e) => e.id === r.provider) || {}), d = Z(() => r.providers[r.provider] || { member_voices: {} }), f = Z(() => o.value ? "需连接本机服务" : a.value ? r.api_key_ref ? `已配置 · ${u.value.label} · ${g.value.find((e) => e.value === d.value.speaker)?.label || d.value.speaker}` : `${u.value.label} · 未配置` : "读取中…"), p = Z(() => r.provider === H1 ? null : r.catalog.find((e) => e.id === H1));
52781
+ })), a = /* @__PURE__ */ F(!1), o = /* @__PURE__ */ F(""), s = /* @__PURE__ */ F(""), c = /* @__PURE__ */ Yt({}), l = /* @__PURE__ */ Yt({}), u = /* @__PURE__ */ F(!1), d = Z(() => r.catalog.find((e) => e.id === r.provider) || {}), f = Z(() => r.providers[r.provider] || { member_voices: {} }), p = Z(() => o.value ? "需连接本机服务" : a.value ? r.api_key_ref ? `已配置 · ${d.value.label} · ${_.value.find((e) => e.value === f.value.speaker)?.label || f.value.speaker}` : `${d.value.label} · 未配置` : "读取中…"), m = Z(() => r.provider === V1 ? null : r.catalog.find((e) => e.id === V1));
52791
52782
  Qi(async () => {
52792
52783
  try {
52793
52784
  Object.assign(r, await t.local_request("tts-settings", {})), a.value = !0;
@@ -52795,7 +52786,7 @@ var F$ = {
52795
52786
  o.value = e.message;
52796
52787
  }
52797
52788
  });
52798
- async function m() {
52789
+ async function h() {
52799
52790
  let { provider: e, speech_rate: n, context: i, providers: a } = r;
52800
52791
  try {
52801
52792
  Object.assign(r, await t.local_request("tts-settings", {
@@ -52808,34 +52799,34 @@ var F$ = {
52808
52799
  t.notify("error", e.message);
52809
52800
  }
52810
52801
  }
52811
- function h(e) {
52812
- e !== r.provider && (r.provider = e, m());
52802
+ function g(e) {
52803
+ e !== r.provider && (r.provider = e, h());
52813
52804
  }
52814
- let g = Z(() => {
52815
- let e = (u.value.voices || []).map((e) => ({
52805
+ let _ = Z(() => {
52806
+ let e = (d.value.voices || []).map((e) => ({
52816
52807
  label: e.label,
52817
52808
  value: e.id
52818
52809
  })), t = [
52819
- d.value.speaker,
52820
- d.value.file_voice,
52821
- ...Object.values(d.value.member_voices || {})
52810
+ f.value.speaker,
52811
+ f.value.file_voice,
52812
+ ...Object.values(f.value.member_voices || {})
52822
52813
  ].filter((t) => t && !e.some((e) => e.value === t));
52823
52814
  return [...e, ...[...new Set(t)].map((e) => ({
52824
52815
  label: e,
52825
52816
  value: e
52826
52817
  }))];
52827
- }), _ = Z(() => [{
52818
+ }), v = Z(() => [{
52828
52819
  label: "跟随通用",
52829
52820
  value: ""
52830
- }, ...g.value]), v = (e) => (e === U1 ? d.value.file_voice : e ? d.value.member_voices[e] : "") || d.value.speaker;
52831
- function y(e, t) {
52832
- let n = String(t || "").trim(), r = d.value;
52833
- e === U1 ? r.file_voice = n : e ? r.member_voices = {
52821
+ }, ..._.value]), y = (e) => (e === H1 ? f.value.file_voice : e ? f.value.member_voices[e] : "") || f.value.speaker;
52822
+ function b(e, t) {
52823
+ let n = String(t || "").trim(), r = f.value;
52824
+ e === H1 ? r.file_voice = n : e ? r.member_voices = {
52834
52825
  ...r.member_voices,
52835
52826
  [e]: n
52836
- } : n && (r.speaker = n), m();
52827
+ } : n && (r.speaker = n), h();
52837
52828
  }
52838
- async function b(e) {
52829
+ async function x(e) {
52839
52830
  let n = String(c[e.id] || "").trim();
52840
52831
  if (n && !s.value) {
52841
52832
  s.value = `key:${e.id}`;
@@ -52844,7 +52835,7 @@ var F$ = {
52844
52835
  base_url: e.key_base_url,
52845
52836
  api_key: n
52846
52837
  });
52847
- r.providers[e.id].api_key_ref = i, c[e.id] = "", await m();
52838
+ r.providers[e.id].api_key_ref = i, c[e.id] = "", await h();
52848
52839
  } catch (e) {
52849
52840
  t.notify("error", e.message);
52850
52841
  } finally {
@@ -52852,12 +52843,12 @@ var F$ = {
52852
52843
  }
52853
52844
  }
52854
52845
  }
52855
- async function x(e) {
52846
+ async function S(e) {
52856
52847
  let n = new Audio();
52857
52848
  n.play().catch(() => {}), s.value = `preview:${e}`;
52858
52849
  try {
52859
- let r = v(e), { audio: i } = await t.local_request("tts", {
52860
- text: V1,
52850
+ let r = y(e), { audio: i } = await t.local_request("tts", {
52851
+ text: B1,
52861
52852
  speaker: r
52862
52853
  });
52863
52854
  n.src = URL.createObjectURL(new Blob([Uint8Array.from(atob(i), (e) => e.charCodeAt(0))], { type: "audio/mpeg" })), n.onended = () => URL.revokeObjectURL(n.src), await n.play();
@@ -52868,14 +52859,14 @@ var F$ = {
52868
52859
  }
52869
52860
  }
52870
52861
  return (e, t) => {
52871
- let v = sA, S = MA, C = PV, w = _1, T = _Z;
52872
- return U(), W("section", v1, [q(T, {
52873
- open: l.value,
52874
- "onUpdate:open": t[12] ||= (e) => l.value = e
52862
+ let y = sA, C = MA, w = PV, T = _1, E = _Z;
52863
+ return U(), W("section", v1, [q(E, {
52864
+ open: u.value,
52865
+ "onUpdate:open": t[14] ||= (e) => u.value = e
52875
52866
  }, {
52876
52867
  content: L(() => [K("div", b1, [o.value ? (U(), W("p", x1, "语音由这台电脑的本机服务调用语音服务,需要连接本机服务或已配对电脑:" + P(o.value), 1)) : a.value ? (U(), W(H, { key: 1 }, [
52877
- t[26] ||= K("h4", null, "朗读", -1),
52878
- K("div", S1, [t[15] ||= K("span", null, "服务", -1), K("div", C1, [(U(!0), W(H, null, B(r.catalog, (e) => (U(), G(S, {
52868
+ t[25] ||= K("h4", null, "朗读", -1),
52869
+ K("div", S1, [t[17] ||= K("span", null, "服务", -1), K("div", C1, [(U(!0), W(H, null, B(r.catalog, (e) => (U(), G(C, {
52879
52870
  key: e.id,
52880
52871
  label: e.label,
52881
52872
  color: "neutral",
@@ -52883,63 +52874,94 @@ var F$ = {
52883
52874
  size: "xs",
52884
52875
  class: M({ chosen: r.provider === e.id }),
52885
52876
  "aria-pressed": r.provider === e.id,
52886
- onClick: (t) => h(e.id)
52877
+ onClick: (t) => g(e.id)
52887
52878
  }, null, 8, [
52888
52879
  "label",
52889
52880
  "class",
52890
52881
  "aria-pressed",
52891
52882
  "onClick"
52892
52883
  ]))), 128))])]),
52893
- K("p", w1, [
52894
- J(P(u.value.note), 1),
52895
- K("a", {
52896
- href: u.value.console_url,
52897
- target: "_blank",
52898
- rel: "noopener"
52899
- }, "打开控制台", 8, T1),
52900
- t[16] ||= J("获取 API Key。密钥只存这台电脑,费用按你的账号计费。", -1)
52901
- ]),
52902
- K("label", E1, [t[17] ||= K("span", null, "密钥", -1), q(C, {
52903
- modelValue: c[u.value.id],
52904
- "onUpdate:modelValue": t[0] ||= (e) => c[u.value.id] = e,
52884
+ K("p", {
52885
+ class: "fine-print speech-note",
52886
+ title: d.value.note
52887
+ }, [J(P(d.value.note) + " · ", 1), K("a", {
52888
+ href: d.value.console_url,
52889
+ target: "_blank",
52890
+ rel: "noopener"
52891
+ }, "控制台", 8, T1)], 8, w1),
52892
+ K("label", E1, [t[18] ||= K("span", null, "密钥", -1), q(w, {
52893
+ modelValue: c[d.value.id],
52894
+ "onUpdate:modelValue": t[1] ||= (e) => c[d.value.id] = e,
52905
52895
  type: "text",
52906
52896
  autocomplete: "off",
52907
52897
  spellcheck: "false",
52908
52898
  "data-1p-ignore": "",
52909
52899
  "data-lpignore": "true",
52910
- placeholder: d.value.api_key_ref ? `${B1}(输入新 Key 可更换)` : "粘贴 API Key",
52911
- "aria-label": `${u.value.label} API Key`,
52900
+ placeholder: f.value.api_key_ref ? z1 : "粘贴 API Key,只存这台电脑",
52901
+ title: f.value.api_key_ref && !c[d.value.id] ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
52902
+ "aria-label": `${d.value.label} API Key`,
52912
52903
  size: "sm",
52913
- class: "w-full speech-key",
52914
- loading: s.value === `key:${u.value.id}`,
52915
- onChange: t[1] ||= (e) => b(u.value)
52916
- }, null, 8, [
52904
+ class: "w-full",
52905
+ loading: s.value === `key:${d.value.id}`,
52906
+ ui: {
52907
+ base: l[d.value.id] ? "" : "speech-key-masked",
52908
+ trailing: "pe-0.5"
52909
+ },
52910
+ onChange: t[2] ||= (e) => x(d.value)
52911
+ }, {
52912
+ trailing: L(() => [q(C, {
52913
+ icon: l[d.value.id] ? "i-lucide-eye" : "i-lucide-eye-off",
52914
+ disabled: !c[d.value.id],
52915
+ "aria-label": l[d.value.id] ? "隐藏密钥" : "显示密钥",
52916
+ "aria-pressed": !!l[d.value.id],
52917
+ size: "xs",
52918
+ color: "neutral",
52919
+ variant: "link",
52920
+ onClick: t[0] ||= (e) => l[d.value.id] = !l[d.value.id]
52921
+ }, null, 8, [
52922
+ "icon",
52923
+ "disabled",
52924
+ "aria-label",
52925
+ "aria-pressed"
52926
+ ])]),
52927
+ _: 1
52928
+ }, 8, [
52917
52929
  "modelValue",
52918
52930
  "placeholder",
52931
+ "title",
52919
52932
  "aria-label",
52920
- "loading"
52933
+ "loading",
52934
+ "ui"
52921
52935
  ])]),
52922
- u.value.region ? (U(), W("label", D1, [t[18] ||= K("span", null, "区域", -1), q(C, {
52923
- modelValue: d.value.region,
52924
- "onUpdate:modelValue": t[2] ||= (e) => d.value.region = e,
52936
+ K("label", D1, [t[19] ||= K("span", null, "区域", -1), d.value.region ? (U(), G(w, {
52937
+ key: 0,
52938
+ modelValue: f.value.region,
52939
+ "onUpdate:modelValue": t[3] ||= (e) => f.value.region = e,
52925
52940
  placeholder: "语音资源所在区域,如 eastasia",
52926
52941
  "aria-label": "Azure 区域",
52927
52942
  size: "sm",
52928
52943
  class: "w-full",
52929
- onChange: m
52930
- }, null, 8, ["modelValue"])])) : Y("", !0),
52931
- K("div", O1, [t[19] ||= K("span", null, "通用", -1), K("div", k1, [q(w, {
52932
- "model-value": d.value.speaker,
52933
- items: g.value,
52944
+ onChange: h
52945
+ }, null, 8, ["modelValue"])) : (U(), G(w, {
52946
+ key: 1,
52947
+ disabled: "",
52948
+ placeholder: "此服务无需区域",
52949
+ "aria-label": "区域",
52950
+ size: "sm",
52951
+ class: "w-full"
52952
+ }))]),
52953
+ K("div", O1, [t[20] ||= K("span", null, "通用", -1), K("div", k1, [q(T, {
52954
+ "model-value": f.value.speaker,
52955
+ items: _.value,
52934
52956
  "value-key": "value",
52935
52957
  "create-item": "",
52936
52958
  "search-input": { placeholder: "搜索或输入音色 ID" },
52937
52959
  "aria-label": "通用音色",
52938
52960
  size: "sm",
52939
52961
  class: "min-w-0 flex-1",
52940
- "onUpdate:modelValue": t[3] ||= (e) => y("", e),
52941
- onCreate: t[4] ||= (e) => y("", e)
52942
- }, null, 8, ["model-value", "items"]), q(S, {
52962
+ "onUpdate:modelValue": t[4] ||= (e) => b("", e),
52963
+ onCreate: t[5] ||= (e) => b("", e)
52964
+ }, null, 8, ["model-value", "items"]), q(C, {
52943
52965
  icon: "i-lucide-volume-2",
52944
52966
  "aria-label": "试听通用音色",
52945
52967
  color: "neutral",
@@ -52947,29 +52969,50 @@ var F$ = {
52947
52969
  size: "sm",
52948
52970
  loading: s.value === "preview:",
52949
52971
  disabled: !r.api_key_ref || !!s.value,
52950
- onClick: t[5] ||= (e) => x("")
52972
+ onClick: t[6] ||= (e) => S("")
52973
+ }, null, 8, ["loading", "disabled"])])]),
52974
+ K("div", A1, [t[21] ||= K("span", null, "文件", -1), K("div", j1, [q(T, {
52975
+ "model-value": f.value.file_voice || "",
52976
+ items: v.value,
52977
+ "value-key": "value",
52978
+ "create-item": "",
52979
+ "search-input": { placeholder: "搜索或输入音色 ID" },
52980
+ "aria-label": "朗读文件的音色",
52981
+ size: "sm",
52982
+ class: "min-w-0 flex-1",
52983
+ "onUpdate:modelValue": t[7] ||= (e) => b(H1, e),
52984
+ onCreate: t[8] ||= (e) => b(H1, e)
52985
+ }, null, 8, ["model-value", "items"]), q(C, {
52986
+ icon: "i-lucide-volume-2",
52987
+ "aria-label": "试听朗读文件的音色",
52988
+ color: "neutral",
52989
+ variant: "ghost",
52990
+ size: "sm",
52991
+ loading: s.value === `preview:${H1}`,
52992
+ disabled: !r.api_key_ref || !!s.value,
52993
+ onClick: t[9] ||= (e) => S(H1)
52951
52994
  }, null, 8, ["loading", "disabled"])])]),
52952
52995
  (U(!0), W(H, null, B(I(i), (e) => (U(), W("div", {
52953
52996
  key: e.name,
52954
52997
  class: "speech-row"
52955
- }, [K("span", { title: e.label }, P(e.label), 9, A1), K("div", j1, [q(w, {
52956
- "model-value": d.value.member_voices[e.name] || "",
52957
- items: _.value,
52998
+ }, [K("span", { title: e.label }, P(e.label), 9, M1), K("div", N1, [q(T, {
52999
+ "model-value": f.value.member_voices[e.name] || "",
53000
+ items: v.value,
52958
53001
  "value-key": "value",
52959
53002
  "create-item": "",
52960
53003
  "search-input": { placeholder: "搜索或输入音色 ID" },
52961
53004
  "aria-label": `${e.label} 的音色`,
52962
53005
  size: "sm",
52963
53006
  class: "min-w-0 flex-1",
52964
- "onUpdate:modelValue": (t) => y(e.name, t),
52965
- onCreate: (t) => y(e.name, t)
53007
+ "onUpdate:modelValue": (t) => b(e.name, t),
53008
+ onCreate: (t) => b(e.name, t)
52966
53009
  }, null, 8, [
52967
53010
  "model-value",
52968
53011
  "items",
52969
53012
  "aria-label",
52970
53013
  "onUpdate:modelValue",
52971
53014
  "onCreate"
52972
- ]), q(S, {
53015
+ ]), q(C, {
52973
53016
  icon: "i-lucide-volume-2",
52974
53017
  "aria-label": `试听 ${e.label} 的音色`,
52975
53018
  color: "neutral",
@@ -52977,36 +53020,15 @@ var F$ = {
52977
53020
  size: "sm",
52978
53021
  loading: s.value === `preview:${e.name}`,
52979
53022
  disabled: !r.api_key_ref || !!s.value,
52980
- onClick: (t) => x(e.name)
53023
+ onClick: (t) => S(e.name)
52981
53024
  }, null, 8, [
52982
53025
  "aria-label",
52983
53026
  "loading",
52984
53027
  "disabled",
52985
53028
  "onClick"
52986
53029
  ])])]))), 128)),
52987
- K("div", M1, [t[20] ||= K("span", null, "文件", -1), K("div", N1, [q(w, {
52988
- "model-value": d.value.file_voice || "",
52989
- items: _.value,
52990
- "value-key": "value",
52991
- "create-item": "",
52992
- "search-input": { placeholder: "搜索或输入音色 ID" },
52993
- "aria-label": "朗读文件的音色",
52994
- size: "sm",
52995
- class: "min-w-0 flex-1",
52996
- "onUpdate:modelValue": t[6] ||= (e) => y(U1, e),
52997
- onCreate: t[7] ||= (e) => y(U1, e)
52998
- }, null, 8, ["model-value", "items"]), q(S, {
52999
- icon: "i-lucide-volume-2",
53000
- "aria-label": "试听朗读文件的音色",
53001
- color: "neutral",
53002
- variant: "ghost",
53003
- size: "sm",
53004
- loading: s.value === `preview:${U1}`,
53005
- disabled: !r.api_key_ref || !!s.value,
53006
- onClick: t[8] ||= (e) => x(U1)
53007
- }, null, 8, ["loading", "disabled"])])]),
53008
- t[27] ||= K("p", { class: "fine-print speech-note" }, "没单独设置的 AI、你自己的消息、程序消息和文件都用通用音色;每个服务的密钥与音色分开保存,切回时仍在。", -1),
53009
- K("div", P1, [t[21] ||= K("span", null, "语速", -1), K("div", F1, [(U(), W(H, null, B(n, (e) => q(S, {
53030
+ t[26] ||= K("p", { class: "fine-print speech-note" }, "未单独设置的 AI 与其他消息用通用音色", -1),
53031
+ K("div", P1, [t[22] ||= K("span", null, "语速", -1), K("div", F1, [(U(), W(H, null, B(n, (e) => q(C, {
53010
53032
  key: e.value,
53011
53033
  label: e.label,
53012
53034
  color: "neutral",
@@ -53015,7 +53037,7 @@ var F$ = {
53015
53037
  class: M({ chosen: r.speech_rate === e.value }),
53016
53038
  "aria-pressed": r.speech_rate === e.value,
53017
53039
  onClick: (t) => {
53018
- r.speech_rate = e.value, m();
53040
+ r.speech_rate = e.value, h();
53019
53041
  }
53020
53042
  }, null, 8, [
53021
53043
  "label",
@@ -53023,115 +53045,151 @@ var F$ = {
53023
53045
  "aria-pressed",
53024
53046
  "onClick"
53025
53047
  ])), 64))])]),
53026
- u.value.context ? (U(), W("label", I1, [t[22] ||= K("span", null, "语气", -1), q(C, {
53048
+ K("label", I1, [t[23] ||= K("span", null, "语气", -1), d.value.context ? (U(), G(w, {
53049
+ key: 0,
53027
53050
  modelValue: r.context,
53028
- "onUpdate:modelValue": t[9] ||= (e) => r.context = e,
53051
+ "onUpdate:modelValue": t[10] ||= (e) => r.context = e,
53029
53052
  maxlength: 200,
53030
53053
  placeholder: "可选,如:像朋友聊天一样自然地读",
53031
53054
  "aria-label": "朗读语气提示",
53032
53055
  size: "sm",
53033
53056
  class: "w-full",
53034
- onChange: m
53035
- }, null, 8, ["modelValue"])])) : Y("", !0),
53036
- t[28] ||= K("p", { class: "fine-print speech-note" }, "输入框右下角的播报按钮可开启语音播报:新回复自动朗读回答摘要,并提示轮次、失败与讨论结束。", -1),
53037
- t[29] ||= K("h4", null, "语音输入", -1),
53038
- K("p", L1, [
53039
- t[23] ||= J("点输入框右下角的麦克风开始说话,再点一次转成文字,单次最长 5 分钟。语音输入使用火山引擎「录音文件识别2.0」", -1),
53040
- r.provider === H1 ? Y("", !0) : (U(), W(H, { key: 0 }, [J(",需单独填写火山引擎 API Key")], 64)),
53041
- t[24] ||= J("。", -1)
53042
- ]),
53043
- p.value ? (U(), W("label", R1, [t[25] ||= K("span", null, "密钥", -1), q(C, {
53044
- modelValue: c[p.value.id],
53045
- "onUpdate:modelValue": t[10] ||= (e) => c[p.value.id] = e,
53057
+ onChange: h
53058
+ }, null, 8, ["modelValue"])) : (U(), G(w, {
53059
+ key: 1,
53060
+ disabled: "",
53061
+ placeholder: "此服务不支持语气提示",
53062
+ "aria-label": "朗读语气提示",
53063
+ size: "sm",
53064
+ class: "w-full"
53065
+ }))]),
53066
+ t[27] ||= K("p", { class: "fine-print speech-note" }, "输入框右下角的播报按钮自动读新回复摘要", -1),
53067
+ t[28] ||= K("h4", null, "语音输入", -1),
53068
+ t[29] ||= K("p", { class: "fine-print speech-note" }, "用火山引擎识别,单次最长 5 分钟", -1),
53069
+ K("label", L1, [t[24] ||= K("span", null, "密钥", -1), m.value ? (U(), G(w, {
53070
+ key: 0,
53071
+ modelValue: c[m.value.id],
53072
+ "onUpdate:modelValue": t[12] ||= (e) => c[m.value.id] = e,
53046
53073
  type: "text",
53047
53074
  autocomplete: "off",
53048
53075
  spellcheck: "false",
53049
53076
  "data-1p-ignore": "",
53050
53077
  "data-lpignore": "true",
53051
- placeholder: r.providers[p.value.id]?.api_key_ref ? `${B1}(输入新 Key 可更换)` : "粘贴火山引擎 API Key",
53078
+ placeholder: r.providers[m.value.id]?.api_key_ref ? z1 : "粘贴火山引擎 API Key",
53079
+ title: r.providers[m.value.id]?.api_key_ref && !c[m.value.id] ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
53052
53080
  "aria-label": "语音输入的火山引擎 API Key",
53053
53081
  size: "sm",
53054
- class: "w-full speech-key",
53055
- loading: s.value === `key:${p.value.id}`,
53056
- onChange: t[11] ||= (e) => b(p.value)
53057
- }, null, 8, [
53082
+ class: "w-full",
53083
+ loading: s.value === `key:${m.value.id}`,
53084
+ ui: {
53085
+ base: l[m.value.id] ? "" : "speech-key-masked",
53086
+ trailing: "pe-0.5"
53087
+ },
53088
+ onChange: t[13] ||= (e) => x(m.value)
53089
+ }, {
53090
+ trailing: L(() => [q(C, {
53091
+ icon: l[m.value.id] ? "i-lucide-eye" : "i-lucide-eye-off",
53092
+ disabled: !c[m.value.id],
53093
+ "aria-label": l[m.value.id] ? "隐藏密钥" : "显示密钥",
53094
+ "aria-pressed": !!l[m.value.id],
53095
+ size: "xs",
53096
+ color: "neutral",
53097
+ variant: "link",
53098
+ onClick: t[11] ||= (e) => l[m.value.id] = !l[m.value.id]
53099
+ }, null, 8, [
53100
+ "icon",
53101
+ "disabled",
53102
+ "aria-label",
53103
+ "aria-pressed"
53104
+ ])]),
53105
+ _: 1
53106
+ }, 8, [
53058
53107
  "modelValue",
53059
53108
  "placeholder",
53060
- "loading"
53061
- ])])) : Y("", !0)
53062
- ], 64)) : (U(), W("p", z1, "正在读取语音设置…"))])]),
53109
+ "title",
53110
+ "loading",
53111
+ "ui"
53112
+ ])) : (U(), G(w, {
53113
+ key: 1,
53114
+ disabled: "",
53115
+ placeholder: "与朗读共用上方的火山引擎 Key",
53116
+ "aria-label": "语音输入的火山引擎 API Key",
53117
+ size: "sm",
53118
+ class: "w-full"
53119
+ }))])
53120
+ ], 64)) : (U(), W("p", R1, "正在读取语音设置…"))])]),
53063
53121
  default: L(() => [K("button", {
53064
53122
  type: "button",
53065
53123
  class: "speech-header",
53066
- "aria-expanded": l.value
53124
+ "aria-expanded": u.value
53067
53125
  }, [
53068
- t[13] ||= K("h3", null, "语音", -1),
53069
- t[14] ||= K("small", null, "朗读与语音输入", -1),
53070
- K("span", { class: M({ "is-ready": r.api_key_ref }) }, P(f.value), 3),
53071
- q(v, { name: l.value ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])
53126
+ t[15] ||= K("h3", null, "语音", -1),
53127
+ t[16] ||= K("small", null, "朗读与语音输入", -1),
53128
+ K("span", { class: M({ "is-ready": r.api_key_ref }) }, P(p.value), 3),
53129
+ q(y, { name: u.value ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])
53072
53130
  ], 8, y1)]),
53073
53131
  _: 1
53074
53132
  }, 8, ["open"])]);
53075
53133
  };
53076
53134
  }
53077
- }, [["__scopeId", "data-v-d21b54ce"]]), G1 = {
53135
+ }, [["__scopeId", "data-v-b710211c"]]), W1 = {
53078
53136
  key: 0,
53079
53137
  class: "channel-archive-manager"
53080
- }, K1 = { class: "channel-archive-toolbar" }, q1 = {
53138
+ }, G1 = { class: "channel-archive-toolbar" }, K1 = {
53081
53139
  key: 0,
53082
53140
  class: "channel-archive-confirm channel-archive-bulk",
53083
53141
  role: "alert"
53084
- }, J1 = { class: "channel-archive-results" }, Y1 = {
53142
+ }, q1 = { class: "channel-archive-results" }, J1 = {
53085
53143
  key: 0,
53086
53144
  class: "channel-archive-list",
53087
53145
  "aria-label": "已存档房间列表"
53088
- }, X1 = { class: "channel-archive-row" }, Z1 = { class: "channel-archive-info" }, Q1 = [
53146
+ }, Y1 = { class: "channel-archive-row" }, X1 = { class: "channel-archive-info" }, Z1 = [
53089
53147
  "title",
53090
53148
  "disabled",
53091
53149
  "onClick"
53092
- ], $1 = { key: 0 }, e0 = ["datetime"], t0 = { class: "channel-archive-actions" }, n0 = {
53150
+ ], Q1 = { key: 0 }, $1 = ["datetime"], e0 = { class: "channel-archive-actions" }, t0 = {
53093
53151
  key: 0,
53094
53152
  class: "channel-archive-confirm channel-archive-bulk",
53095
53153
  role: "alert"
53096
- }, r0 = {
53154
+ }, n0 = {
53097
53155
  key: 1,
53098
53156
  class: "channel-archive-empty"
53099
- }, i0 = { class: "fine-print" }, a0 = {
53157
+ }, r0 = { class: "fine-print" }, i0 = {
53100
53158
  key: 0,
53101
53159
  class: "fine-print"
53102
- }, o0 = { class: "dialog-actions" }, s0 = { class: "fine-print" }, c0 = { class: "dialog-actions" }, l0 = { class: "dialog-actions" }, u0 = { class: "channel-management-target" }, d0 = {
53160
+ }, a0 = { class: "dialog-actions" }, o0 = { class: "fine-print" }, s0 = { class: "dialog-actions" }, c0 = { class: "dialog-actions" }, l0 = { class: "channel-management-target" }, u0 = {
53103
53161
  key: 0,
53104
53162
  class: "fine-print"
53105
- }, f0 = {
53163
+ }, d0 = {
53106
53164
  key: 1,
53107
53165
  class: "fine-print"
53108
- }, p0 = {
53166
+ }, f0 = {
53109
53167
  key: 2,
53110
53168
  class: "fine-print"
53111
- }, m0 = { class: "dialog-actions" }, h0 = { key: 5 }, g0 = { class: "theme-choices" }, _0 = ["aria-pressed", "onClick"], v0 = { class: "theme-check" }, y0 = { class: "channel-reading-setting" }, b0 = {
53169
+ }, p0 = { class: "dialog-actions" }, m0 = { key: 5 }, h0 = { class: "theme-choices" }, g0 = ["aria-pressed", "onClick"], _0 = { class: "theme-check" }, v0 = { class: "channel-reading-setting" }, y0 = {
53112
53170
  class: "channel-reading-options",
53113
53171
  role: "group",
53114
53172
  "aria-labelledby": "channel-reading-label"
53115
- }, x0 = { class: "channel-reading-setting" }, S0 = {
53173
+ }, b0 = { class: "channel-reading-setting" }, x0 = {
53116
53174
  class: "channel-reading-options channel-effect-options",
53117
53175
  role: "group",
53118
53176
  "aria-labelledby": "channel-effects-label"
53119
- }, C0 = { class: "advanced-content" }, w0 = {
53177
+ }, S0 = { class: "advanced-content" }, C0 = {
53120
53178
  key: 0,
53121
53179
  class: "fine-print"
53122
- }, T0 = { class: "advanced-content" }, E0 = { class: "dialog-actions" }, D0 = {
53180
+ }, w0 = { class: "advanced-content" }, T0 = { class: "dialog-actions" }, E0 = {
53123
53181
  key: 8,
53124
53182
  class: "original-message"
53125
- }, O0 = {
53183
+ }, D0 = {
53126
53184
  key: 0,
53127
53185
  role: "alert"
53128
- }, k0 = { class: "original-meta" }, A0 = { class: "fine-print" }, j0 = {
53186
+ }, O0 = { class: "original-meta" }, k0 = { class: "fine-print" }, A0 = {
53129
53187
  key: 0,
53130
53188
  class: "channel-answer-summary"
53131
- }, M0 = { class: "message-prose" }, N0 = { class: "message-prose" }, P0 = ["innerHTML"], F0 = {
53189
+ }, j0 = { class: "message-prose" }, M0 = { class: "message-prose" }, N0 = ["innerHTML"], P0 = {
53132
53190
  key: 2,
53133
53191
  class: "fine-print"
53134
- }, I0 = {
53192
+ }, F0 = {
53135
53193
  __name: "WorkspaceDialogs",
53136
53194
  props: /*@__PURE__*/ Fa({
53137
53195
  detailId: {
@@ -53402,8 +53460,8 @@ var F$ = {
53402
53460
  content: { onInteractOutside: _e },
53403
53461
  "onAfter:leave": ge
53404
53462
  }, {
53405
- body: L(() => [a.value === "archives" ? (U(), W("section", G1, [
53406
- K("div", K1, [
53463
+ body: L(() => [a.value === "archives" ? (U(), W("section", W1, [
53464
+ K("div", G1, [
53407
53465
  q(x, {
53408
53466
  modelValue: m.value,
53409
53467
  "onUpdate:modelValue": b[0] ||= (e) => m.value = e,
@@ -53432,7 +53490,7 @@ var F$ = {
53432
53490
  }
53433
53491
  }, null, 8, ["label", "disabled"])
53434
53492
  ]),
53435
- y.value && _.value.length ? (U(), W("div", q1, [
53493
+ y.value && _.value.length ? (U(), W("div", K1, [
53436
53494
  K("span", null, "将永久删除当前列表中的 " + P(_.value.length) + " 个房间及其全部记录,无法撤销。", 1),
53437
53495
  q(ce, {
53438
53496
  label: "取消",
@@ -53448,19 +53506,19 @@ var F$ = {
53448
53506
  onClick: E
53449
53507
  })
53450
53508
  ])) : Y("", !0),
53451
- K("div", J1, [_.value.length ? (U(), W("ul", Y1, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("li", {
53509
+ K("div", q1, [_.value.length ? (U(), W("ul", J1, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("li", {
53452
53510
  key: e.id,
53453
53511
  class: "channel-archive-item"
53454
- }, [K("div", X1, [K("div", Z1, [K("button", {
53512
+ }, [K("div", Y1, [K("div", X1, [K("button", {
53455
53513
  class: "channel-archive-title",
53456
53514
  title: e.title,
53457
53515
  disabled: !!I(l),
53458
53516
  onClick: (t) => w(e)
53459
- }, P(e.title), 9, Q1), K("small", null, [e.created_at ? (U(), W("span", $1, [
53517
+ }, P(e.title), 9, Z1), K("small", null, [e.created_at ? (U(), W("span", Q1, [
53460
53518
  b[23] ||= J("创建于 ", -1),
53461
- K("time", { datetime: e.created_at }, P(S(e.created_at)), 9, e0),
53519
+ K("time", { datetime: e.created_at }, P(S(e.created_at)), 9, $1),
53462
53520
  b[24] ||= J(" · ", -1)
53463
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", t0, [q(ce, {
53521
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", e0, [q(ce, {
53464
53522
  "aria-label": `彻底删除 ${e.title}`,
53465
53523
  title: "彻底删除",
53466
53524
  icon: "i-lucide-trash-2",
@@ -53492,7 +53550,7 @@ var F$ = {
53492
53550
  "aria-label",
53493
53551
  "disabled",
53494
53552
  "onClick"
53495
- ])])]), v.value === e.id ? (U(), W("div", n0, [
53553
+ ])])]), v.value === e.id ? (U(), W("div", t0, [
53496
53554
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
53497
53555
  q(ce, {
53498
53556
  label: "取消",
@@ -53508,15 +53566,15 @@ var F$ = {
53508
53566
  disabled: C(e),
53509
53567
  onClick: T
53510
53568
  }, null, 8, ["disabled"])
53511
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", r0, P(p.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
53569
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", n0, P(p.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
53512
53570
  ])) : a.value === "delete-folder" ? (U(), W("form", {
53513
53571
  key: 1,
53514
53572
  class: "dialog-form",
53515
53573
  onSubmit: b[7] ||= uu((e) => ne(!1), ["prevent"])
53516
53574
  }, [
53517
- K("p", i0, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
53518
- te.value.length ? (U(), W("p", a0, "也可以连同其中的 " + P(te.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
53519
- K("div", o0, [
53575
+ K("p", r0, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
53576
+ te.value.length ? (U(), W("p", i0, "也可以连同其中的 " + P(te.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
53577
+ K("div", a0, [
53520
53578
  q(ce, {
53521
53579
  label: "取消",
53522
53580
  color: "neutral",
@@ -53541,7 +53599,7 @@ var F$ = {
53541
53599
  key: 2,
53542
53600
  class: "dialog-form",
53543
53601
  onSubmit: uu(re, ["prevent"])
53544
- }, [K("p", s0, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(te.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", c0, [q(ce, {
53602
+ }, [K("p", o0, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(te.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", s0, [q(ce, {
53545
53603
  label: "取消",
53546
53604
  color: "neutral",
53547
53605
  variant: "ghost",
@@ -53571,7 +53629,7 @@ var F$ = {
53571
53629
  "modelValue",
53572
53630
  "aria-label",
53573
53631
  "readonly"
53574
- ]), K("div", l0, [q(ce, {
53632
+ ]), K("div", c0, [q(ce, {
53575
53633
  label: "取消",
53576
53634
  color: "neutral",
53577
53635
  variant: "ghost",
@@ -53596,10 +53654,10 @@ var F$ = {
53596
53654
  class: "dialog-form",
53597
53655
  onSubmit: uu(A, ["prevent"])
53598
53656
  }, [
53599
- K("p", u0, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
53600
- a.value === "archive" ? (U(), W("p", d0, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
53601
- a.value === "restore" ? (U(), W("p", f0, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
53602
- a.value === "delete" ? (U(), W("p", p0, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
53657
+ K("p", l0, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
53658
+ a.value === "archive" ? (U(), W("p", u0, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
53659
+ a.value === "restore" ? (U(), W("p", d0, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
53660
+ a.value === "delete" ? (U(), W("p", f0, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
53603
53661
  a.value === "rename" ? (U(), G(me, {
53604
53662
  key: 3,
53605
53663
  label: "房间名称",
@@ -53616,7 +53674,7 @@ var F$ = {
53616
53674
  }, null, 8, ["modelValue"])]),
53617
53675
  _: 1
53618
53676
  })) : Y("", !0),
53619
- K("div", m0, [q(ce, {
53677
+ K("div", p0, [q(ce, {
53620
53678
  label: "取消",
53621
53679
  color: "neutral",
53622
53680
  variant: "ghost",
@@ -53633,10 +53691,10 @@ var F$ = {
53633
53691
  "loading",
53634
53692
  "disabled"
53635
53693
  ])])
53636
- ], 32)) : a.value === "settings" ? (U(), W("div", h0, [
53694
+ ], 32)) : a.value === "settings" ? (U(), W("div", m0, [
53637
53695
  q(h1),
53638
53696
  b[29] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
53639
- K("div", g0, [(U(), W(H, null, B(de, (e) => K("button", {
53697
+ K("div", h0, [(U(), W(H, null, B(de, (e) => K("button", {
53640
53698
  key: e.value,
53641
53699
  class: M({ chosen: I(o).theme === e.value }),
53642
53700
  "aria-pressed": I(o).theme === e.value,
@@ -53651,12 +53709,12 @@ var F$ = {
53651
53709
  K("b")
53652
53710
  ], -1)]], 2),
53653
53711
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
53654
- K("span", v0, [I(o).theme === e.value ? (U(), G(ve, {
53712
+ K("span", _0, [I(o).theme === e.value ? (U(), G(ve, {
53655
53713
  key: 0,
53656
53714
  name: "i-lucide-check"
53657
53715
  })) : Y("", !0)])
53658
- ], 10, _0)), 64))]),
53659
- K("section", y0, [b[26] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", b0, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(ce, {
53716
+ ], 10, g0)), 64))]),
53717
+ K("section", v0, [b[26] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", y0, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(ce, {
53660
53718
  key: e.value,
53661
53719
  label: e.label,
53662
53720
  color: "neutral",
@@ -53670,9 +53728,9 @@ var F$ = {
53670
53728
  "aria-pressed",
53671
53729
  "onClick"
53672
53730
  ]))), 128))])]),
53673
- K("section", x0, [
53731
+ K("section", b0, [
53674
53732
  b[27] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
53675
- K("div", S0, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(ce, {
53733
+ K("div", x0, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(ce, {
53676
53734
  key: e.value,
53677
53735
  label: e.label,
53678
53736
  color: "neutral",
@@ -53688,7 +53746,7 @@ var F$ = {
53688
53746
  ]))), 128))]),
53689
53747
  b[28] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
53690
53748
  ]),
53691
- q(W1)
53749
+ q(U1)
53692
53750
  ])) : a.value === "create" ? (U(), G(UQ, {
53693
53751
  key: 6,
53694
53752
  "target-folder": e.targetFolder,
@@ -53737,7 +53795,7 @@ var F$ = {
53737
53795
  }, null, 8, ["model-value"])]),
53738
53796
  _: 1
53739
53797
  })) : Y("", !0),
53740
- K("section", C0, [
53798
+ K("section", S0, [
53741
53799
  b[30] ||= K("h3", null, "讨论上限", -1),
53742
53800
  q(JH, {
53743
53801
  ref_key: "topic_limits",
@@ -53752,14 +53810,14 @@ var F$ = {
53752
53810
  "minutes",
53753
53811
  "disabled"
53754
53812
  ]),
53755
- oe.value ? (U(), W("p", w0, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
53813
+ oe.value ? (U(), W("p", C0, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
53756
53814
  ]),
53757
53815
  q(be, {
53758
53816
  open: ie.value,
53759
53817
  "onUpdate:open": b[20] ||= (e) => ie.value = e,
53760
53818
  class: "advanced-fields"
53761
53819
  }, {
53762
- content: L(() => [K("div", T0, [(U(), W(H, null, B([
53820
+ content: L(() => [K("div", w0, [(U(), W(H, null, B([
53763
53821
  {
53764
53822
  key: "user_request",
53765
53823
  label: "用户原文"
@@ -53795,7 +53853,7 @@ var F$ = {
53795
53853
  }, null, 8, ["trailing-icon"])]),
53796
53854
  _: 1
53797
53855
  }, 8, ["open"]),
53798
- K("div", E0, [q(ce, {
53856
+ K("div", T0, [q(ce, {
53799
53857
  label: "取消",
53800
53858
  color: "neutral",
53801
53859
  variant: "ghost",
@@ -53806,8 +53864,8 @@ var F$ = {
53806
53864
  label: "保存议题",
53807
53865
  loading: I(l) === "create" || I(l) === "save_topic"
53808
53866
  }, null, 8, ["loading"])])
53809
- ], 32)) : a.value === "message" ? (U(), W("div", D0, [ue.value ? (U(), W("p", O0, P(ue.value), 1)) : le.value ? (U(), W(H, { key: 1 }, [
53810
- K("div", k0, [
53867
+ ], 32)) : a.value === "message" ? (U(), W("div", E0, [ue.value ? (U(), W("p", D0, P(ue.value), 1)) : le.value ? (U(), W(H, { key: 1 }, [
53868
+ K("div", O0, [
53811
53869
  K("strong", null, P(I(s).display_name(le.value.author)), 1),
53812
53870
  K("span", null, "#" + P(le.value.id), 1),
53813
53871
  q(xe, {
@@ -53818,14 +53876,14 @@ var F$ = {
53818
53876
  _: 1
53819
53877
  })
53820
53878
  ]),
53821
- K("p", A0, P(I(s).provenance(le.value)) + " · " + P(new Date(le.value.created_at).toLocaleString("zh-CN")), 1),
53822
- le.value.summary ? (U(), W("section", j0, [K("small", null, "回答摘要 · " + P(I(s).display_name(le.value.summary_by)), 1), K("p", M0, P(le.value.summary), 1)])) : Y("", !0),
53823
- K("p", N0, P(le.value.text), 1),
53879
+ K("p", k0, P(I(s).provenance(le.value)) + " · " + P(new Date(le.value.created_at).toLocaleString("zh-CN")), 1),
53880
+ le.value.summary ? (U(), W("section", A0, [K("small", null, "回答摘要 · " + P(I(s).display_name(le.value.summary_by)), 1), K("p", j0, P(le.value.summary), 1)])) : Y("", !0),
53881
+ K("p", M0, P(le.value.text), 1),
53824
53882
  le.value.attachments?.length ? (U(), W("div", {
53825
53883
  key: 1,
53826
53884
  onClick: he,
53827
53885
  innerHTML: I(s).attachment_markup(le.value.attachments)
53828
- }, null, 8, P0)) : Y("", !0),
53886
+ }, null, 8, N0)) : Y("", !0),
53829
53887
  le.value.reply_to ? (U(), G(ce, {
53830
53888
  key: 2,
53831
53889
  label: `查看被回复的原文 #${le.value.reply_to}`,
@@ -53835,7 +53893,7 @@ var F$ = {
53835
53893
  class: "channel-surface-button",
53836
53894
  onClick: N
53837
53895
  }, null, 8, ["label"])) : Y("", !0)
53838
- ], 64)) : (U(), W("p", F0, "正在读取原文…"))])) : Y("", !0)]),
53896
+ ], 64)) : (U(), W("p", P0, "正在读取原文…"))])) : Y("", !0)]),
53839
53897
  _: 1
53840
53898
  }, 8, [
53841
53899
  "open",
@@ -53846,7 +53904,7 @@ var F$ = {
53846
53904
  ]);
53847
53905
  };
53848
53906
  }
53849
- }, L0 = {
53907
+ }, I0 = {
53850
53908
  slots: {
53851
53909
  root: "relative flex gap-1.5 [&>div]:min-w-0",
53852
53910
  list: "isolate min-w-0",
@@ -54256,7 +54314,7 @@ var F$ = {
54256
54314
  highlightColor: "primary",
54257
54315
  variant: "pill"
54258
54316
  }
54259
- }, R0 = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
54317
+ }, L0 = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
54260
54318
  __name: "NavigationMenu",
54261
54319
  props: {
54262
54320
  as: {
@@ -54417,7 +54475,7 @@ var F$ = {
54417
54475
  level: Number,
54418
54476
  listIndex: Number
54419
54477
  } }), g = Z(() => oA({
54420
- extend: L0,
54478
+ extend: I0,
54421
54479
  ...o.ui?.navigationMenu || {}
54422
54480
  })({
54423
54481
  orientation: a.orientation,
@@ -54905,7 +54963,7 @@ var F$ = {
54905
54963
  }, 16, ["data-collapsed", "class"])
54906
54964
  ], 64));
54907
54965
  }
54908
- }), z0 = {
54966
+ }), R0 = {
54909
54967
  __name: "ContextMenuContent",
54910
54968
  props: {
54911
54969
  items: {
@@ -55200,7 +55258,7 @@ var F$ = {
55200
55258
  "disabled",
55201
55259
  "text-value",
55202
55260
  "class"
55203
- ]), q(z0, X({
55261
+ ]), q(R0, X({
55204
55262
  sub: "",
55205
55263
  class: r.ui?.content,
55206
55264
  ui: e.ui,
@@ -55311,7 +55369,7 @@ var F$ = {
55311
55369
  _: 3
55312
55370
  }, 16)], 64));
55313
55371
  }
55314
- }, B0 = {
55372
+ }, z0 = {
55315
55373
  slots: {
55316
55374
  content: "min-w-32 max-h-(--reka-context-menu-content-available-height) bg-default shadow-lg rounded-md ring ring-default overflow-hidden data-[state=open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-context-menu-content-transform-origin) flex flex-col",
55317
55375
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -55499,7 +55557,7 @@ var F$ = {
55499
55557
  }
55500
55558
  ],
55501
55559
  defaultVariants: { size: "md" }
55502
- }, V0 = {
55560
+ }, B0 = {
55503
55561
  __name: "ContextMenu",
55504
55562
  props: {
55505
55563
  size: {
@@ -55569,7 +55627,7 @@ var F$ = {
55569
55627
  emits: ["update:open"],
55570
55628
  setup(e, { emit: t }) {
55571
55629
  let n = e, r = t, i = Aa(), a = AE("contextMenu", n), o = Cm(), s = jE(om(a, "modal"), r), c = /* @__PURE__ */ Sn(() => a.content), l = () => Vm(i, ["default"]), u = Z(() => oA({
55572
- extend: B0,
55630
+ extend: z0,
55573
55631
  ...o.ui?.contextMenu || {}
55574
55632
  })({ size: a.size }));
55575
55633
  return (e, t) => (U(), G(I(iC), N(Ss(I(s))), {
@@ -55581,7 +55639,7 @@ var F$ = {
55581
55639
  }, {
55582
55640
  default: L(() => [V(e.$slots, "default")]),
55583
55641
  _: 3
55584
- }, 8, ["disabled", "class"])) : Y("", !0), q(z0, X({
55642
+ }, 8, ["disabled", "class"])) : Y("", !0), q(R0, X({
55585
55643
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
55586
55644
  ui: u.value,
55587
55645
  "ui-override": I(a).ui
@@ -55611,20 +55669,20 @@ var F$ = {
55611
55669
  _: 3
55612
55670
  }, 16));
55613
55671
  }
55614
- }, H0 = {
55672
+ }, V0 = {
55615
55673
  key: 0,
55616
55674
  class: "channel-import-reading"
55617
- }, U0 = {
55675
+ }, H0 = {
55618
55676
  class: "channel-import-list",
55619
55677
  "aria-live": "polite"
55620
- }, W0 = { class: "channel-import-head" }, G0 = ["title"], K0 = {
55678
+ }, U0 = { class: "channel-import-head" }, W0 = ["title"], G0 = {
55621
55679
  key: 0,
55622
55680
  role: "alert",
55623
55681
  class: "channel-import-error"
55624
- }, q0 = {
55682
+ }, K0 = {
55625
55683
  key: 1,
55626
55684
  class: "channel-import-members"
55627
- }, J0 = ["title"], Y0 = { class: "dialog-actions" }, X0 = /*#__PURE__*/ TH({
55685
+ }, q0 = ["title"], J0 = { class: "dialog-actions" }, Y0 = /*#__PURE__*/ TH({
55628
55686
  __name: "ImportDialog",
55629
55687
  props: {
55630
55688
  open: {
@@ -55681,21 +55739,21 @@ var F$ = {
55681
55739
  }
55682
55740
  }, {
55683
55741
  body: L(() => [
55684
- !r.value.done && !r.value.rooms.length ? (U(), W("p", H0, "正在读取备份文件…")) : Y("", !0),
55685
- K("ul", U0, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
55742
+ !r.value.done && !r.value.rooms.length ? (U(), W("p", V0, "正在读取备份文件…")) : Y("", !0),
55743
+ K("ul", H0, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
55686
55744
  key: t,
55687
55745
  class: M(["channel-import-room", `is-${e.status}`])
55688
55746
  }, [
55689
- K("div", W0, [
55747
+ K("div", U0, [
55690
55748
  q(o, {
55691
55749
  name: i[e.status].icon,
55692
55750
  class: M({ "animate-spin": e.status === "importing" })
55693
55751
  }, null, 8, ["name", "class"]),
55694
- K("strong", { title: e.title }, P(e.title), 9, G0),
55752
+ K("strong", { title: e.title }, P(e.title), 9, W0),
55695
55753
  K("span", null, P(i[e.status].label), 1)
55696
55754
  ]),
55697
- e.error ? (U(), W("p", K0, P(e.error), 1)) : Y("", !0),
55698
- e.members.length ? (U(), W("ul", q0, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
55755
+ e.error ? (U(), W("p", G0, P(e.error), 1)) : Y("", !0),
55756
+ e.members.length ? (U(), W("ul", K0, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
55699
55757
  key: e.name,
55700
55758
  class: M({ "is-failed": e.failed })
55701
55759
  }, [
@@ -55704,7 +55762,7 @@ var F$ = {
55704
55762
  e.resume ? (U(), W("code", {
55705
55763
  key: 0,
55706
55764
  title: `没有开着的原窗口时,在 ${e.resume.cwd} 运行`
55707
- }, P(e.resume.command), 9, J0)) : Y("", !0)
55765
+ }, P(e.resume.command), 9, q0)) : Y("", !0)
55708
55766
  ], 2))), 128))])) : Y("", !0),
55709
55767
  (U(!0), W(H, null, B(e.problems, (e) => (U(), W("p", {
55710
55768
  key: e,
@@ -55716,7 +55774,7 @@ var F$ = {
55716
55774
  role: "alert",
55717
55775
  class: "channel-import-error is-file"
55718
55776
  }, P(e), 1))), 128)),
55719
- K("div", Y0, [q(s, {
55777
+ K("div", J0, [q(s, {
55720
55778
  label: "完成",
55721
55779
  class: "channel-primary-button",
55722
55780
  disabled: !r.value.done,
@@ -55733,42 +55791,42 @@ var F$ = {
55733
55791
  ]);
55734
55792
  };
55735
55793
  }
55736
- }, [["__scopeId", "data-v-c7d0eeb8"]]), Z0 = { class: "channel-directory-manager" }, Q0 = { class: "channel-directory-heading" }, $0 = ["aria-expanded"], e2 = { class: "channel-directory-actions" }, t2 = {
55794
+ }, [["__scopeId", "data-v-c7d0eeb8"]]), X0 = { class: "channel-directory-manager" }, Z0 = { class: "channel-directory-heading" }, Q0 = ["aria-expanded"], $0 = { class: "channel-directory-actions" }, e2 = {
55737
55795
  "aria-label": "协作房间列表",
55738
55796
  class: "channel-room-list",
55739
55797
  "data-room-directory": ""
55740
- }, n2 = ["data-room-folder", "data-drag-folder"], r2 = [
55798
+ }, t2 = ["data-room-folder", "data-drag-folder"], n2 = [
55741
55799
  "disabled",
55742
55800
  "aria-label",
55743
55801
  "aria-expanded",
55744
55802
  "onKeydown",
55745
55803
  "onClick"
55746
- ], i2 = { class: "channel-folder-name" }, a2 = {
55804
+ ], r2 = { class: "channel-folder-name" }, i2 = {
55747
55805
  class: "channel-directory-count",
55748
55806
  "aria-hidden": "true"
55749
- }, o2 = { class: "channel-folder-actions" }, s2 = ["data-drop-folder"], c2 = {
55807
+ }, a2 = { class: "channel-folder-actions" }, o2 = ["data-drop-folder"], s2 = {
55750
55808
  key: 0,
55751
55809
  class: "channel-directory-empty",
55752
55810
  role: "status"
55753
- }, l2 = ["data-drag-room"], u2 = [
55811
+ }, c2 = ["data-drag-room"], l2 = [
55754
55812
  "aria-label",
55755
55813
  "disabled",
55756
55814
  "onKeydown"
55757
- ], d2 = [
55815
+ ], u2 = [
55758
55816
  "title",
55759
55817
  "aria-label",
55760
55818
  "aria-current",
55761
55819
  "onClick"
55762
- ], f2 = {
55820
+ ], d2 = {
55763
55821
  class: "channel-room-time",
55764
55822
  "aria-hidden": "true"
55765
- }, p2 = { class: "channel-room-actions" }, m2 = {
55823
+ }, f2 = { class: "channel-room-actions" }, p2 = {
55766
55824
  key: 0,
55767
55825
  class: "channel-directory-empty"
55768
- }, h2 = {
55826
+ }, m2 = {
55769
55827
  key: 0,
55770
55828
  class: "channel-archive-count"
55771
- }, g2 = {
55829
+ }, h2 = {
55772
55830
  __name: "ChannelDirectory",
55773
55831
  emits: [
55774
55832
  "select",
@@ -56018,8 +56076,8 @@ var F$ = {
56018
56076
  ];
56019
56077
  }
56020
56078
  return (e, t) => {
56021
- let u = MA, d = sA, g = RV, _ = $V, w = V0;
56022
- return U(), W("div", Z0, [
56079
+ let u = MA, d = sA, g = RV, _ = $V, w = B0;
56080
+ return U(), W("div", X0, [
56023
56081
  q(u, {
56024
56082
  label: "新建对话",
56025
56083
  icon: "i-lucide-plus",
@@ -56028,12 +56086,12 @@ var F$ = {
56028
56086
  disabled: I(r).directory_pending.includes("create-room"),
56029
56087
  onClick: t[0] ||= (e) => n("create", null)
56030
56088
  }, null, 8, ["disabled"]),
56031
- K("div", Q0, [K("button", {
56089
+ K("div", Z0, [K("button", {
56032
56090
  type: "button",
56033
56091
  class: "channel-section-toggle",
56034
56092
  "aria-expanded": x.value,
56035
56093
  onClick: t[1] ||= (e) => x.value = !x.value
56036
- }, [q(d, { name: x.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), J(P(f.value), 1)], 8, $0), K("div", e2, [
56094
+ }, [q(d, { name: x.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), J(P(f.value), 1)], 8, Q0), K("div", $0, [
56037
56095
  q(g, { text: "新建文件夹" }, {
56038
56096
  default: L(() => [q(u, {
56039
56097
  icon: "i-lucide-plus",
@@ -56075,7 +56133,7 @@ var F$ = {
56075
56133
  onChange: v
56076
56134
  }, null, 544)
56077
56135
  ])]),
56078
- vr(K("nav", t2, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
56136
+ vr(K("nav", e2, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
56079
56137
  key: e.order_id,
56080
56138
  class: "channel-folder-section",
56081
56139
  "data-room-folder": e.id,
@@ -56104,9 +56162,9 @@ var F$ = {
56104
56162
  }, [
56105
56163
  q(d, { name: S.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
56106
56164
  q(d, { name: "i-lucide-folder" }),
56107
- K("span", i2, P(e.name), 1),
56108
- K("small", a2, P(e.pending ? "保存中" : e.rooms.length || ""), 1)
56109
- ], 40, r2), K("div", o2, [q(g, { text: `在${e.name}中新建对话` }, {
56165
+ K("span", r2, P(e.name), 1),
56166
+ K("small", i2, P(e.pending ? "保存中" : e.rooms.length || ""), 1)
56167
+ ], 40, n2), K("div", a2, [q(g, { text: `在${e.name}中新建对话` }, {
56110
56168
  default: L(() => [q(u, {
56111
56169
  icon: "i-lucide-square-pen",
56112
56170
  "aria-label": `在${e.name}中新建对话`,
@@ -56143,7 +56201,7 @@ var F$ = {
56143
56201
  key: 1,
56144
56202
  class: M(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
56145
56203
  "data-drop-folder": e.id ? void 0 : ""
56146
- }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", c2, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(w, {
56204
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", s2, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(w, {
56147
56205
  key: s.id,
56148
56206
  items: D(s, c, s.folder_id || null, e.rooms.length),
56149
56207
  ui: { content: "channel-menu channel-topic-menu" }
@@ -56168,7 +56226,7 @@ var F$ = {
56168
56226
  direction: 1,
56169
56227
  folder_id: s.folder_id || null
56170
56228
  }), ["prevent"]), ["down"])]
56171
- }, [q(d, { name: "i-lucide-grip-vertical" })], 40, u2),
56229
+ }, [q(d, { name: "i-lucide-grip-vertical" })], 40, l2),
56172
56230
  K("button", {
56173
56231
  class: "channel-room-select",
56174
56232
  "data-drag-title": "",
@@ -56177,8 +56235,8 @@ var F$ = {
56177
56235
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
56178
56236
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
56179
56237
  onClick: (e) => n("select", s.id)
56180
- }, [K("span", null, P(s.title), 1), K("small", f2, P(y(s)), 1)], 40, d2),
56181
- K("div", p2, [q(g, {
56238
+ }, [K("span", null, P(s.title), 1), K("small", d2, P(y(s)), 1)], 40, u2),
56239
+ K("div", f2, [q(g, {
56182
56240
  text: s.archived ? "恢复房间" : "存档房间",
56183
56241
  ui: { content: "channel-topic-tooltip" }
56184
56242
  }, {
@@ -56219,9 +56277,9 @@ var F$ = {
56219
56277
  }, null, 8, ["aria-label"])]),
56220
56278
  _: 2
56221
56279
  }, 1032, ["items"])])
56222
- ], 10, l2)]),
56280
+ ], 10, c2)]),
56223
56281
  _: 2
56224
- }, 1032, ["items"]))), 128))], 10, s2)) : Y("", !0)], 8, n2))), 128)), s.value.length ? Y("", !0) : (U(), W("p", m2, "暂无协作房间"))], 512), [[Vc, x.value]]),
56282
+ }, 1032, ["items"]))), 128))], 10, o2)) : Y("", !0)], 8, t2))), 128)), s.value.length ? Y("", !0) : (U(), W("p", p2, "暂无协作房间"))], 512), [[Vc, x.value]]),
56225
56283
  vr(q(u, {
56226
56284
  icon: "i-lucide-archive",
56227
56285
  color: "neutral",
@@ -56230,21 +56288,21 @@ var F$ = {
56230
56288
  "aria-haspopup": "dialog",
56231
56289
  onClick: t[6] ||= (e) => n("archives")
56232
56290
  }, {
56233
- default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", h2, P(c.value), 1)) : Y("", !0)]),
56291
+ default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", m2, P(c.value), 1)) : Y("", !0)]),
56234
56292
  _: 1
56235
56293
  }, 512), [[Vc, x.value]]),
56236
- q(X0, {
56294
+ q(Y0, {
56237
56295
  open: h.value,
56238
56296
  "onUpdate:open": t[7] ||= (e) => h.value = e
56239
56297
  }, null, 8, ["open"])
56240
56298
  ]);
56241
56299
  };
56242
56300
  }
56243
- }, _2 = {
56301
+ }, g2 = {
56244
56302
  id: "channel-sidebar",
56245
56303
  class: "channel-sidebar",
56246
56304
  "aria-label": "房间导航"
56247
- }, v2 = { class: "channel-sidebar-content" }, y2 = { class: "channel-directory-heading channel-tools-heading" }, b2 = ["aria-expanded"], x2 = { class: "channel-sidebar-footer" }, S2 = ["aria-label"], C2 = { class: "channel-self" }, w2 = ["title"], T2 = {
56305
+ }, _2 = { class: "channel-sidebar-content" }, v2 = { class: "channel-directory-heading channel-tools-heading" }, y2 = ["aria-expanded"], b2 = { class: "channel-sidebar-footer" }, x2 = ["aria-label"], S2 = { class: "channel-self" }, C2 = ["title"], w2 = {
56248
56306
  __name: "ChannelSidebar",
56249
56307
  props: { tabs: {
56250
56308
  type: Array,
@@ -56273,11 +56331,11 @@ var F$ = {
56273
56331
  return e?.loaded ? e.registered ? e.logged_in ? "" : "未登录 · 点击登录" : "设置管理员账号" : "";
56274
56332
  });
56275
56333
  return (e, t) => {
56276
- let n = sA, o = R0, d = pA, f = MA, p = RV;
56277
- return U(), W("aside", _2, [
56334
+ let n = sA, o = L0, d = pA, f = MA, p = RV;
56335
+ return U(), W("aside", g2, [
56278
56336
  t[13] ||= ws("<header class=\"channel-workspace-heading\"><span class=\"channel-brand-icon\" aria-hidden=\"true\"><svg class=\"channel-brand-dark\" viewBox=\"0 0 100 100\"><defs><linearGradient id=\"brand-d0\" gradientUnits=\"userSpaceOnUse\" x1=\"4.5\" y1=\"64\" x2=\"95.5\" y2=\"64\"><stop offset=\"0.0%\" stop-color=\"#e9ebed\"></stop><stop offset=\"6.3%\" stop-color=\"#e2e5e7\"></stop><stop offset=\"12.5%\" stop-color=\"#dcdee1\"></stop><stop offset=\"18.8%\" stop-color=\"#d5d8db\"></stop><stop offset=\"25.0%\" stop-color=\"#ced2d5\"></stop><stop offset=\"31.3%\" stop-color=\"#c8cbcf\"></stop><stop offset=\"37.5%\" stop-color=\"#c1c5ca\"></stop><stop offset=\"43.8%\" stop-color=\"#babfc4\"></stop><stop offset=\"50.0%\" stop-color=\"#b4b9be\"></stop><stop offset=\"56.3%\" stop-color=\"#a9aeb3\"></stop><stop offset=\"62.5%\" stop-color=\"#9ea3a9\"></stop><stop offset=\"68.8%\" stop-color=\"#93999f\"></stop><stop offset=\"75.0%\" stop-color=\"#888e95\"></stop><stop offset=\"81.3%\" stop-color=\"#7e848a\"></stop><stop offset=\"87.5%\" stop-color=\"#737a80\"></stop><stop offset=\"93.8%\" stop-color=\"#697077\"></stop><stop offset=\"100.0%\" stop-color=\"#5f666d\"></stop></linearGradient><linearGradient id=\"brand-d1\" gradientUnits=\"userSpaceOnUse\" x1=\"8.5\" y1=\"36\" x2=\"91.5\" y2=\"36\"><stop offset=\"0.0%\" stop-color=\"#3f86ff\"></stop><stop offset=\"6.3%\" stop-color=\"#5588ff\"></stop><stop offset=\"12.5%\" stop-color=\"#6889ff\"></stop><stop offset=\"18.8%\" stop-color=\"#788aff\"></stop><stop offset=\"25.0%\" stop-color=\"#878bff\"></stop><stop offset=\"31.3%\" stop-color=\"#958cff\"></stop><stop offset=\"37.5%\" stop-color=\"#a78aef\"></stop><stop offset=\"43.8%\" stop-color=\"#b986d7\"></stop><stop offset=\"50.0%\" stop-color=\"#ca80bf\"></stop><stop offset=\"56.3%\" stop-color=\"#da78a6\"></stop><stop offset=\"62.5%\" stop-color=\"#ea6e8c\"></stop><stop offset=\"68.8%\" stop-color=\"#f56d78\"></stop><stop offset=\"75.0%\" stop-color=\"#f77f72\"></stop><stop offset=\"81.3%\" stop-color=\"#f8906b\"></stop><stop offset=\"87.5%\" stop-color=\"#f9a163\"></stop><stop offset=\"93.8%\" stop-color=\"#fab058\"></stop><stop offset=\"100.0%\" stop-color=\"#fac04a\"></stop></linearGradient><linearGradient id=\"brand-d2\" gradientUnits=\"userSpaceOnUse\" x1=\"28.021\" y1=\"95.435\" x2=\"39.978\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#d06a49\"></stop><stop offset=\"6.3%\" stop-color=\"#d36f4f\"></stop><stop offset=\"12.5%\" stop-color=\"#d67456\"></stop><stop offset=\"18.8%\" stop-color=\"#d97a5c\"></stop><stop offset=\"25.0%\" stop-color=\"#dc7f62\"></stop><stop offset=\"31.3%\" stop-color=\"#df8468\"></stop><stop offset=\"37.5%\" stop-color=\"#e2896e\"></stop><stop offset=\"43.8%\" stop-color=\"#e58e74\"></stop><stop offset=\"50.0%\" stop-color=\"#e8937a\"></stop><stop offset=\"56.3%\" stop-color=\"#eb9d85\"></stop><stop offset=\"62.5%\" stop-color=\"#eea68f\"></stop><stop offset=\"68.8%\" stop-color=\"#f1b09a\"></stop><stop offset=\"75.0%\" stop-color=\"#f4baa4\"></stop><stop offset=\"81.3%\" stop-color=\"#f6c3af\"></stop><stop offset=\"87.5%\" stop-color=\"#f9cdb9\"></stop><stop offset=\"93.8%\" stop-color=\"#fbd6c4\"></stop><stop offset=\"100.0%\" stop-color=\"#fde0cf\"></stop></linearGradient><linearGradient id=\"brand-d3\" gradientUnits=\"userSpaceOnUse\" x1=\"71.978\" y1=\"95.435\" x2=\"60.021\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#4a5cff\"></stop><stop offset=\"6.3%\" stop-color=\"#5062ff\"></stop><stop offset=\"12.5%\" stop-color=\"#5768ff\"></stop><stop offset=\"18.8%\" stop-color=\"#5d6dff\"></stop><stop offset=\"25.0%\" stop-color=\"#6472ff\"></stop><stop offset=\"31.3%\" stop-color=\"#6b77ff\"></stop><stop offset=\"37.5%\" stop-color=\"#717cff\"></stop><stop offset=\"43.8%\" stop-color=\"#7881ff\"></stop><stop offset=\"50.0%\" stop-color=\"#7f86ff\"></stop><stop offset=\"56.3%\" stop-color=\"#8990ff\"></stop><stop offset=\"62.5%\" stop-color=\"#9399ff\"></stop><stop offset=\"68.8%\" stop-color=\"#9da2ff\"></stop><stop offset=\"75.0%\" stop-color=\"#a8abff\"></stop><stop offset=\"81.3%\" stop-color=\"#b3b4ff\"></stop><stop offset=\"87.5%\" stop-color=\"#bebdff\"></stop><stop offset=\"93.8%\" stop-color=\"#c9c5ff\"></stop><stop offset=\"100.0%\" stop-color=\"#d4ceff\"></stop></linearGradient><clipPath id=\"brand-d4\"><polygon points=\"16,46.5 84,46.5 84,25.5 16,25.5\"></polygon></clipPath><clipPath id=\"brand-d5\"><polygon points=\"16,48.5 84,48.5 84,23.5 16,23.5\"></polygon></clipPath><clipPath id=\"brand-d6\"><polygon points=\"81.410,86.630 71.410,10.630 50.589,13.369 60.589,89.369\"></polygon></clipPath><clipPath id=\"brand-d7\"><polygon points=\"83.393,86.369 73.393,10.369 48.606,13.630 58.606,89.630\"></polygon></clipPath><clipPath id=\"brand-d8\"><polygon points=\"12,74.5 88,74.5 88,53.5 12,53.5\"></polygon></clipPath><clipPath id=\"brand-d9\"><polygon points=\"12,76.5 88,76.5 88,51.5 12,51.5\"></polygon></clipPath><clipPath id=\"brand-d10\"><polygon points=\"39.410,89.369 49.410,13.369 28.589,10.630 18.589,86.630\"></polygon></clipPath><clipPath id=\"brand-d11\"><polygon points=\"41.393,89.630 51.393,13.630 26.606,10.369 16.606,86.369\"></polygon></clipPath></defs><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-d0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-d1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-d2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-d3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><g clip-path=\"url(#brand-d4)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d5)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-d2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d6)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d7)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-d1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d8)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d9)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-d3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d10)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d11)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-d0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g></svg><svg class=\"channel-brand-light\" viewBox=\"0 0 100 100\"><defs><linearGradient id=\"brand-l0\" gradientUnits=\"userSpaceOnUse\" x1=\"4.5\" y1=\"64\" x2=\"95.5\" y2=\"64\"><stop offset=\"0.0%\" stop-color=\"#0b0d0f\"></stop><stop offset=\"6.3%\" stop-color=\"#101315\"></stop><stop offset=\"12.5%\" stop-color=\"#16191b\"></stop><stop offset=\"18.8%\" stop-color=\"#1c1f22\"></stop><stop offset=\"25.0%\" stop-color=\"#222529\"></stop><stop offset=\"31.3%\" stop-color=\"#282c2f\"></stop><stop offset=\"37.5%\" stop-color=\"#2e3237\"></stop><stop offset=\"43.8%\" stop-color=\"#34393e\"></stop><stop offset=\"50.0%\" stop-color=\"#3b4045\"></stop><stop offset=\"56.3%\" stop-color=\"#484d52\"></stop><stop offset=\"62.5%\" stop-color=\"#555a5f\"></stop><stop offset=\"68.8%\" stop-color=\"#62676d\"></stop><stop offset=\"75.0%\" stop-color=\"#70757b\"></stop><stop offset=\"81.3%\" stop-color=\"#7e8389\"></stop><stop offset=\"87.5%\" stop-color=\"#8c9297\"></stop><stop offset=\"93.8%\" stop-color=\"#9aa0a6\"></stop><stop offset=\"100.0%\" stop-color=\"#a9afb5\"></stop></linearGradient><linearGradient id=\"brand-l1\" gradientUnits=\"userSpaceOnUse\" x1=\"8.5\" y1=\"36\" x2=\"91.5\" y2=\"36\"><stop offset=\"0.0%\" stop-color=\"#2f7bff\"></stop><stop offset=\"6.3%\" stop-color=\"#487cff\"></stop><stop offset=\"12.5%\" stop-color=\"#5a7cff\"></stop><stop offset=\"18.8%\" stop-color=\"#6a7dff\"></stop><stop offset=\"25.0%\" stop-color=\"#797dff\"></stop><stop offset=\"31.3%\" stop-color=\"#877dff\"></stop><stop offset=\"37.5%\" stop-color=\"#997cee\"></stop><stop offset=\"43.8%\" stop-color=\"#ae79d3\"></stop><stop offset=\"50.0%\" stop-color=\"#c174b8\"></stop><stop offset=\"56.3%\" stop-color=\"#d36b9d\"></stop><stop offset=\"62.5%\" stop-color=\"#e56080\"></stop><stop offset=\"68.8%\" stop-color=\"#f15d69\"></stop><stop offset=\"75.0%\" stop-color=\"#f37162\"></stop><stop offset=\"81.3%\" stop-color=\"#f5835a\"></stop><stop offset=\"87.5%\" stop-color=\"#f79550\"></stop><stop offset=\"93.8%\" stop-color=\"#f8a542\"></stop><stop offset=\"100.0%\" stop-color=\"#f8b52c\"></stop></linearGradient><linearGradient id=\"brand-l2\" gradientUnits=\"userSpaceOnUse\" x1=\"28.021\" y1=\"95.435\" x2=\"39.978\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#b9502f\"></stop><stop offset=\"6.3%\" stop-color=\"#bd5534\"></stop><stop offset=\"12.5%\" stop-color=\"#c15a39\"></stop><stop offset=\"18.8%\" stop-color=\"#c55f3e\"></stop><stop offset=\"25.0%\" stop-color=\"#c96443\"></stop><stop offset=\"31.3%\" stop-color=\"#cd6848\"></stop><stop offset=\"37.5%\" stop-color=\"#d16d4d\"></stop><stop offset=\"43.8%\" stop-color=\"#d57252\"></stop><stop offset=\"50.0%\" stop-color=\"#d97757\"></stop><stop offset=\"56.3%\" stop-color=\"#dd8060\"></stop><stop offset=\"62.5%\" stop-color=\"#e08a69\"></stop><stop offset=\"68.8%\" stop-color=\"#e49372\"></stop><stop offset=\"75.0%\" stop-color=\"#e79c7b\"></stop><stop offset=\"81.3%\" stop-color=\"#eaa584\"></stop><stop offset=\"87.5%\" stop-color=\"#edae8d\"></stop><stop offset=\"93.8%\" stop-color=\"#f0b796\"></stop><stop offset=\"100.0%\" stop-color=\"#f3c09f\"></stop></linearGradient><linearGradient id=\"brand-l3\" gradientUnits=\"userSpaceOnUse\" x1=\"71.978\" y1=\"95.435\" x2=\"60.021\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#2b33e6\"></stop><stop offset=\"6.3%\" stop-color=\"#3139e9\"></stop><stop offset=\"12.5%\" stop-color=\"#363fec\"></stop><stop offset=\"18.8%\" stop-color=\"#3c44ef\"></stop><stop offset=\"25.0%\" stop-color=\"#4249f3\"></stop><stop offset=\"31.3%\" stop-color=\"#484ef6\"></stop><stop offset=\"37.5%\" stop-color=\"#4e53f9\"></stop><stop offset=\"43.8%\" stop-color=\"#5457fc\"></stop><stop offset=\"50.0%\" stop-color=\"#5a5cff\"></stop><stop offset=\"56.3%\" stop-color=\"#6569ff\"></stop><stop offset=\"62.5%\" stop-color=\"#7075ff\"></stop><stop offset=\"68.8%\" stop-color=\"#7c80ff\"></stop><stop offset=\"75.0%\" stop-color=\"#888bff\"></stop><stop offset=\"81.3%\" stop-color=\"#9595ff\"></stop><stop offset=\"87.5%\" stop-color=\"#a29fff\"></stop><stop offset=\"93.8%\" stop-color=\"#afa9ff\"></stop><stop offset=\"100.0%\" stop-color=\"#bdb3ff\"></stop></linearGradient><clipPath id=\"brand-l4\"><polygon points=\"16,46.5 84,46.5 84,25.5 16,25.5\"></polygon></clipPath><clipPath id=\"brand-l5\"><polygon points=\"16,48.5 84,48.5 84,23.5 16,23.5\"></polygon></clipPath><clipPath id=\"brand-l6\"><polygon points=\"81.410,86.630 71.410,10.630 50.589,13.369 60.589,89.369\"></polygon></clipPath><clipPath id=\"brand-l7\"><polygon points=\"83.393,86.369 73.393,10.369 48.606,13.630 58.606,89.630\"></polygon></clipPath><clipPath id=\"brand-l8\"><polygon points=\"12,74.5 88,74.5 88,53.5 12,53.5\"></polygon></clipPath><clipPath id=\"brand-l9\"><polygon points=\"12,76.5 88,76.5 88,51.5 12,51.5\"></polygon></clipPath><clipPath id=\"brand-l10\"><polygon points=\"39.410,89.369 49.410,13.369 28.589,10.630 18.589,86.630\"></polygon></clipPath><clipPath id=\"brand-l11\"><polygon points=\"41.393,89.630 51.393,13.630 26.606,10.369 16.606,86.369\"></polygon></clipPath></defs><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-l0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-l1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-l2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-l3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><g clip-path=\"url(#brand-l4)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l5)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-l2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l6)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l7)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-l1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l8)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l9)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-l3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l10)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l11)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-l0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g></svg></span><span class=\"channel-brand-text\"><strong>共议</strong><span>AI CoDiscuss</span></span></header>", 1),
56279
- K("div", v2, [
56280
- q(g2, {
56337
+ K("div", _2, [
56338
+ q(h2, {
56281
56339
  onSelect: t[0] ||= (e) => r("select", e),
56282
56340
  onManage: t[1] ||= (e) => r("manage", e),
56283
56341
  onCreate: t[2] ||= (e) => r("create", e),
@@ -56287,12 +56345,12 @@ var F$ = {
56287
56345
  onArchiveFolder: t[6] ||= (e) => r("archive-folder", e),
56288
56346
  onArchives: t[7] ||= (e) => r("archives")
56289
56347
  }),
56290
- K("div", y2, [K("button", {
56348
+ K("div", v2, [K("button", {
56291
56349
  type: "button",
56292
56350
  class: "channel-section-toggle",
56293
56351
  "aria-expanded": c.value,
56294
56352
  onClick: t[8] ||= (e) => c.value = !c.value
56295
- }, [q(n, { name: c.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[12] ||= J("频道工具", -1)], 8, b2)]),
56353
+ }, [q(n, { name: c.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[12] ||= J("频道工具", -1)], 8, y2)]),
56296
56354
  c.value ? (U(), G(o, {
56297
56355
  key: 0,
56298
56356
  items: l.value,
@@ -56308,7 +56366,7 @@ var F$ = {
56308
56366
  }
56309
56367
  }, null, 8, ["items"])) : Y("", !0)
56310
56368
  ]),
56311
- K("footer", x2, [
56369
+ K("footer", b2, [
56312
56370
  K("button", {
56313
56371
  type: "button",
56314
56372
  class: "channel-self-button",
@@ -56325,10 +56383,10 @@ var F$ = {
56325
56383
  "text",
56326
56384
  "alt",
56327
56385
  "class"
56328
- ]), K("span", C2, [K("strong", null, P(I(a).display_name(I(s))), 1), K("span", { class: M(["channel-connection", { "is-action": u.value }]) }, [K("span", {
56386
+ ]), K("span", S2, [K("strong", null, P(I(a).display_name(I(s))), 1), K("span", { class: M(["channel-connection", { "is-action": u.value }]) }, [K("span", {
56329
56387
  class: M({ connected: I(i).connected }),
56330
56388
  title: I(i).connected ? "网站已连接" : "网站未连接"
56331
- }, null, 10, w2), J(P(u.value || (I(i).connected ? "网站已连接" : I(i).reconnecting ? "正在重新连接…" : "网站未连接")), 1)], 2)])], 8, S2),
56389
+ }, null, 10, C2), J(P(u.value || (I(i).connected ? "网站已连接" : I(i).reconnecting ? "正在重新连接…" : "网站未连接")), 1)], 2)])], 8, x2),
56332
56390
  I(i).connected ? Y("", !0) : (U(), G(p, {
56333
56391
  key: 0,
56334
56392
  text: "重新连接"
@@ -56361,13 +56419,13 @@ var F$ = {
56361
56419
  ]);
56362
56420
  };
56363
56421
  }
56364
- }, E2 = { class: "workflow-control-row" }, D2 = ["title"], O2 = { class: "workflow-control-state" }, k2 = ["disabled"], A2 = {
56422
+ }, T2 = { class: "workflow-control-row" }, E2 = ["title"], D2 = { class: "workflow-control-state" }, O2 = ["disabled"], k2 = {
56365
56423
  key: 0,
56366
56424
  class: "workflow-control-note is-warning"
56367
- }, j2 = {
56425
+ }, A2 = {
56368
56426
  key: 1,
56369
56427
  class: "workflow-control-note"
56370
- }, M2 = /*#__PURE__*/ TH({
56428
+ }, j2 = /*#__PURE__*/ TH({
56371
56429
  __name: "WorkflowControl",
56372
56430
  props: {
56373
56431
  workflow: {
@@ -56392,7 +56450,7 @@ var F$ = {
56392
56450
  return (t, n) => {
56393
56451
  let o = sA;
56394
56452
  return U(), W("div", { class: M(["workflow-control", e.workflow.available ? "is-success" : "is-warning"]) }, [
56395
- K("div", E2, [
56453
+ K("div", T2, [
56396
56454
  q(o, {
56397
56455
  name: "i-lucide-workflow",
56398
56456
  class: "workflow-control-icon"
@@ -56400,8 +56458,8 @@ var F$ = {
56400
56458
  K("span", {
56401
56459
  class: "workflow-control-name",
56402
56460
  title: e.workflow.label
56403
- }, P(e.workflow.label), 9, D2),
56404
- K("span", O2, [n[4] ||= K("span", { class: "workflow-control-dot" }, null, -1), J(P(e.workflow.available ? "进行中" : "不可用"), 1)]),
56461
+ }, P(e.workflow.label), 9, E2),
56462
+ K("span", D2, [n[4] ||= K("span", { class: "workflow-control-dot" }, null, -1), J(P(e.workflow.available ? "进行中" : "不可用"), 1)]),
56405
56463
  c.value ? (U(), W("button", {
56406
56464
  key: 0,
56407
56465
  type: "button",
@@ -56409,7 +56467,7 @@ var F$ = {
56409
56467
  disabled: !!I(a),
56410
56468
  title: "请离工作流带来的成员并结束工作流,会话保留",
56411
56469
  onClick: n[0] ||= (e) => u.value = !0
56412
- }, P(s.value.length ? "请离成员" : "结束"), 9, k2)) : Y("", !0),
56470
+ }, P(s.value.length ? "请离成员" : "结束"), 9, O2)) : Y("", !0),
56413
56471
  e.dismissible ? (U(), W("button", {
56414
56472
  key: 1,
56415
56473
  type: "button",
@@ -56422,7 +56480,7 @@ var F$ = {
56422
56480
  class: "workflow-control-close-icon"
56423
56481
  })])) : Y("", !0)
56424
56482
  ]),
56425
- e.workflow.available ? l.value ? (U(), W("p", j2, P(s.value.map((e) => I(r).display_name(e.name)).join(" · ")), 1)) : Y("", !0) : (U(), W("p", A2, "无法读取工作流,成员沿用房间里的提示词。")),
56483
+ e.workflow.available ? l.value ? (U(), W("p", A2, P(s.value.map((e) => I(r).display_name(e.name)).join(" · ")), 1)) : Y("", !0) : (U(), W("p", k2, "无法读取工作流,成员沿用房间里的提示词。")),
56426
56484
  q(MG, {
56427
56485
  open: u.value,
56428
56486
  "onUpdate:open": n[2] ||= (e) => u.value = e,
@@ -56441,7 +56499,7 @@ var F$ = {
56441
56499
  ], 2);
56442
56500
  };
56443
56501
  }
56444
- }, [["__scopeId", "data-v-cb5ca872"]]), N2 = { class: "start-discussion-footer" }, P2 = 3, F2 = /*#__PURE__*/ TH({
56502
+ }, [["__scopeId", "data-v-cb5ca872"]]), M2 = { class: "start-discussion-footer" }, N2 = 3, P2 = /*#__PURE__*/ TH({
56445
56503
  __name: "StartDiscussionDialog",
56446
56504
  props: {
56447
56505
  open: {
@@ -56452,9 +56510,9 @@ var F$ = {
56452
56510
  },
56453
56511
  emits: ["update:open"],
56454
56512
  setup(e) {
56455
- let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(P2), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(null);
56513
+ let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(N2), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(null);
56456
56514
  R(t, (e) => {
56457
- e && (a.value = "", o.value = n.value.room?.limits?.max_rounds || P2, s.value = n.value.room?.limits?.max_minutes ?? 0, c.value = !1);
56515
+ e && (a.value = "", o.value = n.value.room?.limits?.max_rounds || N2, s.value = n.value.room?.limits?.max_minutes ?? 0, c.value = !1);
56458
56516
  });
56459
56517
  async function u() {
56460
56518
  l.value?.settle();
@@ -56514,7 +56572,7 @@ var F$ = {
56514
56572
  "minutes",
56515
56573
  "named_followup"
56516
56574
  ]),
56517
- K("div", N2, [q(p, {
56575
+ K("div", M2, [q(p, {
56518
56576
  label: "取消",
56519
56577
  color: "neutral",
56520
56578
  variant: "ghost",
@@ -56532,21 +56590,21 @@ var F$ = {
56532
56590
  }, 8, ["content", "open"]);
56533
56591
  };
56534
56592
  }
56535
- }, [["__scopeId", "data-v-8c194097"]]), I2 = { class: "pb-status-line" }, L2 = { role: "status" }, R2 = {
56593
+ }, [["__scopeId", "data-v-8c194097"]]), F2 = { class: "pb-status-line" }, I2 = { role: "status" }, L2 = {
56536
56594
  key: 0,
56537
56595
  class: "pb-status-detail"
56538
- }, z2 = { class: "pb-meters" }, B2 = { class: "pb-meter-label" }, V2 = {
56596
+ }, R2 = { class: "pb-meters" }, z2 = { class: "pb-meter-label" }, B2 = {
56539
56597
  key: 0,
56540
56598
  class: "pb-bar"
56541
- }, H2 = {
56599
+ }, V2 = {
56542
56600
  key: 0,
56543
56601
  class: "pb-section",
56544
56602
  "aria-label": "当前焦点"
56545
- }, U2 = {
56603
+ }, H2 = {
56546
56604
  key: 1,
56547
56605
  class: "pb-actions",
56548
56606
  "aria-label": "讨论操作"
56549
- }, W2 = { class: "progress-ending" }, G2 = ["disabled"], K2 = 90, q2 = {
56607
+ }, U2 = { class: "progress-ending" }, W2 = ["disabled"], G2 = 90, K2 = {
56550
56608
  __name: "ProgressBoard",
56551
56609
  setup(e) {
56552
56610
  let { view: t, bridge: n, act: r, pending: i } = xr("discussion"), a = Z(() => t.value.room), o = Z(() => a.value.session), s = Z(() => a.value.limits || {}), c = /* @__PURE__ */ F(0);
@@ -56612,24 +56670,24 @@ var F$ = {
56612
56670
  class: M(["pb-status", `is-${h.value.tone}`]),
56613
56671
  "aria-label": "讨论状态"
56614
56672
  }, [
56615
- K("div", I2, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", L2, P(h.value.title), 1)]),
56616
- h.value.detail ? (U(), W("p", R2, P(h.value.detail), 1)) : Y("", !0),
56617
- K("div", z2, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
56673
+ K("div", F2, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", I2, P(h.value.title), 1)]),
56674
+ h.value.detail ? (U(), W("p", L2, P(h.value.detail), 1)) : Y("", !0),
56675
+ K("div", R2, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
56618
56676
  key: e.label,
56619
56677
  class: "pb-meter"
56620
- }, [K("div", B2, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", V2, [K("i", { style: fe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
56678
+ }, [K("div", z2, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", B2, [K("i", { style: fe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
56621
56679
  ], 2),
56622
- m.value ? (U(), W("section", H2, [
56680
+ m.value ? (U(), W("section", V2, [
56623
56681
  t[7] ||= K("h4", null, "当前焦点", -1),
56624
56682
  K("p", { class: M(["pb-focus", { "is-expanded": p.value }]) }, P(m.value), 3),
56625
- m.value.length > K2 ? (U(), W("button", {
56683
+ m.value.length > G2 ? (U(), W("button", {
56626
56684
  key: 0,
56627
56685
  type: "button",
56628
56686
  class: "pb-link",
56629
56687
  onClick: t[0] ||= (e) => p.value = !p.value
56630
56688
  }, P(p.value ? "收起" : "展开"), 1)) : Y("", !0)
56631
56689
  ])) : Y("", !0),
56632
- a.value.archived ? Y("", !0) : (U(), W("section", U2, [
56690
+ a.value.archived ? Y("", !0) : (U(), W("section", H2, [
56633
56691
  l.value ? (U(), G(o, {
56634
56692
  key: 0,
56635
56693
  icon: "i-lucide-play",
@@ -56693,43 +56751,43 @@ var F$ = {
56693
56751
  body: "dialog-body"
56694
56752
  }
56695
56753
  }, {
56696
- body: L(() => [K("div", W2, [K("button", {
56754
+ body: L(() => [K("div", U2, [K("button", {
56697
56755
  type: "button",
56698
56756
  class: "progress-ending-option",
56699
56757
  disabled: !!I(i),
56700
56758
  onClick: v
56701
- }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, G2)])]),
56759
+ }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, W2)])]),
56702
56760
  _: 1
56703
56761
  }, 8, ["content", "open"])
56704
56762
  ], 64);
56705
56763
  };
56706
56764
  }
56707
- }, J2 = { class: "speaking-order" }, Y2 = {
56765
+ }, q2 = { class: "speaking-order" }, J2 = {
56708
56766
  key: 0,
56709
56767
  class: "speaking-order-divider",
56710
56768
  "aria-hidden": "true"
56711
- }, X2 = ["data-key", "data-movable"], Z2 = [
56769
+ }, Y2 = ["data-key", "data-movable"], X2 = [
56712
56770
  "aria-disabled",
56713
56771
  "aria-label",
56714
56772
  "title",
56715
56773
  "onPointerdown",
56716
56774
  "onKeydown"
56717
- ], Q2 = { class: "speaking-order-number" }, $2 = {
56775
+ ], Z2 = { class: "speaking-order-number" }, Q2 = {
56718
56776
  key: 1,
56719
56777
  class: "speaking-order-place",
56720
56778
  title: "已发言",
56721
56779
  "aria-label": "已发言"
56722
- }, e4 = ["title"], t4 = {
56780
+ }, $2 = ["title"], e4 = {
56723
56781
  key: 0,
56724
56782
  class: "speaking-order-later"
56725
- }, n4 = {
56783
+ }, t4 = {
56726
56784
  key: 1,
56727
56785
  class: "speaking-order-divider",
56728
56786
  "aria-hidden": "true"
56729
- }, r4 = {
56787
+ }, n4 = {
56730
56788
  class: "speaking-order-live",
56731
56789
  "aria-live": "polite"
56732
- }, i4 = "发言顺序刚有变化,已更新为最新顺序,请重新调整", a4 = /*#__PURE__*/ TH({
56790
+ }, r4 = "发言顺序刚有变化,已更新为最新顺序,请重新调整", i4 = /*#__PURE__*/ TH({
56733
56791
  __name: "SpeakingOrder",
56734
56792
  props: {
56735
56793
  away: {
@@ -56813,7 +56871,7 @@ var F$ = {
56813
56871
  let { from: n, gap: i, order: a } = p.value;
56814
56872
  p.value = null, document.removeEventListener("keydown", C, !0);
56815
56873
  let o = i > n ? i - 1 : i;
56816
- t || n === o || (a.revision === s.value.revision ? y(g(s.value.movable, n, o), s.value.movable[n], !1) : r.notify("warning", i4));
56874
+ t || n === o || (a.revision === s.value.revision ? y(g(s.value.movable, n, o), s.value.movable[n], !1) : r.notify("warning", r4));
56817
56875
  }
56818
56876
  function C(e) {
56819
56877
  if (!p.value || e.key !== "Escape") return;
@@ -56836,12 +56894,12 @@ var F$ = {
56836
56894
  }
56837
56895
  return (e, n) => {
56838
56896
  let i = sA;
56839
- return U(), W("div", J2, [K("ul", {
56897
+ return U(), W("div", q2, [K("ul", {
56840
56898
  ref_key: "list",
56841
56899
  ref: f,
56842
56900
  class: M(["pb-members", { "is-dragging": p.value }])
56843
56901
  }, [
56844
- (U(!0), W(H, null, B(_.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", Y2, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
56902
+ (U(!0), W(H, null, B(_.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", J2, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
56845
56903
  class: M(["pb-member speaking-order-row", [
56846
56904
  `is-${t.state}`,
56847
56905
  w(r),
@@ -56862,19 +56920,19 @@ var F$ = {
56862
56920
  onPointercancel: n[0] ||= (e) => S(e, !0),
56863
56921
  onLostpointercapture: n[1] ||= (e) => S(e, !0),
56864
56922
  onKeydown: [fu((e) => T(e, v(r), -1), ["up"]), fu((e) => T(e, v(r), 1), ["down"])]
56865
- }, [K("span", Q2, P(t.place), 1), q(i, {
56923
+ }, [K("span", Z2, P(t.place), 1), q(i, {
56866
56924
  name: "i-lucide-grip-vertical",
56867
56925
  class: "speaking-order-handle"
56868
- })], 40, Z2)) : t.state === "done" ? (U(), W("span", $2, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
56926
+ })], 40, X2)) : t.state === "done" ? (U(), W("span", Q2, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
56869
56927
  key: 2,
56870
56928
  class: "speaking-order-place",
56871
56929
  title: t.state === "speaking" ? "正在发言" : void 0
56872
- }, P(t.place || ""), 9, e4)), V(e.$slots, "default", {
56930
+ }, P(t.place || ""), 9, $2)), V(e.$slots, "default", {
56873
56931
  item: t,
56874
56932
  place: t.place
56875
- }, void 0, !0)], 10, X2)], 64))), 128)),
56876
- s.value.later?.length ? (U(), W("li", t4, [K("details", null, [K("summary", null, "后续已排 " + P(s.value.later.length) + " 轮", 1), K("ol", null, [(U(!0), W(H, null, B(s.value.later, (e, n) => (U(), W("li", { key: n }, [K("span", null, P(t.round ? `第 ${t.round + n + 1} 轮` : `后续第 ${n + 1} 轮`), 1), J(P(e.map((e) => I(r).display_name(e)).join(" → ")), 1)]))), 128))])])])) : Y("", !0),
56877
- t.away.length ? (U(), W("li", n4, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
56933
+ }, void 0, !0)], 10, Y2)], 64))), 128)),
56934
+ s.value.later?.length ? (U(), W("li", e4, [K("details", null, [K("summary", null, "后续已排 " + P(s.value.later.length) + " 轮", 1), K("ol", null, [(U(!0), W(H, null, B(s.value.later, (e, n) => (U(), W("li", { key: n }, [K("span", null, P(t.round ? `第 ${t.round + n + 1} 轮` : `后续第 ${n + 1} 轮`), 1), J(P(e.map((e) => I(r).display_name(e)).join(" → ")), 1)]))), 128))])])])) : Y("", !0),
56935
+ t.away.length ? (U(), W("li", t4, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
56878
56936
  (U(!0), W(H, null, B(t.away, (t) => (U(), W("li", {
56879
56937
  key: `away-${t}`,
56880
56938
  class: "pb-member speaking-order-row is-away"
@@ -56885,11 +56943,11 @@ var F$ = {
56885
56943
  },
56886
56944
  place: 0
56887
56945
  }, void 0, !0)]))), 128))
56888
- ], 2), K("p", r4, P(h.value), 1)]);
56946
+ ], 2), K("p", n4, P(h.value), 1)]);
56889
56947
  };
56890
56948
  }
56891
- }, [["__scopeId", "data-v-b9b6129c"]]), o4 = ["dispatched", "started"], s4 = (e) => e.pending > 0 || o4.includes(e.execution?.status);
56892
- function c4(e, { view: t, act: n, describe: r }) {
56949
+ }, [["__scopeId", "data-v-b9b6129c"]]), a4 = ["dispatched", "started"], o4 = (e) => e.pending > 0 || a4.includes(e.execution?.status);
56950
+ function s4(e, { view: t, act: n, describe: r }) {
56893
56951
  let i = t.access, a = i?.members?.find((t) => t.name === e.name)?.available, o = !i?.can_manage, s = ["active", "paused"].includes(t.room?.session?.status) && e.role === "host", c = (t, r, i, a = {}) => ({
56894
56952
  label: t,
56895
56953
  icon: r,
@@ -56935,7 +56993,7 @@ function c4(e, { view: t, act: n, describe: r }) {
56935
56993
  }] : []
56936
56994
  ],
56937
56995
  [
56938
- ...s4(e) ? [{
56996
+ ...o4(e) ? [{
56939
56997
  ...c("停止", "i-lucide-circle-stop", "interrupt"),
56940
56998
  color: "error"
56941
56999
  }] : [],
@@ -56953,47 +57011,47 @@ function c4(e, { view: t, act: n, describe: r }) {
56953
57011
  }
56954
57012
  //#endregion
56955
57013
  //#region frontend/FreeBoard.vue
56956
- var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4 = { class: "pb-mode" }, f4 = { class: "pb-status-line" }, p4 = { role: "status" }, m4 = {
57014
+ var c4 = { class: "progress-board is-docked" }, l4 = { class: "pb-header" }, u4 = { class: "pb-mode" }, d4 = { class: "pb-status-line" }, f4 = { role: "status" }, p4 = {
56957
57015
  key: 0,
56958
57016
  class: "pb-status-detail"
56959
- }, h4 = {
57017
+ }, m4 = {
56960
57018
  key: 1,
56961
57019
  class: "pb-chain-actions"
56962
- }, g4 = {
57020
+ }, h4 = {
56963
57021
  key: 2,
56964
57022
  class: "pb-chain-actions"
56965
- }, _4 = { class: "pb-meters" }, v4 = { class: "pb-meter-label" }, y4 = {
57023
+ }, g4 = { class: "pb-meters" }, _4 = { class: "pb-meter-label" }, v4 = {
56966
57024
  key: 0,
56967
57025
  class: "pb-bar"
56968
- }, b4 = {
57026
+ }, y4 = {
56969
57027
  key: 2,
56970
57028
  class: "pb-section",
56971
57029
  "aria-label": "Goal"
56972
- }, x4 = { role: "status" }, S4 = { class: "pb-goal-usage" }, C4 = {
57030
+ }, b4 = { role: "status" }, x4 = { class: "pb-goal-usage" }, S4 = {
56973
57031
  key: 1,
56974
57032
  class: "pb-goal-actions"
56975
- }, w4 = {
57033
+ }, C4 = {
56976
57034
  key: 3,
56977
57035
  class: "pb-section",
56978
57036
  "aria-label": "当前任务"
56979
- }, T4 = {
57037
+ }, w4 = {
56980
57038
  key: 4,
56981
57039
  class: "pb-section",
56982
57040
  "aria-label": "房间工作流"
56983
- }, E4 = {
57041
+ }, T4 = {
56984
57042
  class: "pb-section",
56985
57043
  "aria-label": "发言顺序"
56986
- }, D4 = { class: "pb-member-body" }, O4 = ["title"], k4 = {
57044
+ }, E4 = { class: "pb-member-body" }, D4 = ["title"], O4 = {
56987
57045
  key: 0,
56988
57046
  class: "member-id"
56989
- }, A4 = ["title"], j4 = ["title"], M4 = ["title"], N4 = ["title"], P4 = {
57047
+ }, k4 = ["title"], A4 = ["title"], j4 = ["title"], M4 = ["title"], N4 = {
56990
57048
  key: 5,
56991
57049
  class: "pb-actions pb-start-actions",
56992
57050
  "aria-label": "操作"
56993
- }, F4 = { class: "pb-start-pair" }, I4 = {
57051
+ }, P4 = { class: "pb-start-pair" }, F4 = {
56994
57052
  key: 0,
56995
57053
  class: "pb-free-note"
56996
- }, L4 = 90, R4 = 60, z4 = "discuss-workflow-hidden:", B4 = "discuss-conflicts-notified:", V4 = 2, H4 = /*#__PURE__*/ TH({
57054
+ }, I4 = 90, L4 = 60, R4 = "discuss-workflow-hidden:", z4 = "discuss-conflicts-notified:", B4 = 2, V4 = /*#__PURE__*/ TH({
56997
57055
  __name: "FreeBoard",
56998
57056
  setup(e) {
56999
57057
  let { view: t, bridge: n, act: r, pending: i } = xr("discussion"), a = ["dispatched", "started"], o = {
@@ -57008,7 +57066,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57008
57066
  t.value.launch.room_models,
57009
57067
  g.value?.id
57010
57068
  ], ([e, t, n]) => {
57011
- let r = z4 + e, i = "";
57069
+ let r = R4 + e, i = "";
57012
57070
  try {
57013
57071
  i = localStorage.getItem(r) || "";
57014
57072
  } catch {}
@@ -57023,7 +57081,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57023
57081
  }, { immediate: !0 });
57024
57082
  function b() {
57025
57083
  try {
57026
- localStorage.setItem(z4 + s.value.id, g.value.id);
57084
+ localStorage.setItem(R4 + s.value.id, g.value.id);
57027
57085
  } catch {}
57028
57086
  y.value = !0;
57029
57087
  }
@@ -57031,20 +57089,20 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57031
57089
  function w(e, t = []) {
57032
57090
  let r = [];
57033
57091
  try {
57034
- r = JSON.parse(localStorage.getItem(B4 + e) || "[]");
57092
+ r = JSON.parse(localStorage.getItem(z4 + e) || "[]");
57035
57093
  } catch {}
57036
57094
  for (let e of t.filter((e) => !r.includes(C(e)))) {
57037
- let t = e.files.slice(0, V4).join("、") + (e.files.length > V4 ? " 等" : "");
57095
+ let t = e.files.slice(0, B4).join("、") + (e.files.length > B4 ? " 等" : "");
57038
57096
  n.notify("warning", `可能冲突:${e.members.map((e) => n.display_name(e)).join(" 与 ")} 的重叠执行都改了 ${e.files.length} 个文件(${t}),修改者未确认`);
57039
57097
  }
57040
57098
  try {
57041
- localStorage.setItem(B4 + e, JSON.stringify(t.map(C)));
57099
+ localStorage.setItem(z4 + e, JSON.stringify(t.map(C)));
57042
57100
  } catch {}
57043
57101
  }
57044
57102
  R(() => [s.value.id, c.value.conflicts], ([e, t]) => w(e, t), { immediate: !0 });
57045
57103
  let T = (e) => e.access === "manual" && e.status === "active" && !e.registered_at;
57046
57104
  function E(e) {
57047
- return e.status === "away" ? "neutral" : T(e) ? "warning" : e.execution?.stale || e.pending && e.adopt_error ? "error" : e.held_until ? "warning" : s4(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
57105
+ return e.status === "away" ? "neutral" : T(e) ? "warning" : e.execution?.stale || e.pending && e.adopt_error ? "error" : e.held_until ? "warning" : o4(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
57048
57106
  }
57049
57107
  function D(e, t) {
57050
57108
  if (e.status === "away") return "已离开:不会被唤醒,可请回";
@@ -57076,7 +57134,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57076
57134
  title: "已存档",
57077
57135
  detail: ""
57078
57136
  };
57079
- let e = (c.value.members || []).filter(s4);
57137
+ let e = (c.value.members || []).filter(o4);
57080
57138
  if (e.some((e) => e.execution?.stale)) return {
57081
57139
  tone: "error",
57082
57140
  title: "执行失联",
@@ -57137,7 +57195,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57137
57195
  se.value = !1;
57138
57196
  });
57139
57197
  function ce(e) {
57140
- return c4(e, {
57198
+ return s4(e, {
57141
57199
  view: t.value,
57142
57200
  act: r,
57143
57201
  describe: (e) => {
@@ -57162,16 +57220,16 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57162
57220
  pe.value = !1;
57163
57221
  }), (e, a) => {
57164
57222
  let o = MA, c = pA, C = sA, w = $V;
57165
- return U(), W("div", l4, [
57166
- K("header", u4, [K("strong", null, P(l.value ? "讨论进度" : "自由协作"), 1), K("span", d4, P(h.value ? `${I(n).display_name(h.value.name)} 主持` : "无主持人"), 1)]),
57167
- l.value ? (U(), G(q2, { key: 0 })) : (U(), W("section", {
57223
+ return U(), W("div", c4, [
57224
+ K("header", l4, [K("strong", null, P(l.value ? "讨论进度" : "自由协作"), 1), K("span", u4, P(h.value ? `${I(n).display_name(h.value.name)} 主持` : "无主持人"), 1)]),
57225
+ l.value ? (U(), G(K2, { key: 0 })) : (U(), W("section", {
57168
57226
  key: 1,
57169
57227
  class: M(["pb-status", `is-${re.value.tone}`]),
57170
57228
  "aria-label": "房间状态"
57171
57229
  }, [
57172
- K("div", f4, [a[13] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", p4, P(re.value.title), 1)]),
57173
- re.value.detail ? (U(), W("p", m4, P(re.value.detail), 1)) : Y("", !0),
57174
- re.value.title === "处理中" && I(t).access?.can_manage ? (U(), W("div", h4, [q(o, {
57230
+ K("div", d4, [a[13] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", f4, P(re.value.title), 1)]),
57231
+ re.value.detail ? (U(), W("p", p4, P(re.value.detail), 1)) : Y("", !0),
57232
+ re.value.title === "处理中" && I(t).access?.can_manage ? (U(), W("div", m4, [q(o, {
57175
57233
  label: "全部停止",
57176
57234
  icon: "i-lucide-circle-stop",
57177
57235
  size: "sm",
@@ -57183,7 +57241,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57183
57241
  disabled: !!I(i),
57184
57242
  onClick: a[0] ||= (e) => I(r)("stop_room")
57185
57243
  }, null, 8, ["loading", "disabled"])])) : Y("", !0),
57186
- re.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", g4, [(U(!0), W(H, null, B(ee.value, (e) => (U(), G(o, {
57244
+ re.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", h4, [(U(!0), W(H, null, B(ee.value, (e) => (U(), G(o, {
57187
57245
  key: e,
57188
57246
  label: `继续 ${e} 轮`,
57189
57247
  icon: "i-lucide-play",
@@ -57200,23 +57258,23 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57200
57258
  "disabled",
57201
57259
  "onClick"
57202
57260
  ]))), 128))])) : Y("", !0),
57203
- K("div", _4, [(U(!0), W(H, null, B(ae.value, (e) => (U(), W("div", {
57261
+ K("div", g4, [(U(!0), W(H, null, B(ae.value, (e) => (U(), W("div", {
57204
57262
  key: e.label,
57205
57263
  class: "pb-meter"
57206
- }, [K("div", v4, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", y4, [K("i", { style: fe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
57264
+ }, [K("div", _4, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", v4, [K("i", { style: fe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
57207
57265
  ], 2)),
57208
- u.value ? (U(), W("section", b4, [
57266
+ u.value ? (U(), W("section", y4, [
57209
57267
  a[15] ||= K("h4", null, "Goal", -1),
57210
- K("div", { class: M(["pb-goal-status", u.value.status === "active" ? "is-success" : "is-paused"]) }, [a[14] ||= K("span", { class: "pb-dot" }, null, -1), K("span", x4, P(u.value.status === "active" ? u.value.idle ? "进行中 · 空闲,稍后唤醒主持人" : "进行中" : "已暂停"), 1)], 2),
57268
+ K("div", { class: M(["pb-goal-status", u.value.status === "active" ? "is-success" : "is-paused"]) }, [a[14] ||= K("span", { class: "pb-dot" }, null, -1), K("span", b4, P(u.value.status === "active" ? u.value.idle ? "进行中 · 空闲,稍后唤醒主持人" : "进行中" : "已暂停"), 1)], 2),
57211
57269
  K("p", { class: M(["pb-focus", { "is-expanded": f.value }]) }, P(u.value.objective), 3),
57212
- u.value.objective.length > R4 ? (U(), W("button", {
57270
+ u.value.objective.length > L4 ? (U(), W("button", {
57213
57271
  key: 0,
57214
57272
  type: "button",
57215
57273
  class: "pb-link",
57216
57274
  onClick: a[1] ||= (e) => f.value = !f.value
57217
57275
  }, P(f.value ? "收起" : "展开"), 1)) : Y("", !0),
57218
- K("p", S4, P(d.value), 1),
57219
- I(t).access?.can_manage && !s.value.archived ? (U(), W("div", C4, [
57276
+ K("p", x4, P(d.value), 1),
57277
+ I(t).access?.can_manage && !s.value.archived ? (U(), W("div", S4, [
57220
57278
  q(o, {
57221
57279
  label: u.value.status === "active" ? "暂停" : "继续",
57222
57280
  icon: u.value.status === "active" ? "i-lucide-pause" : "i-lucide-play",
@@ -57256,24 +57314,24 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57256
57314
  }, null, 8, ["loading", "disabled"])
57257
57315
  ])) : Y("", !0)
57258
57316
  ])) : Y("", !0),
57259
- oe.value && !l.value ? (U(), W("section", w4, [
57317
+ oe.value && !l.value ? (U(), W("section", C4, [
57260
57318
  a[16] ||= K("h4", null, "当前任务", -1),
57261
57319
  K("p", { class: M(["pb-focus", { "is-expanded": se.value }]) }, P(oe.value), 3),
57262
- oe.value.length > L4 ? (U(), W("button", {
57320
+ oe.value.length > I4 ? (U(), W("button", {
57263
57321
  key: 0,
57264
57322
  type: "button",
57265
57323
  class: "pb-link",
57266
57324
  onClick: a[5] ||= (e) => se.value = !se.value
57267
57325
  }, P(se.value ? "收起" : "展开"), 1)) : Y("", !0)
57268
57326
  ])) : Y("", !0),
57269
- g.value && !y.value ? (U(), W("section", T4, [a[17] ||= K("h4", null, "工作流", -1), q(M2, {
57327
+ g.value && !y.value ? (U(), W("section", w4, [a[17] ||= K("h4", null, "工作流", -1), q(j2, {
57270
57328
  workflow: g.value,
57271
57329
  dismissible: "",
57272
57330
  onDismiss: b
57273
57331
  }, null, 8, ["workflow"])])) : Y("", !0),
57274
- K("section", E4, [
57332
+ K("section", T4, [
57275
57333
  a[19] ||= K("h4", null, "发言顺序", -1),
57276
- q(a4, {
57334
+ q(i4, {
57277
57335
  away: S.value,
57278
57336
  round: m.value
57279
57337
  }, {
@@ -57290,34 +57348,34 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57290
57348
  "alt",
57291
57349
  "class"
57292
57350
  ]),
57293
- K("div", D4, [
57351
+ K("div", E4, [
57294
57352
  K("div", {
57295
57353
  class: "pb-member-name",
57296
57354
  title: s.value.descriptions?.[r.name] || void 0
57297
57355
  }, [
57298
57356
  J(P(I(n).display_name(r.name)), 1),
57299
- I(n).display_name(r.name) === r.name ? Y("", !0) : (U(), W("span", k4, P(r.name), 1)),
57357
+ I(n).display_name(r.name) === r.name ? Y("", !0) : (U(), W("span", O4, P(r.name), 1)),
57300
57358
  r.role === "host" ? (U(), G(C, {
57301
57359
  key: 1,
57302
57360
  name: "i-lucide-crown",
57303
57361
  title: "主持人"
57304
57362
  })) : Y("", !0),
57305
- K("small", { title: k(r) || void 0 }, P(O(r)), 9, A4)
57306
- ], 8, O4),
57363
+ K("small", { title: k(r) || void 0 }, P(O(r)), 9, k4)
57364
+ ], 8, D4),
57307
57365
  _(r.name) ? (U(), W("small", {
57308
57366
  key: 0,
57309
57367
  class: "pb-workflow-member",
57310
57368
  title: `来自工作流「${g.value.label}」`
57311
- }, "工作流", 8, j4)) : Y("", !0),
57369
+ }, "工作流", 8, A4)) : Y("", !0),
57312
57370
  A(r) ? (U(), W("div", {
57313
57371
  key: 1,
57314
57372
  class: "pb-member-model",
57315
57373
  title: I(n).participant_session_hint(r.name, s.value, I(t).launch.room_models)
57316
- }, P(A(r)), 9, M4)) : Y("", !0),
57374
+ }, P(A(r)), 9, j4)) : Y("", !0),
57317
57375
  K("div", { class: M(["pb-member-status", `is-${E(r)}`]) }, [a[18] ||= K("span", { class: "pb-dot" }, null, -1), K("span", {
57318
57376
  class: "pb-member-status-text",
57319
57377
  title: r.execution?.status === "failed" ? r.execution.result : r.held_until ? D(r, e.state) : void 0
57320
- }, P(D(r, e.state)), 9, N4)], 2)
57378
+ }, P(D(r, e.state)), 9, M4)], 2)
57321
57379
  ]),
57322
57380
  q(w, {
57323
57381
  items: ce(r),
@@ -57350,7 +57408,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57350
57408
  }
57351
57409
  }))
57352
57410
  ]),
57353
- !s.value.archived && !l.value && !u.value ? (U(), W("section", P4, [K("div", F4, [q(o, {
57411
+ !s.value.archived && !l.value && !u.value ? (U(), W("section", N4, [K("div", P4, [q(o, {
57354
57412
  icon: "i-lucide-messages-square",
57355
57413
  label: "开启讨论",
57356
57414
  size: "sm",
@@ -57370,8 +57428,8 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57370
57428
  title: "主持人持续推进一个目标:房间空闲时自动接着做,直到完成、卡住或你结束",
57371
57429
  disabled: !me.value,
57372
57430
  onClick: a[8] ||= (e) => p.value = !0
57373
- }, null, 8, ["disabled"])]), me.value ? Y("", !0) : (U(), W("p", I4, "开启讨论或 Goal 需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
57374
- q(F2, {
57431
+ }, null, 8, ["disabled"])]), me.value ? Y("", !0) : (U(), W("p", F4, "开启讨论或 Goal 需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
57432
+ q(P2, {
57375
57433
  open: pe.value,
57376
57434
  "onUpdate:open": a[9] ||= (e) => pe.value = e
57377
57435
  }, null, 8, ["open"]),
@@ -57417,31 +57475,31 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57417
57475
  ]);
57418
57476
  };
57419
57477
  }
57420
- }, [["__scopeId", "data-v-01f04892"]]), U4 = {
57478
+ }, [["__scopeId", "data-v-01f04892"]]), H4 = {
57421
57479
  class: "merged-section discussion-history",
57422
57480
  "aria-label": "讨论记录"
57423
- }, W4 = {
57481
+ }, U4 = {
57424
57482
  key: 0,
57425
57483
  class: "fine-print"
57426
- }, G4 = { class: "history-timeline" }, K4 = {
57484
+ }, W4 = { class: "history-timeline" }, G4 = {
57427
57485
  key: 0,
57428
57486
  class: "history-free"
57429
- }, q4 = {
57487
+ }, K4 = {
57430
57488
  key: 1,
57431
57489
  class: "history-discussion"
57432
- }, J4 = { class: "history-meta" }, Y4 = {
57490
+ }, q4 = { class: "history-meta" }, J4 = {
57433
57491
  key: 0,
57434
57492
  class: "fine-print"
57435
- }, X4 = {
57493
+ }, Y4 = {
57436
57494
  key: 1,
57437
57495
  class: "fine-print"
57438
- }, Z4 = {
57496
+ }, X4 = {
57439
57497
  key: 2,
57440
57498
  class: "history-conclusion"
57441
- }, Q4 = ["onClick"], $4 = ["innerHTML"], e3 = {
57499
+ }, Z4 = ["onClick"], Q4 = ["innerHTML"], $4 = {
57442
57500
  key: 1,
57443
57501
  class: "fine-print"
57444
- }, t3 = ["aria-expanded", "onClick"], n3 = ["innerHTML"], r3 = /*#__PURE__*/ TH({
57502
+ }, e3 = ["aria-expanded", "onClick"], t3 = ["innerHTML"], n3 = /*#__PURE__*/ TH({
57445
57503
  __name: "DiscussionHistory",
57446
57504
  emits: ["detail"],
57447
57505
  setup(e) {
@@ -57499,16 +57557,16 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57499
57557
  }
57500
57558
  return (e, t) => {
57501
57559
  let l = kV, d = sA;
57502
- return U(), W("section", U4, [
57560
+ return U(), W("section", H4, [
57503
57561
  t[2] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "讨论记录"), K("p", null, "每场讨论及其结束时的结论,最新的在上;自由协作的消息按段汇总。")])], -1),
57504
- i.value.discussions?.length ? Y("", !0) : (U(), W("p", W4, "还没有开启过讨论。")),
57505
- K("ol", G4, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
57562
+ i.value.discussions?.length ? Y("", !0) : (U(), W("p", U4, "还没有开启过讨论。")),
57563
+ K("ol", W4, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
57506
57564
  key: i.key,
57507
57565
  class: M(`is-${i.kind}`)
57508
57566
  }, [t[1] ||= K("span", {
57509
57567
  class: "history-dot",
57510
57568
  "aria-hidden": "true"
57511
- }, null, -1), i.kind === "free" ? (U(), W("p", K4, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", q4, [
57569
+ }, null, -1), i.kind === "free" ? (U(), W("p", G4, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", K4, [
57512
57570
  K("header", null, [K("h3", null, [K("small", null, "讨论 " + P(i.number), 1), J(P(i.goal || "未填写目标"), 1)]), q(l, {
57513
57571
  color: r[i.status]?.color || "neutral",
57514
57572
  variant: "subtle",
@@ -57517,80 +57575,80 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57517
57575
  default: L(() => [J(P(r[i.status]?.label || i.status), 1)]),
57518
57576
  _: 2
57519
57577
  }, 1032, ["color"])]),
57520
- K("p", J4, [
57578
+ K("p", q4, [
57521
57579
  J(P(s(i.created_at)) + " 开始 · " + P(i.count) + " 条消息", 1),
57522
57580
  i.status === "concluded" && i.state !== null ? (U(), W(H, { key: 0 }, [J(" · " + P(I(n).stop_reason_label(i)), 1)], 64)) : Y("", !0),
57523
57581
  i.concluded_at ? (U(), W(H, { key: 1 }, [J(" · " + P(s(i.concluded_at)) + " 结束", 1)], 64)) : Y("", !0)
57524
57582
  ]),
57525
- i.result?.current ? (U(), W("p", Y4, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", X4, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", Z4, [
57583
+ i.result?.current ? (U(), W("p", J4, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", Y4, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", X4, [
57526
57584
  K("small", null, [J(P(i.result.label), 1), i.result.until ? (U(), W("button", {
57527
57585
  key: 0,
57528
57586
  type: "button",
57529
57587
  class: "subtle-link",
57530
57588
  onClick: (t) => e.$emit("detail", i.result.until)
57531
- }, "整理至 #" + P(i.result.until), 9, Q4)) : Y("", !0)]),
57589
+ }, "整理至 #" + P(i.result.until), 9, Z4)) : Y("", !0)]),
57532
57590
  i.result.brief ? (U(), W("div", {
57533
57591
  key: 0,
57534
57592
  class: "markdown-body",
57535
57593
  innerHTML: o(i.result.brief)
57536
- }, null, 8, $4)) : i.result.state ? Y("", !0) : (U(), W("p", e3, "主持人没有留下简报或共识。")),
57594
+ }, null, 8, Q4)) : i.result.state ? Y("", !0) : (U(), W("p", $4, "主持人没有留下简报或共识。")),
57537
57595
  i.result.state ? (U(), W(H, { key: 2 }, [K("button", {
57538
57596
  type: "button",
57539
57597
  class: "history-toggle",
57540
57598
  "aria-expanded": a.value.has(i.id),
57541
57599
  onClick: (e) => u(i.id)
57542
- }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, t3), a.value.has(i.id) ? (U(), W("div", {
57600
+ }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, e3), a.value.has(i.id) ? (U(), W("div", {
57543
57601
  key: 0,
57544
57602
  class: "markdown-body history-state",
57545
57603
  innerHTML: o(i.result.state)
57546
- }, null, 8, n3)) : Y("", !0)], 64)) : Y("", !0)
57604
+ }, null, 8, t3)) : Y("", !0)], 64)) : Y("", !0)
57547
57605
  ])) : Y("", !0)
57548
57606
  ]))], 2))), 128))])
57549
57607
  ]);
57550
57608
  };
57551
57609
  }
57552
- }, [["__scopeId", "data-v-ecc64789"]]), i3 = {
57610
+ }, [["__scopeId", "data-v-ecc64789"]]), r3 = {
57553
57611
  class: "merged-section room-overview",
57554
57612
  "aria-label": "成员与设置"
57555
- }, a3 = { class: "page-heading" }, o3 = { class: "overview-section" }, s3 = {
57613
+ }, i3 = { class: "page-heading" }, a3 = { class: "overview-section" }, o3 = {
57556
57614
  key: 0,
57557
57615
  class: "overview-local",
57558
57616
  role: "status"
57559
- }, c3 = {
57617
+ }, s3 = {
57560
57618
  class: "member-cards",
57561
57619
  "aria-label": "成员"
57562
- }, l3 = [
57620
+ }, c3 = [
57563
57621
  "draggable",
57564
57622
  "onDragstart",
57565
57623
  "onDragover",
57566
57624
  "onDragleave",
57567
57625
  "onDrop"
57568
- ], u3 = { class: "member-card-head" }, d3 = { class: "member-card-name" }, f3 = {
57626
+ ], l3 = { class: "member-card-head" }, u3 = { class: "member-card-name" }, d3 = {
57569
57627
  key: 0,
57570
57628
  class: "member-id"
57571
- }, p3 = ["title"], m3 = { class: "member-card-facts" }, h3 = ["aria-label", "title"], g3 = [
57629
+ }, f3 = ["title"], p3 = { class: "member-card-facts" }, m3 = ["aria-label", "title"], h3 = [
57572
57630
  "aria-checked",
57573
57631
  "disabled",
57574
57632
  "onClick"
57575
- ], _3 = { key: 1 }, v3 = ["title"], y3 = [
57633
+ ], g3 = { key: 1 }, _3 = ["title"], v3 = [
57576
57634
  "aria-label",
57577
57635
  "aria-busy",
57578
57636
  "title"
57579
- ], b3 = [
57637
+ ], y3 = [
57580
57638
  "aria-checked",
57581
57639
  "title",
57582
57640
  "disabled",
57583
57641
  "onClick"
57584
- ], x3 = ["title"], S3 = ["aria-label"], C3 = { key: 0 }, w3 = { class: "overview-section" }, T3 = { class: "overview-settings" }, E3 = { class: "overview-workflow" }, D3 = {
57642
+ ], b3 = ["title"], x3 = ["aria-label"], S3 = { key: 0 }, C3 = { class: "overview-section" }, w3 = { class: "overview-settings" }, T3 = { class: "overview-workflow" }, E3 = {
57585
57643
  key: 1,
57586
57644
  class: "overview-muted"
57587
- }, O3 = { key: 0 }, k3 = { key: 1 }, A3 = { key: 1 }, j3 = { key: 2 }, M3 = { class: "overview-address" }, N3 = { key: 3 }, P3 = {
57645
+ }, D3 = { key: 0 }, O3 = { key: 1 }, k3 = { key: 1 }, A3 = { key: 2 }, j3 = { class: "overview-address" }, M3 = { key: 3 }, N3 = {
57588
57646
  key: 0,
57589
57647
  class: "overview-muted"
57590
- }, F3 = {
57648
+ }, P3 = {
57591
57649
  key: 2,
57592
57650
  class: "overview-muted"
57593
- }, I3 = { class: "overview-model-actions" }, L3 = "设为主持人", R3 = /*#__PURE__*/ TH({
57651
+ }, F3 = { class: "overview-model-actions" }, I3 = "设为主持人", L3 = /*#__PURE__*/ TH({
57594
57652
  __name: "RoomOverview",
57595
57653
  setup(e) {
57596
57654
  let { view: t, bridge: n, act: r } = xr("discussion"), i = { manual: "手动接入" }, a = {
@@ -57787,7 +57845,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57787
57845
  ].filter(Boolean).join(" · ");
57788
57846
  });
57789
57847
  function he(e) {
57790
- let [n, i, a] = c4(te(e), {
57848
+ let [n, i, a] = s4(te(e), {
57791
57849
  view: t.value,
57792
57850
  act: r,
57793
57851
  describe: (e) => {
@@ -57796,8 +57854,8 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57796
57854
  });
57797
57855
  return d.value ? {
57798
57856
  taking_part: n,
57799
- host: i.find((e) => e.label === L3) || null,
57800
- place: [...i.filter((e) => e.label !== L3), ...a]
57857
+ host: i.find((e) => e.label === I3) || null,
57858
+ place: [...i.filter((e) => e.label !== I3), ...a]
57801
57859
  } : {
57802
57860
  taking_part: n,
57803
57861
  host: null,
@@ -57819,8 +57877,8 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57819
57877
  let be = Z(() => `${t.value.room_site}/r/${u.value.id}`), xe = Z(() => u.value.created_at ? new Date(u.value.created_at).toLocaleString("zh-CN", { hour12: !1 }) : "");
57820
57878
  return (e, i) => {
57821
57879
  let s = MA, l = sA, ae = pA, oe = kV, Se = XV, Ce = vV;
57822
- return U(), W("section", i3, [
57823
- K("div", a3, [i[11] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
57880
+ return U(), W("section", r3, [
57881
+ K("div", i3, [i[11] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
57824
57882
  key: 0,
57825
57883
  icon: "i-lucide-plus",
57826
57884
  label: "邀请 AI 加入",
@@ -57830,15 +57888,15 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57830
57888
  disabled: !I(t).access?.can_manage,
57831
57889
  onClick: i[0] ||= (e) => ge.value = !0
57832
57890
  }, null, 8, ["disabled"]))]),
57833
- K("section", o3, [
57891
+ K("section", a3, [
57834
57892
  i[16] ||= K("h3", null, "成员", -1),
57835
- p.value ? (U(), W("p", s3, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
57893
+ p.value ? (U(), W("p", o3, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
57836
57894
  key: 0,
57837
57895
  type: "button",
57838
57896
  class: "subtle-link",
57839
57897
  onClick: i[1] ||= (e) => I(n).reload_room_models()
57840
57898
  }, "重试")) : Y("", !0)])) : Y("", !0),
57841
- K("ul", c3, [(U(!0), W(H, null, B(b.value, (e) => (U(), W("li", {
57899
+ K("ul", s3, [(U(!0), W(H, null, B(b.value, (e) => (U(), W("li", {
57842
57900
  key: e.name,
57843
57901
  class: M(["member-card", {
57844
57902
  "is-dimmed": S.value === e.name,
@@ -57851,7 +57909,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57851
57909
  onDrop: uu((t) => D(e), ["prevent"]),
57852
57910
  onDragend: O
57853
57911
  }, [
57854
- K("header", u3, [
57912
+ K("header", l3, [
57855
57913
  x.value && y.value.movable.includes(e.name) ? (U(), G(l, {
57856
57914
  key: 0,
57857
57915
  name: "i-lucide-grip-vertical",
@@ -57872,9 +57930,9 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57872
57930
  "alt",
57873
57931
  "class"
57874
57932
  ]),
57875
- K("div", d3, [K("strong", null, [
57933
+ K("div", u3, [K("strong", null, [
57876
57934
  J(P(I(n).display_name(e.name)), 1),
57877
- I(n).display_name(e.name) === e.name ? Y("", !0) : (U(), W("span", f3, P(e.name), 1)),
57935
+ I(n).display_name(e.name) === e.name ? Y("", !0) : (U(), W("span", d3, P(e.name), 1)),
57878
57936
  e.role === "host" ? (U(), G(l, {
57879
57937
  key: 1,
57880
57938
  name: "i-lucide-crown",
@@ -57883,7 +57941,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57883
57941
  ]), u.value.descriptions?.[e.name] ? (U(), W("small", {
57884
57942
  key: 0,
57885
57943
  title: u.value.descriptions[e.name]
57886
- }, P(u.value.descriptions[e.name]), 9, p3)) : Y("", !0)]),
57944
+ }, P(u.value.descriptions[e.name]), 9, f3)) : Y("", !0)]),
57887
57945
  he(e).host ? (U(), G(s, {
57888
57946
  key: 1,
57889
57947
  icon: he(e).host.icon,
@@ -57918,7 +57976,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57918
57976
  _: 2
57919
57977
  }, 1032, ["color"])
57920
57978
  ]),
57921
- K("dl", m3, [
57979
+ K("dl", p3, [
57922
57980
  K("div", null, [i[13] ||= K("dt", null, "接入", -1), K("dd", null, [ee(te(e)).value ? (U(), W("div", {
57923
57981
  key: 0,
57924
57982
  class: M(["expert-card-modes overview-switch", { "is-locked": !ee(te(e)).editable }]),
@@ -57932,7 +57990,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57932
57990
  "aria-checked": ee(te(e)).value === t.value,
57933
57991
  disabled: !ee(te(e)).editable || !!h.value,
57934
57992
  onClick: (n) => ne(e, t.value)
57935
- }, P(t.label), 9, g3)), 64))], 10, h3)) : (U(), W("span", _3, P(ee(e).text), 1))])]),
57993
+ }, P(t.label), 9, h3)), 64))], 10, m3)) : (U(), W("span", g3, P(ee(e).text), 1))])]),
57936
57994
  K("div", null, [i[14] ||= K("dt", null, "模型", -1), K("dd", {
57937
57995
  class: M(["overview-model", { "overview-muted": m(e.name) }]),
57938
57996
  title: I(n).participant_model(e.name, u.value, f.value) || void 0
@@ -57945,7 +58003,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57945
58003
  "aria-label": `更改 ${e.name} 的模型与强度`,
57946
58004
  title: "更改模型与思考强度",
57947
58005
  onClick: (t) => j(e)
57948
- }, null, 8, ["aria-label", "onClick"])) : Y("", !0)], 10, v3)]),
58006
+ }, null, 8, ["aria-label", "onClick"])) : Y("", !0)], 10, _3)]),
57949
58007
  K("div", null, [i[15] ||= K("dt", null, "项目文件", -1), K("dd", null, [re(e).value ? (U(), W("div", {
57950
58008
  key: 0,
57951
58009
  class: M(["expert-card-modes overview-switch", { "is-locked": !re(e).editable }]),
@@ -57961,11 +58019,11 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57961
58019
  title: t.hint,
57962
58020
  disabled: t.disabled || !re(e).editable || !!h.value,
57963
58021
  onClick: (n) => ie(e, t.value)
57964
- }, P(t.label), 9, b3))), 128))], 10, y3)) : (U(), W("span", {
58022
+ }, P(t.label), 9, y3))), 128))], 10, v3)) : (U(), W("span", {
57965
58023
  key: 1,
57966
58024
  class: "overview-muted",
57967
58025
  title: re(e).hint
57968
- }, P(re(e).text), 9, x3))])])
58026
+ }, P(re(e).text), 9, b3))])])
57969
58027
  ]),
57970
58028
  K("footer", {
57971
58029
  class: "member-card-actions",
@@ -57984,7 +58042,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57984
58042
  "label",
57985
58043
  "disabled",
57986
58044
  "onClick"
57987
- ]))), 128))]), he(e).place.length ? (U(), W("div", C3, [(U(!0), W(H, null, B(he(e).place, (e) => (U(), G(s, {
58045
+ ]))), 128))]), he(e).place.length ? (U(), W("div", S3, [(U(!0), W(H, null, B(he(e).place, (e) => (U(), G(s, {
57988
58046
  key: e.label,
57989
58047
  icon: e.icon,
57990
58048
  label: e.label,
@@ -57999,30 +58057,30 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
57999
58057
  "color",
58000
58058
  "disabled",
58001
58059
  "onClick"
58002
- ]))), 128))])) : Y("", !0)], 8, S3)
58003
- ], 42, l3))), 128))]),
58060
+ ]))), 128))])) : Y("", !0)], 8, x3)
58061
+ ], 42, c3))), 128))]),
58004
58062
  i[17] ||= K("p", { class: "overview-result" }, "复制说明或下载配置不代表 AI 已接入,以实际回答和运行记录为准。", -1)
58005
58063
  ]),
58006
- K("section", w3, [i[26] ||= K("h3", null, "协作设置", -1), K("dl", T3, [
58064
+ K("section", C3, [i[26] ||= K("h3", null, "协作设置", -1), K("dl", w3, [
58007
58065
  K("div", null, [i[18] ||= K("dt", null, "主持人", -1), K("dd", null, P(u.value.host ? I(n).display_name(u.value.host) : "未指定"), 1)]),
58008
58066
  K("div", null, [i[19] ||= K("dt", null, "智能调度", -1), K("dd", null, P(me.value), 1)]),
58009
- K("div", null, [i[20] ||= K("dt", null, "工作流", -1), K("dd", E3, [k.value ? (U(), G(M2, {
58067
+ K("div", null, [i[20] ||= K("dt", null, "工作流", -1), K("dd", T3, [k.value ? (U(), G(j2, {
58010
58068
  key: 0,
58011
58069
  workflow: k.value
58012
- }, null, 8, ["workflow"])) : (U(), W("span", D3, "没有进行中的工作流;在输入框打 / 或邀请成员时选择"))])]),
58013
- f.value?.registered ? (U(), W("div", O3, [i[21] ||= K("dt", null, "主持人自建工作流", -1), K("dd", null, [q(xQ, {
58070
+ }, null, 8, ["workflow"])) : (U(), W("span", E3, "没有进行中的工作流;在输入框打 / 或邀请成员时选择"))])]),
58071
+ f.value?.registered ? (U(), W("div", D3, [i[21] ||= K("dt", null, "主持人自建工作流", -1), K("dd", null, [q(xQ, {
58014
58072
  "model-value": !!f.value.host_workflows,
58015
58073
  disabled: !I(t).access?.can_manage || u.value.archived,
58016
58074
  "onUpdate:modelValue": i[3] ||= (e) => I(r)("set_room_host_workflows", e)
58017
58075
  }, null, 8, ["model-value", "disabled"])])])) : Y("", !0),
58018
- u.value.free?.max_rounds ? (U(), W("div", k3, [i[22] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), G(EZ, {
58076
+ u.value.free?.max_rounds ? (U(), W("div", O3, [i[22] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), G(EZ, {
58019
58077
  key: 0,
58020
58078
  "model-value": _.value,
58021
58079
  disabled: g.value,
58022
58080
  "onUpdate:modelValue": v
58023
- }, null, 8, ["model-value", "disabled"])) : (U(), W("span", A3, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
58024
- d.value ? Y("", !0) : (U(), W("div", j3, [i[23] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
58025
- K("div", null, [i[24] ||= K("dt", null, "阅读地址", -1), K("dd", M3, [K("code", null, P(be.value), 1), q(s, {
58081
+ }, null, 8, ["model-value", "disabled"])) : (U(), W("span", k3, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
58082
+ d.value ? Y("", !0) : (U(), W("div", A3, [i[23] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
58083
+ K("div", null, [i[24] ||= K("dt", null, "阅读地址", -1), K("dd", j3, [K("code", null, P(be.value), 1), q(s, {
58026
58084
  icon: "i-lucide-copy",
58027
58085
  color: "neutral",
58028
58086
  variant: "ghost",
@@ -58030,7 +58088,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
58030
58088
  "aria-label": "复制阅读地址",
58031
58089
  onClick: i[4] ||= (e) => I(r)("copy", be.value)
58032
58090
  })])]),
58033
- xe.value ? (U(), W("div", N3, [i[25] ||= K("dt", null, "创建时间", -1), K("dd", null, P(xe.value), 1)])) : Y("", !0)
58091
+ xe.value ? (U(), W("div", M3, [i[25] ||= K("dt", null, "创建时间", -1), K("dd", null, P(xe.value), 1)])) : Y("", !0)
58034
58092
  ])]),
58035
58093
  q(AK, {
58036
58094
  open: ge.value,
@@ -58075,7 +58133,7 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
58075
58133
  "title",
58076
58134
  "aria-label"
58077
58135
  ])]),
58078
- ue.value.loading || ue.value.error ? (U(), W("p", P3, P(ue.value.loading ? "正在读取软件模型列表…" : ue.value.error), 1)) : Y("", !0),
58136
+ ue.value.loading || ue.value.error ? (U(), W("p", N3, P(ue.value.loading ? "正在读取软件模型列表…" : ue.value.error), 1)) : Y("", !0),
58079
58137
  de.value ? (U(), G(BU, {
58080
58138
  key: 1,
58081
58139
  caption: "强度",
@@ -58087,8 +58145,8 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
58087
58145
  "items",
58088
58146
  "model-value",
58089
58147
  "label"
58090
- ])) : (U(), W("p", F3, P(ue.value.effort_note), 1)),
58091
- K("div", I3, [q(s, {
58148
+ ])) : (U(), W("p", P3, P(ue.value.effort_note), 1)),
58149
+ K("div", F3, [q(s, {
58092
58150
  label: "取消",
58093
58151
  color: "neutral",
58094
58152
  variant: "ghost",
@@ -58132,31 +58190,31 @@ var l4 = { class: "progress-board is-docked" }, u4 = { class: "pb-header" }, d4
58132
58190
  ]);
58133
58191
  };
58134
58192
  }
58135
- }, [["__scopeId", "data-v-6e9c07c3"]]), z3 = {
58193
+ }, [["__scopeId", "data-v-6e9c07c3"]]), R3 = {
58136
58194
  thinking: "思考",
58137
58195
  command: "命令",
58138
58196
  tool: "工具",
58139
58197
  editing: "编辑",
58140
58198
  writing: "撰写"
58141
- }, B3 = {
58199
+ }, z3 = {
58142
58200
  thinking: "model",
58143
58201
  writing: "model",
58144
58202
  command: "tool",
58145
58203
  tool: "tool",
58146
58204
  editing: "tool"
58147
- }, V3 = {
58205
+ }, B3 = {
58148
58206
  running: "进行中",
58149
58207
  done: "完成",
58150
58208
  failed: "失败",
58151
58209
  cancelled: "已撤销"
58152
- }, H3 = 3e5, U3 = .03;
58153
- function W3(e) {
58210
+ }, V3 = 3e5, H3 = .03;
58211
+ function U3(e) {
58154
58212
  if (e < 1e3) return `${Math.max(0, Math.round(e))}ms`;
58155
58213
  if (e < 1e4) return `${(e / 1e3).toFixed(1)}s`;
58156
58214
  let t = Math.round(e / 1e3);
58157
58215
  return t < 60 ? `${t}s` : t < 3600 ? `${Math.floor(t / 60)}m ${String(t % 60).padStart(2, "0")}s` : `${Math.floor(t / 3600)}h ${String(Math.floor(t % 3600 / 60)).padStart(2, "0")}m`;
58158
58216
  }
58159
- function G3(e, t) {
58217
+ function W3(e, t) {
58160
58218
  let n = e.state === "running", r = e.finished_at ? e.finished_at * 1e3 : t, i = e.dispatched_at ? e.dispatched_at * 1e3 : 0, a = Math.min(e.queued_at ? e.queued_at * 1e3 : i || r, i || r), o = i ? e.segments.map((t, a) => {
58161
58219
  let o = n && a === e.segments.length - 1, s = Math.min(i + t.end_ms, r);
58162
58220
  return {
@@ -58182,8 +58240,8 @@ function G3(e, t) {
58182
58240
  notes: l
58183
58241
  };
58184
58242
  }
58185
- var K3 = 18e4;
58186
- function q3(e, t) {
58243
+ var G3 = 18e4;
58244
+ function K3(e, t) {
58187
58245
  let { item: n } = e;
58188
58246
  if (n.state === "failed") return {
58189
58247
  tone: "failed",
@@ -58207,22 +58265,22 @@ function q3(e, t) {
58207
58265
  let r = n.dispatched_at * 1e3, i = n.segments.at(-1), a = Math.max(n.activity_at ? n.activity_at * 1e3 : 0, i ? r + i.end_ms : 0, ...(n.notes || []).map((e) => e * 1e3)), o = a ? t - a : 0;
58208
58266
  return o >= 18e4 ? i?.phase === "command" ? {
58209
58267
  tone: "warn",
58210
- text: `命令已运行 ${W3(o)}`
58268
+ text: `命令已运行 ${U3(o)}`
58211
58269
  } : {
58212
58270
  tone: "warn",
58213
- text: `已 ${W3(o)} 无输出,可能卡住`
58271
+ text: `已 ${U3(o)} 无输出,可能卡住`
58214
58272
  } : n.last_note ? {
58215
58273
  tone: "live",
58216
58274
  text: n.last_note
58217
58275
  } : i ? {
58218
58276
  tone: "live",
58219
- text: `${z3[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
58277
+ text: `${R3[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
58220
58278
  } : {
58221
58279
  tone: "live",
58222
58280
  text: "处理中"
58223
58281
  };
58224
58282
  }
58225
- function J3(e, t) {
58283
+ function q3(e, t) {
58226
58284
  return [...e.segments.map((e) => ({
58227
58285
  at: e.start,
58228
58286
  kind: "phase",
@@ -58236,7 +58294,7 @@ function J3(e, t) {
58236
58294
  text: t?.[e.index] ?? (t ? "(未能读取)" : "读取中…")
58237
58295
  }))].sort((e, t) => e.at - t.at || (e.kind === "note") - (t.kind === "note"));
58238
58296
  }
58239
- function Y3(e, t, n = /* @__PURE__ */ new Map()) {
58297
+ function J3(e, t, n = /* @__PURE__ */ new Map()) {
58240
58298
  let r = t / 1e3, i = [];
58241
58299
  for (let t of e.executions) {
58242
58300
  if ((t.queued_at || t.dispatched_at || Infinity) > r) continue;
@@ -58270,7 +58328,7 @@ function Y3(e, t, n = /* @__PURE__ */ new Map()) {
58270
58328
  executions: i
58271
58329
  };
58272
58330
  }
58273
- function X3(e, t, n) {
58331
+ function Y3(e, t, n) {
58274
58332
  let r = e.filter((e) => e.at >= t && e.at <= n);
58275
58333
  if (r.length) return {
58276
58334
  notes: r,
@@ -58282,13 +58340,13 @@ function X3(e, t, n) {
58282
58340
  earlier: !!i
58283
58341
  };
58284
58342
  }
58285
- function Z3(e, t) {
58343
+ function X3(e, t) {
58286
58344
  let n = e.executions.map((n) => ({
58287
58345
  key: `${n.source}:${n.id}`,
58288
58346
  parent: n.parent_id ? `free:${n.parent_id}` : "",
58289
58347
  item: n,
58290
58348
  truncated: n.segments.length >= e.segment_limit,
58291
- ...G3(n, t)
58349
+ ...W3(n, t)
58292
58350
  })), r = new Map(n.map((e) => [e.key, e])), i = (e) => {
58293
58351
  let t = r.get(e.parent);
58294
58352
  for (let n = /* @__PURE__ */ new Set([e.key]); t?.item.member === e.item.member && !n.has(t.key); t = r.get(t.parent)) n.add(t.key);
@@ -58317,18 +58375,18 @@ function Z3(e, t) {
58317
58375
  });
58318
58376
  return o;
58319
58377
  }
58320
- function Q3(e, t) {
58378
+ function Z3(e, t) {
58321
58379
  if (e.source === "discussion") return `run:${e.run_id || e.id}`;
58322
58380
  let n = e;
58323
58381
  for (let r = /* @__PURE__ */ new Set([e.id]); n.parent_id && t.has(n.parent_id) && !r.has(n.parent_id); n = t.get(n.parent_id)) r.add(n.parent_id);
58324
58382
  return n.task_id ? `task:${n.task_id}` : `exec:${n.id}`;
58325
58383
  }
58326
- function $3(e, t) {
58384
+ function Q3(e, t) {
58327
58385
  let n = new Map(e.executions.filter((e) => e.source === "free").map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
58328
58386
  for (let a of e.executions) {
58329
- let e = Q3(a, n);
58387
+ let e = Z3(a, n);
58330
58388
  i.set(`${a.source}:${a.id}`, e);
58331
- let o = G3(a, t), s = r.get(e) || {
58389
+ let o = W3(a, t), s = r.get(e) || {
58332
58390
  key: e,
58333
58391
  source: a.source,
58334
58392
  start: o.start,
@@ -58346,7 +58404,7 @@ function $3(e, t) {
58346
58404
  of: i
58347
58405
  };
58348
58406
  }
58349
- function e6(e, t) {
58407
+ function $3(e, t) {
58350
58408
  let n = new Map(e.map((e, t) => [e.key, t])), r = /* @__PURE__ */ new Map(), i = (e, t) => {
58351
58409
  r.has(e) || r.set(e, []), r.get(e).push(t);
58352
58410
  };
@@ -58372,7 +58430,7 @@ function e6(e, t) {
58372
58430
  });
58373
58431
  }), r;
58374
58432
  }
58375
- var t6 = [
58433
+ var e6 = [
58376
58434
  5,
58377
58435
  6,
58378
58436
  7,
@@ -58429,8 +58487,8 @@ var t6 = [
58429
58487
  64800,
58430
58488
  72e3,
58431
58489
  86400
58432
- ].map((e) => e * 1e3), n6 = .75;
58433
- function r6(e, t = !1) {
58490
+ ].map((e) => e * 1e3), t6 = .75;
58491
+ function n6(e, t = !1) {
58434
58492
  let n = e.map((e) => [e.start, e.end]).sort((e, t) => e[0] - t[0]);
58435
58493
  if (!n.length) return {
58436
58494
  start: 0,
@@ -58446,8 +58504,8 @@ function r6(e, t = !1) {
58446
58504
  n && e <= n[1] + 3e5 ? n[1] = Math.max(n[1], t) : r.push([e, t]);
58447
58505
  }
58448
58506
  let i = r.reduce((e, [t, n]) => e + (n - t), 0), a = i;
58449
- t && i && (a = t6.find((e) => e >= i / n6) ?? Math.ceil(i / n6), r.at(-1)[1] += a - i);
58450
- let o = Math.min(U3, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
58507
+ t && i && (a = e6.find((e) => e >= i / t6) ?? Math.ceil(i / t6), r.at(-1)[1] += a - i);
58508
+ let o = Math.min(H3, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
58451
58509
  return r.forEach(([e, t], n) => {
58452
58510
  if (n) {
58453
58511
  let t = r[n - 1][1];
@@ -58490,7 +58548,7 @@ function r6(e, t = !1) {
58490
58548
  }))
58491
58549
  };
58492
58550
  }
58493
- var i6 = [
58551
+ var r6 = [
58494
58552
  1,
58495
58553
  2,
58496
58554
  5,
@@ -58509,14 +58567,14 @@ var i6 = [
58509
58567
  21600,
58510
58568
  43200,
58511
58569
  86400
58512
- ].map((e) => e * 1e3), a6 = .12;
58513
- function o6(e, t = 6, n = {
58570
+ ].map((e) => e * 1e3), i6 = .12;
58571
+ function a6(e, t = 6, n = {
58514
58572
  from: 0,
58515
58573
  span: 1
58516
58574
  }) {
58517
58575
  let r = (e.total_ms ?? e.busy_ms) * n.span;
58518
58576
  if (!r) return [];
58519
- let i = i6.find((e) => r / e <= t) ?? i6.at(-1), a = a6 * n.span, o = [];
58577
+ let i = r6.find((e) => r / e <= t) ?? r6.at(-1), a = i6 * n.span, o = [];
58520
58578
  for (let t of e.spans) if (!(t.from + t.width < n.from || t.from > n.from + n.span)) for (let r = Math.ceil(t.start / i) * i; r <= t.end; r += i) {
58521
58579
  let t = e.x(r);
58522
58580
  t < n.from || t > n.from + n.span || (!o.length || t - o.at(-1).x >= a) && o.push({
@@ -58529,8 +58587,8 @@ function o6(e, t = 6, n = {
58529
58587
  seconds: i < 6e4
58530
58588
  }));
58531
58589
  }
58532
- var s6 = .01, c6 = 2e3;
58533
- function l6(e, t) {
58590
+ var o6 = .01, s6 = 2e3;
58591
+ function c6(e, t) {
58534
58592
  let n = (e) => (e - t.from) / t.span;
58535
58593
  return {
58536
58594
  ...e,
@@ -58547,20 +58605,20 @@ function l6(e, t) {
58547
58605
  }))
58548
58606
  };
58549
58607
  }
58550
- function u6(e, t, n, r = 0) {
58551
- let i = Math.max(s6, r ? c6 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
58608
+ function l6(e, t, n, r = 0) {
58609
+ let i = Math.max(o6, r ? s6 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
58552
58610
  return {
58553
58611
  from: Math.min(1 - a, Math.max(0, o - t * a)),
58554
58612
  span: a
58555
58613
  };
58556
58614
  }
58557
- function d6(e, t) {
58615
+ function u6(e, t) {
58558
58616
  return {
58559
58617
  from: Math.min(1 - e.span, Math.max(0, e.from + t * e.span)),
58560
58618
  span: e.span
58561
58619
  };
58562
58620
  }
58563
- function f6(e, t = Date.now()) {
58621
+ function d6(e, t = Date.now()) {
58564
58622
  let n = null;
58565
58623
  for (let t of e) for (let e of t.segments) (!n || e.seen - e.start > n.end - n.start) && (n = {
58566
58624
  ...e,
@@ -58572,7 +58630,7 @@ function f6(e, t = Date.now()) {
58572
58630
  executions: e.length,
58573
58631
  running: e.filter((e) => e.item.state === "running").length,
58574
58632
  failed: e.filter((e) => e.item.state === "failed").length,
58575
- stalled: e.filter((e) => e.item.state === "running" && q3(e, t).tone === "warn").length,
58633
+ stalled: e.filter((e) => e.item.state === "running" && K3(e, t).tone === "warn").length,
58576
58634
  tool_segments: e.reduce((e, t) => e + t.segments.filter((e) => [
58577
58635
  "command",
58578
58636
  "tool",
@@ -58581,40 +58639,40 @@ function f6(e, t = Date.now()) {
58581
58639
  slowest: n
58582
58640
  };
58583
58641
  }
58584
- var p6 = {
58642
+ var f6 = {
58585
58643
  pending: "待投递",
58586
58644
  delivering: "投递中",
58587
58645
  completed: "已完成",
58588
58646
  cancelled: "已取消",
58589
58647
  failed: "失败"
58590
- }, m6 = {
58648
+ }, p6 = {
58591
58649
  dispatched: "已派出",
58592
58650
  started: "已开始",
58593
58651
  completed: "已完成",
58594
58652
  cancelled: "已作废",
58595
58653
  failed: "失败"
58596
- }, h6 = {
58654
+ }, m6 = {
58597
58655
  route: "接收",
58598
58656
  ask: "派活",
58599
58657
  handoff: "交还主持人"
58600
- }, g6 = {
58658
+ }, h6 = {
58601
58659
  user: "用户",
58602
58660
  host: "主持人"
58603
- }, _6 = {
58661
+ }, g6 = {
58604
58662
  user_stop: "用户停止",
58605
58663
  member_away: "成员暂离",
58606
58664
  member_removed: "成员移除",
58607
58665
  rerouted: "改派",
58608
58666
  no_reply: "未回复",
58609
58667
  archived: "房间归档"
58610
- }, v6 = {
58668
+ }, _6 = {
58611
58669
  active: "在场",
58612
58670
  away: "暂离",
58613
58671
  removed: "移除"
58614
- }, y6 = {
58672
+ }, v6 = {
58615
58673
  host: "主持人",
58616
58674
  member: "成员"
58617
- }, b6 = {
58675
+ }, y6 = {
58618
58676
  api: "输入",
58619
58677
  message: "消息",
58620
58678
  request: "请求",
@@ -58626,26 +58684,26 @@ var p6 = {
58626
58684
  member: "房间",
58627
58685
  discussion: "房间",
58628
58686
  room: "房间"
58629
- }, x6 = /* @__PURE__ */ new Set(["dispatched", "started"]), S6 = /* @__PURE__ */ new Set(["pending", "delivering"]), C6 = [
58687
+ }, b6 = /* @__PURE__ */ new Set(["dispatched", "started"]), x6 = /* @__PURE__ */ new Set(["pending", "delivering"]), S6 = [
58630
58688
  ["Mozilla", "网页"],
58631
58689
  ["node", "本机服务"],
58632
58690
  ["AI-CoDiscuss-CLI", "CLI"],
58633
58691
  ["Python", "脚本"]
58634
- ], w6 = {
58692
+ ], C6 = {
58635
58693
  executions: "execution",
58636
58694
  requests: "request",
58637
58695
  messages: "message"
58638
58696
  };
58639
- function T6(e) {
58697
+ function w6(e) {
58640
58698
  try {
58641
58699
  return JSON.parse(e.payload || "{}");
58642
58700
  } catch {
58643
58701
  return {};
58644
58702
  }
58645
58703
  }
58646
- function E6(e) {
58704
+ function T6(e) {
58647
58705
  let t = e.kind.startsWith("api.") ? {
58648
- ...T6(e.data),
58706
+ ...w6(e.data),
58649
58707
  ...e.data
58650
58708
  } : e.data, n = [];
58651
58709
  t.request_id && n.push(`request:${t.request_id}`), t.execution_id && n.push(`execution:${t.execution_id}`);
@@ -58656,28 +58714,28 @@ function E6(e) {
58656
58714
  "reply_to",
58657
58715
  "after_message_id"
58658
58716
  ]) t[e] && n.push(`message:${t[e]}`);
58659
- for (let [, e, r] of String(t.path || "").matchAll(/\/(executions|requests|messages)\/(\d+)/g)) n.push(`${w6[e]}:${r}`);
58717
+ for (let [, e, r] of String(t.path || "").matchAll(/\/(executions|requests|messages)\/(\d+)/g)) n.push(`${C6[e]}:${r}`);
58660
58718
  return [...new Set(n)];
58661
58719
  }
58662
- function D6(e) {
58663
- let t = e.data, n = T6(t), r = t.actor === "owner" ? "房主" : t.actor?.startsWith("member:") ? t.actor.slice(7) : t.actor === "none" ? "无凭据" : "未知凭据", i = C6.find(([e]) => (t.client || "").startsWith(e))?.[1] || t.client || "未知客户端", a = n.action ? ` ${n.action}` : "", o = typeof n.text == "string" ? `:${n.text}` : "", s = e.kind === "api.rejected" ? ` → 被拒 ${t.status}:${t.error}` : "";
58720
+ function E6(e) {
58721
+ let t = e.data, n = w6(t), r = t.actor === "owner" ? "房主" : t.actor?.startsWith("member:") ? t.actor.slice(7) : t.actor === "none" ? "无凭据" : "未知凭据", i = S6.find(([e]) => (t.client || "").startsWith(e))?.[1] || t.client || "未知客户端", a = n.action ? ` ${n.action}` : "", o = typeof n.text == "string" ? `:${n.text}` : "", s = e.kind === "api.rejected" ? ` → 被拒 ${t.status}:${t.error}` : "";
58664
58722
  return `${r}(${i}${t.bridged ? "·中转" : ""})POST ${t.path}${a}${s}${o}`;
58665
58723
  }
58666
- function O6(e, t) {
58724
+ function D6(e, t) {
58667
58725
  let n = e.data, r = t(n.member_id), i = (e, t) => e[t] || t;
58668
58726
  switch (e.kind) {
58669
58727
  case "api.write":
58670
- case "api.rejected": return D6(e);
58728
+ case "api.rejected": return E6(e);
58671
58729
  case "message.posted": return `${n.author} 发言 #${n.message_id}${n.reply_to ? `(回复 #${n.reply_to})` : ""}:${n.text}`;
58672
58730
  case "message.withdrawn": return `#${n.message_id} ${n.kind === "rewound" ? "被回退" : "被撤回"}`;
58673
58731
  case "room.rewound": return `回退到 #${n.message_id}`;
58674
- case "member.joined": return `${r} 加入(${i(y6, n.role)} · ${n.adapter || "未知软件"})`;
58675
- case "member.changed": return `${r}:${n.from_role === n.role ? `${i(v6, n.from_status)} → ${i(v6, n.status)}` : `${i(y6, n.from_role)} → ${i(y6, n.role)}`}`;
58676
- case "request.created": return `请求 R${n.request_id} → ${r} · ${i(h6, n.purpose)} · 挂在 #${n.message_id} · 由${i(g6, n.created_by)}创建${n.batch_id ? ` · 批次 #${n.batch_id}` : ""}`;
58677
- case "request.changed": return `请求 R${n.request_id}(${r})${n.from_status === n.status ? "更新" : `${i(p6, n.from_status)} → ${i(p6, n.status)}`}${n.execution_id ? ` · 执行 E${n.execution_id}` : ""}${n.answer_id ? ` · 回答 #${n.answer_id}` : ""}`;
58678
- case "request.cancel_reason": return `请求 R${n.request_id}(${r})取消原因:${i(_6, n.reason)}`;
58679
- case "execution.created": return `执行 E${n.execution_id}(${r})${i(m6, n.status)}`;
58680
- case "execution.changed": return `执行 E${n.execution_id}(${r})${i(m6, n.from_status)} → ${i(m6, n.status)}${n.result ? `:${n.result}` : ""}`;
58732
+ case "member.joined": return `${r} 加入(${i(v6, n.role)} · ${n.adapter || "未知软件"})`;
58733
+ case "member.changed": return `${r}:${n.from_role === n.role ? `${i(_6, n.from_status)} → ${i(_6, n.status)}` : `${i(v6, n.from_role)} → ${i(v6, n.role)}`}`;
58734
+ case "request.created": return `请求 R${n.request_id} → ${r} · ${i(m6, n.purpose)} · 挂在 #${n.message_id} · 由${i(h6, n.created_by)}创建${n.batch_id ? ` · 批次 #${n.batch_id}` : ""}`;
58735
+ case "request.changed": return `请求 R${n.request_id}(${r})${n.from_status === n.status ? "更新" : `${i(f6, n.from_status)} → ${i(f6, n.status)}`}${n.execution_id ? ` · 执行 E${n.execution_id}` : ""}${n.answer_id ? ` · 回答 #${n.answer_id}` : ""}`;
58736
+ case "request.cancel_reason": return `请求 R${n.request_id}(${r})取消原因:${i(g6, n.reason)}`;
58737
+ case "execution.created": return `执行 E${n.execution_id}(${r})${i(p6, n.status)}`;
58738
+ case "execution.changed": return `执行 E${n.execution_id}(${r})${i(p6, n.from_status)} → ${i(p6, n.status)}${n.result ? `:${n.result}` : ""}`;
58681
58739
  case "execution.retry": return n.stopped ? `执行 E${n.execution_id} 停止自动重试` : `执行 E${n.execution_id} 第 ${n.attempt} 次重试${n.reason ? `:${n.reason}` : ""}`;
58682
58740
  case "execution.late_answer": return `执行 E${n.execution_id} 作废后迟到的回答:${n.text}`;
58683
58741
  case "batch.opened": return `批次 #${n.batch_id} 开启(${t(n.host_id)} 派出,链 #${n.chain_id})`;
@@ -58694,20 +58752,20 @@ function O6(e, t) {
58694
58752
  default: return JSON.stringify(n);
58695
58753
  }
58696
58754
  }
58697
- function k6(e, t) {
58755
+ function O6(e, t) {
58698
58756
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
58699
58757
  for (let o of e.slice(0, t + 1)) {
58700
58758
  let e = o.data;
58701
58759
  o.kind === "request.created" ? n.set(e.request_id, {
58702
58760
  ...e,
58703
58761
  at: o.at
58704
- }) : o.kind === "request.changed" && n.has(e.request_id) ? S6.has(e.status) ? n.set(e.request_id, {
58762
+ }) : o.kind === "request.changed" && n.has(e.request_id) ? x6.has(e.status) ? n.set(e.request_id, {
58705
58763
  ...n.get(e.request_id),
58706
58764
  ...e
58707
58765
  }) : n.delete(e.request_id) : o.kind === "execution.created" ? r.set(e.execution_id, {
58708
58766
  ...e,
58709
58767
  at: o.at
58710
- }) : o.kind === "execution.changed" && r.has(e.execution_id) ? x6.has(e.status) ? r.set(e.execution_id, {
58768
+ }) : o.kind === "execution.changed" && r.has(e.execution_id) ? b6.has(e.status) ? r.set(e.execution_id, {
58711
58769
  ...r.get(e.execution_id),
58712
58770
  ...e
58713
58771
  }) : r.delete(e.execution_id) : o.kind === "queue.added" ? i.set(e.queue_id, e) : o.kind === "queue.removed" ? i.delete(e.queue_id) : o.kind === "chain.held" ? a.set(e.chain_id, e) : o.kind === "chain.released" && a.delete(e.chain_id);
@@ -58721,116 +58779,116 @@ function k6(e, t) {
58721
58779
  }
58722
58780
  //#endregion
58723
58781
  //#region frontend/ExecutionTimeline.vue
58724
- var A6 = {
58782
+ var k6 = {
58725
58783
  class: "merged-section execution-timeline",
58726
58784
  "aria-label": "执行时间线"
58727
- }, j6 = {
58785
+ }, A6 = {
58728
58786
  key: 0,
58729
58787
  role: "alert",
58730
58788
  class: "fine-print wf-error"
58731
- }, M6 = {
58789
+ }, j6 = {
58732
58790
  key: 1,
58733
58791
  class: "fine-print"
58734
- }, N6 = { class: "wf-head" }, P6 = {
58792
+ }, M6 = { class: "wf-head" }, N6 = {
58735
58793
  key: 0,
58736
58794
  class: "wf-state is-replay"
58737
- }, F6 = {
58795
+ }, P6 = {
58738
58796
  key: 2,
58739
58797
  class: "wf-headline"
58740
- }, I6 = { class: "wf-summary" }, L6 = ["title"], R6 = ["title"], z6 = { title: "连续调用同一工具合并为一段" }, B6 = {
58798
+ }, F6 = { class: "wf-summary" }, I6 = ["title"], L6 = ["title"], R6 = { title: "连续调用同一工具合并为一段" }, z6 = {
58741
58799
  class: "wf-legend",
58742
58800
  "aria-label": "图例"
58743
- }, V6 = {
58801
+ }, B6 = {
58744
58802
  key: 0,
58745
58803
  class: "wf-legend-note"
58746
- }, H6 = {
58804
+ }, V6 = {
58747
58805
  key: 1,
58748
58806
  class: "wf-legend-note"
58749
- }, U6 = { class: "wf-axis-label" }, W6 = {
58807
+ }, H6 = { class: "wf-axis-label" }, U6 = {
58750
58808
  key: 0,
58751
58809
  class: "wf-zoom"
58752
- }, G6 = {
58810
+ }, W6 = {
58753
58811
  key: 1,
58754
58812
  class: "wf-zoom-hint",
58755
58813
  title: "Ctrl + 滚轮缩放;放大后按住中键或拖动时间轴平移,双击时间线还原"
58756
- }, K6 = {
58814
+ }, G6 = {
58757
58815
  key: 2,
58758
58816
  class: "wf-branch"
58759
- }, q6 = ["title"], J6 = {
58817
+ }, K6 = ["title"], q6 = {
58760
58818
  key: 0,
58761
58819
  class: "wf-guides",
58762
58820
  "aria-hidden": "true"
58763
- }, Y6 = [
58821
+ }, J6 = [
58764
58822
  "aria-expanded",
58765
58823
  "aria-label",
58766
58824
  "onClick"
58767
- ], X6 = {
58825
+ ], Y6 = {
58768
58826
  key: 2,
58769
58827
  class: "wf-toggle-space"
58770
- }, Z6 = [
58828
+ }, X6 = [
58771
58829
  "aria-expanded",
58772
58830
  "onClick",
58773
58831
  "onMouseenter",
58774
58832
  "onMouseleave"
58775
- ], Q6 = { class: "wf-name-line" }, $6 = {
58833
+ ], Z6 = { class: "wf-name-line" }, Q6 = {
58776
58834
  key: 0,
58777
58835
  class: "wf-spinner",
58778
58836
  "aria-hidden": "true"
58779
- }, e8 = {
58837
+ }, $6 = {
58780
58838
  key: 1,
58781
58839
  class: "wf-pill is-slowest"
58782
- }, t8 = {
58840
+ }, e8 = {
58783
58841
  key: 0,
58784
58842
  class: "wf-live-dot",
58785
58843
  "aria-hidden": "true"
58786
- }, n8 = ["aria-label", "onMouseleave"], r8 = { class: "wf-track" }, i8 = ["data-tone"], a8 = ["onMouseenter", "onClick"], o8 = ["onMouseenter", "onClick"], s8 = [
58844
+ }, t8 = ["aria-label", "onMouseleave"], n8 = { class: "wf-track" }, r8 = ["data-tone"], i8 = ["onMouseenter", "onClick"], a8 = ["onMouseenter", "onClick"], o8 = [
58787
58845
  "data-tone",
58788
58846
  "onMouseenter",
58789
58847
  "onClick"
58790
- ], c8 = [
58848
+ ], s8 = [
58791
58849
  "data-tone",
58792
58850
  "onMouseenter",
58793
58851
  "onClick"
58794
- ], l8 = [
58852
+ ], c8 = [
58795
58853
  "data-tone",
58796
58854
  "onMouseenter",
58797
58855
  "onClick"
58798
- ], u8 = [
58856
+ ], l8 = [
58799
58857
  "aria-label",
58800
58858
  "onMouseenter",
58801
58859
  "onClick",
58802
58860
  "onFocus",
58803
58861
  "onBlur"
58804
- ], d8 = { class: "wf-end" }, f8 = { key: 1 }, p8 = ["aria-label"], m8 = { class: "wf-detail-head" }, h8 = { key: 0 }, g8 = { key: 1 }, _8 = { class: "is-failed" }, v8 = { key: 2 }, y8 = { key: 3 }, b8 = {
58862
+ ], u8 = { class: "wf-end" }, d8 = { key: 1 }, f8 = ["aria-label"], p8 = { class: "wf-detail-head" }, m8 = { key: 0 }, h8 = { key: 1 }, g8 = { class: "is-failed" }, _8 = { key: 2 }, v8 = { key: 3 }, y8 = {
58805
58863
  key: 0,
58806
58864
  class: "wf-log",
58807
58865
  "aria-label": "过程"
58808
- }, x8 = ["data-tone"], S8 = {
58866
+ }, b8 = ["data-tone"], x8 = {
58809
58867
  key: 1,
58810
58868
  class: "wf-log-note"
58811
- }, C8 = {
58869
+ }, S8 = {
58812
58870
  key: 1,
58813
58871
  class: "fine-print"
58814
- }, w8 = {
58872
+ }, C8 = {
58815
58873
  key: 1,
58816
58874
  class: "wf-player"
58817
- }, T8 = {
58875
+ }, w8 = {
58818
58876
  key: 2,
58819
58877
  class: "wf-player"
58820
- }, E8 = ["aria-label"], D8 = ["disabled"], O8 = ["max", "value"], k8 = { class: "wf-player-time" }, A8 = {
58878
+ }, T8 = ["aria-label"], E8 = ["disabled"], D8 = ["max", "value"], O8 = { class: "wf-player-time" }, k8 = {
58821
58879
  key: 3,
58822
58880
  class: "wf-foot"
58823
- }, j8 = { key: 0 }, M8 = { key: 1 }, N8 = ["role"], P8 = {
58881
+ }, A8 = { key: 0 }, j8 = { key: 1 }, M8 = ["role"], N8 = {
58824
58882
  key: 1,
58825
58883
  class: "wf-card-text"
58826
- }, F8 = {
58884
+ }, P8 = {
58827
58885
  key: 2,
58828
58886
  class: "wf-card-reason"
58829
- }, I8 = { class: "wf-card-label" }, L8 = 2e3, R8 = 6e4, z8 = 100, B8 = 60, V8 = 2e4, H8 = 600, U8 = 5, W8 = 16, G8 = 90, K8 = 2, q8 = 8, J8 = 560, Y8 = .0015, X8 = "latest", Z8 = "all", Q8 = 22, $8 = 5, e5 = 52, t5 = /*#__PURE__*/ TH({
58887
+ }, F8 = { class: "wf-card-label" }, I8 = 2e3, L8 = 6e4, R8 = 100, z8 = 60, B8 = 2e4, V8 = 600, H8 = 5, U8 = 16, W8 = 90, G8 = 2, K8 = 8, q8 = 560, J8 = .0015, Y8 = "latest", X8 = "all", Z8 = 22, Q8 = 5, $8 = 52, e5 = /*#__PURE__*/ TH({
58830
58888
  __name: "ExecutionTimeline",
58831
58889
  emits: ["detail"],
58832
58890
  setup(e, { emit: t }) {
58833
- let n = t, { view: r, bridge: i } = xr("discussion"), a = K3 / 6e4, o = [
58891
+ let n = t, { view: r, bridge: i } = xr("discussion"), a = G3 / 6e4, o = [
58834
58892
  1,
58835
58893
  2,
58836
58894
  4,
@@ -58846,7 +58904,7 @@ var A6 = {
58846
58904
  let t = d.value;
58847
58905
  if (!t || w) return;
58848
58906
  w = !0;
58849
- let n = e || !S || Date.now() - C >= R8 ? 0 : S - U8;
58907
+ let n = e || !S || Date.now() - C >= L8 ? 0 : S - H8;
58850
58908
  try {
58851
58909
  let e = await i.request(`/api/rooms/${t}/timeline${n ? `?after=${n}` : ""}`);
58852
58910
  if (t !== d.value) return;
@@ -58869,7 +58927,7 @@ var A6 = {
58869
58927
  R(Z(() => te.value?.executions.some((e) => e.state === "running")), (e) => {
58870
58928
  clearInterval(T), e && (T = setInterval(() => {
58871
58929
  document.hidden || ee();
58872
- }, L8));
58930
+ }, I8));
58873
58931
  }, { immediate: !0 }), R(d, () => {
58874
58932
  f.value = /* @__PURE__ */ new Map(), p.value = null, g.value = /* @__PURE__ */ new Set(), _.value = /* @__PURE__ */ new Map(), v.value = null, y.value = "", S = 0, ee(!0);
58875
58933
  }, { immediate: !0 }), R(() => r.value.room, (e, t) => {
@@ -58884,7 +58942,7 @@ var A6 = {
58884
58942
  };
58885
58943
  }
58886
58944
  function ie(e) {
58887
- c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), Oe.value = u6(Oe.value, re(e).share, Math.exp(e.deltaY * Y8), Ee.value.total_ms)) : ke.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), Oe.value = d6(Oe.value, (e.shiftKey ? e.deltaY : e.deltaX) / re(e).width)));
58945
+ c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), Oe.value = l6(Oe.value, re(e).share, Math.exp(e.deltaY * J8), Ee.value.total_ms)) : ke.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), Oe.value = u6(Oe.value, (e.shiftKey ? e.deltaY : e.deltaX) / re(e).width)));
58888
58946
  }
58889
58947
  function ae(e) {
58890
58948
  let t = e.target.closest?.(".wf-axis");
@@ -58895,7 +58953,7 @@ var A6 = {
58895
58953
  }, e.currentTarget.setPointerCapture(e.pointerId));
58896
58954
  }
58897
58955
  function oe(e) {
58898
- ne && (Oe.value = d6({
58956
+ ne && (Oe.value = u6({
58899
58957
  from: ne.from,
58900
58958
  span: Oe.value.span
58901
58959
  }, -(e.clientX - ne.x) / ne.width));
@@ -58924,15 +58982,15 @@ var A6 = {
58924
58982
  }), ta(() => {
58925
58983
  clearInterval(T), cancelAnimationFrame(E), document.removeEventListener("pointerdown", ue), document.removeEventListener("keydown", de), u?.disconnect();
58926
58984
  });
58927
- let j = /* @__PURE__ */ F(X8), pe = Z(() => te.value ? $3(te.value, h.value) : {
58985
+ let j = /* @__PURE__ */ F(Y8), pe = Z(() => te.value ? Q3(te.value, h.value) : {
58928
58986
  list: [],
58929
58987
  of: /* @__PURE__ */ new Map()
58930
- }), me = Z(() => j.value === X8 ? pe.value.list[0]?.key : j.value === Z8 || pe.value.list.some((e) => e.key === j.value) ? j.value : pe.value.list[0]?.key), he = Z(() => !te.value || me.value === Z8 ? te.value : {
58988
+ }), me = Z(() => j.value === Y8 ? pe.value.list[0]?.key : j.value === X8 || pe.value.list.some((e) => e.key === j.value) ? j.value : pe.value.list[0]?.key), he = Z(() => !te.value || me.value === X8 ? te.value : {
58931
58989
  ...te.value,
58932
58990
  executions: te.value.executions.filter((e) => pe.value.of.get(`${e.source}:${e.id}`) === me.value)
58933
58991
  });
58934
58992
  R(d, () => {
58935
- j.value = X8;
58993
+ j.value = Y8;
58936
58994
  });
58937
58995
  let ge = (e) => new Date(e).toLocaleString("zh-CN", {
58938
58996
  month: "numeric",
@@ -58942,13 +59000,13 @@ var A6 = {
58942
59000
  hour12: !1
58943
59001
  });
58944
59002
  function N(e) {
58945
- let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, Q8)}${e.task.length > Q8 ? "…" : ""}` : "执行";
59003
+ let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, Z8)}${e.task.length > Z8 ? "…" : ""}` : "执行";
58946
59004
  return `${ge(e.start)} · ${t} · ${e.count} 次${e.running ? " · 进行中" : e.failed ? " · 有失败" : ""}`;
58947
59005
  }
58948
59006
  let _e = Z(() => [
58949
59007
  {
58950
59008
  label: "最近一轮(自动跟随)",
58951
- value: X8
59009
+ value: Y8
58952
59010
  },
58953
59011
  ...pe.value.list.map((e) => ({
58954
59012
  label: N(e),
@@ -58956,9 +59014,9 @@ var A6 = {
58956
59014
  })),
58957
59015
  {
58958
59016
  label: "全部执行",
58959
- value: Z8
59017
+ value: X8
58960
59018
  }
58961
- ]), ve = Z(() => he.value ? Z3(he.value, h.value) : []), ye = Z(() => ve.value.some((e) => e.item.state === "running")), be = Z(() => {
59019
+ ]), ve = Z(() => he.value ? X3(he.value, h.value) : []), ye = Z(() => ve.value.some((e) => e.item.state === "running")), be = Z(() => {
58962
59020
  let e = Math.min(...ve.value.map((e) => e.start)), t = Math.max(...ve.value.map((e) => e.end));
58963
59021
  return Number.isFinite(e) ? {
58964
59022
  start: e,
@@ -58969,17 +59027,17 @@ var A6 = {
58969
59027
  end: 0,
58970
59028
  duration: 0
58971
59029
  };
58972
- }), xe = Z(() => k.position !== null && !ye.value), Se = Z(() => xe.value ? be.value.start + k.position : h.value), Ce = Z(() => xe.value ? Z3(Y3(he.value, Se.value, _.value), Se.value) : ve.value), we = Z(() => Ce.value.filter((e) => !e.ancestors.some((e) => g.value.has(e)))), Te = Z(() => Ce.value.some((e) => e.item.state === "running")), Ee = Z(() => r6(Ce.value, Te.value)), De = {
59030
+ }), xe = Z(() => k.position !== null && !ye.value), Se = Z(() => xe.value ? be.value.start + k.position : h.value), Ce = Z(() => xe.value ? X3(J3(he.value, Se.value, _.value), Se.value) : ve.value), we = Z(() => Ce.value.filter((e) => !e.ancestors.some((e) => g.value.has(e)))), Te = Z(() => Ce.value.some((e) => e.item.state === "running")), Ee = Z(() => n6(Ce.value, Te.value)), De = {
58973
59031
  from: 0,
58974
59032
  span: 1
58975
59033
  }, Oe = /* @__PURE__ */ F(De), ke = Z(() => Oe.value.span < 1);
58976
59034
  R([me, d], () => {
58977
59035
  Oe.value = De;
58978
59036
  });
58979
- let Ae = Z(() => l6(Ee.value, Oe.value)), je = Z(() => {
59037
+ let Ae = Z(() => c6(Ee.value, Oe.value)), je = Z(() => {
58980
59038
  let e = Te.value ? Ae.value.x(Se.value) : null;
58981
59039
  return e === null || e < 0 || e > 1 ? null : e;
58982
- }), Me = Z(() => Math.max(1, be.value.duration / V8)), Ne = Z(() => [{
59040
+ }), Me = Z(() => Math.max(1, be.value.duration / B8)), Ne = Z(() => [{
58983
59041
  label: `自动 · ${Math.round(Me.value)}×`,
58984
59042
  value: 0
58985
59043
  }, ...o.map((e) => ({
@@ -58989,7 +59047,7 @@ var A6 = {
58989
59047
  function Fe(e) {
58990
59048
  let t = D ? Math.min(e - D, 250) : 0;
58991
59049
  D = e;
58992
- let n = Ce.value.length <= B8 || e - O >= z8;
59050
+ let n = Ce.value.length <= z8 || e - O >= R8;
58993
59051
  k.playing && (A += t * Pe.value, A >= be.value.duration ? Object.assign(k, {
58994
59052
  position: null,
58995
59053
  playing: !1
@@ -59042,15 +59100,15 @@ var A6 = {
59042
59100
  let t = e.filter((e) => !He.has(e));
59043
59101
  t.forEach((e) => He.add(e)), t.length && (Ve.value = /* @__PURE__ */ new Set([...Ve.value, ...t]), setTimeout(() => {
59044
59102
  Ve.value = new Set([...Ve.value].filter((e) => !t.includes(e)));
59045
- }, H8));
59103
+ }, V8));
59046
59104
  }), R([me, d], () => {
59047
59105
  He = null;
59048
59106
  });
59049
- let We = Z(() => e6(we.value, Ae.value)), Ge = Z(() => o6(Ee.value, Math.min(q8, Math.max(K8, Math.round((l.value || 540) / G8))), Oe.value).map((e) => ({
59107
+ let We = Z(() => $3(we.value, Ae.value)), Ge = Z(() => a6(Ee.value, Math.min(K8, Math.max(G8, Math.round((l.value || 540) / W8))), Oe.value).map((e) => ({
59050
59108
  ...e,
59051
59109
  x: (e.x - Oe.value.from) / Oe.value.span
59052
- }))), Ke = Z(() => f6(Ce.value, Se.value)), qe = Z(() => Ce.value.filter((e) => e.has_children).map((e) => e.key)), Je = Z(() => Ce.value.find((e) => e.key === y.value)), Ye = Z(() => Je.value ? J3(Je.value, _.value.get(Je.value.item.id)) : []), Xe = Z(() => {
59053
- let e = Ce.value, t = new Set(e.flatMap((e) => e.segments.map((e) => B3[e.phase])));
59110
+ }))), Ke = Z(() => d6(Ce.value, Se.value)), qe = Z(() => Ce.value.filter((e) => e.has_children).map((e) => e.key)), Je = Z(() => Ce.value.find((e) => e.key === y.value)), Ye = Z(() => Je.value ? q3(Je.value, _.value.get(Je.value.item.id)) : []), Xe = Z(() => {
59111
+ let e = Ce.value, t = new Set(e.flatMap((e) => e.segments.map((e) => z3[e.phase])));
59054
59112
  return [
59055
59113
  ...e.some((e) => e.queue[1] > e.queue[0]) ? [["queue", "排队"]] : [],
59056
59114
  ...e.some((e) => e.wake) ? [["wake", "唤醒"]] : [],
@@ -59063,10 +59121,10 @@ var A6 = {
59063
59121
  ];
59064
59122
  }), Ze = Z(() => Ce.value.length > 0 && Ce.value.every((e) => !e.segments.length)), Qe = Z(() => {
59065
59123
  let e = /* @__PURE__ */ new Map();
59066
- for (let t of [...Ce.value].sort((e, t) => e.start - t.start)) e.has(t.item.member) || e.set(t.item.member, e.size % $8 + 1);
59124
+ for (let t of [...Ce.value].sort((e, t) => e.start - t.start)) e.has(t.item.member) || e.set(t.item.member, e.size % Q8 + 1);
59067
59125
  return e;
59068
59126
  }), $e = Z(() => {
59069
- let e = e5 / (l.value || 800), t = [];
59127
+ let e = $8 / (l.value || 800), t = [];
59070
59128
  for (let n of Ae.value.folds) {
59071
59129
  let r = n.from + n.width / 2;
59072
59130
  r < 0 || r > 1 || (!t.length || r - t.at(-1).middle >= e) && t.push({
@@ -59076,12 +59134,12 @@ var A6 = {
59076
59134
  }
59077
59135
  return t;
59078
59136
  }), et = Z(() => {
59079
- let e = e5 / (l.value || 800);
59137
+ let e = $8 / (l.value || 800);
59080
59138
  return Ge.value.filter((t) => !$e.value.some((n) => Math.abs(t.x - n.middle) < e));
59081
59139
  });
59082
59140
  function tt(e, t) {
59083
59141
  if (y.value = y.value === e.key ? "" : e.key, !y.value) return;
59084
- let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(J8, r.width - 16);
59142
+ let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(q8, r.width - 16);
59085
59143
  b.value = {
59086
59144
  top: n.bottom - r.top + 4,
59087
59145
  left: Math.max(8, Math.min(n.left - r.left, r.width - i - 8))
@@ -59107,15 +59165,15 @@ var A6 = {
59107
59165
  function at(e) {
59108
59166
  return e.item.role === "host" ? ["主持"] : [];
59109
59167
  }
59110
- let ot = (e) => q3(e, Se.value);
59168
+ let ot = (e) => K3(e, Se.value);
59111
59169
  function st(e) {
59112
59170
  let t = [
59113
59171
  i.display_name(e.item.member),
59114
59172
  it(e),
59115
- V3[e.item.state],
59116
- `用时 ${W3(e.end - e.start)}`
59173
+ B3[e.item.state],
59174
+ `用时 ${U3(e.end - e.start)}`
59117
59175
  ];
59118
- return e.wake && t.push(`唤醒 ${W3(e.wake[1] - e.wake[0])}${e.wake_approx ? "(约)" : ""}`), !e.segments.length && e.work && t.push("无阶段明细"), e.notes.length && t.push(`${e.notes.length} 段过程说明`), t.join(",");
59176
+ return e.wake && t.push(`唤醒 ${U3(e.wake[1] - e.wake[0])}${e.wake_approx ? "(约)" : ""}`), !e.segments.length && e.work && t.push("无阶段明细"), e.notes.length && t.push(`${e.notes.length} 段过程说明`), t.join(",");
59119
59177
  }
59120
59178
  async function ct(e) {
59121
59179
  let t = e.item.id;
@@ -59139,7 +59197,7 @@ var A6 = {
59139
59197
  let i = e.currentTarget.getBoundingClientRect(), a = n.note ? {
59140
59198
  notes: [n.note],
59141
59199
  earlier: !1
59142
- } : X3(t.notes, n.start, n.end), o = Math.min(360, window.innerWidth - 16), s = i.bottom + 6, c = s + 160 > window.innerHeight && i.top > 200 ? Math.max(8, i.top - 6 - 200) : s;
59200
+ } : Y3(t.notes, n.start, n.end), o = Math.min(360, window.innerWidth - 16), s = i.bottom + 6, c = s + 160 > window.innerHeight && i.top > 200 ? Math.max(8, i.top - 6 - 200) : s;
59143
59201
  v.value = {
59144
59202
  key: t.key,
59145
59203
  id: ft(t, n),
@@ -59163,7 +59221,7 @@ var A6 = {
59163
59221
  }
59164
59222
  let gt = Z(() => {
59165
59223
  let e = v.value?.piece;
59166
- return e ? e.note ? `过程说明 · ${lt(e.note.at)}` : `${e.kind === "segment" ? `${z3[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${W3(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
59224
+ return e ? e.note ? `过程说明 · ${lt(e.note.at)}` : `${e.kind === "segment" ? `${R3[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${U3(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
59167
59225
  }), _t = Z(() => {
59168
59226
  if (!v.value) return [];
59169
59227
  let e = _.value.get(v.value.row.item.id);
@@ -59174,17 +59232,17 @@ var A6 = {
59174
59232
  });
59175
59233
  return (e, t) => {
59176
59234
  let r = XV, o = sA, s = pA;
59177
- return U(), W("section", A6, [
59235
+ return U(), W("section", k6, [
59178
59236
  t[29] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "执行时间线"), K("p", null, "本机接入程序唤醒的每次执行;点名字看详情,悬停条形看当时的过程说明。")])], -1),
59179
- m.value ? (U(), W("p", j6, P(m.value), 1)) : Y("", !0),
59180
- te.value && !Ce.value.length ? (U(), W("p", M6, "还没有执行记录。")) : Y("", !0),
59237
+ m.value ? (U(), W("p", A6, P(m.value), 1)) : Y("", !0),
59238
+ te.value && !Ce.value.length ? (U(), W("p", j6, "还没有执行记录。")) : Y("", !0),
59181
59239
  Ce.value.length ? (U(), W("div", {
59182
59240
  key: 2,
59183
59241
  ref_key: "wf_element",
59184
59242
  ref: x,
59185
59243
  class: "wf"
59186
59244
  }, [
59187
- K("header", N6, [
59245
+ K("header", M6, [
59188
59246
  t[11] ||= K("span", { class: "wf-title" }, "执行瀑布", -1),
59189
59247
  q(r, {
59190
59248
  modelValue: j.value,
@@ -59204,17 +59262,17 @@ var A6 = {
59204
59262
  trailingIcon: "wf-select-icon"
59205
59263
  }
59206
59264
  }, null, 8, ["modelValue", "items"]),
59207
- xe.value ? (U(), W("span", P6, "回放中 · " + P(lt(Se.value)), 1)) : (U(), W("span", {
59265
+ xe.value ? (U(), W("span", N6, "回放中 · " + P(lt(Se.value)), 1)) : (U(), W("span", {
59208
59266
  key: 1,
59209
59267
  class: M(["wf-state", { "is-live": Ke.value.running }])
59210
59268
  }, P(Ke.value.running ? `${Ke.value.running} 个进行中` : "均已结束"), 3)),
59211
- Ke.value.slowest ? (U(), W("span", F6, [
59269
+ Ke.value.slowest ? (U(), W("span", P6, [
59212
59270
  t[10] ||= J("最慢一步 ", -1),
59213
- K("b", null, [J(P(I(i).display_name(Ke.value.slowest.member)) + " · " + P(I(z3)[Ke.value.slowest.phase]), 1), Ke.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ke.value.slowest.tool), 1)], 64)) : Y("", !0)]),
59214
- J(" · " + P(I(W3)(Ke.value.slowest.end - Ke.value.slowest.start)), 1)
59271
+ K("b", null, [J(P(I(i).display_name(Ke.value.slowest.member)) + " · " + P(I(R3)[Ke.value.slowest.phase]), 1), Ke.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ke.value.slowest.tool), 1)], 64)) : Y("", !0)]),
59272
+ J(" · " + P(I(U3)(Ke.value.slowest.end - Ke.value.slowest.start)), 1)
59215
59273
  ])) : Y("", !0)
59216
59274
  ]),
59217
- K("dl", I6, [
59275
+ K("dl", F6, [
59218
59276
  K("div", null, [t[12] ||= K("dt", null, "执行", -1), K("dd", null, [(U(), W("span", {
59219
59277
  key: Ke.value.executions,
59220
59278
  class: "wf-roll"
@@ -59230,17 +59288,17 @@ var A6 = {
59230
59288
  K("div", { title: `超过 ${a} 分钟没有输出` }, [t[15] ||= K("dt", null, "可能卡住", -1), K("dd", { class: M(Ke.value.stalled ? "is-warn" : "is-zero") }, [(U(), W("span", {
59231
59289
  key: Ke.value.stalled,
59232
59290
  class: "wf-roll"
59233
- }, P(Ke.value.stalled), 1))], 2)], 8, L6),
59234
- K("div", { title: Ee.value.folds.length ? `已折叠 ${Ee.value.folds.length} 段超过 ${I(H3) / 6e4} 分钟的空闲` : void 0 }, [t[16] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(W3)(Ee.value.busy_ms)), 1)], 8, R6),
59235
- K("div", z6, [t[18] ||= K("dt", null, "工具与命令", -1), K("dd", { class: M({ "is-zero": !Ke.value.tool_segments }) }, [(U(), W("span", {
59291
+ }, P(Ke.value.stalled), 1))], 2)], 8, I6),
59292
+ K("div", { title: Ee.value.folds.length ? `已折叠 ${Ee.value.folds.length} 段超过 ${I(V3) / 6e4} 分钟的空闲` : void 0 }, [t[16] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(U3)(Ee.value.busy_ms)), 1)], 8, L6),
59293
+ K("div", R6, [t[18] ||= K("dt", null, "工具与命令", -1), K("dd", { class: M({ "is-zero": !Ke.value.tool_segments }) }, [(U(), W("span", {
59236
59294
  key: Ke.value.tool_segments,
59237
59295
  class: "wf-roll"
59238
59296
  }, P(Ke.value.tool_segments), 1)), t[17] ||= J(" 段", -1)], 2)])
59239
59297
  ]),
59240
- K("ul", B6, [
59298
+ K("ul", z6, [
59241
59299
  (U(!0), W(H, null, B(Xe.value, ([e, t]) => (U(), W("li", { key: e }, [K("i", { class: M(["wf-swatch", `is-${e}`]) }, null, 2), J(P(t), 1)]))), 128)),
59242
- Qe.value.size > 1 ? (U(), W("li", V6, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
59243
- Ze.value ? (U(), W("li", H6, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、Codex App")) : Y("", !0)
59300
+ Qe.value.size > 1 ? (U(), W("li", B6, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
59301
+ Ze.value ? (U(), W("li", V6, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、Codex App")) : Y("", !0)
59244
59302
  ]),
59245
59303
  K("div", {
59246
59304
  class: M(["wf-grid", {
@@ -59248,7 +59306,7 @@ var A6 = {
59248
59306
  "is-panning": I(ne)
59249
59307
  }]),
59250
59308
  role: "list",
59251
- style: fe({ "--wf-depth-px": `${W8}px` }),
59309
+ style: fe({ "--wf-depth-px": `${U8}px` }),
59252
59310
  onWheel: ie,
59253
59311
  onMousedown: le,
59254
59312
  onPointerdown: ae,
@@ -59257,15 +59315,15 @@ var A6 = {
59257
59315
  onPointercancel: se,
59258
59316
  onDblclick: ce
59259
59317
  }, [
59260
- K("div", U6, [
59318
+ K("div", H6, [
59261
59319
  K("span", null, "执行 · " + P(we.value.length) + "/" + P(Ce.value.length), 1),
59262
- ke.value ? (U(), W("span", W6, [J("放大 " + P((1 / Oe.value.span).toFixed(1)) + "×", 1), K("button", {
59320
+ ke.value ? (U(), W("span", U6, [J("放大 " + P((1 / Oe.value.span).toFixed(1)) + "×", 1), K("button", {
59263
59321
  type: "button",
59264
59322
  class: "wf-zoom-reset",
59265
59323
  title: "双击时间线也可还原",
59266
59324
  onClick: t[1] ||= (e) => Oe.value = De
59267
- }, [q(o, { name: "i-lucide-locate-fixed" }), J(P(ye.value ? "重置跟随" : "重置"), 1)])])) : (U(), W("span", G6, "Ctrl + 滚轮缩放")),
59268
- qe.value.length ? (U(), W("span", K6, [K("button", {
59325
+ }, [q(o, { name: "i-lucide-locate-fixed" }), J(P(ye.value ? "重置跟随" : "重置"), 1)])])) : (U(), W("span", W6, "Ctrl + 滚轮缩放")),
59326
+ qe.value.length ? (U(), W("span", G6, [K("button", {
59269
59327
  type: "button",
59270
59328
  class: "wf-text-button",
59271
59329
  onClick: t[2] ||= (e) => g.value = /* @__PURE__ */ new Set()
@@ -59291,7 +59349,7 @@ var A6 = {
59291
59349
  class: "wf-fold-label",
59292
59350
  style: fe({ left: `${e.middle * 100}%` }),
59293
59351
  title: `${lt(e.start)} – ${lt(e.end)} 没有执行,已折叠`
59294
- }, "⋯ " + P(I(W3)(e.end - e.start)), 13, q6))), 128)),
59352
+ }, "⋯ " + P(I(U3)(e.end - e.start)), 13, K6))), 128)),
59295
59353
  je.value === null ? Y("", !0) : (U(), W("span", {
59296
59354
  key: 0,
59297
59355
  class: "wf-cursor-head",
@@ -59311,7 +59369,7 @@ var A6 = {
59311
59369
  class: "wf-label",
59312
59370
  style: fe({ "--depth": e.depth })
59313
59371
  }, [
59314
- e.depth ? (U(), W("span", J6)) : Y("", !0),
59372
+ e.depth ? (U(), W("span", q6)) : Y("", !0),
59315
59373
  e.has_children ? (U(), W("button", {
59316
59374
  key: 1,
59317
59375
  type: "button",
@@ -59319,7 +59377,7 @@ var A6 = {
59319
59377
  "aria-expanded": !g.value.has(e.key),
59320
59378
  "aria-label": `${g.value.has(e.key) ? "展开" : "收起"} ${I(i).display_name(e.item.member)} 派出的执行`,
59321
59379
  onClick: (t) => nt(e.key)
59322
- }, [q(o, { name: "i-lucide-chevron-right" })], 10, Y6)) : (U(), W("span", X6)),
59380
+ }, [q(o, { name: "i-lucide-chevron-right" })], 10, J6)) : (U(), W("span", Y6)),
59323
59381
  q(s, {
59324
59382
  src: I(i).identities[e.item.member]?.icon,
59325
59383
  text: I(i).identities[e.item.member]?.initials,
@@ -59338,29 +59396,29 @@ var A6 = {
59338
59396
  "aria-expanded": y.value === e.key,
59339
59397
  onClick: (t) => tt(e, t),
59340
59398
  onMouseenter: (t) => pt(t, e, {
59341
- label: I(V3)[e.item.state],
59399
+ label: I(B3)[e.item.state],
59342
59400
  start: e.start,
59343
59401
  end: e.end,
59344
59402
  text: ot(e).text,
59345
59403
  live: e.item.state === "running"
59346
59404
  }),
59347
59405
  onMouseleave: (t) => ht(e)
59348
- }, [K("span", Q6, [
59349
- e.item.state === "running" ? (U(), W("i", $6)) : Y("", !0),
59406
+ }, [K("span", Z6, [
59407
+ e.item.state === "running" ? (U(), W("i", Q6)) : Y("", !0),
59350
59408
  K("strong", null, P(I(i).display_name(e.item.member)), 1),
59351
59409
  (U(!0), W(H, null, B(at(e), (e) => (U(), W("em", {
59352
59410
  key: e,
59353
59411
  class: "wf-pill is-role"
59354
59412
  }, P(e), 1))), 128)),
59355
- Ke.value.slowest?.row === e.key ? (U(), W("em", e8, "最慢")) : Y("", !0)
59356
- ]), K("span", { class: M(["wf-status", `is-${ot(e).tone}`]) }, [ot(e).tone === "live" ? (U(), W("i", t8)) : Y("", !0), J(P(ot(e).text), 1)], 2)], 40, Z6)
59413
+ Ke.value.slowest?.row === e.key ? (U(), W("em", $6, "最慢")) : Y("", !0)
59414
+ ]), K("span", { class: M(["wf-status", `is-${ot(e).tone}`]) }, [ot(e).tone === "live" ? (U(), W("i", e8)) : Y("", !0), J(P(ot(e).text), 1)], 2)], 40, X6)
59357
59415
  ], 4),
59358
59416
  K("div", {
59359
59417
  class: "wf-lane",
59360
59418
  role: "img",
59361
59419
  "aria-label": st(e),
59362
59420
  onMouseleave: (t) => ht(e)
59363
- }, [K("div", r8, [
59421
+ }, [K("div", n8, [
59364
59422
  (U(!0), W(H, null, B(et.value, (e) => (U(), W("i", {
59365
59423
  key: e.at,
59366
59424
  class: "wf-gridline",
@@ -59380,7 +59438,7 @@ var A6 = {
59380
59438
  class: M(["wf-link", `is-${e.part}`]),
59381
59439
  "data-tone": Qe.value.get(e.member),
59382
59440
  style: fe({ left: `${e.x * 100}%` })
59383
- }, null, 14, i8))), 128)),
59441
+ }, null, 14, r8))), 128)),
59384
59442
  je.value === null ? Y("", !0) : (U(), W("i", {
59385
59443
  key: 0,
59386
59444
  class: "wf-cursor",
@@ -59399,7 +59457,7 @@ var A6 = {
59399
59457
  start: e.queue[0],
59400
59458
  end: e.queue[1]
59401
59459
  })
59402
- }, null, 44, a8),
59460
+ }, null, 44, i8),
59403
59461
  e.wake ? (U(), W("i", {
59404
59462
  key: 1,
59405
59463
  class: "wf-bar is-wake",
@@ -59414,7 +59472,7 @@ var A6 = {
59414
59472
  start: e.wake[0],
59415
59473
  end: e.wake[1]
59416
59474
  })
59417
- }, null, 44, o8)) : Y("", !0),
59475
+ }, null, 44, a8)) : Y("", !0),
59418
59476
  e.work ? (U(), W("i", {
59419
59477
  key: 2,
59420
59478
  class: M(["wf-bar is-work", { "has-detail": e.segments.length }]),
@@ -59432,9 +59490,9 @@ var A6 = {
59432
59490
  end: e.work[1],
59433
59491
  live: e.item.state === "running"
59434
59492
  })
59435
- }, null, 46, s8)) : Y("", !0),
59493
+ }, null, 46, o8)) : Y("", !0),
59436
59494
  (U(!0), W(H, null, B(e.segments, (t) => (U(), W(H, { key: t.start + t.phase }, [K("i", {
59437
- class: M(["wf-bar wf-seg", [`is-${I(B3)[t.phase]}`, { "is-live": t.live }]]),
59495
+ class: M(["wf-bar wf-seg", [`is-${I(z3)[t.phase]}`, { "is-live": t.live }]]),
59438
59496
  "data-tone": Qe.value.get(e.item.member),
59439
59497
  style: fe(rt(t.start, t.seen, !0)),
59440
59498
  onMouseenter: (n) => pt(n, e, {
@@ -59445,9 +59503,9 @@ var A6 = {
59445
59503
  kind: "segment",
59446
59504
  ...t
59447
59505
  })
59448
- }, null, 46, c8), t.end > t.seen ? (U(), W("i", {
59506
+ }, null, 46, s8), t.end > t.seen ? (U(), W("i", {
59449
59507
  key: 0,
59450
- class: M(["wf-bar wf-seg is-tail", `is-${I(B3)[t.phase]}`]),
59508
+ class: M(["wf-bar wf-seg is-tail", `is-${I(z3)[t.phase]}`]),
59451
59509
  "data-tone": Qe.value.get(e.item.member),
59452
59510
  style: fe(rt(t.seen, t.end)),
59453
59511
  onMouseenter: (n) => pt(n, e, {
@@ -59458,7 +59516,7 @@ var A6 = {
59458
59516
  kind: "segment",
59459
59517
  ...t
59460
59518
  })
59461
- }, null, 46, l8)) : Y("", !0)], 64))), 128)),
59519
+ }, null, 46, c8)) : Y("", !0)], 64))), 128)),
59462
59520
  (U(!0), W(H, null, B(e.notes, (t) => (U(), W("button", {
59463
59521
  key: `note-${t.index}`,
59464
59522
  type: "button",
@@ -59481,15 +59539,15 @@ var A6 = {
59481
59539
  end: t.at
59482
59540
  }),
59483
59541
  onBlur: (t) => ht(e)
59484
- }, null, 44, u8))), 128))
59485
- ])], 40, n8),
59486
- K("span", d8, [
59487
- J(P(I(W3)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
59542
+ }, null, 44, l8))), 128))
59543
+ ])], 40, t8),
59544
+ K("span", u8, [
59545
+ J(P(I(U3)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
59488
59546
  e.item.state === "done" ? Y("", !0) : (U(), W("small", {
59489
59547
  key: 0,
59490
59548
  class: M(`is-${e.item.state}`)
59491
- }, P(I(V3)[e.item.state]), 3)),
59492
- e.truncated ? (U(), W("small", f8, "明细已截断")) : Y("", !0)
59549
+ }, P(I(B3)[e.item.state]), 3)),
59550
+ e.truncated ? (U(), W("small", d8, "明细已截断")) : Y("", !0)
59493
59551
  ])
59494
59552
  ], 2))), 128))
59495
59553
  ], 38),
@@ -59503,9 +59561,9 @@ var A6 = {
59503
59561
  left: `${b.value.left}px`
59504
59562
  })
59505
59563
  }, [
59506
- K("header", m8, [
59564
+ K("header", p8, [
59507
59565
  K("strong", null, P(I(i).display_name(Je.value.item.member)), 1),
59508
- K("small", null, P(it(Je.value)) + " · " + P(I(V3)[Je.value.item.state]) + " · " + P(I(W3)(Je.value.end - Je.value.start)), 1),
59566
+ K("small", null, P(it(Je.value)) + " · " + P(I(B3)[Je.value.item.state]) + " · " + P(I(U3)(Je.value.end - Je.value.start)), 1),
59509
59567
  K("button", {
59510
59568
  type: "button",
59511
59569
  class: "wf-card-close",
@@ -59514,47 +59572,47 @@ var A6 = {
59514
59572
  }, [q(o, { name: "i-lucide-x" })])
59515
59573
  ]),
59516
59574
  K("dl", null, [
59517
- Je.value.item.task ? (U(), W("div", h8, [t[21] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(Je.value.item.task), 1), Je.value.item.task_id ? (U(), W("button", {
59575
+ Je.value.item.task ? (U(), W("div", m8, [t[21] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(Je.value.item.task), 1), Je.value.item.task_id ? (U(), W("button", {
59518
59576
  key: 0,
59519
59577
  type: "button",
59520
59578
  class: "subtle-link",
59521
59579
  onClick: t[5] ||= (e) => n("detail", Je.value.item.task_id)
59522
59580
  }, "#" + P(Je.value.item.task_id), 1)) : Y("", !0)])])) : Y("", !0),
59523
- Je.value.item.state === "failed" ? (U(), W("div", g8, [t[22] ||= K("dt", null, "失败原因", -1), K("dd", _8, P(Je.value.item.reason || "执行失败"), 1)])) : Je.value.item.result || Je.value.item.answer_id ? (U(), W("div", v8, [t[23] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(Je.value.item.result), 1), Je.value.item.answer_id ? (U(), W("button", {
59581
+ Je.value.item.state === "failed" ? (U(), W("div", h8, [t[22] ||= K("dt", null, "失败原因", -1), K("dd", g8, P(Je.value.item.reason || "执行失败"), 1)])) : Je.value.item.result || Je.value.item.answer_id ? (U(), W("div", _8, [t[23] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(Je.value.item.result), 1), Je.value.item.answer_id ? (U(), W("button", {
59524
59582
  key: 0,
59525
59583
  type: "button",
59526
59584
  class: "subtle-link",
59527
59585
  onClick: t[6] ||= (e) => n("detail", Je.value.item.answer_id)
59528
59586
  }, "在消息中查看 #" + P(Je.value.item.answer_id), 1)) : Y("", !0)])])) : Y("", !0),
59529
- Je.value.item.changes ? (U(), W("div", y8, [t[24] ||= K("dt", null, "改动", -1), K("dd", null, P(Je.value.item.changes) + " 个文件", 1)])) : Y("", !0)
59587
+ Je.value.item.changes ? (U(), W("div", v8, [t[24] ||= K("dt", null, "改动", -1), K("dd", null, P(Je.value.item.changes) + " 个文件", 1)])) : Y("", !0)
59530
59588
  ]),
59531
- Ye.value.length ? (U(), W("ol", b8, [(U(!0), W(H, null, B(Ye.value, (e) => (U(), W("li", {
59589
+ Ye.value.length ? (U(), W("ol", y8, [(U(!0), W(H, null, B(Ye.value, (e) => (U(), W("li", {
59532
59590
  key: `${e.kind}-${e.at}-${e.phase || ""}`,
59533
59591
  class: M(`log-${e.kind}`)
59534
59592
  }, [K("time", null, P(lt(e.at)), 1), e.kind === "phase" ? (U(), W(H, { key: 0 }, [K("i", {
59535
- class: M(["wf-swatch", `is-${I(B3)[e.phase]}`]),
59593
+ class: M(["wf-swatch", `is-${I(z3)[e.phase]}`]),
59536
59594
  "data-tone": Qe.value.get(Je.value.item.member),
59537
59595
  "aria-hidden": "true"
59538
- }, null, 10, x8), K("span", null, [
59539
- J(P(I(z3)[e.phase]), 1),
59596
+ }, null, 10, b8), K("span", null, [
59597
+ J(P(I(R3)[e.phase]), 1),
59540
59598
  e.tool ? (U(), W(H, { key: 0 }, [J(" · " + P(e.tool), 1)], 64)) : Y("", !0),
59541
- J(" · " + P(e.live ? "进行中" : I(W3)(e.duration)), 1)
59542
- ])], 64)) : (U(), W("span", S8, P(e.text), 1))], 2))), 128))])) : (U(), W("p", C8, "这次执行没有阶段明细或过程说明。"))
59543
- ], 12, p8)) : Y("", !0),
59544
- me.value === Z8 ? (U(), W("div", w8, [...t[25] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", T8, [ye.value ? (U(), W(H, { key: 0 }, [t[26] ||= K("span", { class: "wf-state is-live" }, "实时", -1), t[27] ||= K("span", { class: "wf-player-note" }, "这一轮结束后可以回放", -1)], 64)) : (U(), W(H, { key: 1 }, [
59599
+ J(" · " + P(e.live ? "进行中" : I(U3)(e.duration)), 1)
59600
+ ])], 64)) : (U(), W("span", x8, P(e.text), 1))], 2))), 128))])) : (U(), W("p", S8, "这次执行没有阶段明细或过程说明。"))
59601
+ ], 12, f8)) : Y("", !0),
59602
+ me.value === X8 ? (U(), W("div", C8, [...t[25] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", w8, [ye.value ? (U(), W(H, { key: 0 }, [t[26] ||= K("span", { class: "wf-state is-live" }, "实时", -1), t[27] ||= K("span", { class: "wf-player-note" }, "这一轮结束后可以回放", -1)], 64)) : (U(), W(H, { key: 1 }, [
59545
59603
  K("button", {
59546
59604
  type: "button",
59547
59605
  class: "wf-player-button",
59548
59606
  "aria-label": k.playing ? "暂停回放" : "回放这一轮",
59549
59607
  onClick: t[7] ||= (e) => k.playing ? Re() : Ie()
59550
- }, [q(o, { name: k.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, E8),
59608
+ }, [q(o, { name: k.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, T8),
59551
59609
  K("button", {
59552
59610
  type: "button",
59553
59611
  class: "wf-player-button",
59554
59612
  "aria-label": "从头回放",
59555
59613
  disabled: !xe.value,
59556
59614
  onClick: ze
59557
- }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, D8),
59615
+ }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, E8),
59558
59616
  q(r, {
59559
59617
  modelValue: k.speed,
59560
59618
  "onUpdate:modelValue": t[8] ||= (e) => k.speed = e,
@@ -59582,13 +59640,13 @@ var A6 = {
59582
59640
  value: xe.value ? k.position : be.value.duration,
59583
59641
  "aria-label": "回放位置",
59584
59642
  onInput: Be
59585
- }, null, 40, O8),
59586
- K("span", k8, P(I(W3)(xe.value ? k.position : be.value.duration)) + " / " + P(I(W3)(be.value.duration)), 1)
59643
+ }, null, 40, D8),
59644
+ K("span", O8, P(I(U3)(xe.value ? k.position : be.value.duration)) + " / " + P(I(U3)(be.value.duration)), 1)
59587
59645
  ], 64))])),
59588
- Ee.value.folds.length || te.value.executions.length >= te.value.execution_limit ? (U(), W("footer", A8, [Ee.value.folds.length ? (U(), W("span", j8, [t[28] ||= K("i", {
59646
+ Ee.value.folds.length || te.value.executions.length >= te.value.execution_limit ? (U(), W("footer", k8, [Ee.value.folds.length ? (U(), W("span", A8, [t[28] ||= K("i", {
59589
59647
  class: "wf-swatch is-fold",
59590
59648
  "aria-hidden": "true"
59591
- }, null, -1), J("已折叠 " + P(Ee.value.folds.length) + " 段超过 " + P(I(H3) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), te.value.executions.length >= te.value.execution_limit ? (U(), W("span", M8, "只列出最近 " + P(te.value.execution_limit) + " 次讨论执行与 " + P(te.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
59649
+ }, null, -1), J("已折叠 " + P(Ee.value.folds.length) + " 段超过 " + P(I(V3) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), te.value.executions.length >= te.value.execution_limit ? (U(), W("span", j8, "只列出最近 " + P(te.value.execution_limit) + " 次讨论执行与 " + P(te.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
59592
59650
  ], 512)) : Y("", !0),
59593
59651
  v.value ? (U(), W("div", {
59594
59652
  key: 3,
@@ -59608,39 +59666,39 @@ var A6 = {
59608
59666
  onClick: t[9] ||= (e) => v.value = null
59609
59667
  }, [q(o, { name: "i-lucide-x" })])) : Y("", !0),
59610
59668
  K("small", null, [J(P(lt(v.value.piece.start)), 1), v.value.piece.end > v.value.piece.start ? (U(), W(H, { key: 0 }, [J(" – " + P(v.value.piece.live ? "现在" : lt(v.value.piece.end)), 1)], 64)) : Y("", !0)]),
59611
- v.value.piece.text ? (U(), W("p", P8, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", F8, P(v.value.row.item.reason), 1)) : Y("", !0),
59612
- _t.value.length ? (U(), W(H, { key: 3 }, [K("small", I8, P(v.value.related.earlier ? "此前的过程说明" : "过程说明"), 1), K("ol", null, [(U(!0), W(H, null, B(_t.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(lt(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
59613
- ], 14, N8)) : Y("", !0)
59669
+ v.value.piece.text ? (U(), W("p", N8, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", P8, P(v.value.row.item.reason), 1)) : Y("", !0),
59670
+ _t.value.length ? (U(), W(H, { key: 3 }, [K("small", F8, P(v.value.related.earlier ? "此前的过程说明" : "过程说明"), 1), K("ol", null, [(U(!0), W(H, null, B(_t.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(lt(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
59671
+ ], 14, M8)) : Y("", !0)
59614
59672
  ]);
59615
59673
  };
59616
59674
  }
59617
- }, [["__scopeId", "data-v-2bb833fb"]]), n5 = {
59675
+ }, [["__scopeId", "data-v-2bb833fb"]]), t5 = {
59618
59676
  key: 0,
59619
59677
  role: "alert",
59620
59678
  class: "fine-print ev-error"
59621
- }, r5 = {
59679
+ }, n5 = {
59622
59680
  key: 1,
59623
59681
  class: "fine-print"
59624
- }, i5 = { class: "ev-ledger" }, a5 = { class: "ev-head" }, o5 = { class: "ev-title" }, s5 = {
59682
+ }, r5 = { class: "ev-ledger" }, i5 = { class: "ev-head" }, a5 = { class: "ev-title" }, o5 = {
59625
59683
  class: "ev-rows",
59626
59684
  role: "listbox",
59627
59685
  "aria-label": "事件"
59628
- }, c5 = {
59686
+ }, s5 = {
59629
59687
  key: 0,
59630
59688
  class: "ev-turn",
59631
59689
  "aria-hidden": "true"
59632
- }, l5 = [
59690
+ }, c5 = [
59633
59691
  "aria-selected",
59634
59692
  "onClick",
59635
59693
  "onKeydown"
59636
- ], u5 = { class: "ev-time" }, d5 = { class: "ev-tag" }, f5 = { class: "ev-text" }, p5 = {
59694
+ ], l5 = { class: "ev-time" }, u5 = { class: "ev-tag" }, d5 = { class: "ev-text" }, f5 = {
59637
59695
  key: 0,
59638
59696
  class: "ev-inspector",
59639
59697
  "aria-label": "记录详情"
59640
- }, m5 = { class: "ev-head" }, h5 = { class: "ev-title" }, g5 = { class: "ev-actions" }, _5 = { class: "ev-body" }, v5 = { class: "ev-line" }, y5 = { class: "ev-chips" }, b5 = ["onClick"], x5 = ["onClick"], S5 = { class: "ev-state" }, C5 = {
59698
+ }, p5 = { class: "ev-head" }, m5 = { class: "ev-title" }, h5 = { class: "ev-actions" }, g5 = { class: "ev-body" }, _5 = { class: "ev-line" }, v5 = { class: "ev-chips" }, y5 = ["onClick"], b5 = ["onClick"], x5 = { class: "ev-state" }, S5 = {
59641
59699
  key: 0,
59642
59700
  class: "fine-print"
59643
- }, w5 = { class: "ev-related" }, T5 = ["onClick"], E5 = { class: "ev-time" }, D5 = { class: "ev-raw" }, O5 = /*#__PURE__*/ TH({
59701
+ }, C5 = { class: "ev-related" }, w5 = ["onClick"], T5 = { class: "ev-time" }, E5 = { class: "ev-raw" }, D5 = /*#__PURE__*/ TH({
59644
59702
  __name: "EventLog",
59645
59703
  emits: ["detail"],
59646
59704
  setup(e, { emit: t }) {
@@ -59678,7 +59736,7 @@ var A6 = {
59678
59736
  let e = 0, t = o.value;
59679
59737
  return t.flatMap((n, r) => {
59680
59738
  let i = b(n) && y(t[r + 1]) || y(n) && !b(t[r - 1]);
59681
- if (i && (e += 1), d.value && !E6(n).includes(d.value)) return [];
59739
+ if (i && (e += 1), d.value && !T6(n).includes(d.value)) return [];
59682
59740
  let a = n.kind.split(".")[0];
59683
59741
  return [{
59684
59742
  event: n,
@@ -59686,14 +59744,14 @@ var A6 = {
59686
59744
  boundary: i && !d.value,
59687
59745
  turn: e,
59688
59746
  group: a,
59689
- label: b6[a] || a,
59690
- text: O6(n, g)
59747
+ label: y6[a] || a,
59748
+ text: D6(n, g)
59691
59749
  }];
59692
59750
  });
59693
- }), S = Z(() => o.value.findIndex((e) => e.id === u.value)), C = Z(() => o.value[S.value]), w = Z(() => C.value ? k6(o.value, S.value) : null), T = Z(() => {
59751
+ }), S = Z(() => o.value.findIndex((e) => e.id === u.value)), C = Z(() => o.value[S.value]), w = Z(() => C.value ? O6(o.value, S.value) : null), T = Z(() => {
59694
59752
  if (!C.value) return [];
59695
- let e = new Set(E6(C.value));
59696
- return e.size ? x.value.filter((t) => t.event.id !== u.value && E6(t.event).some((t) => e.has(t))) : [];
59753
+ let e = new Set(T6(C.value));
59754
+ return e.size ? x.value.filter((t) => t.event.id !== u.value && T6(t.event).some((t) => e.has(t))) : [];
59697
59755
  });
59698
59756
  function E(e) {
59699
59757
  u.value = u.value === e.event.id ? null : e.event.id;
@@ -59715,12 +59773,12 @@ var A6 = {
59715
59773
  K("code", null, "codiscuss room events"),
59716
59774
  J(" 读取同一份记录。")
59717
59775
  ])])], -1),
59718
- l.value ? (U(), W("p", n5, P(l.value), 1)) : o.value.length ? Y("", !0) : (U(), W("p", r5, "还没有事件记录。此功能上线前的历史没有记录。")),
59776
+ l.value ? (U(), W("p", t5, P(l.value), 1)) : o.value.length ? Y("", !0) : (U(), W("p", n5, "还没有事件记录。此功能上线前的历史没有记录。")),
59719
59777
  o.value.length ? (U(), W("div", {
59720
59778
  key: 2,
59721
59779
  class: M(["ev", { "has-inspector": C.value }])
59722
- }, [K("div", i5, [K("header", a5, [
59723
- K("span", o5, P(x.value.length) + " 条记录", 1),
59780
+ }, [K("div", r5, [K("header", i5, [
59781
+ K("span", a5, P(x.value.length) + " 条记录", 1),
59724
59782
  d.value ? (U(), W("button", {
59725
59783
  key: 0,
59726
59784
  type: "button",
@@ -59733,7 +59791,7 @@ var A6 = {
59733
59791
  class: "subtle-link",
59734
59792
  onClick: t[1] ||= (e) => h("older")
59735
59793
  }, "加载更早")) : Y("", !0)
59736
- ]), K("ol", s5, [(U(!0), W(H, null, B(x.value, (e) => (U(), W(H, { key: e.event.id }, [e.boundary ? (U(), W("li", c5, "第 " + P(e.turn) + " 轮", 1)) : Y("", !0), K("li", {
59794
+ ]), K("ol", o5, [(U(!0), W(H, null, B(x.value, (e) => (U(), W(H, { key: e.event.id }, [e.boundary ? (U(), W("li", s5, "第 " + P(e.turn) + " 轮", 1)) : Y("", !0), K("li", {
59737
59795
  role: "option",
59738
59796
  tabindex: "0",
59739
59797
  class: M(["ev-row", [`is-${e.group}`, {
@@ -59745,10 +59803,10 @@ var A6 = {
59745
59803
  onClick: (t) => E(e),
59746
59804
  onKeydown: fu((t) => E(e), ["enter"])
59747
59805
  }, [
59748
- K("time", u5, P(_(e.event.at)), 1),
59749
- K("span", d5, P(e.label), 1),
59750
- K("span", f5, P(e.text), 1)
59751
- ], 42, l5)], 64))), 128))])]), C.value ? (U(), W("aside", p5, [K("header", m5, [K("span", h5, P(_(C.value.at)) + " · " + P(C.value.kind), 1), K("span", g5, [
59806
+ K("time", l5, P(_(e.event.at)), 1),
59807
+ K("span", u5, P(e.label), 1),
59808
+ K("span", d5, P(e.text), 1)
59809
+ ], 42, c5)], 64))), 128))])]), C.value ? (U(), W("aside", f5, [K("header", p5, [K("span", m5, P(_(C.value.at)) + " · " + P(C.value.kind), 1), K("span", h5, [
59752
59810
  K("button", {
59753
59811
  type: "button",
59754
59812
  class: "ev-icon",
@@ -59767,33 +59825,33 @@ var A6 = {
59767
59825
  "aria-label": "关闭",
59768
59826
  onClick: t[4] ||= (e) => u.value = null
59769
59827
  }, "✕")
59770
- ])]), K("div", _5, [
59771
- K("p", v5, P(I(O6)(C.value, g)), 1),
59772
- K("div", y5, [(U(!0), W(H, null, B(I(E6)(C.value), (e) => (U(), W(H, { key: e }, [K("button", {
59828
+ ])]), K("div", g5, [
59829
+ K("p", _5, P(I(D6)(C.value, g)), 1),
59830
+ K("div", v5, [(U(!0), W(H, null, B(I(T6)(C.value), (e) => (U(), W(H, { key: e }, [K("button", {
59773
59831
  type: "button",
59774
59832
  class: M(["ev-chip", { "is-active": d.value === e }]),
59775
59833
  onClick: (t) => d.value = d.value === e ? "" : e
59776
- }, "只看 " + P(v(e)), 11, b5), e.startsWith("message:") ? (U(), W("button", {
59834
+ }, "只看 " + P(v(e)), 11, y5), e.startsWith("message:") ? (U(), W("button", {
59777
59835
  key: 0,
59778
59836
  type: "button",
59779
59837
  class: "subtle-link",
59780
59838
  onClick: (t) => n("detail", Number(e.split(":")[1]))
59781
- }, "查看 " + P(v(e)), 9, x5)) : Y("", !0)], 64))), 128))]),
59839
+ }, "查看 " + P(v(e)), 9, b5)) : Y("", !0)], 64))), 128))]),
59782
59840
  t[6] ||= K("h3", null, "此刻未结束的", -1),
59783
- K("ul", S5, [
59784
- (U(!0), W(H, null, B(w.value.requests, (e) => (U(), W("li", { key: `r${e.request_id}` }, [J("请求 R" + P(e.request_id) + " → " + P(g(e.member_id)) + " · " + P(I(h6)[e.purpose] || e.purpose) + " · 挂在 #" + P(e.message_id) + " · " + P(I(p6)[e.status] || e.status), 1), e.execution_id ? (U(), W(H, { key: 0 }, [J(" · 执行 E" + P(e.execution_id), 1)], 64)) : Y("", !0)]))), 128)),
59785
- (U(!0), W(H, null, B(w.value.executions, (e) => (U(), W("li", { key: `e${e.execution_id}` }, "执行 E" + P(e.execution_id) + " · " + P(g(e.member_id)) + " · " + P(I(m6)[e.status] || e.status) + " · 已过 " + P(Math.round((C.value.at - e.at) / 1e3)) + " 秒", 1))), 128)),
59841
+ K("ul", x5, [
59842
+ (U(!0), W(H, null, B(w.value.requests, (e) => (U(), W("li", { key: `r${e.request_id}` }, [J("请求 R" + P(e.request_id) + " → " + P(g(e.member_id)) + " · " + P(I(m6)[e.purpose] || e.purpose) + " · 挂在 #" + P(e.message_id) + " · " + P(I(f6)[e.status] || e.status), 1), e.execution_id ? (U(), W(H, { key: 0 }, [J(" · 执行 E" + P(e.execution_id), 1)], 64)) : Y("", !0)]))), 128)),
59843
+ (U(!0), W(H, null, B(w.value.executions, (e) => (U(), W("li", { key: `e${e.execution_id}` }, "执行 E" + P(e.execution_id) + " · " + P(g(e.member_id)) + " · " + P(I(p6)[e.status] || e.status) + " · 已过 " + P(Math.round((C.value.at - e.at) / 1e3)) + " 秒", 1))), 128)),
59786
59844
  (U(!0), W(H, null, B(w.value.queue, (e) => (U(), W("li", { key: `q${e.queue_id}` }, P(g(e.member_id)) + " 排队等候 #" + P(e.message_id), 1))), 128)),
59787
59845
  (U(!0), W(H, null, B(w.value.chains, (e) => (U(), W("li", { key: `c${e.chain_id}` }, "任务链 #" + P(e.chain_id) + " 到限暂停", 1))), 128)),
59788
- !w.value.requests.length && !w.value.executions.length && !w.value.queue.length && !w.value.chains.length ? (U(), W("li", C5, "无(只计已加载的记录)")) : Y("", !0)
59846
+ !w.value.requests.length && !w.value.executions.length && !w.value.queue.length && !w.value.chains.length ? (U(), W("li", S5, "无(只计已加载的记录)")) : Y("", !0)
59789
59847
  ]),
59790
- T.value.length ? (U(), W(H, { key: 0 }, [t[5] ||= K("h3", null, "同一对象的其他记录", -1), K("ul", w5, [(U(!0), W(H, null, B(T.value, (e) => (U(), W("li", { key: e.event.id }, [K("button", {
59848
+ T.value.length ? (U(), W(H, { key: 0 }, [t[5] ||= K("h3", null, "同一对象的其他记录", -1), K("ul", C5, [(U(!0), W(H, null, B(T.value, (e) => (U(), W("li", { key: e.event.id }, [K("button", {
59791
59849
  type: "button",
59792
59850
  class: "ev-link",
59793
59851
  onClick: (t) => u.value = e.event.id
59794
- }, [K("time", E5, P(_(e.event.at)), 1), J(" " + P(e.text), 1)], 8, T5)]))), 128))])], 64)) : Y("", !0),
59852
+ }, [K("time", T5, P(_(e.event.at)), 1), J(" " + P(e.text), 1)], 8, w5)]))), 128))])], 64)) : Y("", !0),
59795
59853
  t[7] ||= K("h3", null, "原始记录", -1),
59796
- K("pre", D5, P(JSON.stringify({
59854
+ K("pre", E5, P(JSON.stringify({
59797
59855
  id: C.value.id,
59798
59856
  kind: C.value.kind,
59799
59857
  at: C.value.at,
@@ -59802,66 +59860,66 @@ var A6 = {
59802
59860
  ])])) : Y("", !0)], 2)) : Y("", !0)
59803
59861
  ], 32));
59804
59862
  }
59805
- }, [["__scopeId", "data-v-08613aba"]]), k5 = { class: "project-files" }, A5 = { class: "project-files-heading" }, j5 = ["title"], M5 = ["aria-busy"], N5 = {
59863
+ }, [["__scopeId", "data-v-08613aba"]]), O5 = { class: "project-files" }, k5 = { class: "project-files-heading" }, A5 = ["title"], j5 = ["aria-busy"], M5 = {
59806
59864
  class: "project-explorer-path",
59807
59865
  "aria-label": "文件路径"
59808
- }, P5 = [
59866
+ }, N5 = [
59809
59867
  "disabled",
59810
59868
  "aria-current",
59811
59869
  "onClick"
59812
- ], F5 = { class: "project-files-rows" }, I5 = [
59870
+ ], P5 = { class: "project-files-rows" }, F5 = [
59813
59871
  "disabled",
59814
59872
  "title",
59815
59873
  "onClick"
59816
- ], L5 = { class: "project-file-name" }, R5 = { class: "project-file-size" }, z5 = ["datetime"], B5 = {
59874
+ ], I5 = { class: "project-file-name" }, L5 = { class: "project-file-size" }, R5 = ["datetime"], z5 = {
59817
59875
  key: 0,
59818
59876
  class: "project-files-empty",
59819
59877
  role: "status"
59820
- }, V5 = {
59878
+ }, B5 = {
59821
59879
  key: 1,
59822
59880
  class: "project-files-empty"
59823
- }, H5 = {
59881
+ }, V5 = {
59824
59882
  key: 0,
59825
59883
  class: "project-files-footer"
59826
- }, U5 = { class: "project-editor-tabs" }, W5 = { class: "project-editor-tab" }, G5 = { class: "project-editor-actions" }, K5 = {
59884
+ }, H5 = { class: "project-editor-tabs" }, U5 = { class: "project-editor-tab" }, W5 = { class: "project-editor-actions" }, G5 = {
59827
59885
  key: 2,
59828
59886
  class: "project-editor-modes",
59829
59887
  role: "group",
59830
59888
  "aria-label": "显示方式"
59831
- }, q5 = ["aria-pressed"], J5 = ["aria-pressed"], Y5 = {
59889
+ }, K5 = ["aria-pressed"], q5 = ["aria-pressed"], J5 = {
59832
59890
  class: "project-editor-breadcrumbs",
59833
59891
  "aria-label": "文件位置"
59834
- }, X5 = ["onClick"], Z5 = { key: 2 }, Q5 = {
59892
+ }, Y5 = ["onClick"], X5 = { key: 2 }, Z5 = {
59835
59893
  key: 0,
59836
59894
  class: "project-editor-banner"
59837
- }, $5 = {
59895
+ }, Q5 = {
59838
59896
  key: 1,
59839
59897
  class: "project-editor-banner"
59840
- }, e7 = {
59898
+ }, $5 = {
59841
59899
  key: 0,
59842
59900
  class: "project-editor-state",
59843
59901
  role: "status"
59844
- }, t7 = {
59902
+ }, e7 = {
59845
59903
  key: 1,
59846
59904
  class: "project-editor-state"
59847
- }, n7 = {
59905
+ }, t7 = {
59848
59906
  key: 2,
59849
59907
  class: "project-editor-state"
59850
- }, r7 = {
59908
+ }, n7 = {
59851
59909
  class: "project-code-number",
59852
59910
  "aria-hidden": "true"
59853
- }, i7 = { class: "project-code-line" }, a7 = {
59911
+ }, r7 = { class: "project-code-line" }, i7 = {
59854
59912
  key: 4,
59855
59913
  class: "project-code",
59856
59914
  tabindex: "0",
59857
59915
  "aria-label": "文件内容"
59858
- }, o7 = {
59916
+ }, a7 = {
59859
59917
  class: "project-code-gutter",
59860
59918
  "aria-hidden": "true"
59861
- }, s7 = { class: "project-code-text" }, c7 = ["srcdoc"], l7 = ["innerHTML"], u7 = {
59919
+ }, o7 = { class: "project-code-text" }, s7 = ["srcdoc"], c7 = ["innerHTML"], l7 = {
59862
59920
  key: 8,
59863
59921
  class: "file-listen-dock"
59864
- }, d7 = ["aria-pressed", "title"], f7 = { class: "project-editor-status" }, p7 = ["title"], m7 = { class: "project-editor-encoding" }, h7 = { key: 2 }, g7 = 350, _7 = /*#__PURE__*/ TH({
59922
+ }, u7 = ["aria-pressed", "title"], d7 = { class: "project-editor-status" }, f7 = ["title"], p7 = { class: "project-editor-encoding" }, m7 = { key: 2 }, h7 = 350, g7 = /*#__PURE__*/ TH({
59865
59923
  __name: "ProjectFiles",
59866
59924
  props: { directory: {
59867
59925
  type: String,
@@ -60082,7 +60140,7 @@ var A6 = {
60082
60140
  });
60083
60141
  }
60084
60142
  function ge() {
60085
- ce.value = null, window.clearTimeout(le), ue || (le = window.setTimeout(ye, g7));
60143
+ ce.value = null, window.clearTimeout(le), ue || (le = window.setTimeout(ye, h7));
60086
60144
  }
60087
60145
  let N = (e) => !!e.target.closest?.(".file-listen-offer"), _e = (e) => {
60088
60146
  N(e) || (ue = !0);
@@ -60167,7 +60225,7 @@ var A6 = {
60167
60225
  }
60168
60226
  return (t, n) => {
60169
60227
  let r = MA, i = sA, m = vV;
60170
- return U(), W(H, null, [K("section", k5, [K("header", A5, [K("div", null, [n[13] ||= K("h2", null, "项目文件", -1), K("p", { title: e.directory }, P(e.directory), 9, j5)]), q(r, {
60228
+ return U(), W(H, null, [K("section", O5, [K("header", k5, [K("div", null, [n[13] ||= K("h2", null, "项目文件", -1), K("p", { title: e.directory }, P(e.directory), 9, A5)]), q(r, {
60171
60229
  icon: "i-lucide-refresh-cw",
60172
60230
  color: "neutral",
60173
60231
  variant: "ghost",
@@ -60180,7 +60238,7 @@ var A6 = {
60180
60238
  class: "project-explorer",
60181
60239
  "aria-busy": o.value
60182
60240
  }, [
60183
- K("nav", N5, [(U(!0), W(H, null, B(b.value, (e, t) => (U(), W(H, { key: e.path }, [t ? (U(), G(i, {
60241
+ K("nav", M5, [(U(!0), W(H, null, B(b.value, (e, t) => (U(), W(H, { key: e.path }, [t ? (U(), G(i, {
60184
60242
  key: 0,
60185
60243
  name: "i-lucide-chevron-right",
60186
60244
  class: "project-crumb-separator"
@@ -60192,7 +60250,7 @@ var A6 = {
60192
60250
  }, [t ? Y("", !0) : (U(), G(i, {
60193
60251
  key: 0,
60194
60252
  name: "i-lucide-folder-root"
60195
- })), J(P(e.name), 1)], 8, P5)], 64))), 128))]),
60253
+ })), J(P(e.name), 1)], 8, N5)], 64))), 128))]),
60196
60254
  n[15] ||= K("div", {
60197
60255
  class: "project-files-columns",
60198
60256
  "aria-hidden": "true"
@@ -60201,7 +60259,7 @@ var A6 = {
60201
60259
  K("span", null, "大小"),
60202
60260
  K("span", null, "修改时间")
60203
60261
  ], -1),
60204
- K("div", F5, [(U(!0), W(H, null, B(a.value?.entries || [], (e) => (U(), W("button", {
60262
+ K("div", P5, [(U(!0), W(H, null, B(a.value?.entries || [], (e) => (U(), W("button", {
60205
60263
  key: e.path,
60206
60264
  type: "button",
60207
60265
  class: M(["project-file-row", { "is-hidden": e.name.startsWith(".") }]),
@@ -60209,14 +60267,14 @@ var A6 = {
60209
60267
  title: e.kind === "unavailable" ? `${e.name}(无法读取或指向项目外)` : e.name,
60210
60268
  onClick: (t) => e.kind === "directory" ? Se(e.path) : Ce(e.path)
60211
60269
  }, [
60212
- K("span", L5, [q(i, {
60270
+ K("span", I5, [q(i, {
60213
60271
  name: v(e)[0],
60214
60272
  class: M(["project-file-icon", v(e)[1]])
60215
60273
  }, null, 8, ["name", "class"]), K("span", null, P(e.name), 1)]),
60216
- K("span", R5, P(Te(e.size)), 1),
60217
- K("time", { datetime: e.modified_at }, P(Ee(e.modified_at)), 9, z5)
60218
- ], 10, I5))), 128)), a.value ? a.value.entries.length ? Y("", !0) : (U(), W("p", V5, [q(i, { name: "i-lucide-folder-open" }), n[14] ||= J("此文件夹为空", -1)])) : (U(), W("p", B5, P(o.value ? "正在读取项目目录…" : "点击刷新重新读取目录"), 1))]),
60219
- a.value ? (U(), W("footer", H5, [K("span", null, [J(P(a.value.total) + " 项", 1), a.value.next_offset === null ? Y("", !0) : (U(), W(H, { key: 0 }, [J(",已显示 " + P(a.value.entries.length) + " 项", 1)], 64))]), a.value.next_offset === null ? Y("", !0) : (U(), G(r, {
60274
+ K("span", L5, P(Te(e.size)), 1),
60275
+ K("time", { datetime: e.modified_at }, P(Ee(e.modified_at)), 9, R5)
60276
+ ], 10, F5))), 128)), a.value ? a.value.entries.length ? Y("", !0) : (U(), W("p", B5, [q(i, { name: "i-lucide-folder-open" }), n[14] ||= J("此文件夹为空", -1)])) : (U(), W("p", z5, P(o.value ? "正在读取项目目录…" : "点击刷新重新读取目录"), 1))]),
60277
+ a.value ? (U(), W("footer", V5, [K("span", null, [J(P(a.value.total) + " 项", 1), a.value.next_offset === null ? Y("", !0) : (U(), W(H, { key: 0 }, [J(",已显示 " + P(a.value.entries.length) + " 项", 1)], 64))]), a.value.next_offset === null ? Y("", !0) : (U(), G(r, {
60220
60278
  key: 0,
60221
60279
  label: "加载更多",
60222
60280
  color: "neutral",
@@ -60225,7 +60283,7 @@ var A6 = {
60225
60283
  loading: o.value,
60226
60284
  onClick: n[1] ||= (e) => Se(a.value.path, !0)
60227
60285
  }, null, 8, ["loading"]))])) : Y("", !0)
60228
- ], 8, M5)]), q(m, {
60286
+ ], 8, j5)]), q(m, {
60229
60287
  open: s.value,
60230
60288
  "onUpdate:open": n[12] ||= (e) => s.value = e,
60231
60289
  title: S.value,
@@ -60234,10 +60292,10 @@ var A6 = {
60234
60292
  ui: { content: "project-editor" }
60235
60293
  }, {
60236
60294
  content: L(() => [
60237
- K("div", U5, [K("div", W5, [q(i, {
60295
+ K("div", H5, [K("div", U5, [q(i, {
60238
60296
  name: C.value[1],
60239
60297
  class: M(["project-file-icon", C.value[2]])
60240
- }, null, 8, ["name", "class"]), K("span", null, P(S.value), 1)]), K("div", G5, [
60298
+ }, null, 8, ["name", "class"]), K("span", null, P(S.value), 1)]), K("div", W5, [
60241
60299
  O.value ? (U(), G(r, {
60242
60300
  key: 0,
60243
60301
  icon: "i-lucide-wrap-text",
@@ -60267,7 +60325,7 @@ var A6 = {
60267
60325
  "title",
60268
60326
  "aria-label"
60269
60327
  ])) : Y("", !0),
60270
- D.value ? (U(), W("div", K5, [K("button", {
60328
+ D.value ? (U(), W("div", G5, [K("button", {
60271
60329
  type: "button",
60272
60330
  "aria-pressed": !f.value,
60273
60331
  title: "预览",
@@ -60275,7 +60333,7 @@ var A6 = {
60275
60333
  }, [q(i, {
60276
60334
  name: "i-lucide-eye",
60277
60335
  class: "project-mode-icon"
60278
- }), n[16] ||= K("span", null, "预览", -1)], 8, q5), K("button", {
60336
+ }), n[16] ||= K("span", null, "预览", -1)], 8, K5), K("button", {
60279
60337
  type: "button",
60280
60338
  "aria-pressed": f.value,
60281
60339
  title: "源码",
@@ -60283,7 +60341,7 @@ var A6 = {
60283
60341
  }, [q(i, {
60284
60342
  name: "i-lucide-code-xml",
60285
60343
  class: "project-mode-icon"
60286
- }), n[17] ||= K("span", null, "源码", -1)], 8, J5)])) : Y("", !0),
60344
+ }), n[17] ||= K("span", null, "源码", -1)], 8, q5)])) : Y("", !0),
60287
60345
  q(r, {
60288
60346
  icon: "i-lucide-x",
60289
60347
  color: "neutral",
@@ -60293,7 +60351,7 @@ var A6 = {
60293
60351
  onClick: n[6] ||= (e) => s.value = !1
60294
60352
  })
60295
60353
  ])]),
60296
- K("nav", Y5, [(U(!0), W(H, null, B(x.value, (e, t) => (U(), W(H, { key: e.path }, [t ? (U(), G(i, {
60354
+ K("nav", J5, [(U(!0), W(H, null, B(x.value, (e, t) => (U(), W(H, { key: e.path }, [t ? (U(), G(i, {
60297
60355
  key: 0,
60298
60356
  name: "i-lucide-chevron-right",
60299
60357
  class: "project-crumb-separator"
@@ -60302,24 +60360,24 @@ var A6 = {
60302
60360
  type: "button",
60303
60361
  title: "在列表中打开此文件夹",
60304
60362
  onClick: (t) => we(e.path)
60305
- }, P(e.name), 9, X5)) : (U(), W("span", Z5, [q(i, {
60363
+ }, P(e.name), 9, Y5)) : (U(), W("span", X5, [q(i, {
60306
60364
  name: C.value[1],
60307
60365
  class: M(["project-file-icon", C.value[2]])
60308
60366
  }, null, 8, ["name", "class"]), J(P(e.name), 1)]))], 64))), 128))]),
60309
- l.value?.truncated ? (U(), W("p", Q5, [
60367
+ l.value?.truncated ? (U(), W("p", Z5, [
60310
60368
  q(i, { name: "i-lucide-info" }),
60311
60369
  J("文件较大,仅显示前 " + P(Te(l.value.limit)) + "(共 " + P(Te(l.value.size)) + ")", 1),
60312
60370
  w.value === "html" ? (U(), W(H, { key: 0 }, [J(",HTML 不渲染不完整的内容")], 64)) : Y("", !0)
60313
- ])) : D.value && !f.value && w.value === "html" ? (U(), W("p", $5, [q(i, { name: "i-lucide-shield" }), n[18] ||= J("静态预览:脚本、外部样式与外部图片不加载", -1)])) : Y("", !0),
60371
+ ])) : D.value && !f.value && w.value === "html" ? (U(), W("p", Q5, [q(i, { name: "i-lucide-shield" }), n[18] ||= J("静态预览:脚本、外部样式与外部图片不加载", -1)])) : Y("", !0),
60314
60372
  K("div", {
60315
60373
  ref_key: "editor_body",
60316
60374
  ref: ie,
60317
60375
  class: "project-editor-body"
60318
60376
  }, [
60319
- u.value ? (U(), W("div", e7, [q(i, {
60377
+ u.value ? (U(), W("div", $5, [q(i, {
60320
60378
  name: "i-lucide-loader-circle",
60321
60379
  class: "animate-spin"
60322
- }), n[19] ||= J("正在读取文件…", -1)])) : d.value ? (U(), W("div", t7, [
60380
+ }), n[19] ||= J("正在读取文件…", -1)])) : d.value ? (U(), W("div", e7, [
60323
60381
  q(i, { name: "i-lucide-circle-alert" }),
60324
60382
  K("p", null, P(d.value), 1),
60325
60383
  q(r, {
@@ -60329,7 +60387,7 @@ var A6 = {
60329
60387
  size: "sm",
60330
60388
  onClick: n[7] ||= (e) => Ce(c.value)
60331
60389
  })
60332
- ])) : l.value?.text === null ? (U(), W("div", n7, [q(i, { name: C.value[1] }, null, 8, ["name"]), K("p", null, P(l.value.reason), 1)])) : O.value && p.value ? (U(), W("div", {
60390
+ ])) : l.value?.text === null ? (U(), W("div", t7, [q(i, { name: C.value[1] }, null, 8, ["name"]), K("p", null, P(l.value.reason), 1)])) : O.value && p.value ? (U(), W("div", {
60333
60391
  key: 3,
60334
60392
  class: "project-code is-wrapped",
60335
60393
  tabindex: "0",
@@ -60338,14 +60396,14 @@ var A6 = {
60338
60396
  }, [(U(!0), W(H, null, B(k.value, (e, t) => (U(), W("div", {
60339
60397
  key: t,
60340
60398
  class: "project-code-row"
60341
- }, [K("span", r7, P(t + 1), 1), K("span", i7, P(e), 1)]))), 128))], 4)) : O.value ? (U(), W("div", a7, [K("pre", o7, P(ee.value), 1), K("pre", s7, [K("code", null, P(l.value.text), 1)])])) : l.value && w.value === "html" ? (U(), W("iframe", {
60399
+ }, [K("span", n7, P(t + 1), 1), K("span", r7, P(e), 1)]))), 128))], 4)) : O.value ? (U(), W("div", i7, [K("pre", a7, P(ee.value), 1), K("pre", o7, [K("code", null, P(l.value.text), 1)])])) : l.value && w.value === "html" ? (U(), W("iframe", {
60342
60400
  key: 5,
60343
60401
  class: "project-html-preview",
60344
60402
  sandbox: "",
60345
60403
  referrerpolicy: "no-referrer",
60346
60404
  srcdoc: E.value,
60347
60405
  title: "HTML 文件预览"
60348
- }, null, 8, c7)) : l.value ? (U(), W("div", {
60406
+ }, null, 8, s7)) : l.value ? (U(), W("div", {
60349
60407
  key: 6,
60350
60408
  ref_key: "markdown_scroll",
60351
60409
  ref: ae,
@@ -60361,7 +60419,7 @@ var A6 = {
60361
60419
  ref: oe,
60362
60420
  class: "markdown-body project-markdown-preview",
60363
60421
  innerHTML: T.value
60364
- }, null, 8, l7)], 544)) : Y("", !0),
60422
+ }, null, 8, c7)], 544)) : Y("", !0),
60365
60423
  ce.value && !ce.value.touch ? (U(), W("button", {
60366
60424
  key: 7,
60367
60425
  type: "button",
@@ -60375,7 +60433,7 @@ var A6 = {
60375
60433
  onMousedown: n[8] ||= uu(() => {}, ["prevent"]),
60376
60434
  onClick: be
60377
60435
  }, [q(i, { name: "i-lucide-headphones" }), n[20] ||= J("朗读", -1)], 36)) : Y("", !0),
60378
- ce.value?.touch || I(j).state.message_id ? (U(), W("div", u7, [
60436
+ ce.value?.touch || I(j).state.message_id ? (U(), W("div", l7, [
60379
60437
  ce.value?.touch ? (U(), W("button", {
60380
60438
  key: 0,
60381
60439
  type: "button",
@@ -60391,7 +60449,7 @@ var A6 = {
60391
60449
  "aria-pressed": I(j).state.following,
60392
60450
  title: I(j).state.following ? "手动滚动即取消跟随" : "页面跟随朗读位置滚动",
60393
60451
  onClick: n[10] ||= (e) => I(j).state.following ? I(j).state.following = !1 : I(j).follow()
60394
- }, [q(i, { name: "i-lucide-locate-fixed" }), J(P(I(j).state.following ? "跟随中" : "跟随"), 1)], 10, d7)) : Y("", !0),
60452
+ }, [q(i, { name: "i-lucide-locate-fixed" }), J(P(I(j).state.following ? "跟随中" : "跟随"), 1)], 10, u7)) : Y("", !0),
60395
60453
  I(j).state.reading ? (U(), W("button", {
60396
60454
  key: 2,
60397
60455
  type: "button",
@@ -60401,15 +60459,15 @@ var A6 = {
60401
60459
  }, [q(i, { name: "i-lucide-square" }), n[22] ||= J("退出", -1)])) : Y("", !0)
60402
60460
  ])) : Y("", !0)
60403
60461
  ], 512),
60404
- K("footer", f7, [
60462
+ K("footer", d7, [
60405
60463
  l.value ? (U(), W("span", {
60406
60464
  key: 0,
60407
60465
  class: "project-editor-modified",
60408
60466
  title: l.value.modified_at
60409
- }, "修改于 " + P(Ee(l.value.modified_at)), 9, p7)) : Y("", !0),
60467
+ }, "修改于 " + P(Ee(l.value.modified_at)), 9, f7)) : Y("", !0),
60410
60468
  n[23] ||= K("span", { class: "project-editor-status-spacer" }, null, -1),
60411
- l.value?.text == null ? Y("", !0) : (U(), W(H, { key: 1 }, [K("span", null, P(A.value) + " 行", 1), K("span", m7, P(te.value), 1)], 64)),
60412
- l.value ? (U(), W("span", h7, P(Te(l.value.size)), 1)) : Y("", !0),
60469
+ l.value?.text == null ? Y("", !0) : (U(), W(H, { key: 1 }, [K("span", null, P(A.value) + " 行", 1), K("span", p7, P(te.value), 1)], 64)),
60470
+ l.value ? (U(), W("span", m7, P(Te(l.value.size)), 1)) : Y("", !0),
60413
60471
  K("span", null, P(C.value[0]), 1)
60414
60472
  ])
60415
60473
  ]),
@@ -60422,75 +60480,75 @@ var A6 = {
60422
60480
  ])], 64);
60423
60481
  };
60424
60482
  }
60425
- }, [["__scopeId", "data-v-55a53d8e"]]), v7 = [
60483
+ }, [["__scopeId", "data-v-55a53d8e"]]), _7 = [
60426
60484
  "aria-valuemax",
60427
60485
  "aria-valuenow",
60428
60486
  "aria-valuetext"
60429
- ], y7 = { class: "channel-main" }, b7 = { class: "channel-header" }, x7 = { class: "channel-title-icon" }, S7 = { class: "channel-title" }, C7 = { class: "channel-title-copy" }, w7 = ["title"], T7 = {
60487
+ ], v7 = { class: "channel-main" }, y7 = { class: "channel-header" }, b7 = { class: "channel-title-icon" }, x7 = { class: "channel-title" }, S7 = { class: "channel-title-copy" }, C7 = ["title"], w7 = {
60430
60488
  key: 2,
60431
60489
  class: "channel-header-context"
60432
- }, E7 = ["datetime", "title"], D7 = { class: "channel-header-actions" }, O7 = ["title", "aria-label"], k7 = {
60490
+ }, T7 = ["datetime", "title"], E7 = { class: "channel-header-actions" }, D7 = ["title", "aria-label"], O7 = {
60433
60491
  key: 0,
60434
60492
  class: "channel-work-avatars"
60435
- }, A7 = {
60493
+ }, k7 = {
60436
60494
  class: "channel-work-text",
60437
60495
  role: "status"
60438
- }, j7 = {
60496
+ }, A7 = {
60439
60497
  key: 0,
60440
60498
  class: "channel-launch-recovery",
60441
60499
  "aria-label": "未完成的创建或启动请求"
60442
- }, M7 = { role: "status" }, N7 = { class: "button-row" }, P7 = {
60500
+ }, j7 = { role: "status" }, M7 = { class: "button-row" }, N7 = {
60443
60501
  key: 1,
60444
60502
  class: "channel-tabbar"
60445
- }, F7 = { class: "channel-brief-inner" }, I7 = { class: "channel-brief-heading" }, L7 = ["aria-label", "aria-expanded"], R7 = {
60503
+ }, P7 = { class: "channel-brief-inner" }, F7 = { class: "channel-brief-heading" }, I7 = ["aria-label", "aria-expanded"], L7 = {
60446
60504
  key: 0,
60447
60505
  class: "channel-brief-preview"
60448
- }, z7 = {
60506
+ }, R7 = {
60449
60507
  id: "channel-brief-content",
60450
60508
  class: "channel-brief-content"
60451
- }, B7 = ["innerHTML"], V7 = { class: "channel-brief-footer" }, H7 = {
60509
+ }, z7 = ["innerHTML"], B7 = { class: "channel-brief-footer" }, V7 = {
60452
60510
  key: 0,
60453
60511
  class: "channel-brief-status"
60454
- }, U7 = { class: "channel-content" }, W7 = {
60512
+ }, H7 = { class: "channel-content" }, U7 = {
60455
60513
  key: 0,
60456
60514
  class: "content-page merged-page",
60457
60515
  role: "tabpanel",
60458
60516
  "aria-label": "房间"
60459
- }, G7 = {
60517
+ }, W7 = {
60460
60518
  key: 1,
60461
60519
  class: "content-page merged-page",
60462
60520
  role: "tabpanel",
60463
60521
  "aria-label": "执行"
60464
- }, K7 = {
60522
+ }, G7 = {
60465
60523
  class: "timeline-switch",
60466
60524
  role: "group",
60467
60525
  "aria-label": "执行视图"
60468
- }, q7 = {
60526
+ }, K7 = {
60469
60527
  key: 2,
60470
60528
  class: "content-page",
60471
60529
  role: "tabpanel",
60472
60530
  "aria-label": "文件"
60473
- }, J7 = {
60531
+ }, q7 = {
60474
60532
  key: 1,
60475
60533
  class: "channel-empty"
60476
- }, Y7 = { class: "merged-page channel-consensus-body" }, X7 = {
60534
+ }, J7 = { class: "merged-page channel-consensus-body" }, Y7 = {
60477
60535
  class: "merged-section channel-summary",
60478
60536
  "aria-label": "当前共识"
60479
- }, Z7 = { class: "page-heading" }, Q7 = { class: "form-footer" }, $7 = { class: "button-row" }, e9 = { class: "consensus-card is-brief" }, t9 = ["innerHTML"], n9 = {
60537
+ }, X7 = { class: "page-heading" }, Z7 = { class: "form-footer" }, Q7 = { class: "button-row" }, $7 = { class: "consensus-card is-brief" }, e9 = ["innerHTML"], t9 = {
60480
60538
  key: 0,
60481
60539
  class: "consensus-card"
60482
- }, r9 = ["innerHTML"], i9 = {
60540
+ }, n9 = ["innerHTML"], r9 = {
60483
60541
  key: 2,
60484
60542
  class: "fine-print"
60485
- }, a9 = ["aria-valuenow", "aria-valuetext"], o9 = {
60543
+ }, i9 = ["aria-valuenow", "aria-valuetext"], a9 = {
60486
60544
  key: 4,
60487
60545
  id: "channel-member-rail",
60488
60546
  class: "channel-member-rail",
60489
60547
  "aria-label": "当前焦点与讨论进度"
60490
- }, s9 = { class: "channel-rail-board" }, c9 = {
60548
+ }, o9 = { class: "channel-rail-board" }, s9 = {
60491
60549
  key: 1,
60492
60550
  class: "progress-board is-docked"
60493
- }, l9 = "ai-codiscuss-channel-layout", u9 = 220, d9 = 440, f9 = 280, p9 = 16, m9 = 180, h9 = 400, g9 = 248, _9 = 16, v9 = 480, y9 = 1200, b9 = 0, x9 = 4, S9 = {
60551
+ }, c9 = "ai-codiscuss-channel-layout", l9 = 220, u9 = 440, d9 = 280, f9 = 16, p9 = 180, m9 = 400, h9 = 248, g9 = 16, _9 = 480, v9 = 1200, y9 = 0, b9 = 4, x9 = {
60494
60552
  __name: "ChannelWorkspace",
60495
60553
  setup(e) {
60496
60554
  let { view: t, bridge: n, field: r, act: i, pending: a } = xr("discussion"), o = Z(() => t.value.room), s = Z(() => {
@@ -60521,12 +60579,12 @@ var A6 = {
60521
60579
  label: "宽",
60522
60580
  width: 1240
60523
60581
  }
60524
- }, x = Re(), S = /* @__PURE__ */ F(x.reading), C = /* @__PURE__ */ F(x.effects), w = /* @__PURE__ */ F(x.rail), T = /* @__PURE__ */ F(x.nav), E = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), D = /* @__PURE__ */ F(x.collapsed), O = /* @__PURE__ */ F(!0), k = /* @__PURE__ */ F(x.rail_collapsed), A = Z(() => E.value >= y9), ee = Z(() => A.value && !D.value), te = Z(() => t.value.tab === "discussion" && !k.value), ne = Z(() => A.value && t.value.tab === "discussion" ? k.value ? "展开房间概览" : "收起房间概览" : "讨论进度"), re = ["dispatched", "started"], ie = Z(() => {
60525
- let e = (o.value?.free?.members || []).filter(s4), t = (e) => e.execution?.stale ? "执行失联" : re.includes(e.execution?.status) ? "执行中" : "待投递";
60582
+ }, x = Re(), S = /* @__PURE__ */ F(x.reading), C = /* @__PURE__ */ F(x.effects), w = /* @__PURE__ */ F(x.rail), T = /* @__PURE__ */ F(x.nav), E = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), D = /* @__PURE__ */ F(x.collapsed), O = /* @__PURE__ */ F(!0), k = /* @__PURE__ */ F(x.rail_collapsed), A = Z(() => E.value >= v9), ee = Z(() => A.value && !D.value), te = Z(() => t.value.tab === "discussion" && !k.value), ne = Z(() => A.value && t.value.tab === "discussion" ? k.value ? "展开房间概览" : "收起房间概览" : "讨论进度"), re = ["dispatched", "started"], ie = Z(() => {
60583
+ let e = (o.value?.free?.members || []).filter(o4), t = (e) => e.execution?.stale ? "执行失联" : re.includes(e.execution?.status) ? "执行中" : "待投递";
60526
60584
  return e.length ? {
60527
60585
  tone: e.some((e) => e.execution?.stale) ? "error" : "primary",
60528
60586
  text: e.length === 1 ? `${n.display_name(e[0].name)} ${t(e[0])}` : `${e.length} 位执行中`,
60529
- members: e.slice(0, x9),
60587
+ members: e.slice(0, b9),
60530
60588
  title: e.map((e) => `${n.display_name(e.name)} ${t(e)}`).join("\n")
60531
60589
  } : {
60532
60590
  tone: "success",
@@ -60537,11 +60595,11 @@ var A6 = {
60537
60595
  }), ae = Z(() => !!o.value && !o.value.archived && !(A.value && te.value)), oe = Z(() => {
60538
60596
  let e = document.createElement("template");
60539
60597
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
60540
- }), se = /* @__PURE__ */ F(null), ce = /* @__PURE__ */ F(0), le = null, ue = /* @__PURE__ */ F(null), de = /* @__PURE__ */ F(null), j = Z(() => Math.min(h9, Math.max(m9, E.value - v9 - b9))), pe = Z(() => Math.min(T.value, j.value)), me = Z(() => ({
60598
+ }), se = /* @__PURE__ */ F(null), ce = /* @__PURE__ */ F(0), le = null, ue = /* @__PURE__ */ F(null), de = /* @__PURE__ */ F(null), j = Z(() => Math.min(m9, Math.max(p9, E.value - _9 - y9))), pe = Z(() => Math.min(T.value, j.value)), me = Z(() => ({
60541
60599
  "--channel-reading-width": `${b[S.value].width}px`,
60542
60600
  "--channel-rail-width": `${w.value}px`,
60543
60601
  "--channel-topbar-height": `${ce.value}px`,
60544
- "--channel-main-columns": ee.value ? `${pe.value}px ${b9}px minmax(0, 1fr)` : "minmax(0, 1fr)"
60602
+ "--channel-main-columns": ee.value ? `${pe.value}px ${y9}px minmax(0, 1fr)` : "minmax(0, 1fr)"
60545
60603
  })), he = Object.entries(b).map(([e, t]) => ({
60546
60604
  value: e,
60547
60605
  label: t.label
@@ -60639,12 +60697,12 @@ var A6 = {
60639
60697
  }
60640
60698
  function Re() {
60641
60699
  try {
60642
- let e = JSON.parse(localStorage.getItem(l9)) || {};
60700
+ let e = JSON.parse(localStorage.getItem(c9)) || {};
60643
60701
  return {
60644
60702
  reading: Object.hasOwn(b, e.reading) ? e.reading : "default",
60645
60703
  effects: e.effects === "reduced" ? "reduced" : "full",
60646
- rail: Number.isFinite(e.rail) ? Math.min(d9, Math.max(u9, e.rail)) : f9,
60647
- nav: Number.isFinite(e.nav) ? Math.min(h9, Math.max(m9, e.nav)) : ze(),
60704
+ rail: Number.isFinite(e.rail) ? Math.min(u9, Math.max(l9, e.rail)) : d9,
60705
+ nav: Number.isFinite(e.nav) ? Math.min(m9, Math.max(p9, e.nav)) : ze(),
60648
60706
  collapsed: e.collapsed === !0,
60649
60707
  brief_collapsed: e.brief_collapsed === !0,
60650
60708
  rail_collapsed: e.rail_collapsed === !0
@@ -60653,7 +60711,7 @@ var A6 = {
60653
60711
  return {
60654
60712
  reading: "default",
60655
60713
  effects: "full",
60656
- rail: f9,
60714
+ rail: d9,
60657
60715
  nav: ze(),
60658
60716
  collapsed: !1,
60659
60717
  brief_collapsed: !1,
@@ -60662,11 +60720,11 @@ var A6 = {
60662
60720
  }
60663
60721
  }
60664
60722
  function ze() {
60665
- return typeof window > "u" ? g9 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : g9;
60723
+ return typeof window > "u" ? h9 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : h9;
60666
60724
  }
60667
60725
  function Be() {
60668
60726
  try {
60669
- localStorage.setItem(l9, JSON.stringify({
60727
+ localStorage.setItem(c9, JSON.stringify({
60670
60728
  reading: S.value,
60671
60729
  effects: C.value,
60672
60730
  rail: w.value,
@@ -60700,19 +60758,19 @@ var A6 = {
60700
60758
  }, e.currentTarget.setPointerCapture(e.pointerId));
60701
60759
  }
60702
60760
  function qe(e) {
60703
- ue.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(d9, Math.max(u9, ue.value.width + ue.value.x - e.clientX))));
60761
+ ue.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(u9, Math.max(l9, ue.value.width + ue.value.x - e.clientX))));
60704
60762
  }
60705
60763
  function Je(e) {
60706
60764
  ue.value?.pointer === e.pointerId && (ue.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Be());
60707
60765
  }
60708
60766
  function Ye(e) {
60709
60767
  let t = {
60710
- ArrowLeft: w.value + p9,
60711
- ArrowRight: w.value - p9,
60712
- Home: u9,
60713
- End: d9
60768
+ ArrowLeft: w.value + f9,
60769
+ ArrowRight: w.value - f9,
60770
+ Home: l9,
60771
+ End: u9
60714
60772
  };
60715
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(d9, Math.max(u9, t[e.key])), Be());
60773
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(u9, Math.max(l9, t[e.key])), Be());
60716
60774
  }
60717
60775
  function Xe(e) {
60718
60776
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), de.value = {
@@ -60722,19 +60780,19 @@ var A6 = {
60722
60780
  }, e.currentTarget.setPointerCapture(e.pointerId));
60723
60781
  }
60724
60782
  function Ze(e) {
60725
- de.value?.pointer === e.pointerId && (T.value = Math.round(Math.min(j.value, Math.max(m9, de.value.width + e.clientX - de.value.x))));
60783
+ de.value?.pointer === e.pointerId && (T.value = Math.round(Math.min(j.value, Math.max(p9, de.value.width + e.clientX - de.value.x))));
60726
60784
  }
60727
60785
  function Qe(e) {
60728
60786
  de.value?.pointer === e.pointerId && (de.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Be());
60729
60787
  }
60730
60788
  function $e(e) {
60731
60789
  let t = {
60732
- ArrowLeft: pe.value - _9,
60733
- ArrowRight: pe.value + _9,
60734
- Home: m9,
60790
+ ArrowLeft: pe.value - g9,
60791
+ ArrowRight: pe.value + g9,
60792
+ Home: p9,
60735
60793
  End: j.value
60736
60794
  };
60737
- Object.hasOwn(t, e.key) && (e.preventDefault(), T.value = Math.min(j.value, Math.max(m9, t[e.key])), Be());
60795
+ Object.hasOwn(t, e.key) && (e.preventDefault(), T.value = Math.min(j.value, Math.max(p9, t[e.key])), Be());
60738
60796
  }
60739
60797
  return (e, r) => {
60740
60798
  let b = MA, x = RV, T = sA, E = kV, k = pA, re = PV, ce = jV, le = DV, ve = wV, Re = vV, ze = gV;
@@ -60746,7 +60804,7 @@ var A6 = {
60746
60804
  }]),
60747
60805
  style: fe(me.value)
60748
60806
  }, [
60749
- ee.value ? (U(), G(T2, {
60807
+ ee.value ? (U(), G(w2, {
60750
60808
  key: 0,
60751
60809
  tabs: _e.value,
60752
60810
  onSelect: je,
@@ -60768,7 +60826,7 @@ var A6 = {
60768
60826
  "aria-label": "调整房间栏宽度",
60769
60827
  "aria-orientation": "vertical",
60770
60828
  "aria-controls": "channel-sidebar",
60771
- "aria-valuemin": m9,
60829
+ "aria-valuemin": p9,
60772
60830
  "aria-valuemax": j.value,
60773
60831
  "aria-valuenow": pe.value,
60774
60832
  "aria-valuetext": `${pe.value} 像素`,
@@ -60779,13 +60837,13 @@ var A6 = {
60779
60837
  onPointercancel: Qe,
60780
60838
  onLostpointercapture: Qe,
60781
60839
  onKeydown: $e
60782
- }, null, 40, v7)) : Y("", !0),
60783
- K("main", y7, [K("div", {
60840
+ }, null, 40, _7)) : Y("", !0),
60841
+ K("main", v7, [K("div", {
60784
60842
  ref_key: "topbar",
60785
60843
  ref: se,
60786
60844
  class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
60787
60845
  }, [
60788
- K("header", b7, [
60846
+ K("header", y7, [
60789
60847
  A.value ? (U(), G(x, {
60790
60848
  key: 0,
60791
60849
  text: D.value ? "展开房间栏" : "收起房间栏"
@@ -60813,8 +60871,8 @@ var A6 = {
60813
60871
  "aria-expanded": m.value,
60814
60872
  onClick: r[2] ||= (e) => m.value = !0
60815
60873
  }, null, 8, ["aria-expanded"])),
60816
- K("span", x7, [q(T, { name: "i-lucide-hash" })]),
60817
- K("div", S7, [K("div", C7, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, w7)]), o.value?.archived ? (U(), G(E, {
60874
+ K("span", b7, [q(T, { name: "i-lucide-hash" })]),
60875
+ K("div", x7, [K("div", S7, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, C7)]), o.value?.archived ? (U(), G(E, {
60818
60876
  key: 0,
60819
60877
  color: "neutral",
60820
60878
  variant: "subtle",
@@ -60823,16 +60881,16 @@ var A6 = {
60823
60881
  default: L(() => [...r[25] ||= [J("已存档", -1)]]),
60824
60882
  _: 1
60825
60883
  })) : Y("", !0)]),
60826
- o.value ? (U(), W("span", T7, [
60884
+ o.value ? (U(), W("span", w7, [
60827
60885
  J(P(_e.value.find((e) => e.value === I(t).tab)?.label), 1),
60828
60886
  r[27] ||= K("span", null, "·", -1),
60829
60887
  J(P(o.value.message_count) + " 条记录", 1),
60830
60888
  s.value ? (U(), W(H, { key: 0 }, [r[26] ||= K("span", null, "·", -1), K("time", {
60831
60889
  datetime: o.value.created_at,
60832
60890
  title: new Date(o.value.created_at).toLocaleString("zh-CN", { hour12: !1 })
60833
- }, P(s.value), 9, E7)], 64)) : Y("", !0)
60891
+ }, P(s.value), 9, T7)], 64)) : Y("", !0)
60834
60892
  ])) : Y("", !0),
60835
- K("div", D7, [
60893
+ K("div", E7, [
60836
60894
  ae.value ? (U(), W("button", {
60837
60895
  key: 0,
60838
60896
  type: "button",
@@ -60841,7 +60899,7 @@ var A6 = {
60841
60899
  "aria-label": `执行状态:${ie.value.title.replaceAll("\n", ",")};打开房间概览`,
60842
60900
  onClick: Ve
60843
60901
  }, [
60844
- ie.value.members.length ? (U(), W("span", k7, [(U(!0), W(H, null, B(ie.value.members, (e) => (U(), G(k, {
60902
+ ie.value.members.length ? (U(), W("span", O7, [(U(!0), W(H, null, B(ie.value.members, (e) => (U(), G(k, {
60845
60903
  key: e.id,
60846
60904
  src: I(n).identities[e.name]?.icon,
60847
60905
  text: I(n).identities[e.name]?.initials,
@@ -60855,8 +60913,8 @@ var A6 = {
60855
60913
  "class"
60856
60914
  ]))), 128))])) : Y("", !0),
60857
60915
  r[28] ||= K("span", { class: "pb-dot" }, null, -1),
60858
- K("span", A7, P(ie.value.text), 1)
60859
- ], 10, O7)) : Y("", !0),
60916
+ K("span", k7, P(ie.value.text), 1)
60917
+ ], 10, D7)) : Y("", !0),
60860
60918
  I(t).tab === "discussion" ? (U(), W("form", {
60861
60919
  key: 1,
60862
60920
  class: "channel-search",
@@ -60934,12 +60992,12 @@ var A6 = {
60934
60992
  _: 1
60935
60993
  }, 8, ["text"])
60936
60994
  ]),
60937
- I(t).launch.recoveries.length ? (U(), W("section", j7, [
60995
+ I(t).launch.recoveries.length ? (U(), W("section", A7, [
60938
60996
  r[29] ||= K("h2", null, "继续未完成的请求", -1),
60939
60997
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
60940
60998
  K("strong", null, P(e.title), 1),
60941
- K("p", M7, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
60942
- K("div", N7, [
60999
+ K("p", j7, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
61000
+ K("div", M7, [
60943
61001
  q(b, {
60944
61002
  label: e.direct ? "继续创建房间" : "继续本次启动",
60945
61003
  size: "sm",
@@ -60972,7 +61030,7 @@ var A6 = {
60972
61030
  ]))), 128)),
60973
61031
  r[30] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
60974
61032
  ])) : Y("", !0),
60975
- o.value ? (U(), W("div", P7, [q(ce, {
61033
+ o.value ? (U(), W("div", N7, [q(ce, {
60976
61034
  modelValue: ge.value,
60977
61035
  "onUpdate:modelValue": r[7] ||= (e) => ge.value = e,
60978
61036
  items: _e.value,
@@ -60987,7 +61045,7 @@ var A6 = {
60987
61045
  key: 2,
60988
61046
  class: M(["channel-host-brief", { "is-collapsed": O.value }]),
60989
61047
  "aria-label": "主持简报"
60990
- }, [K("div", F7, [K("div", I7, [K("button", {
61048
+ }, [K("div", P7, [K("div", F7, [K("button", {
60991
61049
  type: "button",
60992
61050
  class: "channel-brief-toggle",
60993
61051
  "aria-label": O.value ? "展开主持简报" : "收起主持简报",
@@ -60997,8 +61055,8 @@ var A6 = {
60997
61055
  }, [
60998
61056
  q(T, { name: O.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
60999
61057
  K("strong", null, "主持简报" + P(O.value ? ":" : ""), 1),
61000
- O.value ? (U(), W("span", R7, P(oe.value), 1)) : Y("", !0)
61001
- ], 8, L7), O.value ? Y("", !0) : (U(), W(H, { key: 0 }, [q(b, {
61058
+ O.value ? (U(), W("span", L7, P(oe.value), 1)) : Y("", !0)
61059
+ ], 8, I7), O.value ? Y("", !0) : (U(), W(H, { key: 0 }, [q(b, {
61002
61060
  label: "详细共识与讨论记录",
61003
61061
  color: "neutral",
61004
61062
  variant: "link",
@@ -61012,25 +61070,25 @@ var A6 = {
61012
61070
  size: "xs",
61013
61071
  class: "channel-brief-update",
61014
61072
  onClick: r[9] ||= (e) => we(!0)
61015
- })], 64))]), vr(K("div", z7, [K("div", {
61073
+ })], 64))]), vr(K("div", R7, [K("div", {
61016
61074
  class: "channel-brief-text markdown-body",
61017
61075
  innerHTML: o.value.rendered_brief
61018
- }, null, 8, B7), K("div", V7, [ye.value ? Y("", !0) : (U(), W("span", H7, P(I(n).progress_speaker(o.value)), 1)), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !O.value]])])], 2)) : Y("", !0)
61076
+ }, null, 8, z7), K("div", B7, [ye.value ? Y("", !0) : (U(), W("span", V7, P(I(n).progress_speaker(o.value)), 1)), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !O.value]])])], 2)) : Y("", !0)
61019
61077
  ], 2), o.value ? (U(), W("div", {
61020
61078
  key: 0,
61021
61079
  class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
61022
- }, [K("div", U7, [
61080
+ }, [K("div", H7, [
61023
61081
  vr(q(XX, {
61024
61082
  onDetail: Me,
61025
61083
  onEdit: r[10] ||= (e) => u.value = "edit"
61026
61084
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
61027
- I(t).tab === "overview" ? (U(), W("div", W7, [q(R3), ye.value ? Y("", !0) : (U(), G(hZ, {
61085
+ I(t).tab === "overview" ? (U(), W("div", U7, [q(L3), ye.value ? Y("", !0) : (U(), G(hZ, {
61028
61086
  key: 0,
61029
61087
  section: "access",
61030
61088
  onOpen: r[11] ||= (e) => u.value = e,
61031
61089
  onDetail: Me
61032
61090
  }))])) : Y("", !0),
61033
- I(t).tab === "timeline" ? (U(), W("div", G7, [K("div", K7, [(U(), W(H, null, B(c, (e) => q(b, {
61091
+ I(t).tab === "timeline" ? (U(), W("div", W7, [K("div", G7, [(U(), W(H, null, B(c, (e) => q(b, {
61034
61092
  key: e.value,
61035
61093
  label: e.label,
61036
61094
  size: "xs",
@@ -61043,18 +61101,18 @@ var A6 = {
61043
61101
  "variant",
61044
61102
  "aria-pressed",
61045
61103
  "onClick"
61046
- ])), 64))]), l.value === "waterfall" ? (U(), G(t5, {
61104
+ ])), 64))]), l.value === "waterfall" ? (U(), G(e5, {
61047
61105
  key: 0,
61048
61106
  onDetail: Me
61049
- })) : (U(), G(O5, {
61107
+ })) : (U(), G(D5, {
61050
61108
  key: 1,
61051
61109
  onDetail: Me
61052
61110
  }))])) : Y("", !0),
61053
- I(t).tab === "files" ? (U(), W("div", q7, [(U(), G(_7, {
61111
+ I(t).tab === "files" ? (U(), W("div", K7, [(U(), G(g7, {
61054
61112
  key: o.value.id,
61055
61113
  directory: N.value
61056
61114
  }, null, 8, ["directory"]))])) : Y("", !0)
61057
- ])], 2)) : (U(), W("div", J7, [
61115
+ ])], 2)) : (U(), W("div", q7, [
61058
61116
  q(T, { name: "i-lucide-hash" }),
61059
61117
  r[31] ||= K("h2", null, "新建一个协作房间", -1),
61060
61118
  r[32] ||= K("p", null, "邀请 AI 一起协作,随时 @ 提问;需要时开启讨论,保留所有人的观点。", -1),
@@ -61077,14 +61135,14 @@ var A6 = {
61077
61135
  body: "dialog-body"
61078
61136
  }
61079
61137
  }, {
61080
- body: L(() => [K("div", Y7, [
61138
+ body: L(() => [K("div", J7, [
61081
61139
  ye.value ? Y("", !0) : (U(), G(hZ, {
61082
61140
  key: 0,
61083
61141
  section: "host",
61084
61142
  onOpen: Te,
61085
61143
  onDetail: Ee
61086
61144
  })),
61087
- K("section", X7, [K("div", Z7, [r[33] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), Se.value ? Y("", !0) : (U(), G(b, {
61145
+ K("section", Y7, [K("div", X7, [r[33] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), Se.value ? Y("", !0) : (U(), G(b, {
61088
61146
  key: 0,
61089
61147
  icon: "i-lucide-pencil",
61090
61148
  label: "编辑",
@@ -61128,7 +61186,7 @@ var A6 = {
61128
61186
  }, null, 8, ["modelValue"])]),
61129
61187
  _: 1
61130
61188
  }),
61131
- K("div", Q7, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", $7, [q(b, {
61189
+ K("div", Z7, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", Q7, [q(b, {
61132
61190
  label: "取消",
61133
61191
  color: "neutral",
61134
61192
  variant: "ghost",
@@ -61141,7 +61199,7 @@ var A6 = {
61141
61199
  class: "channel-primary-button",
61142
61200
  loading: I(a) === "save_context"
61143
61201
  }, null, 8, ["loading"])])])
61144
- ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", e9, [K("h3", null, [r[34] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
61202
+ ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", $7, [K("h3", null, [r[34] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
61145
61203
  key: 0,
61146
61204
  type: "button",
61147
61205
  class: "subtle-link",
@@ -61149,7 +61207,7 @@ var A6 = {
61149
61207
  }, "整理至 #" + P(o.value.state_until), 1)) : Y("", !0)]), K("div", {
61150
61208
  class: "markdown-body",
61151
61209
  innerHTML: o.value.rendered_brief
61152
- }, null, 8, t9)]), Ce.value ? (U(), W("details", n9, [K("summary", null, [
61210
+ }, null, 8, e9)]), Ce.value ? (U(), W("details", t9, [K("summary", null, [
61153
61211
  r[35] ||= K("h3", null, "详细共识与进度", -1),
61154
61212
  r[36] ||= K("span", null, "依据、已处理内容、未决问题与下一步", -1),
61155
61213
  q(T, {
@@ -61159,8 +61217,8 @@ var A6 = {
61159
61217
  ]), K("div", {
61160
61218
  class: "markdown-body consensus-state",
61161
61219
  innerHTML: Ce.value
61162
- }, null, 8, r9)])) : Y("", !0)], 64)) : (U(), W("p", i9, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
61163
- q(r3, { onDetail: Ee })
61220
+ }, null, 8, n9)])) : Y("", !0)], 64)) : (U(), W("p", r9, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
61221
+ q(n3, { onDetail: Ee })
61164
61222
  ])]),
61165
61223
  _: 1
61166
61224
  }, 8, ["content", "open"])) : Y("", !0),
@@ -61172,8 +61230,8 @@ var A6 = {
61172
61230
  "aria-label": "调整右侧栏宽度",
61173
61231
  "aria-orientation": "vertical",
61174
61232
  "aria-controls": "channel-member-rail",
61175
- "aria-valuemin": u9,
61176
- "aria-valuemax": d9,
61233
+ "aria-valuemin": l9,
61234
+ "aria-valuemax": u9,
61177
61235
  "aria-valuenow": w.value,
61178
61236
  "aria-valuetext": `${w.value} 像素`,
61179
61237
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -61183,8 +61241,8 @@ var A6 = {
61183
61241
  onPointercancel: Je,
61184
61242
  onLostpointercapture: Je,
61185
61243
  onKeydown: Ye
61186
- }, null, 40, a9)) : Y("", !0),
61187
- te.value ? (U(), W("aside", o9, [K("section", s9, [o.value ? (U(), G(H4, { key: 0 })) : (U(), W("div", c9, [...r[37] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
61244
+ }, null, 40, i9)) : Y("", !0),
61245
+ te.value ? (U(), W("aside", a9, [K("section", o9, [o.value ? (U(), G(V4, { key: 0 })) : (U(), W("div", s9, [...r[37] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
61188
61246
  q(ze, {
61189
61247
  open: m.value,
61190
61248
  "onUpdate:open": r[20] ||= (e) => m.value = e,
@@ -61195,7 +61253,7 @@ var A6 = {
61195
61253
  content: "channel-navigation-drawer"
61196
61254
  }
61197
61255
  }, {
61198
- content: L(() => [q(T2, {
61256
+ content: L(() => [q(w2, {
61199
61257
  tabs: _e.value,
61200
61258
  onSelect: je,
61201
61259
  onManage: Oe,
@@ -61225,10 +61283,10 @@ var A6 = {
61225
61283
  body: "progress-drawer-body"
61226
61284
  }
61227
61285
  }, {
61228
- body: L(() => [q(H4)]),
61286
+ body: L(() => [q(V4)]),
61229
61287
  _: 1
61230
61288
  }, 8, ["open", "description"])) : Y("", !0),
61231
- q(I0, {
61289
+ q(F0, {
61232
61290
  modelValue: u.value,
61233
61291
  "onUpdate:modelValue": r[22] ||= (e) => u.value = e,
61234
61292
  "reading-width": S.value,
@@ -61252,7 +61310,7 @@ var A6 = {
61252
61310
  ], 6);
61253
61311
  };
61254
61312
  }
61255
- }, C9 = 120, w9 = {
61313
+ }, S9 = 120, C9 = {
61256
61314
  __name: "App",
61257
61315
  setup(e) {
61258
61316
  let t = {
@@ -61288,7 +61346,7 @@ var A6 = {
61288
61346
  ...r,
61289
61347
  ui: i,
61290
61348
  id: `${e}:${o}`,
61291
- title: o.length > C9 ? `${o.slice(0, 119)}…` : o
61349
+ title: o.length > S9 ? `${o.slice(0, 119)}…` : o
61292
61350
  });
61293
61351
  }
61294
61352
  document.addEventListener("discuss:notice", o), ta(() => document.removeEventListener("discuss:notice", o));
@@ -61317,7 +61375,7 @@ var A6 = {
61317
61375
  }
61318
61376
  }, {
61319
61377
  default: L(() => [q(I(Iz), { "reduced-motion": "never" }, {
61320
- default: L(() => [q(S9), s.value ? (U(), G(MG, {
61378
+ default: L(() => [q(x9), s.value ? (U(), G(MG, {
61321
61379
  key: 0,
61322
61380
  open: c.value,
61323
61381
  "onUpdate:open": t[0] ||= (e) => c.value = e,
@@ -61340,14 +61398,14 @@ var A6 = {
61340
61398
  };
61341
61399
  //#endregion
61342
61400
  //#region frontend/main.js
61343
- function T9() {
61344
- bu(w9).use(ph).mount("#modern-root");
61401
+ function w9() {
61402
+ bu(C9).use(ph).mount("#modern-root");
61345
61403
  }
61346
- var E9 = 120;
61347
- function D9() {
61404
+ var T9 = 120;
61405
+ function E9() {
61348
61406
  setTimeout(() => {
61349
61407
  document.activeElement?.matches?.("input, textarea, select, [contenteditable='true']") || (window.scrollX || window.scrollY) && window.scrollTo(0, 0);
61350
- }, E9);
61408
+ }, T9);
61351
61409
  }
61352
- document.addEventListener("focusout", D9), window.visualViewport?.addEventListener("resize", D9), document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", T9) : T9();
61410
+ document.addEventListener("focusout", E9), window.visualViewport?.addEventListener("resize", E9), document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", w9) : w9();
61353
61411
  //#endregion