ai_co_discuss 0.3.12 → 0.3.13

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
@@ -47698,7 +47698,18 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47698
47698
  }, XJ = {
47699
47699
  key: 1,
47700
47700
  class: "scheduler-cards"
47701
- }, ZJ = { class: "scheduler-slot" }, QJ = { class: "scheduler-identity" }, $J = { class: "scheduler-facts" }, eY = ["title"], tY = { class: "scheduler-flip" }, nY = { class: "scheduler-tools" }, rY = ["aria-label"], iY = { class: "scheduler-back" }, aY = { class: "scheduler-heading" }, oY = { class: "scheduler-field" }, sY = { class: "scheduler-field" }, cY = { class: "scheduler-flip-actions" }, lY = "••••••••••••", uY = /*#__PURE__*/ MH({
47701
+ }, ZJ = { class: "scheduler-slot" }, QJ = { class: "scheduler-identity" }, $J = { class: "scheduler-facts" }, eY = ["title"], tY = { class: "scheduler-flip" }, nY = { class: "scheduler-tools" }, rY = ["aria-label"], iY = { class: "scheduler-back" }, aY = { class: "scheduler-heading" }, oY = { class: "scheduler-field" }, sY = { class: "scheduler-field" }, cY = { class: "scheduler-flip-actions" }, lY = {
47702
+ key: 2,
47703
+ class: "scheduler-mode"
47704
+ }, uY = {
47705
+ class: "expert-card-modes",
47706
+ role: "radiogroup",
47707
+ "aria-label": "智能调度判断方式"
47708
+ }, dY = [
47709
+ "title",
47710
+ "aria-checked",
47711
+ "onClick"
47712
+ ], fY = "••••••••••••", pY = /*#__PURE__*/ MH({
47702
47713
  __name: "SchedulerSettings",
47703
47714
  props: {
47704
47715
  free: {
@@ -47784,8 +47795,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47784
47795
  S.value = { state: "error" }, r.notify("error", e.message);
47785
47796
  }
47786
47797
  }
47787
- let w = Z(() => t.free ? "接入决策模型,推荐更适合回答的成员,由你一键采纳。" : "接入决策模型,自动安排插话回应与下一轮发言。");
47788
- async function T() {
47798
+ let w = Z(() => Object.entries(n.value.launch.scheduler_modes || {}).map(([e, t]) => ({
47799
+ value: e,
47800
+ label: t
47801
+ }))), T = Z(() => i.value.mode || n.value.launch.scheduler_default_mode || ""), E = {
47802
+ guided: "试验:说明目的与依据,由模型权衡;正在打磨,可能判错",
47803
+ stable: "稳定:按固定顺序逐条核对,已通过回归评测"
47804
+ }, ee = Z(() => t.free ? "接入决策模型,推荐更适合回答的成员,由你一键采纳。" : "接入决策模型,自动安排插话回应与下一轮发言。");
47805
+ async function D() {
47789
47806
  if (d.value.trim() && !p.value) {
47790
47807
  p.value = !0;
47791
47808
  try {
@@ -47798,7 +47815,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47798
47815
  }
47799
47816
  }
47800
47817
  return (t, a) => {
47801
- let h = kV, E = pA, ee = sA, D = MA, O = QK, te = PV;
47818
+ let h = kV, O = pA, te = sA, ne = MA, re = QK, ie = PV;
47802
47819
  return U(), W("div", KJ, [
47803
47820
  K("div", null, [K("p", qJ, [
47804
47821
  a[5] ||= J("智能调度", -1),
@@ -47811,7 +47828,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47811
47828
  _: 1
47812
47829
  }),
47813
47830
  a[6] ||= K("small", null, "可选", -1)
47814
- ]), K("p", JJ, P(e.blocker ? `${w.value}(${e.blocker})` : w.value), 1)]),
47831
+ ]), K("p", JJ, P(e.blocker ? `${ee.value}(${e.blocker})` : ee.value), 1)]),
47815
47832
  q(GJ, {
47816
47833
  ref_key: "add_row",
47817
47834
  ref: l,
@@ -47820,7 +47837,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47820
47837
  onAdd: v
47821
47838
  }, null, 8, ["items"]),
47822
47839
  c.value ? (U(), W("div", XJ, [K("div", ZJ, [K("div", { class: M(["scheduler-card", { "is-editing": m.value }]) }, [m.value ? (U(), W(H, { key: 1 }, [K("div", iY, [
47823
- K("div", aY, [K("strong", null, [J(P(b.value), 1), a[11] ||= K("span", null, "设置", -1)]), q(D, {
47840
+ K("div", aY, [K("strong", null, [J(P(b.value), 1), a[11] ||= K("span", null, "设置", -1)]), q(ne, {
47824
47841
  icon: "i-lucide-zap",
47825
47842
  "aria-label": "检查智能调度配置",
47826
47843
  title: "检查配置:向决策模型发送一道极短的是非题,核对供应商、模型与密钥",
@@ -47835,7 +47852,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47835
47852
  "loading",
47836
47853
  "disabled"
47837
47854
  ])]),
47838
- K("div", oY, [a[12] ||= K("span", null, "模型", -1), q(O, {
47855
+ K("div", oY, [a[12] ||= K("span", null, "模型", -1), q(re, {
47839
47856
  mode: "autocomplete",
47840
47857
  "ignore-filter": "",
47841
47858
  "model-value": i.value.model || "",
@@ -47847,7 +47864,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47847
47864
  class: "w-full",
47848
47865
  "onUpdate:modelValue": a[0] ||= (e) => I(r).write_scheduler("model", e)
47849
47866
  }, null, 8, ["model-value", "items"])]),
47850
- K("div", sY, [a[13] ||= K("span", null, "密钥", -1), q(te, {
47867
+ K("div", sY, [a[13] ||= K("span", null, "密钥", -1), q(ie, {
47851
47868
  modelValue: d.value,
47852
47869
  "onUpdate:modelValue": a[2] ||= (e) => d.value = e,
47853
47870
  type: "text",
@@ -47855,7 +47872,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47855
47872
  spellcheck: "false",
47856
47873
  "data-1p-ignore": "",
47857
47874
  "data-lpignore": "true",
47858
- placeholder: i.value.api_key_ref ? lY : "填写所选供应商的 API Key",
47875
+ placeholder: i.value.api_key_ref ? fY : "填写所选供应商的 API Key",
47859
47876
  title: i.value.api_key_ref && !d.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
47860
47877
  "aria-label": "智能调度 API Key",
47861
47878
  size: "xs",
@@ -47865,9 +47882,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47865
47882
  base: f.value ? "" : "scheduler-key-masked",
47866
47883
  trailing: "pe-0.5"
47867
47884
  },
47868
- onChange: T
47885
+ onChange: D
47869
47886
  }, {
47870
- trailing: L(() => [q(D, {
47887
+ trailing: L(() => [q(ne, {
47871
47888
  icon: f.value ? "i-lucide-eye" : "i-lucide-eye-off",
47872
47889
  disabled: !d.value,
47873
47890
  "aria-label": f.value ? "隐藏密钥" : "显示密钥",
@@ -47901,14 +47918,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47901
47918
  class: "scheduler-flip is-done",
47902
47919
  "aria-label": "完成并返回决策模型卡片",
47903
47920
  onClick: a[3] ||= (e) => m.value = !1
47904
- }, [q(ee, { name: "i-lucide-check" }), a[15] ||= J("完成", -1)])])], 64)) : (U(), W(H, { key: 0 }, [K("button", {
47921
+ }, [q(te, { name: "i-lucide-check" }), a[15] ||= J("完成", -1)])])], 64)) : (U(), W(H, { key: 0 }, [K("button", {
47905
47922
  type: "button",
47906
47923
  class: "scheduler-open",
47907
47924
  "aria-label": "设置智能调度的决策模型",
47908
47925
  title: "点击设置",
47909
47926
  onClick: g
47910
47927
  }, [
47911
- K("span", QJ, [q(E, {
47928
+ K("span", QJ, [q(O, {
47912
47929
  src: s[i.value.provider]?.icon,
47913
47930
  text: b.value.slice(0, 2),
47914
47931
  alt: b.value,
@@ -47921,35 +47938,43 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47921
47938
  "class"
47922
47939
  ]), K("strong", null, P(b.value), 1)]),
47923
47940
  K("dl", $J, [K("div", null, [a[8] ||= K("dt", null, "状态", -1), K("dd", { class: M(`is-${x.value.tone}`) }, [a[7] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(x.value.text), 1)], 2)]), K("div", null, [a[9] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, eY)])]),
47924
- K("span", tY, [q(ee, { name: "i-lucide-settings-2" }), a[10] ||= J("设置", -1)])
47941
+ K("span", tY, [q(te, { name: "i-lucide-settings-2" }), a[10] ||= J("设置", -1)])
47925
47942
  ]), K("span", nY, [K("button", {
47926
47943
  type: "button",
47927
47944
  "aria-label": `移出决策模型 ${b.value}`,
47928
47945
  title: "移出",
47929
47946
  onClick: y
47930
- }, [q(ee, { name: "i-lucide-x" })], 8, rY)])], 64))], 2)])])) : (U(), W("p", YJ, "未添加决策模型。只能放一个,点其他供应商会替换。"))
47947
+ }, [q(te, { name: "i-lucide-x" })], 8, rY)])], 64))], 2)])])) : (U(), W("p", YJ, "未添加决策模型。只能放一个,点其他供应商会替换。")),
47948
+ c.value && e.free && w.value.length > 1 ? (U(), W("div", lY, [a[16] ||= K("span", null, "判断方式", -1), K("div", uY, [(U(!0), W(H, null, B(w.value, (e) => (U(), W("button", {
47949
+ key: e.value,
47950
+ type: "button",
47951
+ role: "radio",
47952
+ title: E[e.value],
47953
+ "aria-checked": T.value === e.value,
47954
+ onClick: (t) => I(r).write_scheduler("mode", e.value)
47955
+ }, P(e.label), 9, dY))), 128))])])) : Y("", !0)
47931
47956
  ]);
47932
47957
  };
47933
47958
  }
47934
- }, [["__scopeId", "data-v-204fd725"]]), dY = { class: "create-discussion" }, fY = {
47959
+ }, [["__scopeId", "data-v-5b8e7928"]]), mY = { class: "create-discussion" }, hY = {
47935
47960
  key: 0,
47936
47961
  class: "create-connect",
47937
47962
  role: "status"
47938
- }, pY = { class: "create-connect-command" }, mY = {
47963
+ }, gY = { class: "create-connect-command" }, _Y = {
47939
47964
  key: 1,
47940
47965
  class: "channel-create-location"
47941
- }, hY = { class: "create-section" }, gY = { class: "create-section" }, _Y = {
47966
+ }, vY = { class: "create-section" }, yY = { class: "create-section" }, bY = {
47942
47967
  key: 0,
47943
47968
  class: "create-experts",
47944
47969
  role: "group",
47945
47970
  "aria-label": "参与的 AI"
47946
- }, vY = {
47971
+ }, xY = {
47947
47972
  key: 1,
47948
47973
  class: "create-experts-empty"
47949
- }, yY = {
47974
+ }, SY = {
47950
47975
  key: 2,
47951
47976
  class: "fine-print create-hint create-host-hint"
47952
- }, bY = { class: "create-section" }, xY = { class: "create-advanced" }, SY = { class: "create-footer" }, CY = { class: "create-footer-row" }, wY = ["title"], TY = "new-expert-modes", EY = 3e3, DY = "preset:", OY = /*#__PURE__*/ MH({
47977
+ }, CY = { class: "create-section" }, wY = { class: "create-advanced" }, TY = { class: "create-footer" }, EY = { class: "create-footer-row" }, DY = ["title"], OY = "new-expert-modes", kY = 3e3, AY = "preset:", jY = /*#__PURE__*/ MH({
47953
47978
  __name: "CreateDiscussion",
47954
47979
  props: { targetFolder: {
47955
47980
  type: Object,
@@ -47957,7 +47982,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47957
47982
  } },
47958
47983
  emits: ["submit", "cancel"],
47959
47984
  setup(e, { emit: t }) {
47960
- let n = t, { view: r, bridge: i, pending: a, act: o } = xr("discussion"), s = Object.keys(i.identities).filter((e) => e !== "用户"), c = (e) => `new-room-${e}`, l = (e) => r.value.fields[c(e)] ?? "", u = (e, t) => i.write_field(c(e), t), d = Z(() => !!r.value.create_discussion), f = Z(() => r.value.experts[TY] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
47985
+ let n = t, { view: r, bridge: i, pending: a, act: o } = xr("discussion"), s = Object.keys(i.identities).filter((e) => e !== "用户"), c = (e) => `new-room-${e}`, l = (e) => r.value.fields[c(e)] ?? "", u = (e, t) => i.write_field(c(e), t), d = Z(() => !!r.value.create_discussion), f = Z(() => r.value.experts[OY] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
47961
47986
  R(m, (e) => {
47962
47987
  p.value = [...p.value.filter((t) => e.includes(t)), ...e.filter((e) => !p.value.includes(e))];
47963
47988
  }, { immediate: !0 });
@@ -47981,14 +48006,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
47981
48006
  Qi(() => {
47982
48007
  oe(), ae = window.setInterval(() => {
47983
48008
  ie.value && !document.hidden && o("check_launch_connection");
47984
- }, EY);
48009
+ }, kY);
47985
48010
  }), ta(() => window.clearInterval(ae));
47986
48011
  function se(e) {
47987
48012
  i.write_create_discussion(e), Qn(oe);
47988
48013
  }
47989
48014
  let ce = (e) => i.launch_clients[e]?.some((e) => e.value !== "api"), le = (e) => d.value && e === v.value ? [] : ["cli", "manual"];
47990
48015
  function ue(e, t) {
47991
- i.write_expert(TY, e, t), oe();
48016
+ i.write_expert(OY, e, t), oe();
47992
48017
  }
47993
48018
  function de(e) {
47994
48019
  if (C.value) return E(e) ? {
@@ -48018,7 +48043,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48018
48043
  title: fe(e),
48019
48044
  aria_label: `添加 ${e} 实例`
48020
48045
  })), ...r.value && i.expert_presets().map((e, t) => ({
48021
- value: DY + e.name,
48046
+ value: AY + e.name,
48022
48047
  name: e.label || e.name,
48023
48048
  ...i.identities[i.platform_of(e.name)],
48024
48049
  separated: t === 0,
@@ -48026,11 +48051,11 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48026
48051
  aria_label: `添加预设 ${e.label || e.name}`
48027
48052
  }))]);
48028
48053
  function pe(e) {
48029
- if (e.startsWith(DY)) {
48054
+ if (e.startsWith(AY)) {
48030
48055
  let t = i.expert_presets().find((t) => t.name === e.slice(7));
48031
- return t && i.add_preset(TY, t, "cli"), oe();
48056
+ return t && i.add_preset(OY, t, "cli"), oe();
48032
48057
  }
48033
- i.launch_clients[e] && (i.default_launch_entry(e), g(e) ? i.add_instance(TY, e, "cli") : ue(e, "cli"), oe());
48058
+ i.launch_clients[e] && (i.default_launch_entry(e), g(e) ? i.add_instance(OY, e, "cli") : ue(e, "cli"), oe());
48034
48059
  }
48035
48060
  function me(e) {
48036
48061
  ue(e, ""), Qn(() => _.value?.focus_first());
@@ -48052,20 +48077,20 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48052
48077
  });
48053
48078
  return (t, s) => {
48054
48079
  let c = sA, p = MA, m = PV, g = wV, x = jH, T = DV;
48055
- return U(), W("div", dY, [K("form", {
48080
+ return U(), W("div", mY, [K("form", {
48056
48081
  id: "create-discussion-form",
48057
48082
  class: "create-scroll dialog-form",
48058
48083
  onSubmit: uu(he, ["prevent"])
48059
48084
  }, [
48060
- ie.value ? (U(), W("div", fY, [K("p", null, [q(c, { name: "i-lucide-plug-zap" }), s[9] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", pY, [K("code", null, P(I(r).launch.connect_command), 1), q(p, {
48085
+ ie.value ? (U(), W("div", hY, [K("p", null, [q(c, { name: "i-lucide-plug-zap" }), s[9] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", gY, [K("code", null, P(I(r).launch.connect_command), 1), q(p, {
48061
48086
  icon: "i-lucide-copy",
48062
48087
  "aria-label": "复制本机连接命令",
48063
48088
  variant: "ghost",
48064
48089
  color: "neutral",
48065
48090
  onClick: s[0] ||= (e) => I(o)("copy", I(r).launch.connect_command)
48066
48091
  })])])) : Y("", !0),
48067
- e.targetFolder?.id ? (U(), W("p", mY, [q(c, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48068
- K("section", hY, [
48092
+ e.targetFolder?.id ? (U(), W("p", _Y, [q(c, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48093
+ K("section", vY, [
48069
48094
  s[10] ||= K("h3", null, [K("span", null, "1"), J("这次做什么")], -1),
48070
48095
  q(g, {
48071
48096
  label: "话题名称",
@@ -48091,7 +48116,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48091
48116
  _: 1
48092
48117
  }, 8, ["description"])
48093
48118
  ]),
48094
- K("section", gY, [
48119
+ K("section", yY, [
48095
48120
  s[11] ||= K("h3", null, [K("span", null, "2"), J("谁来参与")], -1),
48096
48121
  q(GJ, {
48097
48122
  ref_key: "library",
@@ -48100,7 +48125,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48100
48125
  items: j.value,
48101
48126
  onAdd: pe
48102
48127
  }, null, 8, ["items"]),
48103
- h.value.length ? (U(), W("div", _Y, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(EJ, {
48128
+ h.value.length ? (U(), W("div", bY, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(EJ, {
48104
48129
  key: e,
48105
48130
  name: e,
48106
48131
  mode: f.value[e],
@@ -48122,14 +48147,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48122
48147
  "onHost",
48123
48148
  "onRemove",
48124
48149
  "onMode"
48125
- ]))), 128))])) : (U(), W("p", vY, "请至少添加一位成员。同一平台可添加多位,各自独立会话。")),
48126
- h.value.length ? (U(), W("div", yY, [q(c, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48127
- q(uY, {
48150
+ ]))), 128))])) : (U(), W("p", xY, "请至少添加一位成员。同一平台可添加多位,各自独立会话。")),
48151
+ h.value.length ? (U(), W("div", SY, [q(c, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48152
+ q(pY, {
48128
48153
  free: !0,
48129
48154
  blocker: ne.value
48130
48155
  }, null, 8, ["blocker"])
48131
48156
  ]),
48132
- K("section", bY, [
48157
+ K("section", CY, [
48133
48158
  s[12] ||= K("h3", null, [K("span", null, "3"), J("讨论(可选)")], -1),
48134
48159
  q(x, {
48135
48160
  "model-value": d.value,
@@ -48167,7 +48192,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48167
48192
  "named_followup"
48168
48193
  ])], 64)) : Y("", !0)
48169
48194
  ]),
48170
- K("details", xY, [K("summary", null, [
48195
+ K("details", wY, [K("summary", null, [
48171
48196
  q(c, {
48172
48197
  name: "i-lucide-chevron-right",
48173
48198
  class: "create-advanced-icon"
@@ -48181,7 +48206,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48181
48206
  default: L(() => [...s[14] ||= [J("建房后可在房间页修改。", -1)]]),
48182
48207
  _: 1
48183
48208
  }, 8, ["model-value"])])
48184
- ], 32), K("footer", SY, [K("div", CY, [
48209
+ ], 32), K("footer", TY, [K("div", EY, [
48185
48210
  K("span", {
48186
48211
  class: M(["create-summary", { "is-blocked": k.value }]),
48187
48212
  title: k.value || ge.value,
@@ -48189,7 +48214,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48189
48214
  }, [k.value ? (U(), G(c, {
48190
48215
  key: 0,
48191
48216
  name: "i-lucide-circle-alert"
48192
- })) : Y("", !0), J(P(k.value ? `还差:${k.value}` : h.value.length || d.value ? ge.value : ""), 1)], 10, wY),
48217
+ })) : Y("", !0), J(P(k.value ? `还差:${k.value}` : h.value.length || d.value ? ge.value : ""), 1)], 10, DY),
48193
48218
  q(p, {
48194
48219
  label: "取消",
48195
48220
  color: "neutral",
@@ -48213,30 +48238,30 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48213
48238
  ])])]);
48214
48239
  };
48215
48240
  }
48216
- }, [["__scopeId", "data-v-8d21d832"]]), kY = {
48241
+ }, [["__scopeId", "data-v-8d21d832"]]), MY = {
48217
48242
  class: "account-settings",
48218
48243
  "aria-labelledby": "account-heading"
48219
- }, AY = {
48244
+ }, NY = {
48220
48245
  key: 0,
48221
48246
  class: "fine-print",
48222
48247
  role: "status"
48223
- }, jY = ["aria-label"], MY = { class: "fine-print account-intro" }, NY = {
48248
+ }, PY = ["aria-label"], FY = { class: "fine-print account-intro" }, IY = {
48224
48249
  key: 0,
48225
48250
  class: "account-message is-error",
48226
48251
  role: "status"
48227
- }, PY = {
48252
+ }, LY = {
48228
48253
  key: 1,
48229
48254
  class: "fine-print"
48230
- }, FY = {
48255
+ }, RY = {
48231
48256
  key: 1,
48232
48257
  class: "fine-print"
48233
- }, IY = { class: "account-actions" }, LY = {
48258
+ }, zY = { class: "account-actions" }, BY = {
48234
48259
  key: 2,
48235
48260
  class: "account-profile"
48236
- }, RY = { class: "account-identity" }, zY = { class: "account-avatar-actions" }, BY = { class: "account-name-row" }, VY = {
48261
+ }, VY = { class: "account-identity" }, HY = { class: "account-avatar-actions" }, UY = { class: "account-name-row" }, WY = {
48237
48262
  key: 0,
48238
48263
  class: "account-signout account-actions"
48239
- }, HY = {
48264
+ }, GY = {
48240
48265
  __name: "AccountSettings",
48241
48266
  setup(e) {
48242
48267
  let { view: t, bridge: n } = xr("discussion"), r = Z(() => t.value.admin), i = Z(() => r.value.profile), a = Z(() => r.value.loaded ? r.value.registered ? r.value.logged_in ? "profile" : "login" : "register" : "loading"), o = /* @__PURE__ */ F(""), s = /* @__PURE__ */ Yt({
@@ -48284,13 +48309,13 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48284
48309
  }
48285
48310
  return (e, t) => {
48286
48311
  let f = PV, v = wV, y = MA, b = pA;
48287
- return U(), W("section", kY, [t[9] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", AY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48312
+ return U(), W("section", MY, [t[9] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", NY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48288
48313
  key: 1,
48289
48314
  class: "dialog-form account-form",
48290
48315
  "aria-label": a.value === "register" ? "设置管理员账号" : "登录管理员账号",
48291
48316
  onSubmit: uu(p, ["prevent"])
48292
48317
  }, [
48293
- K("p", MY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48318
+ K("p", FY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48294
48319
  q(v, {
48295
48320
  label: "用户名",
48296
48321
  description: a.value === "register" ? "1–30 个字符,也是公开显示的名称" : void 0,
@@ -48357,23 +48382,23 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48357
48382
  }, null, 8, ["modelValue", "disabled"])]),
48358
48383
  _: 1
48359
48384
  }),
48360
- d.value ? (U(), W("p", NY, [...t[6] ||= [
48385
+ d.value ? (U(), W("p", IY, [...t[6] ||= [
48361
48386
  J("尚无可用的注册令牌。请在部署网站的电脑上运行 ", -1),
48362
48387
  K("code", null, "codiscuss token", -1),
48363
48388
  J(",再刷新本页;本地版也可设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启。", -1)
48364
- ]])) : (U(), W("p", PY, [...t[7] ||= [
48389
+ ]])) : (U(), W("p", LY, [...t[7] ||= [
48365
48390
  J("首个注册者需要令牌,防止他人抢注:在部署网站的电脑上运行 ", -1),
48366
48391
  K("code", null, "codiscuss token", -1),
48367
48392
  J(" 获取(一次性);本地版也可用服务端启动日志里的安装令牌。在已连接本机服务的电脑上注册时,账号与密码会保存到 ~/.codiscuss。忘记密码:本地版运行 ", -1),
48368
48393
  K("code", null, "python server.py --reset-admin", -1),
48369
48394
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48370
48395
  ]]))
48371
- ], 64)) : (U(), W("p", FY, [...t[8] ||= [
48396
+ ], 64)) : (U(), W("p", RY, [...t[8] ||= [
48372
48397
  J("忘记密码:本地版运行 ", -1),
48373
48398
  K("code", null, "python server.py --reset-admin", -1),
48374
48399
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48375
48400
  ]])),
48376
- K("div", IY, [q(y, {
48401
+ K("div", zY, [q(y, {
48377
48402
  type: "submit",
48378
48403
  class: "channel-primary-button",
48379
48404
  label: a.value === "register" ? "创建并登录" : "登录",
@@ -48384,13 +48409,13 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48384
48409
  "loading",
48385
48410
  "disabled"
48386
48411
  ])])
48387
- ], 40, jY)) : (U(), W("div", LY, [
48388
- K("div", RY, [q(b, {
48412
+ ], 40, PY)) : (U(), W("div", BY, [
48413
+ K("div", VY, [q(b, {
48389
48414
  src: I(n).identities.用户.icon,
48390
48415
  alt: `${I(n).display_name("用户")} 的头像`,
48391
48416
  size: "lg",
48392
48417
  class: "channel-avatar user account-avatar"
48393
- }, null, 8, ["src", "alt"]), K("div", zY, [
48418
+ }, null, 8, ["src", "alt"]), K("div", HY, [
48394
48419
  K("input", {
48395
48420
  ref_key: "avatar_input",
48396
48421
  ref: l,
@@ -48428,7 +48453,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48428
48453
  label: "显示名称",
48429
48454
  description: "即用户名,对所有访客可见"
48430
48455
  }, {
48431
- default: L(() => [K("div", BY, [q(f, {
48456
+ default: L(() => [K("div", UY, [q(f, {
48432
48457
  modelValue: c.value,
48433
48458
  "onUpdate:modelValue": t[5] ||= (e) => c.value = e,
48434
48459
  autocomplete: "username",
@@ -48446,7 +48471,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48446
48471
  }, null, 8, ["loading", "disabled"])])]),
48447
48472
  _: 1
48448
48473
  })], 32),
48449
- r.value.local ? Y("", !0) : (U(), W("div", VY, [q(y, {
48474
+ r.value.local ? Y("", !0) : (U(), W("div", WY, [q(y, {
48450
48475
  label: "退出登录",
48451
48476
  icon: "i-lucide-log-out",
48452
48477
  color: "neutral",
@@ -48459,64 +48484,64 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48459
48484
  ]))]);
48460
48485
  };
48461
48486
  }
48462
- }, UY = {
48487
+ }, KY = {
48463
48488
  key: 0,
48464
48489
  class: "channel-archive-manager"
48465
- }, WY = { class: "channel-archive-toolbar" }, GY = {
48490
+ }, qY = { class: "channel-archive-toolbar" }, JY = {
48466
48491
  key: 0,
48467
48492
  class: "channel-archive-confirm channel-archive-bulk",
48468
48493
  role: "alert"
48469
- }, KY = { class: "channel-archive-results" }, qY = {
48494
+ }, YY = { class: "channel-archive-results" }, XY = {
48470
48495
  key: 0,
48471
48496
  class: "channel-archive-list",
48472
48497
  "aria-label": "已存档房间列表"
48473
- }, JY = { class: "channel-archive-row" }, YY = { class: "channel-archive-info" }, XY = [
48498
+ }, ZY = { class: "channel-archive-row" }, QY = { class: "channel-archive-info" }, $Y = [
48474
48499
  "title",
48475
48500
  "disabled",
48476
48501
  "onClick"
48477
- ], ZY = { key: 0 }, QY = ["datetime"], $Y = { class: "channel-archive-actions" }, eX = {
48502
+ ], eX = { key: 0 }, tX = ["datetime"], nX = { class: "channel-archive-actions" }, rX = {
48478
48503
  key: 0,
48479
48504
  class: "channel-archive-confirm channel-archive-bulk",
48480
48505
  role: "alert"
48481
- }, tX = {
48506
+ }, iX = {
48482
48507
  key: 1,
48483
48508
  class: "channel-archive-empty"
48484
- }, nX = { class: "fine-print" }, rX = {
48509
+ }, aX = { class: "fine-print" }, oX = {
48485
48510
  key: 0,
48486
48511
  class: "fine-print"
48487
- }, iX = { class: "dialog-actions" }, aX = { class: "fine-print" }, oX = { class: "dialog-actions" }, sX = { class: "dialog-actions" }, cX = { class: "channel-management-target" }, lX = {
48512
+ }, sX = { class: "dialog-actions" }, cX = { class: "fine-print" }, lX = { class: "dialog-actions" }, uX = { class: "dialog-actions" }, dX = { class: "channel-management-target" }, fX = {
48488
48513
  key: 0,
48489
48514
  class: "fine-print"
48490
- }, uX = {
48515
+ }, pX = {
48491
48516
  key: 1,
48492
48517
  class: "fine-print"
48493
- }, dX = {
48518
+ }, mX = {
48494
48519
  key: 2,
48495
48520
  class: "fine-print"
48496
- }, fX = { class: "dialog-actions" }, pX = { key: 5 }, mX = { class: "theme-choices" }, hX = ["aria-pressed", "onClick"], gX = { class: "theme-check" }, _X = { class: "channel-reading-setting" }, vX = {
48521
+ }, hX = { class: "dialog-actions" }, gX = { key: 5 }, _X = { class: "theme-choices" }, vX = ["aria-pressed", "onClick"], yX = { class: "theme-check" }, bX = { class: "channel-reading-setting" }, xX = {
48497
48522
  class: "channel-reading-options",
48498
48523
  role: "group",
48499
48524
  "aria-labelledby": "channel-reading-label"
48500
- }, yX = { class: "channel-reading-setting" }, bX = {
48525
+ }, SX = { class: "channel-reading-setting" }, CX = {
48501
48526
  class: "channel-reading-options channel-effect-options",
48502
48527
  role: "group",
48503
48528
  "aria-labelledby": "channel-effects-label"
48504
- }, xX = { class: "advanced-content" }, SX = {
48529
+ }, wX = { class: "advanced-content" }, TX = {
48505
48530
  key: 0,
48506
48531
  class: "fine-print"
48507
- }, CX = { class: "advanced-content" }, wX = { class: "expert-fields" }, TX = { class: "dialog-actions" }, EX = { class: "dialog-actions" }, DX = {
48532
+ }, EX = { class: "advanced-content" }, DX = { class: "expert-fields" }, OX = { class: "dialog-actions" }, kX = { class: "dialog-actions" }, AX = {
48508
48533
  key: 9,
48509
48534
  class: "original-message"
48510
- }, OX = {
48535
+ }, jX = {
48511
48536
  key: 0,
48512
48537
  role: "alert"
48513
- }, kX = { class: "original-meta" }, AX = { class: "fine-print" }, jX = {
48538
+ }, MX = { class: "original-meta" }, NX = { class: "fine-print" }, PX = {
48514
48539
  key: 0,
48515
48540
  class: "channel-answer-summary"
48516
- }, MX = { class: "message-prose" }, NX = { class: "message-prose" }, PX = ["innerHTML"], FX = {
48541
+ }, FX = { class: "message-prose" }, IX = { class: "message-prose" }, LX = ["innerHTML"], RX = {
48517
48542
  key: 2,
48518
48543
  class: "fine-print"
48519
- }, IX = "topic-expert-modes", LX = {
48544
+ }, zX = "topic-expert-modes", BX = {
48520
48545
  __name: "WorkspaceDialogs",
48521
48546
  props: /*@__PURE__*/ Fa({
48522
48547
  detailId: {
@@ -48808,8 +48833,8 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48808
48833
  } : void 0,
48809
48834
  "onAfter:leave": xe
48810
48835
  }, {
48811
- body: L(() => [a.value === "archives" ? (U(), W("section", UY, [
48812
- K("div", WY, [
48836
+ body: L(() => [a.value === "archives" ? (U(), W("section", KY, [
48837
+ K("div", qY, [
48813
48838
  q(x, {
48814
48839
  modelValue: h.value,
48815
48840
  "onUpdate:modelValue": c[0] ||= (e) => h.value = e,
@@ -48838,7 +48863,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48838
48863
  }
48839
48864
  }, null, 8, ["label", "disabled"])
48840
48865
  ]),
48841
- b.value && v.value.length ? (U(), W("div", GY, [
48866
+ b.value && v.value.length ? (U(), W("div", JY, [
48842
48867
  K("span", null, "将永久删除当前列表中的 " + P(v.value.length) + " 个房间及其全部记录,无法撤销。", 1),
48843
48868
  q(de, {
48844
48869
  label: "取消",
@@ -48854,19 +48879,19 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48854
48879
  onClick: ee
48855
48880
  })
48856
48881
  ])) : Y("", !0),
48857
- K("div", KY, [v.value.length ? (U(), W("ul", qY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48882
+ K("div", YY, [v.value.length ? (U(), W("ul", XY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48858
48883
  key: e.id,
48859
48884
  class: "channel-archive-item"
48860
- }, [K("div", JY, [K("div", YY, [K("button", {
48885
+ }, [K("div", ZY, [K("div", QY, [K("button", {
48861
48886
  class: "channel-archive-title",
48862
48887
  title: e.title,
48863
48888
  disabled: !!I(u),
48864
48889
  onClick: (t) => T(e)
48865
- }, P(e.title), 9, XY), K("small", null, [e.created_at ? (U(), W("span", ZY, [
48890
+ }, P(e.title), 9, $Y), K("small", null, [e.created_at ? (U(), W("span", eX, [
48866
48891
  c[27] ||= J("创建于 ", -1),
48867
- K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, QY),
48892
+ K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, tX),
48868
48893
  c[28] ||= J(" · ", -1)
48869
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", $Y, [q(de, {
48894
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", nX, [q(de, {
48870
48895
  "aria-label": `彻底删除 ${e.title}`,
48871
48896
  title: "彻底删除",
48872
48897
  icon: "i-lucide-trash-2",
@@ -48898,7 +48923,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48898
48923
  "aria-label",
48899
48924
  "disabled",
48900
48925
  "onClick"
48901
- ])])]), y.value === e.id ? (U(), W("div", eX, [
48926
+ ])])]), y.value === e.id ? (U(), W("div", rX, [
48902
48927
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
48903
48928
  q(de, {
48904
48929
  label: "取消",
@@ -48914,15 +48939,15 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48914
48939
  disabled: w(e),
48915
48940
  onClick: E
48916
48941
  }, null, 8, ["disabled"])
48917
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", tX, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48942
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", iX, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48918
48943
  ])) : a.value === "delete-folder" ? (U(), W("form", {
48919
48944
  key: 1,
48920
48945
  class: "dialog-form",
48921
48946
  onSubmit: c[7] ||= uu((e) => ae(!1), ["prevent"])
48922
48947
  }, [
48923
- K("p", nX, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
48924
- ie.value.length ? (U(), W("p", rX, "也可以连同其中的 " + P(ie.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
48925
- K("div", iX, [
48948
+ K("p", aX, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
48949
+ ie.value.length ? (U(), W("p", oX, "也可以连同其中的 " + P(ie.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
48950
+ K("div", sX, [
48926
48951
  q(de, {
48927
48952
  label: "取消",
48928
48953
  color: "neutral",
@@ -48947,7 +48972,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48947
48972
  key: 2,
48948
48973
  class: "dialog-form",
48949
48974
  onSubmit: uu(k, ["prevent"])
48950
- }, [K("p", aX, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(ie.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", oX, [q(de, {
48975
+ }, [K("p", cX, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(ie.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", lX, [q(de, {
48951
48976
  label: "取消",
48952
48977
  color: "neutral",
48953
48978
  variant: "ghost",
@@ -48977,7 +49002,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
48977
49002
  "modelValue",
48978
49003
  "aria-label",
48979
49004
  "readonly"
48980
- ]), K("div", sX, [q(de, {
49005
+ ]), K("div", uX, [q(de, {
48981
49006
  label: "取消",
48982
49007
  color: "neutral",
48983
49008
  variant: "ghost",
@@ -49002,10 +49027,10 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49002
49027
  class: "dialog-form",
49003
49028
  onSubmit: uu(ne, ["prevent"])
49004
49029
  }, [
49005
- K("p", cX, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49006
- a.value === "archive" ? (U(), W("p", lX, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49007
- a.value === "restore" ? (U(), W("p", uX, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49008
- a.value === "delete" ? (U(), W("p", dX, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49030
+ K("p", dX, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49031
+ a.value === "archive" ? (U(), W("p", fX, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49032
+ a.value === "restore" ? (U(), W("p", pX, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49033
+ a.value === "delete" ? (U(), W("p", mX, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49009
49034
  a.value === "rename" ? (U(), G(fe, {
49010
49035
  key: 3,
49011
49036
  label: "房间名称",
@@ -49022,7 +49047,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49022
49047
  }, null, 8, ["modelValue"])]),
49023
49048
  _: 1
49024
49049
  })) : Y("", !0),
49025
- K("div", fX, [q(de, {
49050
+ K("div", hX, [q(de, {
49026
49051
  label: "取消",
49027
49052
  color: "neutral",
49028
49053
  variant: "ghost",
@@ -49039,10 +49064,10 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49039
49064
  "loading",
49040
49065
  "disabled"
49041
49066
  ])])
49042
- ], 32)) : a.value === "settings" ? (U(), W("div", pX, [
49043
- q(HY),
49067
+ ], 32)) : a.value === "settings" ? (U(), W("div", gX, [
49068
+ q(GY),
49044
49069
  c[33] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
49045
- K("div", mX, [(U(), W(H, null, B(ge, (e) => K("button", {
49070
+ K("div", _X, [(U(), W(H, null, B(ge, (e) => K("button", {
49046
49071
  key: e.value,
49047
49072
  class: M({ chosen: I(o).theme === e.value }),
49048
49073
  "aria-pressed": I(o).theme === e.value,
@@ -49057,12 +49082,12 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49057
49082
  K("b")
49058
49083
  ], -1)]], 2),
49059
49084
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
49060
- K("span", gX, [I(o).theme === e.value ? (U(), G(ye, {
49085
+ K("span", yX, [I(o).theme === e.value ? (U(), G(ye, {
49061
49086
  key: 0,
49062
49087
  name: "i-lucide-check"
49063
49088
  })) : Y("", !0)])
49064
- ], 10, hX)), 64))]),
49065
- K("section", _X, [c[30] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", vX, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(de, {
49089
+ ], 10, vX)), 64))]),
49090
+ K("section", bX, [c[30] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", xX, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(de, {
49066
49091
  key: e.value,
49067
49092
  label: e.label,
49068
49093
  color: "neutral",
@@ -49076,9 +49101,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49076
49101
  "aria-pressed",
49077
49102
  "onClick"
49078
49103
  ]))), 128))])]),
49079
- K("section", yX, [
49104
+ K("section", SX, [
49080
49105
  c[31] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
49081
- K("div", bX, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(de, {
49106
+ K("div", CX, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(de, {
49082
49107
  key: e.value,
49083
49108
  label: e.label,
49084
49109
  color: "neutral",
@@ -49094,7 +49119,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49094
49119
  ]))), 128))]),
49095
49120
  c[32] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
49096
49121
  ])
49097
- ])) : a.value === "create" ? (U(), G(OY, {
49122
+ ])) : a.value === "create" ? (U(), G(jY, {
49098
49123
  key: 6,
49099
49124
  "target-folder": e.targetFolder,
49100
49125
  onSubmit: _e,
@@ -49152,7 +49177,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49152
49177
  }, null, 8, ["model-value"])]),
49153
49178
  _: 1
49154
49179
  })) : Y("", !0),
49155
- K("section", xX, [
49180
+ K("section", wX, [
49156
49181
  c[34] ||= K("h3", null, "讨论上限", -1),
49157
49182
  q(eU, {
49158
49183
  ref_key: "topic_limits",
@@ -49167,14 +49192,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49167
49192
  "minutes",
49168
49193
  "disabled"
49169
49194
  ]),
49170
- ue.value ? (U(), W("p", SX, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
49195
+ ue.value ? (U(), W("p", TX, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
49171
49196
  ]),
49172
49197
  q(Te, {
49173
49198
  open: ce.value,
49174
49199
  "onUpdate:open": c[21] ||= (e) => ce.value = e,
49175
49200
  class: "advanced-fields"
49176
49201
  }, {
49177
- content: L(() => [K("div", CX, [
49202
+ content: L(() => [K("div", EX, [
49178
49203
  (U(), W(H, null, B([
49179
49204
  {
49180
49205
  key: "user_request",
@@ -49201,11 +49226,11 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49201
49226
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
49202
49227
  _: 2
49203
49228
  }, 1032, ["label"])), 64)),
49204
- K("div", wX, [(U(!0), W(H, null, B(I(A), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49205
- "model-value": I(o).experts[IX]?.[e] || "none",
49229
+ K("div", DX, [(U(!0), W(H, null, B(I(A), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49230
+ "model-value": I(o).experts[zX]?.[e] || "none",
49206
49231
  items: se,
49207
49232
  "aria-label": `${e} 参与方式`,
49208
- "onUpdate:modelValue": (t) => I(s).write_expert(IX, e, t === "none" ? "" : t)
49233
+ "onUpdate:modelValue": (t) => I(s).write_expert(zX, e, t === "none" ? "" : t)
49209
49234
  }, null, 8, [
49210
49235
  "model-value",
49211
49236
  "aria-label",
@@ -49223,7 +49248,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49223
49248
  }, null, 8, ["trailing-icon"])]),
49224
49249
  _: 1
49225
49250
  }, 8, ["open"]),
49226
- K("div", TX, [q(de, {
49251
+ K("div", OX, [q(de, {
49227
49252
  label: "取消",
49228
49253
  color: "neutral",
49229
49254
  variant: "ghost",
@@ -49267,7 +49292,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49267
49292
  _: 1
49268
49293
  }),
49269
49294
  c[36] ||= K("p", { class: "fine-print" }, "创建后为待通知状态;由主持人实际联系专家。", -1),
49270
- K("div", EX, [q(de, {
49295
+ K("div", kX, [q(de, {
49271
49296
  label: "取消",
49272
49297
  variant: "ghost",
49273
49298
  color: "neutral",
@@ -49278,8 +49303,8 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49278
49303
  label: "创建发言安排",
49279
49304
  loading: I(u) === "schedule"
49280
49305
  }, null, 8, ["loading"])])
49281
- ], 32)) : a.value === "message" ? (U(), W("div", DX, [pe.value ? (U(), W("p", OX, P(pe.value), 1)) : j.value ? (U(), W(H, { key: 1 }, [
49282
- K("div", kX, [
49306
+ ], 32)) : a.value === "message" ? (U(), W("div", AX, [pe.value ? (U(), W("p", jX, P(pe.value), 1)) : j.value ? (U(), W(H, { key: 1 }, [
49307
+ K("div", MX, [
49283
49308
  K("strong", null, P(I(s).display_name(j.value.author)), 1),
49284
49309
  K("span", null, "#" + P(j.value.id), 1),
49285
49310
  q(Ee, {
@@ -49290,14 +49315,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49290
49315
  _: 1
49291
49316
  })
49292
49317
  ]),
49293
- K("p", AX, P(I(s).provenance(j.value)) + " · " + P(new Date(j.value.created_at).toLocaleString("zh-CN")), 1),
49294
- j.value.summary ? (U(), W("section", jX, [K("small", null, "回答摘要 · " + P(I(s).display_name(j.value.summary_by)), 1), K("p", MX, P(j.value.summary), 1)])) : Y("", !0),
49295
- K("p", NX, P(j.value.text), 1),
49318
+ K("p", NX, P(I(s).provenance(j.value)) + " · " + P(new Date(j.value.created_at).toLocaleString("zh-CN")), 1),
49319
+ j.value.summary ? (U(), W("section", PX, [K("small", null, "回答摘要 · " + P(I(s).display_name(j.value.summary_by)), 1), K("p", FX, P(j.value.summary), 1)])) : Y("", !0),
49320
+ K("p", IX, P(j.value.text), 1),
49296
49321
  j.value.attachments?.length ? (U(), W("div", {
49297
49322
  key: 1,
49298
49323
  onClick: be,
49299
49324
  innerHTML: I(s).attachment_markup(j.value.attachments)
49300
- }, null, 8, PX)) : Y("", !0),
49325
+ }, null, 8, LX)) : Y("", !0),
49301
49326
  j.value.reply_to ? (U(), G(de, {
49302
49327
  key: 2,
49303
49328
  label: `查看被回复的原文 #${j.value.reply_to}`,
@@ -49307,7 +49332,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49307
49332
  class: "channel-surface-button",
49308
49333
  onClick: Se
49309
49334
  }, null, 8, ["label"])) : Y("", !0)
49310
- ], 64)) : (U(), W("p", FX, "正在读取原文…"))])) : Y("", !0)]),
49335
+ ], 64)) : (U(), W("p", RX, "正在读取原文…"))])) : Y("", !0)]),
49311
49336
  _: 1
49312
49337
  }, 8, [
49313
49338
  "open",
@@ -49318,7 +49343,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49318
49343
  ]);
49319
49344
  };
49320
49345
  }
49321
- }, RX = {
49346
+ }, VX = {
49322
49347
  slots: {
49323
49348
  root: "relative flex gap-1.5 [&>div]:min-w-0",
49324
49349
  list: "isolate min-w-0",
@@ -49728,7 +49753,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49728
49753
  highlightColor: "primary",
49729
49754
  variant: "pill"
49730
49755
  }
49731
- }, zX = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
49756
+ }, HX = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
49732
49757
  __name: "NavigationMenu",
49733
49758
  props: {
49734
49759
  as: {
@@ -49889,7 +49914,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
49889
49914
  level: Number,
49890
49915
  listIndex: Number
49891
49916
  } }), g = Z(() => oA({
49892
- extend: RX,
49917
+ extend: VX,
49893
49918
  ...o.ui?.navigationMenu || {}
49894
49919
  })({
49895
49920
  orientation: a.orientation,
@@ -50377,7 +50402,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
50377
50402
  }, 16, ["data-collapsed", "class"])
50378
50403
  ], 64));
50379
50404
  }
50380
- }), BX = {
50405
+ }), UX = {
50381
50406
  __name: "ContextMenuContent",
50382
50407
  props: {
50383
50408
  items: {
@@ -50672,7 +50697,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
50672
50697
  "disabled",
50673
50698
  "text-value",
50674
50699
  "class"
50675
- ]), q(BX, X({
50700
+ ]), q(UX, X({
50676
50701
  sub: "",
50677
50702
  class: r.ui?.content,
50678
50703
  ui: e.ui,
@@ -50783,7 +50808,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
50783
50808
  _: 3
50784
50809
  }, 16)], 64));
50785
50810
  }
50786
- }, VX = {
50811
+ }, WX = {
50787
50812
  slots: {
50788
50813
  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",
50789
50814
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -50971,7 +50996,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
50971
50996
  }
50972
50997
  ],
50973
50998
  defaultVariants: { size: "md" }
50974
- }, HX = {
50999
+ }, GX = {
50975
51000
  __name: "ContextMenu",
50976
51001
  props: {
50977
51002
  size: {
@@ -51041,7 +51066,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51041
51066
  emits: ["update:open"],
51042
51067
  setup(e, { emit: t }) {
51043
51068
  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({
51044
- extend: VX,
51069
+ extend: WX,
51045
51070
  ...o.ui?.contextMenu || {}
51046
51071
  })({ size: a.size }));
51047
51072
  return (e, t) => (U(), G(I(iC), N(Ss(I(s))), {
@@ -51053,7 +51078,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51053
51078
  }, {
51054
51079
  default: L(() => [V(e.$slots, "default")]),
51055
51080
  _: 3
51056
- }, 8, ["disabled", "class"])) : Y("", !0), q(BX, X({
51081
+ }, 8, ["disabled", "class"])) : Y("", !0), q(UX, X({
51057
51082
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
51058
51083
  ui: u.value,
51059
51084
  "ui-override": I(a).ui
@@ -51083,20 +51108,20 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51083
51108
  _: 3
51084
51109
  }, 16));
51085
51110
  }
51086
- }, UX = {
51111
+ }, KX = {
51087
51112
  key: 0,
51088
51113
  class: "channel-import-reading"
51089
- }, WX = {
51114
+ }, qX = {
51090
51115
  class: "channel-import-list",
51091
51116
  "aria-live": "polite"
51092
- }, GX = { class: "channel-import-head" }, KX = ["title"], qX = {
51117
+ }, JX = { class: "channel-import-head" }, YX = ["title"], XX = {
51093
51118
  key: 0,
51094
51119
  role: "alert",
51095
51120
  class: "channel-import-error"
51096
- }, JX = {
51121
+ }, ZX = {
51097
51122
  key: 1,
51098
51123
  class: "channel-import-members"
51099
- }, YX = ["title"], XX = { class: "dialog-actions" }, ZX = /*#__PURE__*/ MH({
51124
+ }, QX = ["title"], $X = { class: "dialog-actions" }, eZ = /*#__PURE__*/ MH({
51100
51125
  __name: "ImportDialog",
51101
51126
  props: {
51102
51127
  open: {
@@ -51152,21 +51177,21 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51152
51177
  }
51153
51178
  }, {
51154
51179
  body: L(() => [
51155
- !r.value.done && !r.value.rooms.length ? (U(), W("p", UX, "正在读取备份文件…")) : Y("", !0),
51156
- K("ul", WX, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
51180
+ !r.value.done && !r.value.rooms.length ? (U(), W("p", KX, "正在读取备份文件…")) : Y("", !0),
51181
+ K("ul", qX, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
51157
51182
  key: t,
51158
51183
  class: M(["channel-import-room", `is-${e.status}`])
51159
51184
  }, [
51160
- K("div", GX, [
51185
+ K("div", JX, [
51161
51186
  q(o, {
51162
51187
  name: i[e.status].icon,
51163
51188
  class: M({ "animate-spin": e.status === "importing" })
51164
51189
  }, null, 8, ["name", "class"]),
51165
- K("strong", { title: e.title }, P(e.title), 9, KX),
51190
+ K("strong", { title: e.title }, P(e.title), 9, YX),
51166
51191
  K("span", null, P(i[e.status].label), 1)
51167
51192
  ]),
51168
- e.error ? (U(), W("p", qX, P(e.error), 1)) : Y("", !0),
51169
- e.members.length ? (U(), W("ul", JX, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
51193
+ e.error ? (U(), W("p", XX, P(e.error), 1)) : Y("", !0),
51194
+ e.members.length ? (U(), W("ul", ZX, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
51170
51195
  key: e.name,
51171
51196
  class: M({ "is-failed": e.failed })
51172
51197
  }, [
@@ -51175,7 +51200,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51175
51200
  e.resume ? (U(), W("code", {
51176
51201
  key: 0,
51177
51202
  title: `没有开着的原窗口时,在 ${e.resume.cwd} 运行`
51178
- }, P(e.resume.command), 9, YX)) : Y("", !0)
51203
+ }, P(e.resume.command), 9, QX)) : Y("", !0)
51179
51204
  ], 2))), 128))])) : Y("", !0),
51180
51205
  (U(!0), W(H, null, B(e.problems, (e) => (U(), W("p", {
51181
51206
  key: e,
@@ -51187,7 +51212,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51187
51212
  role: "alert",
51188
51213
  class: "channel-import-error is-file"
51189
51214
  }, P(e), 1))), 128)),
51190
- K("div", XX, [q(s, {
51215
+ K("div", $X, [q(s, {
51191
51216
  label: "完成",
51192
51217
  class: "channel-primary-button",
51193
51218
  disabled: !r.value.done,
@@ -51203,39 +51228,39 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51203
51228
  ]);
51204
51229
  };
51205
51230
  }
51206
- }, [["__scopeId", "data-v-03a2f1dd"]]), QX = { class: "channel-directory-manager" }, $X = { class: "channel-directory-heading" }, eZ = ["aria-expanded"], tZ = { class: "channel-directory-actions" }, nZ = {
51231
+ }, [["__scopeId", "data-v-03a2f1dd"]]), tZ = { class: "channel-directory-manager" }, nZ = { class: "channel-directory-heading" }, rZ = ["aria-expanded"], iZ = { class: "channel-directory-actions" }, aZ = {
51207
51232
  "aria-label": "协作房间列表",
51208
51233
  class: "channel-room-list",
51209
51234
  "data-room-directory": ""
51210
- }, rZ = ["data-room-folder", "data-drag-folder"], iZ = [
51235
+ }, oZ = ["data-room-folder", "data-drag-folder"], sZ = [
51211
51236
  "disabled",
51212
51237
  "aria-label",
51213
51238
  "aria-expanded",
51214
51239
  "onKeydown",
51215
51240
  "onClick"
51216
- ], aZ = { class: "channel-folder-name" }, oZ = {
51241
+ ], cZ = { class: "channel-folder-name" }, lZ = {
51217
51242
  class: "channel-directory-count",
51218
51243
  "aria-hidden": "true"
51219
- }, sZ = { class: "channel-folder-actions" }, cZ = ["data-drop-folder"], lZ = {
51244
+ }, uZ = { class: "channel-folder-actions" }, dZ = ["data-drop-folder"], fZ = {
51220
51245
  key: 0,
51221
51246
  class: "channel-directory-empty",
51222
51247
  role: "status"
51223
- }, uZ = ["data-drag-room"], dZ = [
51248
+ }, pZ = ["data-drag-room"], mZ = [
51224
51249
  "aria-label",
51225
51250
  "disabled",
51226
51251
  "onKeydown"
51227
- ], fZ = [
51252
+ ], hZ = [
51228
51253
  "title",
51229
51254
  "aria-label",
51230
51255
  "aria-current",
51231
51256
  "onClick"
51232
- ], pZ = { class: "channel-room-actions" }, mZ = {
51257
+ ], gZ = { class: "channel-room-actions" }, _Z = {
51233
51258
  key: 0,
51234
51259
  class: "channel-directory-empty"
51235
- }, hZ = {
51260
+ }, vZ = {
51236
51261
  key: 0,
51237
51262
  class: "channel-archive-count"
51238
- }, gZ = {
51263
+ }, yZ = {
51239
51264
  __name: "ChannelDirectory",
51240
51265
  emits: [
51241
51266
  "select",
@@ -51466,8 +51491,8 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51466
51491
  ];
51467
51492
  }
51468
51493
  return (e, t) => {
51469
- let u = MA, m = sA, h = RV, b = iH, x = HX;
51470
- return U(), W("div", QX, [
51494
+ let u = MA, m = sA, h = RV, b = iH, x = GX;
51495
+ return U(), W("div", tZ, [
51471
51496
  q(u, {
51472
51497
  label: "新建对话",
51473
51498
  icon: "i-lucide-plus",
@@ -51476,12 +51501,12 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51476
51501
  disabled: I(r).directory_pending.includes("create-room"),
51477
51502
  onClick: t[0] ||= (e) => n("create", null)
51478
51503
  }, null, 8, ["disabled"]),
51479
- K("div", $X, [K("button", {
51504
+ K("div", nZ, [K("button", {
51480
51505
  type: "button",
51481
51506
  class: "channel-section-toggle",
51482
51507
  "aria-expanded": _.value,
51483
51508
  onClick: t[1] ||= (e) => _.value = !_.value
51484
- }, [q(m, { name: _.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[8] ||= J("协作房间", -1)], 8, eZ), K("div", tZ, [
51509
+ }, [q(m, { name: _.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[8] ||= J("协作房间", -1)], 8, rZ), K("div", iZ, [
51485
51510
  q(h, { text: "新建文件夹" }, {
51486
51511
  default: L(() => [q(u, {
51487
51512
  icon: "i-lucide-plus",
@@ -51523,7 +51548,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51523
51548
  onChange: g
51524
51549
  }, null, 544)
51525
51550
  ])]),
51526
- vr(K("nav", nZ, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
51551
+ vr(K("nav", aZ, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
51527
51552
  key: e.order_id,
51528
51553
  class: "channel-folder-section",
51529
51554
  "data-room-folder": e.id,
@@ -51552,9 +51577,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51552
51577
  }, [
51553
51578
  q(m, { name: v.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
51554
51579
  q(m, { name: "i-lucide-folder" }),
51555
- K("span", aZ, P(e.name), 1),
51556
- K("small", oZ, P(e.pending ? "保存中" : e.rooms.length), 1)
51557
- ], 40, iZ), K("div", sZ, [q(h, { text: `在${e.name}中新建对话` }, {
51580
+ K("span", cZ, P(e.name), 1),
51581
+ K("small", lZ, P(e.pending ? "保存中" : e.rooms.length), 1)
51582
+ ], 40, sZ), K("div", uZ, [q(h, { text: `在${e.name}中新建对话` }, {
51558
51583
  default: L(() => [q(u, {
51559
51584
  icon: "i-lucide-square-pen",
51560
51585
  "aria-label": `在${e.name}中新建对话`,
@@ -51591,7 +51616,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51591
51616
  key: 1,
51592
51617
  class: M(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
51593
51618
  "data-drop-folder": e.id ? void 0 : ""
51594
- }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", lZ, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(x, {
51619
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", fZ, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(x, {
51595
51620
  key: s.id,
51596
51621
  items: C(s, c, s.folder_id || null, e.rooms.length),
51597
51622
  ui: { content: "channel-menu channel-topic-menu" }
@@ -51616,7 +51641,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51616
51641
  direction: 1,
51617
51642
  folder_id: s.folder_id || null
51618
51643
  }), ["prevent"]), ["down"])]
51619
- }, [q(m, { name: "i-lucide-grip-vertical" })], 40, dZ),
51644
+ }, [q(m, { name: "i-lucide-grip-vertical" })], 40, mZ),
51620
51645
  K("button", {
51621
51646
  class: "channel-room-select",
51622
51647
  "data-drag-title": "",
@@ -51625,8 +51650,8 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51625
51650
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
51626
51651
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
51627
51652
  onClick: (e) => n("select", s.id)
51628
- }, [K("span", null, P(s.title), 1)], 40, fZ),
51629
- K("div", pZ, [q(h, {
51653
+ }, [K("span", null, P(s.title), 1)], 40, hZ),
51654
+ K("div", gZ, [q(h, {
51630
51655
  text: s.archived ? "恢复房间" : "存档房间",
51631
51656
  ui: { content: "channel-topic-tooltip" }
51632
51657
  }, {
@@ -51667,9 +51692,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51667
51692
  }, null, 8, ["aria-label"])]),
51668
51693
  _: 2
51669
51694
  }, 1032, ["items"])])
51670
- ], 10, uZ)]),
51695
+ ], 10, pZ)]),
51671
51696
  _: 2
51672
- }, 1032, ["items"]))), 128))], 10, cZ)) : Y("", !0)], 8, rZ))), 128)), s.value.length ? Y("", !0) : (U(), W("p", mZ, "暂无协作房间"))], 512), [[Vc, _.value]]),
51697
+ }, 1032, ["items"]))), 128))], 10, dZ)) : Y("", !0)], 8, oZ))), 128)), s.value.length ? Y("", !0) : (U(), W("p", _Z, "暂无协作房间"))], 512), [[Vc, _.value]]),
51673
51698
  vr(q(u, {
51674
51699
  icon: "i-lucide-archive",
51675
51700
  color: "neutral",
@@ -51678,21 +51703,21 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51678
51703
  "aria-haspopup": "dialog",
51679
51704
  onClick: t[6] ||= (e) => n("archives")
51680
51705
  }, {
51681
- default: L(() => [t[9] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", hZ, P(c.value), 1)) : Y("", !0)]),
51706
+ default: L(() => [t[9] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", vZ, P(c.value), 1)) : Y("", !0)]),
51682
51707
  _: 1
51683
51708
  }, 512), [[Vc, _.value]]),
51684
- q(ZX, {
51709
+ q(eZ, {
51685
51710
  open: p.value,
51686
51711
  "onUpdate:open": t[7] ||= (e) => p.value = e
51687
51712
  }, null, 8, ["open"])
51688
51713
  ]);
51689
51714
  };
51690
51715
  }
51691
- }, _Z = {
51716
+ }, bZ = {
51692
51717
  id: "channel-sidebar",
51693
51718
  class: "channel-sidebar",
51694
51719
  "aria-label": "房间导航"
51695
- }, vZ = { class: "channel-sidebar-content" }, yZ = { class: "channel-directory-heading channel-tools-heading" }, bZ = ["aria-expanded"], xZ = { class: "channel-sidebar-footer" }, SZ = ["aria-label"], CZ = { class: "channel-self" }, wZ = ["title"], TZ = {
51720
+ }, xZ = { class: "channel-sidebar-content" }, SZ = { class: "channel-directory-heading channel-tools-heading" }, CZ = ["aria-expanded"], wZ = { class: "channel-sidebar-footer" }, TZ = ["aria-label"], EZ = { class: "channel-self" }, DZ = ["title"], OZ = {
51696
51721
  __name: "ChannelSidebar",
51697
51722
  props: { tabs: {
51698
51723
  type: Array,
@@ -51721,11 +51746,11 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51721
51746
  return e?.loaded ? e.registered ? e.logged_in ? "" : "未登录 · 点击登录" : "设置管理员账号" : "";
51722
51747
  });
51723
51748
  return (e, t) => {
51724
- let n = sA, o = zX, d = pA, f = MA, p = RV;
51725
- return U(), W("aside", _Z, [
51749
+ let n = sA, o = HX, d = pA, f = MA, p = RV;
51750
+ return U(), W("aside", bZ, [
51726
51751
  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),
51727
- K("div", vZ, [
51728
- q(gZ, {
51752
+ K("div", xZ, [
51753
+ q(yZ, {
51729
51754
  onSelect: t[0] ||= (e) => r("select", e),
51730
51755
  onManage: t[1] ||= (e) => r("manage", e),
51731
51756
  onCreate: t[2] ||= (e) => r("create", e),
@@ -51735,12 +51760,12 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51735
51760
  onArchiveFolder: t[6] ||= (e) => r("archive-folder", e),
51736
51761
  onArchives: t[7] ||= (e) => r("archives")
51737
51762
  }),
51738
- K("div", yZ, [K("button", {
51763
+ K("div", SZ, [K("button", {
51739
51764
  type: "button",
51740
51765
  class: "channel-section-toggle",
51741
51766
  "aria-expanded": c.value,
51742
51767
  onClick: t[8] ||= (e) => c.value = !c.value
51743
- }, [q(n, { name: c.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[12] ||= J("频道工具", -1)], 8, bZ)]),
51768
+ }, [q(n, { name: c.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[12] ||= J("频道工具", -1)], 8, CZ)]),
51744
51769
  c.value ? (U(), G(o, {
51745
51770
  key: 0,
51746
51771
  items: l.value,
@@ -51756,7 +51781,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51756
51781
  }
51757
51782
  }, null, 8, ["items"])) : Y("", !0)
51758
51783
  ]),
51759
- K("footer", xZ, [
51784
+ K("footer", wZ, [
51760
51785
  K("button", {
51761
51786
  type: "button",
51762
51787
  class: "channel-self-button",
@@ -51773,10 +51798,10 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51773
51798
  "text",
51774
51799
  "alt",
51775
51800
  "class"
51776
- ]), K("span", CZ, [K("strong", null, P(I(a).display_name(I(s))), 1), K("span", { class: M(["channel-connection", { "is-action": u.value }]) }, [K("span", {
51801
+ ]), K("span", EZ, [K("strong", null, P(I(a).display_name(I(s))), 1), K("span", { class: M(["channel-connection", { "is-action": u.value }]) }, [K("span", {
51777
51802
  class: M({ connected: I(i).connected }),
51778
51803
  title: I(i).connected ? "网站已连接" : "网站未连接"
51779
- }, null, 10, wZ), J(P(u.value || (I(i).connected ? "网站已连接" : I(i).reconnecting ? "正在重新连接…" : "网站未连接")), 1)], 2)])], 8, SZ),
51804
+ }, null, 10, DZ), J(P(u.value || (I(i).connected ? "网站已连接" : I(i).reconnecting ? "正在重新连接…" : "网站未连接")), 1)], 2)])], 8, TZ),
51780
51805
  I(i).connected ? Y("", !0) : (U(), G(p, {
51781
51806
  key: 0,
51782
51807
  text: "重新连接"
@@ -51809,24 +51834,24 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51809
51834
  ]);
51810
51835
  };
51811
51836
  }
51812
- }, EZ = {
51837
+ }, kZ = {
51813
51838
  key: 0,
51814
51839
  class: "pb-invite",
51815
51840
  "aria-label": "启动手动成员"
51816
- }, DZ = { class: "pb-invite-lead" }, OZ = { class: "pb-invite-launches" }, kZ = { class: "pb-invite-footer" }, AZ = {
51841
+ }, AZ = { class: "pb-invite-lead" }, jZ = { class: "pb-invite-launches" }, MZ = { class: "pb-invite-footer" }, NZ = {
51817
51842
  key: 0,
51818
51843
  class: "pb-invite-cards"
51819
- }, jZ = {
51844
+ }, PZ = {
51820
51845
  key: 0,
51821
51846
  class: "fine-print"
51822
- }, MZ = ["aria-hidden"], NZ = {
51847
+ }, FZ = ["aria-hidden"], IZ = {
51823
51848
  key: 2,
51824
51849
  class: "pb-invite-empty"
51825
- }, PZ = {
51850
+ }, LZ = {
51826
51851
  key: 3,
51827
51852
  role: "alert",
51828
51853
  class: "fine-print"
51829
- }, FZ = { class: "pb-invite-footer" }, IZ = 2e3, LZ = "preset:", RZ = /*#__PURE__*/ MH({
51854
+ }, RZ = { class: "pb-invite-footer" }, zZ = 2e3, BZ = "preset:", VZ = /*#__PURE__*/ MH({
51830
51855
  __name: "InviteDialog",
51831
51856
  props: /*@__PURE__*/ Fa({ description: {
51832
51857
  type: String,
@@ -51844,7 +51869,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51844
51869
  async function u(e) {
51845
51870
  clearTimeout(l), c.value = "", await i("copy_member_launch", e) && (c.value = e, l = setTimeout(() => {
51846
51871
  c.value = "";
51847
- }, IZ));
51872
+ }, zZ));
51848
51873
  }
51849
51874
  let d = /* @__PURE__ */ F([]), f = 0, p = /* @__PURE__ */ F([]), m = /* @__PURE__ */ F(!1), h = Z(() => Object.keys(r.launch_clients)), g = Z(() => n.value && r.expert_presets()), _ = Z(() => (o.value.members || []).map((e) => e.name)), v = (e) => _.value.filter((t) => r.platform_of(t) === e).length, y = Z(() => [...d.value.filter((e) => e.mode !== "manual"), ...d.value.filter((e) => e.mode === "manual")]), b = Z(() => {
51850
51875
  let e = /* @__PURE__ */ new Set([..._.value, ...d.value.filter((e) => e.preset).map((e) => e.name)]);
@@ -51883,7 +51908,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51883
51908
  title: v(e) ? `已在场 ${v(e)} 位 · 将添加新实例` : "",
51884
51909
  aria_label: `添加 ${e} 实例`
51885
51910
  })), ...g.value.map((e, t) => ({
51886
- value: LZ + e.name,
51911
+ value: BZ + e.name,
51887
51912
  name: e.label || e.name,
51888
51913
  ...r.identities[r.platform_of(e.name)],
51889
51914
  separated: t === 0,
@@ -51891,7 +51916,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51891
51916
  aria_label: `添加预设 ${e.label || e.name}`
51892
51917
  }))]);
51893
51918
  function T(e) {
51894
- if (!e.startsWith(LZ)) return C(e);
51919
+ if (!e.startsWith(BZ)) return C(e);
51895
51920
  let t = g.value.find((t) => t.name === e.slice(7));
51896
51921
  t && E(t);
51897
51922
  }
@@ -51930,9 +51955,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51930
51955
  body: "dialog-body"
51931
51956
  }
51932
51957
  }, {
51933
- body: L(() => [p.value.length && !d.value.length ? (U(), W("div", EZ, [
51934
- K("p", DZ, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51935
- K("ul", OZ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
51958
+ body: L(() => [p.value.length && !d.value.length ? (U(), W("div", kZ, [
51959
+ K("p", AZ, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51960
+ K("ul", jZ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
51936
51961
  q(l, {
51937
51962
  src: I(r).identities[I(r).platform_of(e)]?.icon,
51938
51963
  text: I(r).identities[I(r).platform_of(e)]?.initials,
@@ -51967,7 +51992,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51967
51992
  ])
51968
51993
  ]))), 128))]),
51969
51994
  o[3] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51970
- K("div", kZ, [q(f, {
51995
+ K("div", MZ, [q(f, {
51971
51996
  label: "完成",
51972
51997
  class: "channel-primary-button",
51973
51998
  onClick: o[0] ||= (e) => t.value = !1
@@ -51983,7 +52008,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51983
52008
  items: w.value,
51984
52009
  onAdd: T
51985
52010
  }, null, 8, ["items"]),
51986
- d.value.length ? (U(), W("div", AZ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
52011
+ d.value.length ? (U(), W("div", NZ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
51987
52012
  key: e.id,
51988
52013
  class: "pb-invite-pick"
51989
52014
  }, [q(EJ, {
@@ -51999,14 +52024,14 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
51999
52024
  "status",
52000
52025
  "onMode",
52001
52026
  "onRemove"
52002
- ]), b.value.get(e) === e.name ? Y("", !0) : (U(), W("p", jZ, "同一 AI 已有实例,将以 " + P(b.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
52027
+ ]), b.value.get(e) === e.name ? Y("", !0) : (U(), W("p", PZ, "同一 AI 已有实例,将以 " + P(b.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
52003
52028
  d.value.length ? (U(), W("p", {
52004
52029
  key: 1,
52005
52030
  class: M(["fine-print", { "pb-invite-reserved": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual")) }]),
52006
52031
  "aria-hidden": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual"))
52007
- }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, MZ)) : (U(), W("p", NZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
52008
- d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", PZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
52009
- K("div", FZ, [q(f, {
52032
+ }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, FZ)) : (U(), W("p", IZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
52033
+ d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", LZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
52034
+ K("div", RZ, [q(f, {
52010
52035
  label: "取消",
52011
52036
  color: "neutral",
52012
52037
  variant: "ghost",
@@ -52028,7 +52053,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52028
52053
  }, 8, ["open", "description"]);
52029
52054
  };
52030
52055
  }
52031
- }, [["__scopeId", "data-v-ac7db2b8"]]), zZ = { class: "start-discussion-footer" }, BZ = 3, VZ = /*#__PURE__*/ MH({
52056
+ }, [["__scopeId", "data-v-ac7db2b8"]]), HZ = { class: "start-discussion-footer" }, UZ = 3, WZ = /*#__PURE__*/ MH({
52032
52057
  __name: "StartDiscussionDialog",
52033
52058
  props: {
52034
52059
  open: {
@@ -52039,9 +52064,9 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52039
52064
  },
52040
52065
  emits: ["update:open"],
52041
52066
  setup(e) {
52042
- let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(BZ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(null);
52067
+ let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(UZ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(null);
52043
52068
  R(t, (e) => {
52044
- e && (a.value = "", o.value = BZ, s.value = 0, c.value = !1);
52069
+ e && (a.value = "", o.value = UZ, s.value = 0, c.value = !1);
52045
52070
  });
52046
52071
  async function u() {
52047
52072
  l.value?.settle();
@@ -52100,7 +52125,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52100
52125
  "minutes",
52101
52126
  "named_followup"
52102
52127
  ]),
52103
- K("div", zZ, [q(p, {
52128
+ K("div", HZ, [q(p, {
52104
52129
  label: "取消",
52105
52130
  color: "neutral",
52106
52131
  variant: "ghost",
@@ -52118,21 +52143,21 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52118
52143
  }, 8, ["open"]);
52119
52144
  };
52120
52145
  }
52121
- }, [["__scopeId", "data-v-bb894c58"]]), HZ = { class: "pb-status-line" }, UZ = { role: "status" }, WZ = {
52146
+ }, [["__scopeId", "data-v-bb894c58"]]), GZ = { class: "pb-status-line" }, KZ = { role: "status" }, qZ = {
52122
52147
  key: 0,
52123
52148
  class: "pb-status-detail"
52124
- }, GZ = { class: "pb-meters" }, KZ = { class: "pb-meter-label" }, qZ = {
52149
+ }, JZ = { class: "pb-meters" }, YZ = { class: "pb-meter-label" }, XZ = {
52125
52150
  key: 0,
52126
52151
  class: "pb-bar"
52127
- }, JZ = {
52152
+ }, ZZ = {
52128
52153
  key: 0,
52129
52154
  class: "pb-section",
52130
52155
  "aria-label": "当前焦点"
52131
- }, YZ = {
52156
+ }, QZ = {
52132
52157
  key: 1,
52133
52158
  class: "pb-actions",
52134
52159
  "aria-label": "讨论操作"
52135
- }, XZ = { class: "progress-ending" }, ZZ = ["disabled"], QZ = 90, $Z = {
52160
+ }, $Z = { class: "progress-ending" }, eQ = ["disabled"], tQ = 90, nQ = {
52136
52161
  __name: "ProgressBoard",
52137
52162
  setup(e) {
52138
52163
  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);
@@ -52198,24 +52223,24 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52198
52223
  class: M(["pb-status", `is-${h.value.tone}`]),
52199
52224
  "aria-label": "讨论状态"
52200
52225
  }, [
52201
- K("div", HZ, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", UZ, P(h.value.title), 1)]),
52202
- h.value.detail ? (U(), W("p", WZ, P(h.value.detail), 1)) : Y("", !0),
52203
- K("div", GZ, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
52226
+ K("div", GZ, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", KZ, P(h.value.title), 1)]),
52227
+ h.value.detail ? (U(), W("p", qZ, P(h.value.detail), 1)) : Y("", !0),
52228
+ K("div", JZ, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
52204
52229
  key: e.label,
52205
52230
  class: "pb-meter"
52206
- }, [K("div", KZ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", qZ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52231
+ }, [K("div", YZ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", XZ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52207
52232
  ], 2),
52208
- m.value ? (U(), W("section", JZ, [
52233
+ m.value ? (U(), W("section", ZZ, [
52209
52234
  t[7] ||= K("h4", null, "当前焦点", -1),
52210
52235
  K("p", { class: M(["pb-focus", { "is-expanded": p.value }]) }, P(m.value), 3),
52211
- m.value.length > QZ ? (U(), W("button", {
52236
+ m.value.length > tQ ? (U(), W("button", {
52212
52237
  key: 0,
52213
52238
  type: "button",
52214
52239
  class: "pb-link",
52215
52240
  onClick: t[0] ||= (e) => p.value = !p.value
52216
52241
  }, P(p.value ? "收起" : "展开"), 1)) : Y("", !0)
52217
52242
  ])) : Y("", !0),
52218
- a.value.archived ? Y("", !0) : (U(), W("section", YZ, [
52243
+ a.value.archived ? Y("", !0) : (U(), W("section", QZ, [
52219
52244
  l.value ? (U(), G(o, {
52220
52245
  key: 0,
52221
52246
  icon: "i-lucide-play",
@@ -52278,43 +52303,43 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52278
52303
  body: "dialog-body"
52279
52304
  }
52280
52305
  }, {
52281
- body: L(() => [K("div", XZ, [K("button", {
52306
+ body: L(() => [K("div", $Z, [K("button", {
52282
52307
  type: "button",
52283
52308
  class: "progress-ending-option",
52284
52309
  disabled: !!I(i),
52285
52310
  onClick: v
52286
- }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, ZZ)])]),
52311
+ }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, eQ)])]),
52287
52312
  _: 1
52288
52313
  }, 8, ["open"])
52289
52314
  ], 64);
52290
52315
  };
52291
52316
  }
52292
- }, eQ = { class: "speaking-order" }, tQ = {
52317
+ }, rQ = { class: "speaking-order" }, iQ = {
52293
52318
  key: 0,
52294
52319
  class: "speaking-order-divider",
52295
52320
  "aria-hidden": "true"
52296
- }, nQ = ["data-key", "data-movable"], rQ = [
52321
+ }, aQ = ["data-key", "data-movable"], oQ = [
52297
52322
  "aria-disabled",
52298
52323
  "aria-label",
52299
52324
  "title",
52300
52325
  "onPointerdown",
52301
52326
  "onKeydown"
52302
- ], iQ = { class: "speaking-order-number" }, aQ = {
52327
+ ], sQ = { class: "speaking-order-number" }, cQ = {
52303
52328
  key: 1,
52304
52329
  class: "speaking-order-place",
52305
52330
  title: "已发言",
52306
52331
  "aria-label": "已发言"
52307
- }, oQ = ["title"], sQ = {
52332
+ }, lQ = ["title"], uQ = {
52308
52333
  key: 0,
52309
52334
  class: "speaking-order-later"
52310
- }, cQ = {
52335
+ }, dQ = {
52311
52336
  key: 1,
52312
52337
  class: "speaking-order-divider",
52313
52338
  "aria-hidden": "true"
52314
- }, lQ = {
52339
+ }, fQ = {
52315
52340
  class: "speaking-order-live",
52316
52341
  "aria-live": "polite"
52317
- }, uQ = "发言顺序刚有变化,已更新为最新顺序,请重新调整", dQ = /*#__PURE__*/ MH({
52342
+ }, pQ = "发言顺序刚有变化,已更新为最新顺序,请重新调整", mQ = /*#__PURE__*/ MH({
52318
52343
  __name: "SpeakingOrder",
52319
52344
  props: {
52320
52345
  away: {
@@ -52398,7 +52423,7 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52398
52423
  let { from: n, gap: i, order: a } = p.value;
52399
52424
  p.value = null, document.removeEventListener("keydown", C, !0);
52400
52425
  let o = i > n ? i - 1 : i;
52401
- t || n === o || (a.revision === s.value.revision ? y(g(s.value.movable, n, o), s.value.movable[n], !1) : r.notify("warning", uQ));
52426
+ t || n === o || (a.revision === s.value.revision ? y(g(s.value.movable, n, o), s.value.movable[n], !1) : r.notify("warning", pQ));
52402
52427
  }
52403
52428
  function C(e) {
52404
52429
  if (!p.value || e.key !== "Escape") return;
@@ -52421,12 +52446,12 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52421
52446
  }
52422
52447
  return (e, n) => {
52423
52448
  let i = sA;
52424
- return U(), W("div", eQ, [K("ul", {
52449
+ return U(), W("div", rQ, [K("ul", {
52425
52450
  ref_key: "list",
52426
52451
  ref: f,
52427
52452
  class: M(["pb-members", { "is-dragging": p.value }])
52428
52453
  }, [
52429
- (U(!0), W(H, null, B(_.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", tQ, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
52454
+ (U(!0), W(H, null, B(_.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", iQ, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
52430
52455
  class: M(["pb-member speaking-order-row", [
52431
52456
  `is-${t.state}`,
52432
52457
  w(r),
@@ -52447,19 +52472,19 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52447
52472
  onPointercancel: n[0] ||= (e) => S(e, !0),
52448
52473
  onLostpointercapture: n[1] ||= (e) => S(e, !0),
52449
52474
  onKeydown: [fu((e) => T(e, v(r), -1), ["up"]), fu((e) => T(e, v(r), 1), ["down"])]
52450
- }, [K("span", iQ, P(t.place), 1), q(i, {
52475
+ }, [K("span", sQ, P(t.place), 1), q(i, {
52451
52476
  name: "i-lucide-grip-vertical",
52452
52477
  class: "speaking-order-handle"
52453
- })], 40, rQ)) : t.state === "done" ? (U(), W("span", aQ, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
52478
+ })], 40, oQ)) : t.state === "done" ? (U(), W("span", cQ, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
52454
52479
  key: 2,
52455
52480
  class: "speaking-order-place",
52456
52481
  title: t.state === "speaking" ? "正在发言" : void 0
52457
- }, P(t.place || ""), 9, oQ)), V(e.$slots, "default", {
52482
+ }, P(t.place || ""), 9, lQ)), V(e.$slots, "default", {
52458
52483
  item: t,
52459
52484
  place: t.place
52460
- }, void 0, !0)], 10, nQ)], 64))), 128)),
52461
- s.value.later?.length ? (U(), W("li", sQ, [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),
52462
- t.away.length ? (U(), W("li", cQ, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
52485
+ }, void 0, !0)], 10, aQ)], 64))), 128)),
52486
+ s.value.later?.length ? (U(), W("li", uQ, [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),
52487
+ t.away.length ? (U(), W("li", dQ, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
52463
52488
  (U(!0), W(H, null, B(t.away, (t) => (U(), W("li", {
52464
52489
  key: `away-${t}`,
52465
52490
  class: "pb-member speaking-order-row is-away"
@@ -52470,11 +52495,11 @@ var Nq = ["data-identity", "data-face"], Pq = ["inert", "aria-hidden"], Fq = { c
52470
52495
  },
52471
52496
  place: 0
52472
52497
  }, void 0, !0)]))), 128))
52473
- ], 2), K("p", lQ, P(h.value), 1)]);
52498
+ ], 2), K("p", fQ, P(h.value), 1)]);
52474
52499
  };
52475
52500
  }
52476
- }, [["__scopeId", "data-v-b9b6129c"]]), fQ = ["dispatched", "started"], pQ = (e) => e.pending > 0 || fQ.includes(e.execution?.status);
52477
- function mQ(e, { view: t, act: n, describe: r }) {
52501
+ }, [["__scopeId", "data-v-b9b6129c"]]), hQ = ["dispatched", "started"], gQ = (e) => e.pending > 0 || hQ.includes(e.execution?.status);
52502
+ function _Q(e, { view: t, act: n, describe: r }) {
52478
52503
  let i = t.access, a = i?.members?.find((t) => t.name === e.name)?.available, o = !i?.can_manage, s = e.manual_source === "web" || e.access === "online", c = ["active", "paused"].includes(t.room?.session?.status) && e.role === "host", l = (t, r, i, a = {}) => ({
52479
52504
  label: t,
52480
52505
  icon: r,
@@ -52520,7 +52545,7 @@ function mQ(e, { view: t, act: n, describe: r }) {
52520
52545
  }] : []
52521
52546
  ],
52522
52547
  [
52523
- ...pQ(e) ? [l("停止", "i-lucide-square", "interrupt")] : [],
52548
+ ...gQ(e) ? [l("停止", "i-lucide-square", "interrupt")] : [],
52524
52549
  ...s && e.pending ? [{
52525
52550
  label: "复制阅读通知",
52526
52551
  icon: "i-lucide-copy",
@@ -52541,41 +52566,41 @@ function mQ(e, { view: t, act: n, describe: r }) {
52541
52566
  }
52542
52567
  //#endregion
52543
52568
  //#region frontend/FreeBoard.vue
52544
- var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q = { class: "pb-mode" }, vQ = { class: "pb-status-line" }, yQ = { role: "status" }, bQ = {
52569
+ var vQ = { class: "progress-board is-docked" }, yQ = { class: "pb-header" }, bQ = { class: "pb-mode" }, xQ = { class: "pb-status-line" }, SQ = { role: "status" }, CQ = {
52545
52570
  key: 0,
52546
52571
  class: "pb-status-detail"
52547
- }, xQ = {
52572
+ }, wQ = {
52548
52573
  key: 1,
52549
52574
  class: "pb-chain-actions"
52550
- }, SQ = {
52575
+ }, TQ = {
52551
52576
  key: 2,
52552
52577
  class: "pb-chain-actions"
52553
- }, CQ = { class: "pb-meters" }, wQ = { class: "pb-meter-label" }, TQ = {
52578
+ }, EQ = { class: "pb-meters" }, DQ = { class: "pb-meter-label" }, OQ = {
52554
52579
  key: 0,
52555
52580
  class: "pb-bar"
52556
- }, EQ = {
52581
+ }, kQ = {
52557
52582
  key: 2,
52558
52583
  class: "pb-section",
52559
52584
  "aria-label": "当前任务"
52560
- }, DQ = {
52585
+ }, AQ = {
52561
52586
  class: "pb-section",
52562
52587
  "aria-label": "发言顺序"
52563
- }, OQ = { class: "pb-member-body" }, kQ = ["title"], AQ = ["title"], jQ = ["title"], MQ = ["title"], NQ = {
52588
+ }, jQ = { class: "pb-member-body" }, MQ = ["title"], NQ = ["title"], PQ = ["title"], FQ = ["title"], IQ = {
52564
52589
  key: 3,
52565
52590
  class: "pb-section",
52566
52591
  "aria-label": "头脑风暴"
52567
- }, PQ = ["onClick"], FQ = {
52592
+ }, LQ = ["onClick"], RQ = {
52568
52593
  key: 4,
52569
52594
  class: "pb-actions",
52570
52595
  "aria-label": "操作"
52571
- }, IQ = {
52596
+ }, zQ = {
52572
52597
  key: 0,
52573
52598
  class: "pb-free-note"
52574
- }, LQ = {
52599
+ }, BQ = {
52575
52600
  key: 5,
52576
52601
  class: "pb-section",
52577
52602
  "aria-label": "执行耗时"
52578
- }, RQ = { class: "pb-timing-heading" }, zQ = { class: "pb-timings" }, BQ = { class: "pb-timing-who" }, VQ = { class: "pb-timing-stages" }, HQ = 90, UQ = "discuss-conflicts-notified:", WQ = 2, GQ = /*#__PURE__*/ MH({
52603
+ }, VQ = { class: "pb-timing-heading" }, HQ = { class: "pb-timings" }, UQ = { class: "pb-timing-who" }, WQ = { class: "pb-timing-stages" }, GQ = 90, KQ = "discuss-conflicts-notified:", qQ = 2, JQ = /*#__PURE__*/ MH({
52579
52604
  __name: "FreeBoard",
52580
52605
  setup(e) {
52581
52606
  let { view: t, bridge: n, act: r, pending: i } = xr("discussion"), a = ["dispatched", "started"], o = {
@@ -52591,20 +52616,20 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52591
52616
  function _(e, t = []) {
52592
52617
  let r = [];
52593
52618
  try {
52594
- r = JSON.parse(localStorage.getItem(UQ + e) || "[]");
52619
+ r = JSON.parse(localStorage.getItem(KQ + e) || "[]");
52595
52620
  } catch {}
52596
52621
  for (let e of t.filter((e) => !r.includes(g(e)))) {
52597
- let t = e.files.slice(0, WQ).join("、") + (e.files.length > WQ ? " 等" : "");
52622
+ let t = e.files.slice(0, qQ).join("、") + (e.files.length > qQ ? " 等" : "");
52598
52623
  n.notify("warning", `可能冲突:${e.members.map((e) => n.display_name(e)).join(" 与 ")} 的重叠执行都改了 ${e.files.length} 个文件(${t}),修改者未确认`);
52599
52624
  }
52600
52625
  try {
52601
- localStorage.setItem(UQ + e, JSON.stringify(t.map(g)));
52626
+ localStorage.setItem(KQ + e, JSON.stringify(t.map(g)));
52602
52627
  } catch {}
52603
52628
  }
52604
52629
  R(() => [c.value.id, l.value.conflicts], ([e, t]) => _(e, t), { immediate: !0 });
52605
52630
  let v = (e) => e.access === "manual" && e.manual_source !== "web" && e.status === "active" && !e.registered_at;
52606
52631
  function y(e) {
52607
- return e.status === "away" ? "neutral" : v(e) ? "warning" : e.execution?.stale ? "error" : e.held_until ? "warning" : pQ(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
52632
+ return e.status === "away" ? "neutral" : v(e) ? "warning" : e.execution?.stale ? "error" : e.held_until ? "warning" : gQ(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
52608
52633
  }
52609
52634
  function b(e, t) {
52610
52635
  if (e.status === "away") return "已离开:不会被唤醒,可请回";
@@ -52636,7 +52661,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52636
52661
  title: "已存档",
52637
52662
  detail: ""
52638
52663
  };
52639
- let e = (l.value.members || []).filter(pQ);
52664
+ let e = (l.value.members || []).filter(gQ);
52640
52665
  if (e.some((e) => e.execution?.stale)) return {
52641
52666
  tone: "error",
52642
52667
  title: "执行失联",
@@ -52704,7 +52729,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52704
52729
  return e == null ? "—" : e < 60 ? `${e}秒` : e < 3600 ? `${Math.floor(e / 60)}分${String(e % 60).padStart(2, "0")}秒` : `${Math.floor(e / 3600)}小时${Math.floor(e % 3600 / 60)}分`;
52705
52730
  }
52706
52731
  function ae(e) {
52707
- return mQ(e, {
52732
+ return _Q(e, {
52708
52733
  view: t.value,
52709
52734
  act: r,
52710
52735
  describe: (e) => {
@@ -52729,16 +52754,16 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52729
52754
  ce.value = !1;
52730
52755
  }), (e, a) => {
52731
52756
  let s = MA, l = pA, g = sA, _ = iH;
52732
- return U(), W("div", hQ, [
52733
- K("header", gQ, [K("strong", null, P(u.value ? "讨论进度" : "自由协作"), 1), K("span", _Q, P(f.value ? `${I(n).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
52734
- u.value ? (U(), G($Z, { key: 0 })) : (U(), W("section", {
52757
+ return U(), W("div", vQ, [
52758
+ K("header", yQ, [K("strong", null, P(u.value ? "讨论进度" : "自由协作"), 1), K("span", bQ, P(f.value ? `${I(n).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
52759
+ u.value ? (U(), G(nQ, { key: 0 })) : (U(), W("section", {
52735
52760
  key: 1,
52736
52761
  class: M(["pb-status", `is-${ee.value.tone}`]),
52737
52762
  "aria-label": "房间状态"
52738
52763
  }, [
52739
- K("div", vQ, [a[7] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", yQ, P(ee.value.title), 1)]),
52740
- ee.value.detail ? (U(), W("p", bQ, P(ee.value.detail), 1)) : Y("", !0),
52741
- ee.value.title === "处理中" && I(t).access?.can_manage ? (U(), W("div", xQ, [q(s, {
52764
+ K("div", xQ, [a[7] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", SQ, P(ee.value.title), 1)]),
52765
+ ee.value.detail ? (U(), W("p", CQ, P(ee.value.detail), 1)) : Y("", !0),
52766
+ ee.value.title === "处理中" && I(t).access?.can_manage ? (U(), W("div", wQ, [q(s, {
52742
52767
  label: "全部停止",
52743
52768
  icon: "i-lucide-square",
52744
52769
  size: "xs",
@@ -52749,7 +52774,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52749
52774
  disabled: !!I(i),
52750
52775
  onClick: a[0] ||= (e) => I(r)("stop_room")
52751
52776
  }, null, 8, ["loading", "disabled"])])) : Y("", !0),
52752
- ee.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", SQ, [(U(!0), W(H, null, B(w.value, (e) => (U(), G(s, {
52777
+ ee.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", TQ, [(U(!0), W(H, null, B(w.value, (e) => (U(), G(s, {
52753
52778
  key: e,
52754
52779
  label: `继续 ${e} 轮`,
52755
52780
  icon: "i-lucide-play",
@@ -52765,24 +52790,24 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52765
52790
  "disabled",
52766
52791
  "onClick"
52767
52792
  ]))), 128))])) : Y("", !0),
52768
- K("div", CQ, [(U(!0), W(H, null, B(O.value, (e) => (U(), W("div", {
52793
+ K("div", EQ, [(U(!0), W(H, null, B(O.value, (e) => (U(), W("div", {
52769
52794
  key: e.label,
52770
52795
  class: "pb-meter"
52771
- }, [K("div", wQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", TQ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52796
+ }, [K("div", DQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", OQ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52772
52797
  ], 2)),
52773
- te.value && !u.value ? (U(), W("section", EQ, [
52798
+ te.value && !u.value ? (U(), W("section", kQ, [
52774
52799
  a[8] ||= K("h4", null, "当前任务", -1),
52775
52800
  K("p", { class: M(["pb-focus", { "is-expanded": ne.value }]) }, P(te.value), 3),
52776
- te.value.length > HQ ? (U(), W("button", {
52801
+ te.value.length > GQ ? (U(), W("button", {
52777
52802
  key: 0,
52778
52803
  type: "button",
52779
52804
  class: "pb-link",
52780
52805
  onClick: a[1] ||= (e) => ne.value = !ne.value
52781
52806
  }, P(ne.value ? "收起" : "展开"), 1)) : Y("", !0)
52782
52807
  ])) : Y("", !0),
52783
- K("section", DQ, [
52808
+ K("section", AQ, [
52784
52809
  a[10] ||= K("h4", null, "发言顺序", -1),
52785
- q(dQ, {
52810
+ q(mQ, {
52786
52811
  away: m.value,
52787
52812
  round: d.value
52788
52813
  }, {
@@ -52799,7 +52824,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52799
52824
  "alt",
52800
52825
  "class"
52801
52826
  ]),
52802
- K("div", OQ, [
52827
+ K("div", jQ, [
52803
52828
  K("div", {
52804
52829
  class: "pb-member-name",
52805
52830
  title: c.value.descriptions?.[r.name] || void 0
@@ -52810,17 +52835,17 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52810
52835
  name: "i-lucide-crown",
52811
52836
  title: "主持人"
52812
52837
  })) : Y("", !0),
52813
- K("small", { title: S(r) || void 0 }, P(x(r)), 9, AQ)
52814
- ], 8, kQ),
52838
+ K("small", { title: S(r) || void 0 }, P(x(r)), 9, NQ)
52839
+ ], 8, MQ),
52815
52840
  C(r) ? (U(), W("div", {
52816
52841
  key: 0,
52817
52842
  class: "pb-member-model",
52818
52843
  title: I(n).participant_session_hint(r.name, c.value, I(t).launch.room_models)
52819
- }, P(C(r)), 9, jQ)) : Y("", !0),
52844
+ }, P(C(r)), 9, PQ)) : Y("", !0),
52820
52845
  K("div", { class: M(["pb-member-status", `is-${y(r)}`]) }, [a[9] ||= K("span", { class: "pb-dot" }, null, -1), K("span", {
52821
52846
  class: "pb-member-status-text",
52822
52847
  title: r.execution?.status === "failed" ? r.execution.result : r.held_until ? b(r, e.state) : void 0
52823
- }, P(b(r, e.state)), 9, MQ)], 2)
52848
+ }, P(b(r, e.state)), 9, FQ)], 2)
52824
52849
  ]),
52825
52850
  q(_, {
52826
52851
  items: ae(r),
@@ -52851,13 +52876,13 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52851
52876
  onClick: a[2] ||= (e) => k.value = !0
52852
52877
  }))
52853
52878
  ]),
52854
- c.value.linked_rooms?.length ? (U(), W("section", NQ, [a[11] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
52879
+ c.value.linked_rooms?.length ? (U(), W("section", IQ, [a[11] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
52855
52880
  key: e.id,
52856
52881
  type: "button",
52857
52882
  class: "pb-link pb-free-linked",
52858
52883
  onClick: (t) => I(r)("room", e.id)
52859
- }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, PQ))), 128))])) : Y("", !0),
52860
- !c.value.archived && !u.value ? (U(), W("section", FQ, [q(s, {
52884
+ }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, LQ))), 128))])) : Y("", !0),
52885
+ !c.value.archived && !u.value ? (U(), W("section", RQ, [q(s, {
52861
52886
  icon: "i-lucide-messages-square",
52862
52887
  label: "开启讨论",
52863
52888
  size: "sm",
@@ -52867,13 +52892,13 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52867
52892
  title: "由主持人推进成员轮流发言,到上限或结束后房间回到自由协作",
52868
52893
  disabled: !le.value,
52869
52894
  onClick: a[3] ||= (e) => ce.value = !0
52870
- }, null, 8, ["disabled"]), le.value ? Y("", !0) : (U(), W("p", IQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
52871
- re.value.items.length ? (U(), W("section", LQ, [K("div", RQ, [a[12] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(re.value.items.length) + " 次执行 · " + P(ie(re.value.total)), 1)]), K("details", zQ, [a[13] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(re.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", BQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(e.status === "cancelled" ? I(n).stop_label(e) : o[e.status] || e.status), 1)]), K("span", VQ, [K("span", null, "用时 " + P(ie(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
52872
- q(VZ, {
52895
+ }, null, 8, ["disabled"]), le.value ? Y("", !0) : (U(), W("p", zQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
52896
+ re.value.items.length ? (U(), W("section", BQ, [K("div", VQ, [a[12] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(re.value.items.length) + " 次执行 · " + P(ie(re.value.total)), 1)]), K("details", HQ, [a[13] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(re.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", UQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(e.status === "cancelled" ? I(n).stop_label(e) : o[e.status] || e.status), 1)]), K("span", WQ, [K("span", null, "用时 " + P(ie(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
52897
+ q(WZ, {
52873
52898
  open: ce.value,
52874
52899
  "onUpdate:open": a[4] ||= (e) => ce.value = e
52875
52900
  }, null, 8, ["open"]),
52876
- q(RZ, {
52901
+ q(VZ, {
52877
52902
  open: k.value,
52878
52903
  "onUpdate:open": a[5] ||= (e) => k.value = e,
52879
52904
  description: "新成员加入后不打断其他成员;点卡片翻面可设置软件、模型、项目权限和要续接的已有会话。"
@@ -52900,31 +52925,31 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52900
52925
  ]);
52901
52926
  };
52902
52927
  }
52903
- }, [["__scopeId", "data-v-2f591ddf"]]), KQ = {
52928
+ }, [["__scopeId", "data-v-2f591ddf"]]), YQ = {
52904
52929
  class: "merged-section discussion-history",
52905
52930
  "aria-label": "讨论记录"
52906
- }, qQ = {
52931
+ }, XQ = {
52907
52932
  key: 0,
52908
52933
  class: "fine-print"
52909
- }, JQ = { class: "history-timeline" }, YQ = {
52934
+ }, ZQ = { class: "history-timeline" }, QQ = {
52910
52935
  key: 0,
52911
52936
  class: "history-free"
52912
- }, XQ = {
52937
+ }, $Q = {
52913
52938
  key: 1,
52914
52939
  class: "history-discussion"
52915
- }, ZQ = { class: "history-meta" }, QQ = {
52940
+ }, e$ = { class: "history-meta" }, t$ = {
52916
52941
  key: 0,
52917
52942
  class: "fine-print"
52918
- }, $Q = {
52943
+ }, n$ = {
52919
52944
  key: 1,
52920
52945
  class: "fine-print"
52921
- }, e$ = {
52946
+ }, r$ = {
52922
52947
  key: 2,
52923
52948
  class: "history-conclusion"
52924
- }, t$ = ["onClick"], n$ = ["innerHTML"], r$ = {
52949
+ }, i$ = ["onClick"], a$ = ["innerHTML"], o$ = {
52925
52950
  key: 1,
52926
52951
  class: "fine-print"
52927
- }, i$ = ["aria-expanded", "onClick"], a$ = ["innerHTML"], o$ = /*#__PURE__*/ MH({
52952
+ }, s$ = ["aria-expanded", "onClick"], c$ = ["innerHTML"], l$ = /*#__PURE__*/ MH({
52928
52953
  __name: "DiscussionHistory",
52929
52954
  emits: ["detail"],
52930
52955
  setup(e) {
@@ -52982,16 +53007,16 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
52982
53007
  }
52983
53008
  return (e, t) => {
52984
53009
  let l = kV, d = sA;
52985
- return U(), W("section", KQ, [
53010
+ return U(), W("section", YQ, [
52986
53011
  t[2] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "讨论记录"), K("p", null, "每场讨论及其结束时的结论,最新的在上;自由协作的消息按段汇总。")])], -1),
52987
- i.value.discussions?.length ? Y("", !0) : (U(), W("p", qQ, "还没有开启过讨论。")),
52988
- K("ol", JQ, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
53012
+ i.value.discussions?.length ? Y("", !0) : (U(), W("p", XQ, "还没有开启过讨论。")),
53013
+ K("ol", ZQ, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
52989
53014
  key: i.key,
52990
53015
  class: M(`is-${i.kind}`)
52991
53016
  }, [t[1] ||= K("span", {
52992
53017
  class: "history-dot",
52993
53018
  "aria-hidden": "true"
52994
- }, null, -1), i.kind === "free" ? (U(), W("p", YQ, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", XQ, [
53019
+ }, null, -1), i.kind === "free" ? (U(), W("p", QQ, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", $Q, [
52995
53020
  K("header", null, [K("h3", null, [K("small", null, "讨论 " + P(i.number), 1), J(P(i.goal || "未填写目标"), 1)]), q(l, {
52996
53021
  color: r[i.status]?.color || "neutral",
52997
53022
  variant: "subtle",
@@ -53000,62 +53025,62 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53000
53025
  default: L(() => [J(P(r[i.status]?.label || i.status), 1)]),
53001
53026
  _: 2
53002
53027
  }, 1032, ["color"])]),
53003
- K("p", ZQ, [
53028
+ K("p", e$, [
53004
53029
  J(P(s(i.created_at)) + " 开始 · " + P(i.count) + " 条消息", 1),
53005
53030
  i.status === "concluded" && i.state !== null ? (U(), W(H, { key: 0 }, [J(" · " + P(I(n).stop_reason_label(i)), 1)], 64)) : Y("", !0),
53006
53031
  i.concluded_at ? (U(), W(H, { key: 1 }, [J(" · " + P(s(i.concluded_at)) + " 结束", 1)], 64)) : Y("", !0)
53007
53032
  ]),
53008
- i.result?.current ? (U(), W("p", QQ, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", $Q, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", e$, [
53033
+ i.result?.current ? (U(), W("p", t$, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", n$, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", r$, [
53009
53034
  K("small", null, [J(P(i.result.label), 1), i.result.until ? (U(), W("button", {
53010
53035
  key: 0,
53011
53036
  type: "button",
53012
53037
  class: "subtle-link",
53013
53038
  onClick: (t) => e.$emit("detail", i.result.until)
53014
- }, "整理至 #" + P(i.result.until), 9, t$)) : Y("", !0)]),
53039
+ }, "整理至 #" + P(i.result.until), 9, i$)) : Y("", !0)]),
53015
53040
  i.result.brief ? (U(), W("div", {
53016
53041
  key: 0,
53017
53042
  class: "markdown-body",
53018
53043
  innerHTML: o(i.result.brief)
53019
- }, null, 8, n$)) : i.result.state ? Y("", !0) : (U(), W("p", r$, "主持人没有留下简报或共识。")),
53044
+ }, null, 8, a$)) : i.result.state ? Y("", !0) : (U(), W("p", o$, "主持人没有留下简报或共识。")),
53020
53045
  i.result.state ? (U(), W(H, { key: 2 }, [K("button", {
53021
53046
  type: "button",
53022
53047
  class: "history-toggle",
53023
53048
  "aria-expanded": a.value.has(i.id),
53024
53049
  onClick: (e) => u(i.id)
53025
- }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, i$), a.value.has(i.id) ? (U(), W("div", {
53050
+ }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, s$), a.value.has(i.id) ? (U(), W("div", {
53026
53051
  key: 0,
53027
53052
  class: "markdown-body history-state",
53028
53053
  innerHTML: o(i.result.state)
53029
- }, null, 8, a$)) : Y("", !0)], 64)) : Y("", !0)
53054
+ }, null, 8, c$)) : Y("", !0)], 64)) : Y("", !0)
53030
53055
  ])) : Y("", !0)
53031
53056
  ]))], 2))), 128))])
53032
53057
  ]);
53033
53058
  };
53034
53059
  }
53035
- }, [["__scopeId", "data-v-8daffdea"]]), s$ = {
53060
+ }, [["__scopeId", "data-v-8daffdea"]]), u$ = {
53036
53061
  class: "merged-section room-overview",
53037
53062
  "aria-label": "成员与设置"
53038
- }, c$ = { class: "page-heading" }, l$ = { class: "overview-section" }, u$ = {
53063
+ }, d$ = { class: "page-heading" }, f$ = { class: "overview-section" }, p$ = {
53039
53064
  key: 0,
53040
53065
  class: "overview-local",
53041
53066
  role: "status"
53042
- }, d$ = {
53067
+ }, m$ = {
53043
53068
  class: "member-cards",
53044
53069
  "aria-label": "成员"
53045
- }, f$ = { class: "member-card-head" }, p$ = { class: "member-card-name" }, m$ = ["title"], h$ = { class: "member-card-facts" }, g$ = ["aria-label", "title"], _$ = [
53070
+ }, h$ = { class: "member-card-head" }, g$ = { class: "member-card-name" }, _$ = ["title"], v$ = { class: "member-card-facts" }, y$ = ["aria-label", "title"], b$ = [
53046
53071
  "aria-checked",
53047
53072
  "disabled",
53048
53073
  "onClick"
53049
- ], v$ = { key: 1 }, y$ = ["title"], b$ = [
53074
+ ], x$ = { key: 1 }, S$ = ["title"], C$ = [
53050
53075
  "aria-label",
53051
53076
  "aria-busy",
53052
53077
  "title"
53053
- ], x$ = [
53078
+ ], w$ = [
53054
53079
  "aria-checked",
53055
53080
  "title",
53056
53081
  "disabled",
53057
53082
  "onClick"
53058
- ], S$ = ["title"], C$ = ["aria-label"], w$ = { key: 0 }, T$ = { class: "overview-section" }, E$ = { class: "overview-settings" }, D$ = { key: 0 }, O$ = { key: 1 }, k$ = { key: 1 }, A$ = { class: "overview-address" }, j$ = { key: 2 }, M$ = "设为主持人", N$ = /*#__PURE__*/ MH({
53083
+ ], T$ = ["title"], E$ = ["aria-label"], D$ = { key: 0 }, O$ = { class: "overview-section" }, k$ = { class: "overview-settings" }, A$ = { key: 0 }, j$ = { key: 1 }, M$ = { key: 1 }, N$ = { class: "overview-address" }, P$ = { key: 2 }, F$ = "设为主持人", I$ = /*#__PURE__*/ MH({
53059
53084
  __name: "RoomOverview",
53060
53085
  setup(e) {
53061
53086
  let { view: t, bridge: n, act: r } = xr("discussion"), i = {
@@ -53175,9 +53200,18 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53175
53200
  }
53176
53201
  }
53177
53202
  }
53178
- let T = Z(() => p.value ? "—" : f.value.scheduler ? `${t.value.launch.scheduler_providers?.[f.value.scheduler.provider]?.label || f.value.scheduler.provider} · ${f.value.scheduler.model}` : "未开启");
53203
+ let T = Z(() => {
53204
+ if (p.value) return "—";
53205
+ if (!f.value.scheduler) return "未开启";
53206
+ let e = t.value.launch.scheduler_providers?.[f.value.scheduler.provider]?.label || f.value.scheduler.provider, n = t.value.launch.scheduler_modes?.[f.value.scheduler.mode];
53207
+ return [
53208
+ e,
53209
+ f.value.scheduler.model,
53210
+ n
53211
+ ].filter(Boolean).join(" · ");
53212
+ });
53179
53213
  function E(e) {
53180
- let [n, i, a] = mQ(x(e), {
53214
+ let [n, i, a] = _Q(x(e), {
53181
53215
  view: t.value,
53182
53216
  act: r,
53183
53217
  describe: (e) => {
@@ -53186,8 +53220,8 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53186
53220
  });
53187
53221
  return d.value ? {
53188
53222
  taking_part: n,
53189
- host: i.find((e) => e.label === M$) || null,
53190
- place: [...i.filter((e) => e.label !== M$), ...a]
53223
+ host: i.find((e) => e.label === F$) || null,
53224
+ place: [...i.filter((e) => e.label !== F$), ...a]
53191
53225
  } : {
53192
53226
  taking_part: n,
53193
53227
  host: null,
@@ -53209,8 +53243,8 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53209
53243
  let ne = Z(() => `${location.origin}/r/${u.value.id}`), re = Z(() => u.value.created_at ? new Date(u.value.created_at).toLocaleString("zh-CN", { hour12: !1 }) : "");
53210
53244
  return (e, i) => {
53211
53245
  let s = MA, l = pA, ie = sA, ae = kV;
53212
- return U(), W("section", s$, [
53213
- K("div", c$, [i[5] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
53246
+ return U(), W("section", u$, [
53247
+ K("div", d$, [i[5] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
53214
53248
  key: 0,
53215
53249
  icon: "i-lucide-plus",
53216
53250
  label: "邀请 AI 加入",
@@ -53220,19 +53254,19 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53220
53254
  disabled: !I(t).access?.can_manage,
53221
53255
  onClick: i[0] ||= (e) => ee.value = !0
53222
53256
  }, null, 8, ["disabled"]))]),
53223
- K("section", l$, [
53257
+ K("section", f$, [
53224
53258
  i[9] ||= K("h3", null, "成员", -1),
53225
- p.value ? (U(), W("p", u$, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
53259
+ p.value ? (U(), W("p", p$, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
53226
53260
  key: 0,
53227
53261
  type: "button",
53228
53262
  class: "subtle-link",
53229
53263
  onClick: i[1] ||= (e) => I(n).reload_room_models()
53230
53264
  }, "重试")) : Y("", !0)])) : Y("", !0),
53231
- K("ul", d$, [(U(!0), W(H, null, B(y.value, (e) => (U(), W("li", {
53265
+ K("ul", m$, [(U(!0), W(H, null, B(y.value, (e) => (U(), W("li", {
53232
53266
  key: e.name,
53233
53267
  class: "member-card"
53234
53268
  }, [
53235
- K("header", f$, [
53269
+ K("header", h$, [
53236
53270
  q(l, {
53237
53271
  src: I(n).identities[e.name]?.icon,
53238
53272
  text: I(n).identities[e.name]?.initials,
@@ -53245,14 +53279,14 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53245
53279
  "alt",
53246
53280
  "class"
53247
53281
  ]),
53248
- K("div", p$, [K("strong", null, [J(P(I(n).display_name(e.name)), 1), e.role === "host" ? (U(), G(ie, {
53282
+ K("div", g$, [K("strong", null, [J(P(I(n).display_name(e.name)), 1), e.role === "host" ? (U(), G(ie, {
53249
53283
  key: 0,
53250
53284
  name: "i-lucide-crown",
53251
53285
  title: "主持人"
53252
53286
  })) : Y("", !0)]), u.value.descriptions?.[e.name] ? (U(), W("small", {
53253
53287
  key: 0,
53254
53288
  title: u.value.descriptions[e.name]
53255
- }, P(u.value.descriptions[e.name]), 9, m$)) : Y("", !0)]),
53289
+ }, P(u.value.descriptions[e.name]), 9, _$)) : Y("", !0)]),
53256
53290
  E(e).host ? (U(), G(s, {
53257
53291
  key: 0,
53258
53292
  icon: E(e).host.icon,
@@ -53277,7 +53311,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53277
53311
  _: 2
53278
53312
  }, 1032, ["color"])
53279
53313
  ]),
53280
- K("dl", h$, [
53314
+ K("dl", v$, [
53281
53315
  K("div", null, [i[6] ||= K("dt", null, "接入", -1), K("dd", null, [b(x(e)).value ? (U(), W("div", {
53282
53316
  key: 0,
53283
53317
  class: M(["expert-card-modes overview-switch", { "is-locked": !b(x(e)).editable }]),
@@ -53291,11 +53325,11 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53291
53325
  "aria-checked": b(x(e)).value === t.value,
53292
53326
  disabled: !b(x(e)).editable || !!h.value,
53293
53327
  onClick: (n) => S(e, t.value)
53294
- }, P(t.label), 9, _$)), 64))], 10, g$)) : (U(), W("span", v$, P(b(e).text), 1))])]),
53328
+ }, P(t.label), 9, b$)), 64))], 10, y$)) : (U(), W("span", x$, P(b(e).text), 1))])]),
53295
53329
  K("div", null, [i[7] ||= K("dt", null, "模型", -1), K("dd", {
53296
53330
  class: M(["overview-model", { "overview-muted": m(e.name) }]),
53297
53331
  title: I(n).participant_model(e.name, u.value, f.value) || void 0
53298
- }, P(e.access === "runner" ? I(n).participant_model(e.name, u.value, f.value) || "—" : "在它自己的会话里设置"), 11, y$)]),
53332
+ }, P(e.access === "runner" ? I(n).participant_model(e.name, u.value, f.value) || "—" : "在它自己的会话里设置"), 11, S$)]),
53299
53333
  K("div", null, [i[8] ||= K("dt", null, "项目文件", -1), K("dd", null, [C(e).value ? (U(), W("div", {
53300
53334
  key: 0,
53301
53335
  class: M(["expert-card-modes overview-switch", { "is-locked": !C(e).editable }]),
@@ -53311,11 +53345,11 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53311
53345
  title: t.hint,
53312
53346
  disabled: t.disabled || !C(e).editable || !!h.value,
53313
53347
  onClick: (n) => w(e, t.value)
53314
- }, P(t.label), 9, x$))), 128))], 10, b$)) : (U(), W("span", {
53348
+ }, P(t.label), 9, w$))), 128))], 10, C$)) : (U(), W("span", {
53315
53349
  key: 1,
53316
53350
  class: "overview-muted",
53317
53351
  title: C(e).hint
53318
- }, P(C(e).text), 9, S$))])])
53352
+ }, P(C(e).text), 9, T$))])])
53319
53353
  ]),
53320
53354
  K("footer", {
53321
53355
  class: "member-card-actions",
@@ -53334,7 +53368,7 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53334
53368
  "label",
53335
53369
  "disabled",
53336
53370
  "onClick"
53337
- ]))), 128))]), E(e).place.length ? (U(), W("div", w$, [(U(!0), W(H, null, B(E(e).place, (e) => (U(), G(s, {
53371
+ ]))), 128))]), E(e).place.length ? (U(), W("div", D$, [(U(!0), W(H, null, B(E(e).place, (e) => (U(), G(s, {
53338
53372
  key: e.label,
53339
53373
  icon: e.icon,
53340
53374
  label: e.label,
@@ -53349,21 +53383,21 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53349
53383
  "color",
53350
53384
  "disabled",
53351
53385
  "onClick"
53352
- ]))), 128))])) : Y("", !0)], 8, C$)
53386
+ ]))), 128))])) : Y("", !0)], 8, E$)
53353
53387
  ]))), 128))]),
53354
53388
  i[10] ||= K("p", { class: "overview-result" }, "复制说明或下载配置不代表 AI 已接入,以实际回答和运行记录为准。", -1)
53355
53389
  ]),
53356
- K("section", T$, [i[17] ||= K("h3", null, "协作设置", -1), K("dl", E$, [
53390
+ K("section", O$, [i[17] ||= K("h3", null, "协作设置", -1), K("dl", k$, [
53357
53391
  K("div", null, [i[11] ||= K("dt", null, "主持人", -1), K("dd", null, P(u.value.host ? I(n).display_name(u.value.host) : "未指定"), 1)]),
53358
53392
  K("div", null, [i[12] ||= K("dt", null, "智能调度", -1), K("dd", null, P(T.value), 1)]),
53359
- u.value.free?.max_rounds ? (U(), W("div", D$, [i[13] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), G(IK, {
53393
+ u.value.free?.max_rounds ? (U(), W("div", A$, [i[13] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), G(IK, {
53360
53394
  key: 0,
53361
53395
  "model-value": _.value,
53362
53396
  disabled: g.value,
53363
53397
  "onUpdate:modelValue": v
53364
- }, null, 8, ["model-value", "disabled"])) : (U(), W("span", O$, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
53365
- d.value ? Y("", !0) : (U(), W("div", k$, [i[14] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
53366
- K("div", null, [i[15] ||= K("dt", null, "阅读地址", -1), K("dd", A$, [K("code", null, P(ne.value), 1), q(s, {
53398
+ }, null, 8, ["model-value", "disabled"])) : (U(), W("span", j$, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
53399
+ d.value ? Y("", !0) : (U(), W("div", M$, [i[14] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
53400
+ K("div", null, [i[15] ||= K("dt", null, "阅读地址", -1), K("dd", N$, [K("code", null, P(ne.value), 1), q(s, {
53367
53401
  icon: "i-lucide-copy",
53368
53402
  color: "neutral",
53369
53403
  variant: "ghost",
@@ -53371,9 +53405,9 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53371
53405
  "aria-label": "复制阅读地址",
53372
53406
  onClick: i[2] ||= (e) => I(r)("copy", ne.value)
53373
53407
  })])]),
53374
- re.value ? (U(), W("div", j$, [i[16] ||= K("dt", null, "创建时间", -1), K("dd", null, P(re.value), 1)])) : Y("", !0)
53408
+ re.value ? (U(), W("div", P$, [i[16] ||= K("dt", null, "创建时间", -1), K("dd", null, P(re.value), 1)])) : Y("", !0)
53375
53409
  ])]),
53376
- q(RZ, {
53410
+ q(VZ, {
53377
53411
  open: ee.value,
53378
53412
  "onUpdate:open": i[3] ||= (e) => ee.value = e,
53379
53413
  description: d.value ? "新成员加入后不打断其他成员;点卡片翻面可设置软件、模型、项目权限和要续接的已有会话。" : "新专家由程序按本机软件配置启动,或由你手动启动,加入本轮发言队列。"
@@ -53400,31 +53434,31 @@ var hQ = { class: "progress-board is-docked" }, gQ = { class: "pb-header" }, _Q
53400
53434
  ]);
53401
53435
  };
53402
53436
  }
53403
- }, [["__scopeId", "data-v-434cf789"]]), P$ = {
53437
+ }, [["__scopeId", "data-v-7b177853"]]), L$ = {
53404
53438
  thinking: "思考",
53405
53439
  command: "命令",
53406
53440
  tool: "工具",
53407
53441
  editing: "编辑",
53408
53442
  writing: "撰写"
53409
- }, F$ = {
53443
+ }, R$ = {
53410
53444
  thinking: "model",
53411
53445
  writing: "model",
53412
53446
  command: "tool",
53413
53447
  tool: "tool",
53414
53448
  editing: "tool"
53415
- }, I$ = {
53449
+ }, z$ = {
53416
53450
  running: "进行中",
53417
53451
  done: "完成",
53418
53452
  failed: "失败",
53419
53453
  cancelled: "已撤销"
53420
- }, L$ = 3e5, R$ = .03;
53421
- function z$(e) {
53454
+ }, B$ = 3e5, V$ = .03;
53455
+ function H$(e) {
53422
53456
  if (e < 1e3) return `${Math.max(0, Math.round(e))}ms`;
53423
53457
  if (e < 1e4) return `${(e / 1e3).toFixed(1)}s`;
53424
53458
  let t = Math.round(e / 1e3);
53425
53459
  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`;
53426
53460
  }
53427
- function B$(e, t) {
53461
+ function U$(e, t) {
53428
53462
  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) => {
53429
53463
  let o = n && a === e.segments.length - 1, s = Math.min(i + t.end_ms, r);
53430
53464
  return {
@@ -53450,8 +53484,8 @@ function B$(e, t) {
53450
53484
  notes: l
53451
53485
  };
53452
53486
  }
53453
- var V$ = 18e4;
53454
- function H$(e, t) {
53487
+ var W$ = 18e4;
53488
+ function G$(e, t) {
53455
53489
  let { item: n } = e;
53456
53490
  if (n.state === "failed") return {
53457
53491
  tone: "failed",
@@ -53475,22 +53509,22 @@ function H$(e, t) {
53475
53509
  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;
53476
53510
  return o >= 18e4 ? i?.phase === "command" ? {
53477
53511
  tone: "warn",
53478
- text: `命令已运行 ${z$(o)}`
53512
+ text: `命令已运行 ${H$(o)}`
53479
53513
  } : {
53480
53514
  tone: "warn",
53481
- text: `已 ${z$(o)} 无输出,可能卡住`
53515
+ text: `已 ${H$(o)} 无输出,可能卡住`
53482
53516
  } : n.last_note ? {
53483
53517
  tone: "live",
53484
53518
  text: n.last_note
53485
53519
  } : i ? {
53486
53520
  tone: "live",
53487
- text: `${P$[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
53521
+ text: `${L$[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
53488
53522
  } : {
53489
53523
  tone: "live",
53490
53524
  text: "处理中"
53491
53525
  };
53492
53526
  }
53493
- function U$(e, t) {
53527
+ function K$(e, t) {
53494
53528
  return [...e.segments.map((e) => ({
53495
53529
  at: e.start,
53496
53530
  kind: "phase",
@@ -53504,7 +53538,7 @@ function U$(e, t) {
53504
53538
  text: t?.[e.index] ?? (t ? "(未能读取)" : "读取中…")
53505
53539
  }))].sort((e, t) => e.at - t.at || (e.kind === "note") - (t.kind === "note"));
53506
53540
  }
53507
- function W$(e, t, n = /* @__PURE__ */ new Map()) {
53541
+ function q$(e, t, n = /* @__PURE__ */ new Map()) {
53508
53542
  let r = t / 1e3, i = [];
53509
53543
  for (let t of e.executions) {
53510
53544
  if ((t.queued_at || t.dispatched_at || Infinity) > r) continue;
@@ -53538,7 +53572,7 @@ function W$(e, t, n = /* @__PURE__ */ new Map()) {
53538
53572
  executions: i
53539
53573
  };
53540
53574
  }
53541
- function G$(e, t, n) {
53575
+ function J$(e, t, n) {
53542
53576
  let r = e.filter((e) => e.at >= t && e.at <= n);
53543
53577
  if (r.length) return {
53544
53578
  notes: r,
@@ -53550,13 +53584,13 @@ function G$(e, t, n) {
53550
53584
  earlier: !!i
53551
53585
  };
53552
53586
  }
53553
- function K$(e, t) {
53587
+ function Y$(e, t) {
53554
53588
  let n = e.executions.map((n) => ({
53555
53589
  key: `${n.source}:${n.id}`,
53556
53590
  parent: n.parent_id ? `free:${n.parent_id}` : "",
53557
53591
  item: n,
53558
53592
  truncated: n.segments.length >= e.segment_limit,
53559
- ...B$(n, t)
53593
+ ...U$(n, t)
53560
53594
  })), r = new Map(n.map((e) => [e.key, e])), i = (e) => {
53561
53595
  let t = r.get(e.parent);
53562
53596
  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);
@@ -53585,18 +53619,18 @@ function K$(e, t) {
53585
53619
  });
53586
53620
  return o;
53587
53621
  }
53588
- function q$(e, t) {
53622
+ function X$(e, t) {
53589
53623
  if (e.source === "discussion") return `run:${e.run_id || e.id}`;
53590
53624
  let n = e;
53591
53625
  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);
53592
53626
  return n.task_id ? `task:${n.task_id}` : `exec:${n.id}`;
53593
53627
  }
53594
- function J$(e, t) {
53628
+ function Z$(e, t) {
53595
53629
  let n = new Map(e.executions.filter((e) => e.source === "free").map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
53596
53630
  for (let a of e.executions) {
53597
- let e = q$(a, n);
53631
+ let e = X$(a, n);
53598
53632
  i.set(`${a.source}:${a.id}`, e);
53599
- let o = B$(a, t), s = r.get(e) || {
53633
+ let o = U$(a, t), s = r.get(e) || {
53600
53634
  key: e,
53601
53635
  source: a.source,
53602
53636
  start: o.start,
@@ -53614,7 +53648,7 @@ function J$(e, t) {
53614
53648
  of: i
53615
53649
  };
53616
53650
  }
53617
- function Y$(e, t) {
53651
+ function Q$(e, t) {
53618
53652
  let n = new Map(e.map((e, t) => [e.key, t])), r = /* @__PURE__ */ new Map(), i = (e, t) => {
53619
53653
  r.has(e) || r.set(e, []), r.get(e).push(t);
53620
53654
  };
@@ -53640,7 +53674,7 @@ function Y$(e, t) {
53640
53674
  });
53641
53675
  }), r;
53642
53676
  }
53643
- var X$ = [
53677
+ var $$ = [
53644
53678
  5,
53645
53679
  6,
53646
53680
  7,
@@ -53697,8 +53731,8 @@ var X$ = [
53697
53731
  64800,
53698
53732
  72e3,
53699
53733
  86400
53700
- ].map((e) => e * 1e3), Z$ = .75;
53701
- function Q$(e, t = !1) {
53734
+ ].map((e) => e * 1e3), e1 = .75;
53735
+ function t1(e, t = !1) {
53702
53736
  let n = e.map((e) => [e.start, e.end]).sort((e, t) => e[0] - t[0]);
53703
53737
  if (!n.length) return {
53704
53738
  start: 0,
@@ -53714,8 +53748,8 @@ function Q$(e, t = !1) {
53714
53748
  n && e <= n[1] + 3e5 ? n[1] = Math.max(n[1], t) : r.push([e, t]);
53715
53749
  }
53716
53750
  let i = r.reduce((e, [t, n]) => e + (n - t), 0), a = i;
53717
- t && i && (a = X$.find((e) => e >= i / Z$) ?? Math.ceil(i / Z$), r.at(-1)[1] += a - i);
53718
- let o = Math.min(R$, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
53751
+ t && i && (a = $$.find((e) => e >= i / e1) ?? Math.ceil(i / e1), r.at(-1)[1] += a - i);
53752
+ let o = Math.min(V$, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
53719
53753
  return r.forEach(([e, t], n) => {
53720
53754
  if (n) {
53721
53755
  let t = r[n - 1][1];
@@ -53758,7 +53792,7 @@ function Q$(e, t = !1) {
53758
53792
  }))
53759
53793
  };
53760
53794
  }
53761
- var $$ = [
53795
+ var n1 = [
53762
53796
  1,
53763
53797
  2,
53764
53798
  5,
@@ -53777,14 +53811,14 @@ var $$ = [
53777
53811
  21600,
53778
53812
  43200,
53779
53813
  86400
53780
- ].map((e) => e * 1e3), e1 = .12;
53781
- function t1(e, t = 6, n = {
53814
+ ].map((e) => e * 1e3), r1 = .12;
53815
+ function i1(e, t = 6, n = {
53782
53816
  from: 0,
53783
53817
  span: 1
53784
53818
  }) {
53785
53819
  let r = (e.total_ms ?? e.busy_ms) * n.span;
53786
53820
  if (!r) return [];
53787
- let i = $$.find((e) => r / e <= t) ?? $$.at(-1), a = e1 * n.span, o = [];
53821
+ let i = n1.find((e) => r / e <= t) ?? n1.at(-1), a = r1 * n.span, o = [];
53788
53822
  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) {
53789
53823
  let t = e.x(r);
53790
53824
  t < n.from || t > n.from + n.span || (!o.length || t - o.at(-1).x >= a) && o.push({
@@ -53797,8 +53831,8 @@ function t1(e, t = 6, n = {
53797
53831
  seconds: i < 6e4
53798
53832
  }));
53799
53833
  }
53800
- var n1 = .01, r1 = 2e3;
53801
- function i1(e, t) {
53834
+ var a1 = .01, o1 = 2e3;
53835
+ function s1(e, t) {
53802
53836
  let n = (e) => (e - t.from) / t.span;
53803
53837
  return {
53804
53838
  ...e,
@@ -53815,20 +53849,20 @@ function i1(e, t) {
53815
53849
  }))
53816
53850
  };
53817
53851
  }
53818
- function a1(e, t, n, r = 0) {
53819
- let i = Math.max(n1, r ? r1 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
53852
+ function c1(e, t, n, r = 0) {
53853
+ let i = Math.max(a1, r ? o1 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
53820
53854
  return {
53821
53855
  from: Math.min(1 - a, Math.max(0, o - t * a)),
53822
53856
  span: a
53823
53857
  };
53824
53858
  }
53825
- function o1(e, t) {
53859
+ function l1(e, t) {
53826
53860
  return {
53827
53861
  from: Math.min(1 - e.span, Math.max(0, e.from + t * e.span)),
53828
53862
  span: e.span
53829
53863
  };
53830
53864
  }
53831
- function s1(e, t = Date.now()) {
53865
+ function u1(e, t = Date.now()) {
53832
53866
  let n = null;
53833
53867
  for (let t of e) for (let e of t.segments) (!n || e.seen - e.start > n.end - n.start) && (n = {
53834
53868
  ...e,
@@ -53840,7 +53874,7 @@ function s1(e, t = Date.now()) {
53840
53874
  executions: e.length,
53841
53875
  running: e.filter((e) => e.item.state === "running").length,
53842
53876
  failed: e.filter((e) => e.item.state === "failed").length,
53843
- stalled: e.filter((e) => e.item.state === "running" && H$(e, t).tone === "warn").length,
53877
+ stalled: e.filter((e) => e.item.state === "running" && G$(e, t).tone === "warn").length,
53844
53878
  tool_segments: e.reduce((e, t) => e + t.segments.filter((e) => [
53845
53879
  "command",
53846
53880
  "tool",
@@ -53851,116 +53885,116 @@ function s1(e, t = Date.now()) {
53851
53885
  }
53852
53886
  //#endregion
53853
53887
  //#region frontend/ExecutionTimeline.vue
53854
- var c1 = {
53888
+ var d1 = {
53855
53889
  class: "merged-section execution-timeline",
53856
53890
  "aria-label": "执行时间线"
53857
- }, l1 = {
53891
+ }, f1 = {
53858
53892
  key: 0,
53859
53893
  role: "alert",
53860
53894
  class: "fine-print wf-error"
53861
- }, u1 = {
53895
+ }, p1 = {
53862
53896
  key: 1,
53863
53897
  class: "fine-print"
53864
- }, d1 = { class: "wf-head" }, f1 = {
53898
+ }, m1 = { class: "wf-head" }, h1 = {
53865
53899
  key: 0,
53866
53900
  class: "wf-state is-replay"
53867
- }, p1 = {
53901
+ }, g1 = {
53868
53902
  key: 2,
53869
53903
  class: "wf-headline"
53870
- }, m1 = { class: "wf-summary" }, h1 = ["title"], g1 = ["title"], _1 = { title: "连续调用同一工具合并为一段" }, v1 = {
53904
+ }, _1 = { class: "wf-summary" }, v1 = ["title"], y1 = ["title"], b1 = { title: "连续调用同一工具合并为一段" }, x1 = {
53871
53905
  class: "wf-legend",
53872
53906
  "aria-label": "图例"
53873
- }, y1 = {
53907
+ }, S1 = {
53874
53908
  key: 0,
53875
53909
  class: "wf-legend-note"
53876
- }, b1 = {
53910
+ }, C1 = {
53877
53911
  key: 1,
53878
53912
  class: "wf-legend-note"
53879
- }, x1 = { class: "wf-axis-label" }, S1 = {
53913
+ }, w1 = { class: "wf-axis-label" }, T1 = {
53880
53914
  key: 0,
53881
53915
  class: "wf-zoom"
53882
- }, C1 = {
53916
+ }, E1 = {
53883
53917
  key: 1,
53884
53918
  class: "wf-zoom-hint",
53885
53919
  title: "Ctrl + 滚轮缩放;放大后按住中键或拖动时间轴平移,双击时间线还原"
53886
- }, w1 = {
53920
+ }, D1 = {
53887
53921
  key: 2,
53888
53922
  class: "wf-branch"
53889
- }, T1 = ["title"], E1 = {
53923
+ }, O1 = ["title"], k1 = {
53890
53924
  key: 0,
53891
53925
  class: "wf-guides",
53892
53926
  "aria-hidden": "true"
53893
- }, D1 = [
53927
+ }, A1 = [
53894
53928
  "aria-expanded",
53895
53929
  "aria-label",
53896
53930
  "onClick"
53897
- ], O1 = {
53931
+ ], j1 = {
53898
53932
  key: 2,
53899
53933
  class: "wf-toggle-space"
53900
- }, k1 = [
53934
+ }, M1 = [
53901
53935
  "aria-expanded",
53902
53936
  "onClick",
53903
53937
  "onMouseenter",
53904
53938
  "onMouseleave"
53905
- ], A1 = { class: "wf-name-line" }, j1 = {
53939
+ ], N1 = { class: "wf-name-line" }, P1 = {
53906
53940
  key: 0,
53907
53941
  class: "wf-spinner",
53908
53942
  "aria-hidden": "true"
53909
- }, M1 = {
53943
+ }, F1 = {
53910
53944
  key: 1,
53911
53945
  class: "wf-pill is-slowest"
53912
- }, N1 = {
53946
+ }, I1 = {
53913
53947
  key: 0,
53914
53948
  class: "wf-live-dot",
53915
53949
  "aria-hidden": "true"
53916
- }, P1 = ["aria-label", "onMouseleave"], F1 = { class: "wf-track" }, I1 = ["data-tone"], L1 = ["onMouseenter", "onClick"], R1 = ["onMouseenter", "onClick"], z1 = [
53950
+ }, L1 = ["aria-label", "onMouseleave"], R1 = { class: "wf-track" }, z1 = ["data-tone"], B1 = ["onMouseenter", "onClick"], V1 = ["onMouseenter", "onClick"], H1 = [
53917
53951
  "data-tone",
53918
53952
  "onMouseenter",
53919
53953
  "onClick"
53920
- ], B1 = [
53954
+ ], U1 = [
53921
53955
  "data-tone",
53922
53956
  "onMouseenter",
53923
53957
  "onClick"
53924
- ], V1 = [
53958
+ ], W1 = [
53925
53959
  "data-tone",
53926
53960
  "onMouseenter",
53927
53961
  "onClick"
53928
- ], H1 = [
53962
+ ], G1 = [
53929
53963
  "aria-label",
53930
53964
  "onMouseenter",
53931
53965
  "onClick",
53932
53966
  "onFocus",
53933
53967
  "onBlur"
53934
- ], U1 = { class: "wf-end" }, W1 = { key: 1 }, G1 = ["aria-label"], K1 = { class: "wf-detail-head" }, q1 = { key: 0 }, J1 = { key: 1 }, Y1 = { class: "is-failed" }, X1 = { key: 2 }, Z1 = { key: 3 }, Q1 = {
53968
+ ], K1 = { class: "wf-end" }, q1 = { key: 1 }, J1 = ["aria-label"], Y1 = { class: "wf-detail-head" }, X1 = { key: 0 }, Z1 = { key: 1 }, Q1 = { class: "is-failed" }, $1 = { key: 2 }, e0 = { key: 3 }, t0 = {
53935
53969
  key: 0,
53936
53970
  class: "wf-log",
53937
53971
  "aria-label": "过程"
53938
- }, $1 = ["data-tone"], e0 = {
53972
+ }, n0 = ["data-tone"], r0 = {
53939
53973
  key: 1,
53940
53974
  class: "wf-log-note"
53941
- }, t0 = {
53975
+ }, i0 = {
53942
53976
  key: 1,
53943
53977
  class: "fine-print"
53944
- }, n0 = {
53978
+ }, a0 = {
53945
53979
  key: 1,
53946
53980
  class: "wf-player"
53947
- }, r0 = {
53981
+ }, o0 = {
53948
53982
  key: 2,
53949
53983
  class: "wf-player"
53950
- }, i0 = ["aria-label"], a0 = ["disabled"], o0 = ["max", "value"], s0 = { class: "wf-player-time" }, c0 = {
53984
+ }, s0 = ["aria-label"], c0 = ["disabled"], l0 = ["max", "value"], u0 = { class: "wf-player-time" }, d0 = {
53951
53985
  key: 3,
53952
53986
  class: "wf-foot"
53953
- }, l0 = { key: 0 }, u0 = { key: 1 }, d0 = ["role"], f0 = {
53987
+ }, f0 = { key: 0 }, p0 = { key: 1 }, m0 = ["role"], h0 = {
53954
53988
  key: 1,
53955
53989
  class: "wf-card-text"
53956
- }, p0 = {
53990
+ }, g0 = {
53957
53991
  key: 2,
53958
53992
  class: "wf-card-reason"
53959
- }, m0 = { class: "wf-card-label" }, h0 = 2e3, g0 = 6e4, _0 = 100, v0 = 60, y0 = 2e4, b0 = 600, x0 = 5, S0 = 16, C0 = 90, w0 = 2, T0 = 8, E0 = 560, D0 = .0015, O0 = "latest", k0 = "all", A0 = 22, j0 = 5, M0 = 52, N0 = /*#__PURE__*/ MH({
53993
+ }, _0 = { class: "wf-card-label" }, v0 = 2e3, y0 = 6e4, b0 = 100, x0 = 60, S0 = 2e4, C0 = 600, w0 = 5, T0 = 16, E0 = 90, D0 = 2, O0 = 8, k0 = 560, A0 = .0015, j0 = "latest", M0 = "all", N0 = 22, P0 = 5, F0 = 52, I0 = /*#__PURE__*/ MH({
53960
53994
  __name: "ExecutionTimeline",
53961
53995
  emits: ["detail"],
53962
53996
  setup(e, { emit: t }) {
53963
- let n = t, { view: r, bridge: i } = xr("discussion"), a = V$ / 6e4, o = [
53997
+ let n = t, { view: r, bridge: i } = xr("discussion"), a = W$ / 6e4, o = [
53964
53998
  1,
53965
53999
  2,
53966
54000
  4,
@@ -53976,7 +54010,7 @@ var c1 = {
53976
54010
  let t = d.value;
53977
54011
  if (!t || w) return;
53978
54012
  w = !0;
53979
- let n = e || !S || Date.now() - C >= g0 ? 0 : S - x0;
54013
+ let n = e || !S || Date.now() - C >= y0 ? 0 : S - w0;
53980
54014
  try {
53981
54015
  let e = await i.request(`/api/rooms/${t}/timeline${n ? `?after=${n}` : ""}`);
53982
54016
  if (t !== d.value) return;
@@ -53999,7 +54033,7 @@ var c1 = {
53999
54033
  R(Z(() => re.value?.executions.some((e) => e.state === "running")), (e) => {
54000
54034
  clearInterval(T), e && (T = setInterval(() => {
54001
54035
  document.hidden || ne();
54002
- }, h0));
54036
+ }, v0));
54003
54037
  }, { immediate: !0 }), R(d, () => {
54004
54038
  f.value = /* @__PURE__ */ new Map(), p.value = null, g.value = /* @__PURE__ */ new Set(), _.value = /* @__PURE__ */ new Map(), v.value = null, y.value = "", S = 0, ne(!0);
54005
54039
  }, { immediate: !0 }), R(() => r.value.room, (e, t) => {
@@ -54014,7 +54048,7 @@ var c1 = {
54014
54048
  };
54015
54049
  }
54016
54050
  function k(e) {
54017
- c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), Oe.value = a1(Oe.value, ae(e).share, Math.exp(e.deltaY * D0), Ee.value.total_ms)) : ke.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), Oe.value = o1(Oe.value, (e.shiftKey ? e.deltaY : e.deltaX) / ae(e).width)));
54051
+ c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), Oe.value = c1(Oe.value, ae(e).share, Math.exp(e.deltaY * A0), Ee.value.total_ms)) : ke.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), Oe.value = l1(Oe.value, (e.shiftKey ? e.deltaY : e.deltaX) / ae(e).width)));
54018
54052
  }
54019
54053
  function A(e) {
54020
54054
  let t = e.target.closest?.(".wf-axis");
@@ -54025,7 +54059,7 @@ var c1 = {
54025
54059
  }, e.currentTarget.setPointerCapture(e.pointerId));
54026
54060
  }
54027
54061
  function oe(e) {
54028
- ie && (Oe.value = o1({
54062
+ ie && (Oe.value = l1({
54029
54063
  from: ie.from,
54030
54064
  span: Oe.value.span
54031
54065
  }, -(e.clientX - ie.x) / ie.width));
@@ -54054,15 +54088,15 @@ var c1 = {
54054
54088
  }), ta(() => {
54055
54089
  clearInterval(T), cancelAnimationFrame(E), document.removeEventListener("pointerdown", ue), document.removeEventListener("keydown", de), u?.disconnect();
54056
54090
  });
54057
- let fe = /* @__PURE__ */ F(O0), pe = Z(() => re.value ? J$(re.value, h.value) : {
54091
+ let fe = /* @__PURE__ */ F(j0), pe = Z(() => re.value ? Z$(re.value, h.value) : {
54058
54092
  list: [],
54059
54093
  of: /* @__PURE__ */ new Map()
54060
- }), me = Z(() => fe.value === O0 ? pe.value.list[0]?.key : fe.value === k0 || pe.value.list.some((e) => e.key === fe.value) ? fe.value : pe.value.list[0]?.key), he = Z(() => !re.value || me.value === k0 ? re.value : {
54094
+ }), me = Z(() => fe.value === j0 ? pe.value.list[0]?.key : fe.value === M0 || pe.value.list.some((e) => e.key === fe.value) ? fe.value : pe.value.list[0]?.key), he = Z(() => !re.value || me.value === M0 ? re.value : {
54061
54095
  ...re.value,
54062
54096
  executions: re.value.executions.filter((e) => pe.value.of.get(`${e.source}:${e.id}`) === me.value)
54063
54097
  });
54064
54098
  R(d, () => {
54065
- fe.value = O0;
54099
+ fe.value = j0;
54066
54100
  });
54067
54101
  let ge = (e) => new Date(e).toLocaleString("zh-CN", {
54068
54102
  month: "numeric",
@@ -54072,13 +54106,13 @@ var c1 = {
54072
54106
  hour12: !1
54073
54107
  });
54074
54108
  function N(e) {
54075
- let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, A0)}${e.task.length > A0 ? "…" : ""}` : e.source === "discussion" ? "讨论" : "执行";
54109
+ let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, N0)}${e.task.length > N0 ? "…" : ""}` : e.source === "discussion" ? "讨论" : "执行";
54076
54110
  return `${ge(e.start)} · ${t} · ${e.count} 次${e.running ? " · 进行中" : e.failed ? " · 有失败" : ""}`;
54077
54111
  }
54078
54112
  let _e = Z(() => [
54079
54113
  {
54080
54114
  label: "最近一轮(自动跟随)",
54081
- value: O0
54115
+ value: j0
54082
54116
  },
54083
54117
  ...pe.value.list.map((e) => ({
54084
54118
  label: N(e),
@@ -54086,9 +54120,9 @@ var c1 = {
54086
54120
  })),
54087
54121
  {
54088
54122
  label: "全部执行",
54089
- value: k0
54123
+ value: M0
54090
54124
  }
54091
- ]), ve = Z(() => he.value ? K$(he.value, h.value) : []), ye = Z(() => ve.value.some((e) => e.item.state === "running")), be = Z(() => {
54125
+ ]), ve = Z(() => he.value ? Y$(he.value, h.value) : []), ye = Z(() => ve.value.some((e) => e.item.state === "running")), be = Z(() => {
54092
54126
  let e = Math.min(...ve.value.map((e) => e.start)), t = Math.max(...ve.value.map((e) => e.end));
54093
54127
  return Number.isFinite(e) ? {
54094
54128
  start: e,
@@ -54099,17 +54133,17 @@ var c1 = {
54099
54133
  end: 0,
54100
54134
  duration: 0
54101
54135
  };
54102
- }), xe = Z(() => O.position !== null && !ye.value), Se = Z(() => xe.value ? be.value.start + O.position : h.value), Ce = Z(() => xe.value ? K$(W$(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(() => Q$(Ce.value, Te.value)), De = {
54136
+ }), xe = Z(() => O.position !== null && !ye.value), Se = Z(() => xe.value ? be.value.start + O.position : h.value), Ce = Z(() => xe.value ? Y$(q$(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(() => t1(Ce.value, Te.value)), De = {
54103
54137
  from: 0,
54104
54138
  span: 1
54105
54139
  }, Oe = /* @__PURE__ */ F(De), ke = Z(() => Oe.value.span < 1);
54106
54140
  R([me, d], () => {
54107
54141
  Oe.value = De;
54108
54142
  });
54109
- let Ae = Z(() => i1(Ee.value, Oe.value)), je = Z(() => {
54143
+ let Ae = Z(() => s1(Ee.value, Oe.value)), je = Z(() => {
54110
54144
  let e = Te.value ? Ae.value.x(Se.value) : null;
54111
54145
  return e === null || e < 0 || e > 1 ? null : e;
54112
- }), Me = Z(() => Math.max(1, be.value.duration / y0)), Ne = Z(() => [{
54146
+ }), Me = Z(() => Math.max(1, be.value.duration / S0)), Ne = Z(() => [{
54113
54147
  label: `自动 · ${Math.round(Me.value)}×`,
54114
54148
  value: 0
54115
54149
  }, ...o.map((e) => ({
@@ -54119,7 +54153,7 @@ var c1 = {
54119
54153
  function Fe(e) {
54120
54154
  let t = ee ? Math.min(e - ee, 250) : 0;
54121
54155
  ee = e;
54122
- let n = Ce.value.length <= v0 || e - D >= _0;
54156
+ let n = Ce.value.length <= x0 || e - D >= b0;
54123
54157
  O.playing && (te += t * Pe.value, te >= be.value.duration ? Object.assign(O, {
54124
54158
  position: null,
54125
54159
  playing: !1
@@ -54172,15 +54206,15 @@ var c1 = {
54172
54206
  let t = e.filter((e) => !He.has(e));
54173
54207
  t.forEach((e) => He.add(e)), t.length && (Ve.value = /* @__PURE__ */ new Set([...Ve.value, ...t]), setTimeout(() => {
54174
54208
  Ve.value = new Set([...Ve.value].filter((e) => !t.includes(e)));
54175
- }, b0));
54209
+ }, C0));
54176
54210
  }), R([me, d], () => {
54177
54211
  He = null;
54178
54212
  });
54179
- let We = Z(() => Y$(we.value, Ae.value)), Ge = Z(() => t1(Ee.value, Math.min(T0, Math.max(w0, Math.round((l.value || 540) / C0))), Oe.value).map((e) => ({
54213
+ let We = Z(() => Q$(we.value, Ae.value)), Ge = Z(() => i1(Ee.value, Math.min(O0, Math.max(D0, Math.round((l.value || 540) / E0))), Oe.value).map((e) => ({
54180
54214
  ...e,
54181
54215
  x: (e.x - Oe.value.from) / Oe.value.span
54182
- }))), Ke = Z(() => s1(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 ? U$(Je.value, _.value.get(Je.value.item.id)) : []), Xe = Z(() => {
54183
- let e = Ce.value, t = new Set(e.flatMap((e) => e.segments.map((e) => F$[e.phase])));
54216
+ }))), Ke = Z(() => u1(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 ? K$(Je.value, _.value.get(Je.value.item.id)) : []), Xe = Z(() => {
54217
+ let e = Ce.value, t = new Set(e.flatMap((e) => e.segments.map((e) => R$[e.phase])));
54184
54218
  return [
54185
54219
  ...e.some((e) => e.queue[1] > e.queue[0]) ? [["queue", "排队"]] : [],
54186
54220
  ...e.some((e) => e.wake) ? [["wake", "唤醒"]] : [],
@@ -54193,10 +54227,10 @@ var c1 = {
54193
54227
  ];
54194
54228
  }), Ze = Z(() => Ce.value.length > 0 && Ce.value.every((e) => !e.segments.length)), Qe = Z(() => {
54195
54229
  let e = /* @__PURE__ */ new Map();
54196
- 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 % j0 + 1);
54230
+ 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 % P0 + 1);
54197
54231
  return e;
54198
54232
  }), $e = Z(() => {
54199
- let e = M0 / (l.value || 800), t = [];
54233
+ let e = F0 / (l.value || 800), t = [];
54200
54234
  for (let n of Ae.value.folds) {
54201
54235
  let r = n.from + n.width / 2;
54202
54236
  r < 0 || r > 1 || (!t.length || r - t.at(-1).middle >= e) && t.push({
@@ -54206,12 +54240,12 @@ var c1 = {
54206
54240
  }
54207
54241
  return t;
54208
54242
  }), et = Z(() => {
54209
- let e = M0 / (l.value || 800);
54243
+ let e = F0 / (l.value || 800);
54210
54244
  return Ge.value.filter((t) => !$e.value.some((n) => Math.abs(t.x - n.middle) < e));
54211
54245
  });
54212
54246
  function tt(e, t) {
54213
54247
  if (y.value = y.value === e.key ? "" : e.key, !y.value) return;
54214
- let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(E0, r.width - 16);
54248
+ let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(k0, r.width - 16);
54215
54249
  b.value = {
54216
54250
  top: n.bottom - r.top + 4,
54217
54251
  left: Math.max(8, Math.min(n.left - r.left, r.width - i - 8))
@@ -54238,15 +54272,15 @@ var c1 = {
54238
54272
  function at(e) {
54239
54273
  return [...e.item.source === "discussion" ? ["讨论"] : [], ...e.item.role === "host" ? ["主持"] : []];
54240
54274
  }
54241
- let ot = (e) => H$(e, Se.value);
54275
+ let ot = (e) => G$(e, Se.value);
54242
54276
  function st(e) {
54243
54277
  let t = [
54244
54278
  i.display_name(e.item.member),
54245
54279
  it(e),
54246
- I$[e.item.state],
54247
- `用时 ${z$(e.end - e.start)}`
54280
+ z$[e.item.state],
54281
+ `用时 ${H$(e.end - e.start)}`
54248
54282
  ];
54249
- return e.wake && t.push(`唤醒 ${z$(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(",");
54283
+ return e.wake && t.push(`唤醒 ${H$(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(",");
54250
54284
  }
54251
54285
  async function ct(e) {
54252
54286
  let t = e.item.id;
@@ -54270,7 +54304,7 @@ var c1 = {
54270
54304
  let i = e.currentTarget.getBoundingClientRect(), a = n.note ? {
54271
54305
  notes: [n.note],
54272
54306
  earlier: !1
54273
- } : G$(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;
54307
+ } : J$(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;
54274
54308
  v.value = {
54275
54309
  key: t.key,
54276
54310
  id: ft(t, n),
@@ -54294,7 +54328,7 @@ var c1 = {
54294
54328
  }
54295
54329
  let gt = Z(() => {
54296
54330
  let e = v.value?.piece;
54297
- return e ? e.note ? `过程说明 · ${lt(e.note.at)}` : `${e.kind === "segment" ? `${P$[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${z$(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54331
+ return e ? e.note ? `过程说明 · ${lt(e.note.at)}` : `${e.kind === "segment" ? `${L$[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${H$(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54298
54332
  }), _t = Z(() => {
54299
54333
  if (!v.value) return [];
54300
54334
  let e = _.value.get(v.value.row.item.id);
@@ -54305,17 +54339,17 @@ var c1 = {
54305
54339
  });
54306
54340
  return (e, t) => {
54307
54341
  let r = qV, o = sA, s = pA;
54308
- return U(), W("section", c1, [
54342
+ return U(), W("section", d1, [
54309
54343
  t[29] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "执行时间线"), K("p", null, "本机接入程序唤醒的每次执行;点名字看详情,悬停条形看当时的过程说明。")])], -1),
54310
- m.value ? (U(), W("p", l1, P(m.value), 1)) : Y("", !0),
54311
- re.value && !Ce.value.length ? (U(), W("p", u1, "还没有执行记录。")) : Y("", !0),
54344
+ m.value ? (U(), W("p", f1, P(m.value), 1)) : Y("", !0),
54345
+ re.value && !Ce.value.length ? (U(), W("p", p1, "还没有执行记录。")) : Y("", !0),
54312
54346
  Ce.value.length ? (U(), W("div", {
54313
54347
  key: 2,
54314
54348
  ref_key: "wf_element",
54315
54349
  ref: x,
54316
54350
  class: "wf"
54317
54351
  }, [
54318
- K("header", d1, [
54352
+ K("header", m1, [
54319
54353
  t[11] ||= K("span", { class: "wf-title" }, "执行瀑布", -1),
54320
54354
  q(r, {
54321
54355
  modelValue: fe.value,
@@ -54335,17 +54369,17 @@ var c1 = {
54335
54369
  trailingIcon: "wf-select-icon"
54336
54370
  }
54337
54371
  }, null, 8, ["modelValue", "items"]),
54338
- xe.value ? (U(), W("span", f1, "回放中 · " + P(lt(Se.value)), 1)) : (U(), W("span", {
54372
+ xe.value ? (U(), W("span", h1, "回放中 · " + P(lt(Se.value)), 1)) : (U(), W("span", {
54339
54373
  key: 1,
54340
54374
  class: M(["wf-state", { "is-live": Ke.value.running }])
54341
54375
  }, P(Ke.value.running ? `${Ke.value.running} 个进行中` : "均已结束"), 3)),
54342
- Ke.value.slowest ? (U(), W("span", p1, [
54376
+ Ke.value.slowest ? (U(), W("span", g1, [
54343
54377
  t[10] ||= J("最慢一步 ", -1),
54344
- K("b", null, [J(P(I(i).display_name(Ke.value.slowest.member)) + " · " + P(I(P$)[Ke.value.slowest.phase]), 1), Ke.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ke.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54345
- J(" · " + P(I(z$)(Ke.value.slowest.end - Ke.value.slowest.start)), 1)
54378
+ K("b", null, [J(P(I(i).display_name(Ke.value.slowest.member)) + " · " + P(I(L$)[Ke.value.slowest.phase]), 1), Ke.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ke.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54379
+ J(" · " + P(I(H$)(Ke.value.slowest.end - Ke.value.slowest.start)), 1)
54346
54380
  ])) : Y("", !0)
54347
54381
  ]),
54348
- K("dl", m1, [
54382
+ K("dl", _1, [
54349
54383
  K("div", null, [t[12] ||= K("dt", null, "执行", -1), K("dd", null, [(U(), W("span", {
54350
54384
  key: Ke.value.executions,
54351
54385
  class: "wf-roll"
@@ -54361,17 +54395,17 @@ var c1 = {
54361
54395
  K("div", { title: `超过 ${a} 分钟没有输出` }, [t[15] ||= K("dt", null, "可能卡住", -1), K("dd", { class: M(Ke.value.stalled ? "is-warn" : "is-zero") }, [(U(), W("span", {
54362
54396
  key: Ke.value.stalled,
54363
54397
  class: "wf-roll"
54364
- }, P(Ke.value.stalled), 1))], 2)], 8, h1),
54365
- K("div", { title: Ee.value.folds.length ? `已折叠 ${Ee.value.folds.length} 段超过 ${I(L$) / 6e4} 分钟的空闲` : void 0 }, [t[16] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(z$)(Ee.value.busy_ms)), 1)], 8, g1),
54366
- K("div", _1, [t[18] ||= K("dt", null, "工具与命令", -1), K("dd", { class: M({ "is-zero": !Ke.value.tool_segments }) }, [(U(), W("span", {
54398
+ }, P(Ke.value.stalled), 1))], 2)], 8, v1),
54399
+ K("div", { title: Ee.value.folds.length ? `已折叠 ${Ee.value.folds.length} 段超过 ${I(B$) / 6e4} 分钟的空闲` : void 0 }, [t[16] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(H$)(Ee.value.busy_ms)), 1)], 8, y1),
54400
+ K("div", b1, [t[18] ||= K("dt", null, "工具与命令", -1), K("dd", { class: M({ "is-zero": !Ke.value.tool_segments }) }, [(U(), W("span", {
54367
54401
  key: Ke.value.tool_segments,
54368
54402
  class: "wf-roll"
54369
54403
  }, P(Ke.value.tool_segments), 1)), t[17] ||= J(" 段", -1)], 2)])
54370
54404
  ]),
54371
- K("ul", v1, [
54405
+ K("ul", x1, [
54372
54406
  (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)),
54373
- Qe.value.size > 1 ? (U(), W("li", y1, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
54374
- Ze.value ? (U(), W("li", b1, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、在线 AI、Codex App")) : Y("", !0)
54407
+ Qe.value.size > 1 ? (U(), W("li", S1, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
54408
+ Ze.value ? (U(), W("li", C1, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、在线 AI、Codex App")) : Y("", !0)
54375
54409
  ]),
54376
54410
  K("div", {
54377
54411
  class: M(["wf-grid", {
@@ -54379,7 +54413,7 @@ var c1 = {
54379
54413
  "is-panning": I(ie)
54380
54414
  }]),
54381
54415
  role: "list",
54382
- style: j({ "--wf-depth-px": `${S0}px` }),
54416
+ style: j({ "--wf-depth-px": `${T0}px` }),
54383
54417
  onWheel: k,
54384
54418
  onMousedown: le,
54385
54419
  onPointerdown: A,
@@ -54388,15 +54422,15 @@ var c1 = {
54388
54422
  onPointercancel: se,
54389
54423
  onDblclick: ce
54390
54424
  }, [
54391
- K("div", x1, [
54425
+ K("div", w1, [
54392
54426
  K("span", null, "执行 · " + P(we.value.length) + "/" + P(Ce.value.length), 1),
54393
- ke.value ? (U(), W("span", S1, [J("放大 " + P((1 / Oe.value.span).toFixed(1)) + "×", 1), K("button", {
54427
+ ke.value ? (U(), W("span", T1, [J("放大 " + P((1 / Oe.value.span).toFixed(1)) + "×", 1), K("button", {
54394
54428
  type: "button",
54395
54429
  class: "wf-zoom-reset",
54396
54430
  title: "双击时间线也可还原",
54397
54431
  onClick: t[1] ||= (e) => Oe.value = De
54398
- }, [q(o, { name: "i-lucide-locate-fixed" }), J(P(ye.value ? "重置跟随" : "重置"), 1)])])) : (U(), W("span", C1, "Ctrl + 滚轮缩放")),
54399
- qe.value.length ? (U(), W("span", w1, [K("button", {
54432
+ }, [q(o, { name: "i-lucide-locate-fixed" }), J(P(ye.value ? "重置跟随" : "重置"), 1)])])) : (U(), W("span", E1, "Ctrl + 滚轮缩放")),
54433
+ qe.value.length ? (U(), W("span", D1, [K("button", {
54400
54434
  type: "button",
54401
54435
  class: "wf-text-button",
54402
54436
  onClick: t[2] ||= (e) => g.value = /* @__PURE__ */ new Set()
@@ -54422,7 +54456,7 @@ var c1 = {
54422
54456
  class: "wf-fold-label",
54423
54457
  style: j({ left: `${e.middle * 100}%` }),
54424
54458
  title: `${lt(e.start)} – ${lt(e.end)} 没有执行,已折叠`
54425
- }, "⋯ " + P(I(z$)(e.end - e.start)), 13, T1))), 128)),
54459
+ }, "⋯ " + P(I(H$)(e.end - e.start)), 13, O1))), 128)),
54426
54460
  je.value === null ? Y("", !0) : (U(), W("span", {
54427
54461
  key: 0,
54428
54462
  class: "wf-cursor-head",
@@ -54442,7 +54476,7 @@ var c1 = {
54442
54476
  class: "wf-label",
54443
54477
  style: j({ "--depth": e.depth })
54444
54478
  }, [
54445
- e.depth ? (U(), W("span", E1)) : Y("", !0),
54479
+ e.depth ? (U(), W("span", k1)) : Y("", !0),
54446
54480
  e.has_children ? (U(), W("button", {
54447
54481
  key: 1,
54448
54482
  type: "button",
@@ -54450,7 +54484,7 @@ var c1 = {
54450
54484
  "aria-expanded": !g.value.has(e.key),
54451
54485
  "aria-label": `${g.value.has(e.key) ? "展开" : "收起"} ${I(i).display_name(e.item.member)} 派出的执行`,
54452
54486
  onClick: (t) => nt(e.key)
54453
- }, [q(o, { name: "i-lucide-chevron-right" })], 10, D1)) : (U(), W("span", O1)),
54487
+ }, [q(o, { name: "i-lucide-chevron-right" })], 10, A1)) : (U(), W("span", j1)),
54454
54488
  q(s, {
54455
54489
  src: I(i).identities[e.item.member]?.icon,
54456
54490
  text: I(i).identities[e.item.member]?.initials,
@@ -54469,29 +54503,29 @@ var c1 = {
54469
54503
  "aria-expanded": y.value === e.key,
54470
54504
  onClick: (t) => tt(e, t),
54471
54505
  onMouseenter: (t) => pt(t, e, {
54472
- label: I(I$)[e.item.state],
54506
+ label: I(z$)[e.item.state],
54473
54507
  start: e.start,
54474
54508
  end: e.end,
54475
54509
  text: ot(e).text,
54476
54510
  live: e.item.state === "running"
54477
54511
  }),
54478
54512
  onMouseleave: (t) => ht(e)
54479
- }, [K("span", A1, [
54480
- e.item.state === "running" ? (U(), W("i", j1)) : Y("", !0),
54513
+ }, [K("span", N1, [
54514
+ e.item.state === "running" ? (U(), W("i", P1)) : Y("", !0),
54481
54515
  K("strong", null, P(I(i).display_name(e.item.member)), 1),
54482
54516
  (U(!0), W(H, null, B(at(e), (e) => (U(), W("em", {
54483
54517
  key: e,
54484
54518
  class: "wf-pill is-role"
54485
54519
  }, P(e), 1))), 128)),
54486
- Ke.value.slowest?.row === e.key ? (U(), W("em", M1, "最慢")) : Y("", !0)
54487
- ]), K("span", { class: M(["wf-status", `is-${ot(e).tone}`]) }, [ot(e).tone === "live" ? (U(), W("i", N1)) : Y("", !0), J(P(ot(e).text), 1)], 2)], 40, k1)
54520
+ Ke.value.slowest?.row === e.key ? (U(), W("em", F1, "最慢")) : Y("", !0)
54521
+ ]), K("span", { class: M(["wf-status", `is-${ot(e).tone}`]) }, [ot(e).tone === "live" ? (U(), W("i", I1)) : Y("", !0), J(P(ot(e).text), 1)], 2)], 40, M1)
54488
54522
  ], 4),
54489
54523
  K("div", {
54490
54524
  class: "wf-lane",
54491
54525
  role: "img",
54492
54526
  "aria-label": st(e),
54493
54527
  onMouseleave: (t) => ht(e)
54494
- }, [K("div", F1, [
54528
+ }, [K("div", R1, [
54495
54529
  (U(!0), W(H, null, B(et.value, (e) => (U(), W("i", {
54496
54530
  key: e.at,
54497
54531
  class: "wf-gridline",
@@ -54511,7 +54545,7 @@ var c1 = {
54511
54545
  class: M(["wf-link", `is-${e.part}`]),
54512
54546
  "data-tone": Qe.value.get(e.member),
54513
54547
  style: j({ left: `${e.x * 100}%` })
54514
- }, null, 14, I1))), 128)),
54548
+ }, null, 14, z1))), 128)),
54515
54549
  je.value === null ? Y("", !0) : (U(), W("i", {
54516
54550
  key: 0,
54517
54551
  class: "wf-cursor",
@@ -54530,7 +54564,7 @@ var c1 = {
54530
54564
  start: e.queue[0],
54531
54565
  end: e.queue[1]
54532
54566
  })
54533
- }, null, 44, L1),
54567
+ }, null, 44, B1),
54534
54568
  e.wake ? (U(), W("i", {
54535
54569
  key: 1,
54536
54570
  class: "wf-bar is-wake",
@@ -54545,7 +54579,7 @@ var c1 = {
54545
54579
  start: e.wake[0],
54546
54580
  end: e.wake[1]
54547
54581
  })
54548
- }, null, 44, R1)) : Y("", !0),
54582
+ }, null, 44, V1)) : Y("", !0),
54549
54583
  e.work ? (U(), W("i", {
54550
54584
  key: 2,
54551
54585
  class: M(["wf-bar is-work", { "has-detail": e.segments.length }]),
@@ -54563,9 +54597,9 @@ var c1 = {
54563
54597
  end: e.work[1],
54564
54598
  live: e.item.state === "running"
54565
54599
  })
54566
- }, null, 46, z1)) : Y("", !0),
54600
+ }, null, 46, H1)) : Y("", !0),
54567
54601
  (U(!0), W(H, null, B(e.segments, (t) => (U(), W(H, { key: t.start + t.phase }, [K("i", {
54568
- class: M(["wf-bar wf-seg", [`is-${I(F$)[t.phase]}`, { "is-live": t.live }]]),
54602
+ class: M(["wf-bar wf-seg", [`is-${I(R$)[t.phase]}`, { "is-live": t.live }]]),
54569
54603
  "data-tone": Qe.value.get(e.item.member),
54570
54604
  style: j(rt(t.start, t.seen, !0)),
54571
54605
  onMouseenter: (n) => pt(n, e, {
@@ -54576,9 +54610,9 @@ var c1 = {
54576
54610
  kind: "segment",
54577
54611
  ...t
54578
54612
  })
54579
- }, null, 46, B1), t.end > t.seen ? (U(), W("i", {
54613
+ }, null, 46, U1), t.end > t.seen ? (U(), W("i", {
54580
54614
  key: 0,
54581
- class: M(["wf-bar wf-seg is-tail", `is-${I(F$)[t.phase]}`]),
54615
+ class: M(["wf-bar wf-seg is-tail", `is-${I(R$)[t.phase]}`]),
54582
54616
  "data-tone": Qe.value.get(e.item.member),
54583
54617
  style: j(rt(t.seen, t.end)),
54584
54618
  onMouseenter: (n) => pt(n, e, {
@@ -54589,7 +54623,7 @@ var c1 = {
54589
54623
  kind: "segment",
54590
54624
  ...t
54591
54625
  })
54592
- }, null, 46, V1)) : Y("", !0)], 64))), 128)),
54626
+ }, null, 46, W1)) : Y("", !0)], 64))), 128)),
54593
54627
  (U(!0), W(H, null, B(e.notes, (t) => (U(), W("button", {
54594
54628
  key: `note-${t.index}`,
54595
54629
  type: "button",
@@ -54612,15 +54646,15 @@ var c1 = {
54612
54646
  end: t.at
54613
54647
  }),
54614
54648
  onBlur: (t) => ht(e)
54615
- }, null, 44, H1))), 128))
54616
- ])], 40, P1),
54617
- K("span", U1, [
54618
- J(P(I(z$)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54649
+ }, null, 44, G1))), 128))
54650
+ ])], 40, L1),
54651
+ K("span", K1, [
54652
+ J(P(I(H$)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54619
54653
  e.item.state === "done" ? Y("", !0) : (U(), W("small", {
54620
54654
  key: 0,
54621
54655
  class: M(`is-${e.item.state}`)
54622
- }, P(I(I$)[e.item.state]), 3)),
54623
- e.truncated ? (U(), W("small", W1, "明细已截断")) : Y("", !0)
54656
+ }, P(I(z$)[e.item.state]), 3)),
54657
+ e.truncated ? (U(), W("small", q1, "明细已截断")) : Y("", !0)
54624
54658
  ])
54625
54659
  ], 2))), 128))
54626
54660
  ], 38),
@@ -54634,9 +54668,9 @@ var c1 = {
54634
54668
  left: `${b.value.left}px`
54635
54669
  })
54636
54670
  }, [
54637
- K("header", K1, [
54671
+ K("header", Y1, [
54638
54672
  K("strong", null, P(I(i).display_name(Je.value.item.member)), 1),
54639
- K("small", null, P(it(Je.value)) + " · " + P(I(I$)[Je.value.item.state]) + " · " + P(I(z$)(Je.value.end - Je.value.start)), 1),
54673
+ K("small", null, P(it(Je.value)) + " · " + P(I(z$)[Je.value.item.state]) + " · " + P(I(H$)(Je.value.end - Je.value.start)), 1),
54640
54674
  K("button", {
54641
54675
  type: "button",
54642
54676
  class: "wf-card-close",
@@ -54645,47 +54679,47 @@ var c1 = {
54645
54679
  }, [q(o, { name: "i-lucide-x" })])
54646
54680
  ]),
54647
54681
  K("dl", null, [
54648
- Je.value.item.task ? (U(), W("div", q1, [t[21] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(Je.value.item.task), 1), Je.value.item.task_id ? (U(), W("button", {
54682
+ Je.value.item.task ? (U(), W("div", X1, [t[21] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(Je.value.item.task), 1), Je.value.item.task_id ? (U(), W("button", {
54649
54683
  key: 0,
54650
54684
  type: "button",
54651
54685
  class: "subtle-link",
54652
54686
  onClick: t[5] ||= (e) => n("detail", Je.value.item.task_id)
54653
54687
  }, "#" + P(Je.value.item.task_id), 1)) : Y("", !0)])])) : Y("", !0),
54654
- Je.value.item.state === "failed" ? (U(), W("div", J1, [t[22] ||= K("dt", null, "失败原因", -1), K("dd", Y1, P(Je.value.item.reason || "执行失败"), 1)])) : Je.value.item.result || Je.value.item.answer_id ? (U(), W("div", X1, [t[23] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(Je.value.item.result), 1), Je.value.item.answer_id ? (U(), W("button", {
54688
+ Je.value.item.state === "failed" ? (U(), W("div", Z1, [t[22] ||= K("dt", null, "失败原因", -1), K("dd", Q1, P(Je.value.item.reason || "执行失败"), 1)])) : Je.value.item.result || Je.value.item.answer_id ? (U(), W("div", $1, [t[23] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(Je.value.item.result), 1), Je.value.item.answer_id ? (U(), W("button", {
54655
54689
  key: 0,
54656
54690
  type: "button",
54657
54691
  class: "subtle-link",
54658
54692
  onClick: t[6] ||= (e) => n("detail", Je.value.item.answer_id)
54659
54693
  }, "在消息中查看 #" + P(Je.value.item.answer_id), 1)) : Y("", !0)])])) : Y("", !0),
54660
- Je.value.item.changes ? (U(), W("div", Z1, [t[24] ||= K("dt", null, "改动", -1), K("dd", null, P(Je.value.item.changes) + " 个文件", 1)])) : Y("", !0)
54694
+ Je.value.item.changes ? (U(), W("div", e0, [t[24] ||= K("dt", null, "改动", -1), K("dd", null, P(Je.value.item.changes) + " 个文件", 1)])) : Y("", !0)
54661
54695
  ]),
54662
- Ye.value.length ? (U(), W("ol", Q1, [(U(!0), W(H, null, B(Ye.value, (e) => (U(), W("li", {
54696
+ Ye.value.length ? (U(), W("ol", t0, [(U(!0), W(H, null, B(Ye.value, (e) => (U(), W("li", {
54663
54697
  key: `${e.kind}-${e.at}-${e.phase || ""}`,
54664
54698
  class: M(`log-${e.kind}`)
54665
54699
  }, [K("time", null, P(lt(e.at)), 1), e.kind === "phase" ? (U(), W(H, { key: 0 }, [K("i", {
54666
- class: M(["wf-swatch", `is-${I(F$)[e.phase]}`]),
54700
+ class: M(["wf-swatch", `is-${I(R$)[e.phase]}`]),
54667
54701
  "data-tone": Qe.value.get(Je.value.item.member),
54668
54702
  "aria-hidden": "true"
54669
- }, null, 10, $1), K("span", null, [
54670
- J(P(I(P$)[e.phase]), 1),
54703
+ }, null, 10, n0), K("span", null, [
54704
+ J(P(I(L$)[e.phase]), 1),
54671
54705
  e.tool ? (U(), W(H, { key: 0 }, [J(" · " + P(e.tool), 1)], 64)) : Y("", !0),
54672
- J(" · " + P(e.live ? "进行中" : I(z$)(e.duration)), 1)
54673
- ])], 64)) : (U(), W("span", e0, P(e.text), 1))], 2))), 128))])) : (U(), W("p", t0, "这次执行没有阶段明细或过程说明。"))
54674
- ], 12, G1)) : Y("", !0),
54675
- me.value === k0 ? (U(), W("div", n0, [...t[25] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", r0, [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 }, [
54706
+ J(" · " + P(e.live ? "进行中" : I(H$)(e.duration)), 1)
54707
+ ])], 64)) : (U(), W("span", r0, P(e.text), 1))], 2))), 128))])) : (U(), W("p", i0, "这次执行没有阶段明细或过程说明。"))
54708
+ ], 12, J1)) : Y("", !0),
54709
+ me.value === M0 ? (U(), W("div", a0, [...t[25] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", o0, [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 }, [
54676
54710
  K("button", {
54677
54711
  type: "button",
54678
54712
  class: "wf-player-button",
54679
54713
  "aria-label": O.playing ? "暂停回放" : "回放这一轮",
54680
54714
  onClick: t[7] ||= (e) => O.playing ? Re() : Ie()
54681
- }, [q(o, { name: O.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, i0),
54715
+ }, [q(o, { name: O.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, s0),
54682
54716
  K("button", {
54683
54717
  type: "button",
54684
54718
  class: "wf-player-button",
54685
54719
  "aria-label": "从头回放",
54686
54720
  disabled: !xe.value,
54687
54721
  onClick: ze
54688
- }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, a0),
54722
+ }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, c0),
54689
54723
  q(r, {
54690
54724
  modelValue: O.speed,
54691
54725
  "onUpdate:modelValue": t[8] ||= (e) => O.speed = e,
@@ -54713,13 +54747,13 @@ var c1 = {
54713
54747
  value: xe.value ? O.position : be.value.duration,
54714
54748
  "aria-label": "回放位置",
54715
54749
  onInput: Be
54716
- }, null, 40, o0),
54717
- K("span", s0, P(I(z$)(xe.value ? O.position : be.value.duration)) + " / " + P(I(z$)(be.value.duration)), 1)
54750
+ }, null, 40, l0),
54751
+ K("span", u0, P(I(H$)(xe.value ? O.position : be.value.duration)) + " / " + P(I(H$)(be.value.duration)), 1)
54718
54752
  ], 64))])),
54719
- Ee.value.folds.length || re.value.executions.length >= re.value.execution_limit ? (U(), W("footer", c0, [Ee.value.folds.length ? (U(), W("span", l0, [t[28] ||= K("i", {
54753
+ Ee.value.folds.length || re.value.executions.length >= re.value.execution_limit ? (U(), W("footer", d0, [Ee.value.folds.length ? (U(), W("span", f0, [t[28] ||= K("i", {
54720
54754
  class: "wf-swatch is-fold",
54721
54755
  "aria-hidden": "true"
54722
- }, null, -1), J("已折叠 " + P(Ee.value.folds.length) + " 段超过 " + P(I(L$) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), re.value.executions.length >= re.value.execution_limit ? (U(), W("span", u0, "只列出最近 " + P(re.value.execution_limit) + " 次讨论执行与 " + P(re.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54756
+ }, null, -1), J("已折叠 " + P(Ee.value.folds.length) + " 段超过 " + P(I(B$) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), re.value.executions.length >= re.value.execution_limit ? (U(), W("span", p0, "只列出最近 " + P(re.value.execution_limit) + " 次讨论执行与 " + P(re.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54723
54757
  ], 512)) : Y("", !0),
54724
54758
  v.value ? (U(), W("div", {
54725
54759
  key: 3,
@@ -54739,66 +54773,66 @@ var c1 = {
54739
54773
  onClick: t[9] ||= (e) => v.value = null
54740
54774
  }, [q(o, { name: "i-lucide-x" })])) : Y("", !0),
54741
54775
  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)]),
54742
- v.value.piece.text ? (U(), W("p", f0, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", p0, P(v.value.row.item.reason), 1)) : Y("", !0),
54743
- _t.value.length ? (U(), W(H, { key: 3 }, [K("small", m0, 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)
54744
- ], 14, d0)) : Y("", !0)
54776
+ v.value.piece.text ? (U(), W("p", h0, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", g0, P(v.value.row.item.reason), 1)) : Y("", !0),
54777
+ _t.value.length ? (U(), W(H, { key: 3 }, [K("small", _0, 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)
54778
+ ], 14, m0)) : Y("", !0)
54745
54779
  ]);
54746
54780
  };
54747
54781
  }
54748
- }, [["__scopeId", "data-v-386108cb"]]), P0 = [
54782
+ }, [["__scopeId", "data-v-386108cb"]]), L0 = [
54749
54783
  "aria-valuemax",
54750
54784
  "aria-valuenow",
54751
54785
  "aria-valuetext"
54752
- ], F0 = { class: "channel-main" }, I0 = { class: "channel-header" }, L0 = { class: "channel-title-icon" }, R0 = { class: "channel-title" }, z0 = { class: "channel-title-copy" }, B0 = ["title"], V0 = {
54786
+ ], R0 = { class: "channel-main" }, z0 = { class: "channel-header" }, B0 = { class: "channel-title-icon" }, V0 = { class: "channel-title" }, H0 = { class: "channel-title-copy" }, U0 = ["title"], W0 = {
54753
54787
  key: 2,
54754
54788
  class: "channel-header-context"
54755
- }, H0 = { class: "channel-header-actions" }, U0 = {
54789
+ }, G0 = { class: "channel-header-actions" }, K0 = {
54756
54790
  key: 0,
54757
54791
  class: "channel-launch-recovery",
54758
54792
  "aria-label": "未完成的创建或启动请求"
54759
- }, W0 = { role: "status" }, G0 = { class: "button-row" }, K0 = {
54793
+ }, q0 = { role: "status" }, J0 = { class: "button-row" }, Y0 = {
54760
54794
  key: 1,
54761
54795
  class: "channel-tabbar"
54762
- }, q0 = { class: "channel-brief-inner" }, J0 = { class: "channel-brief-heading" }, Y0 = ["aria-label", "aria-expanded"], X0 = {
54796
+ }, X0 = { class: "channel-brief-inner" }, Z0 = { class: "channel-brief-heading" }, Q0 = ["aria-label", "aria-expanded"], $0 = {
54763
54797
  key: 0,
54764
54798
  class: "channel-brief-preview"
54765
- }, Z0 = {
54799
+ }, e2 = {
54766
54800
  id: "channel-brief-content",
54767
54801
  class: "channel-brief-content"
54768
- }, Q0 = ["innerHTML"], $0 = { class: "channel-brief-footer" }, e2 = {
54802
+ }, t2 = ["innerHTML"], n2 = { class: "channel-brief-footer" }, r2 = {
54769
54803
  key: 0,
54770
54804
  class: "channel-brief-status"
54771
- }, t2 = { class: "channel-content" }, n2 = {
54805
+ }, i2 = { class: "channel-content" }, a2 = {
54772
54806
  key: 0,
54773
54807
  class: "content-page merged-page",
54774
54808
  role: "tabpanel",
54775
54809
  "aria-label": "房间"
54776
- }, r2 = {
54810
+ }, o2 = {
54777
54811
  key: 1,
54778
54812
  class: "content-page merged-page",
54779
54813
  role: "tabpanel",
54780
54814
  "aria-label": "执行"
54781
- }, i2 = {
54815
+ }, s2 = {
54782
54816
  key: 1,
54783
54817
  class: "channel-empty"
54784
- }, a2 = { class: "merged-page channel-consensus-body" }, o2 = {
54818
+ }, c2 = { class: "merged-page channel-consensus-body" }, l2 = {
54785
54819
  class: "merged-section channel-summary",
54786
54820
  "aria-label": "当前共识"
54787
- }, s2 = { class: "page-heading" }, c2 = { class: "form-footer" }, l2 = { class: "button-row" }, u2 = { class: "consensus-card is-brief" }, d2 = ["innerHTML"], f2 = {
54821
+ }, u2 = { class: "page-heading" }, d2 = { class: "form-footer" }, f2 = { class: "button-row" }, p2 = { class: "consensus-card is-brief" }, m2 = ["innerHTML"], h2 = {
54788
54822
  key: 0,
54789
54823
  class: "consensus-card"
54790
- }, p2 = ["innerHTML"], m2 = {
54824
+ }, g2 = ["innerHTML"], _2 = {
54791
54825
  key: 2,
54792
54826
  class: "fine-print"
54793
- }, h2 = ["aria-valuenow", "aria-valuetext"], g2 = {
54827
+ }, v2 = ["aria-valuenow", "aria-valuetext"], y2 = {
54794
54828
  key: 4,
54795
54829
  id: "channel-member-rail",
54796
54830
  class: "channel-member-rail",
54797
54831
  "aria-label": "当前焦点与讨论进度"
54798
- }, _2 = { class: "channel-rail-board" }, v2 = {
54832
+ }, b2 = { class: "channel-rail-board" }, x2 = {
54799
54833
  key: 1,
54800
54834
  class: "progress-board is-docked"
54801
- }, y2 = "ai-codiscuss-channel-layout", b2 = 220, x2 = 440, S2 = 280, C2 = 16, w2 = 180, T2 = 400, E2 = 248, D2 = 16, O2 = 480, k2 = 1200, A2 = 0, j2 = {
54835
+ }, S2 = "ai-codiscuss-channel-layout", C2 = 220, w2 = 440, T2 = 280, E2 = 16, D2 = 180, O2 = 400, k2 = 248, A2 = 16, j2 = 480, M2 = 1200, N2 = 0, P2 = {
54802
54836
  __name: "ChannelWorkspace",
54803
54837
  setup(e) {
54804
54838
  let { view: t, bridge: n, field: r, act: i, pending: a } = xr("discussion"), o = Z(() => t.value.room), s = /* @__PURE__ */ F(""), c = /* @__PURE__ */ F(null), l = /* @__PURE__ */ F(null), u = /* @__PURE__ */ F(null), d = /* @__PURE__ */ F(!1), f = /* @__PURE__ */ F(!1), p = r("state-input"), m = r("brief-input"), h = r("search-input"), g = [{
@@ -54820,14 +54854,14 @@ var c1 = {
54820
54854
  label: "宽",
54821
54855
  width: 1240
54822
54856
  }
54823
- }, v = je(), y = /* @__PURE__ */ F(v.reading), b = /* @__PURE__ */ F(v.effects), x = /* @__PURE__ */ F(v.rail), S = /* @__PURE__ */ F(v.nav), C = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), w = /* @__PURE__ */ F(v.collapsed), T = /* @__PURE__ */ F(!0), E = /* @__PURE__ */ F(v.rail_collapsed), ee = Z(() => C.value >= k2), D = Z(() => ee.value && !w.value), O = Z(() => t.value.tab === "discussion" && !E.value), te = Z(() => ee.value && t.value.tab === "discussion" ? E.value ? "展开房间概览" : "收起房间概览" : "讨论进度"), ne = Z(() => {
54857
+ }, v = je(), y = /* @__PURE__ */ F(v.reading), b = /* @__PURE__ */ F(v.effects), x = /* @__PURE__ */ F(v.rail), S = /* @__PURE__ */ F(v.nav), C = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), w = /* @__PURE__ */ F(v.collapsed), T = /* @__PURE__ */ F(!0), E = /* @__PURE__ */ F(v.rail_collapsed), ee = Z(() => C.value >= M2), D = Z(() => ee.value && !w.value), O = Z(() => t.value.tab === "discussion" && !E.value), te = Z(() => ee.value && t.value.tab === "discussion" ? E.value ? "展开房间概览" : "收起房间概览" : "讨论进度"), ne = Z(() => {
54824
54858
  let e = document.createElement("template");
54825
54859
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
54826
- }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), ae = null, k = /* @__PURE__ */ F(null), A = /* @__PURE__ */ F(null), oe = Z(() => Math.min(T2, Math.max(w2, C.value - O2 - A2))), se = Z(() => Math.min(S.value, oe.value)), ce = Z(() => ({
54860
+ }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), ae = null, k = /* @__PURE__ */ F(null), A = /* @__PURE__ */ F(null), oe = Z(() => Math.min(O2, Math.max(D2, C.value - j2 - N2))), se = Z(() => Math.min(S.value, oe.value)), ce = Z(() => ({
54827
54861
  "--channel-reading-width": `${_[y.value].width}px`,
54828
54862
  "--channel-rail-width": `${x.value}px`,
54829
54863
  "--channel-topbar-height": `${ie.value}px`,
54830
- "--channel-main-columns": D.value ? `${se.value}px ${A2}px minmax(0, 1fr)` : "minmax(0, 1fr)"
54864
+ "--channel-main-columns": D.value ? `${se.value}px ${N2}px minmax(0, 1fr)` : "minmax(0, 1fr)"
54831
54865
  })), le = Object.entries(_).map(([e, t]) => ({
54832
54866
  value: e,
54833
54867
  label: t.label
@@ -54919,12 +54953,12 @@ var c1 = {
54919
54953
  }
54920
54954
  function je() {
54921
54955
  try {
54922
- let e = JSON.parse(localStorage.getItem(y2)) || {};
54956
+ let e = JSON.parse(localStorage.getItem(S2)) || {};
54923
54957
  return {
54924
54958
  reading: Object.hasOwn(_, e.reading) ? e.reading : "default",
54925
54959
  effects: e.effects === "reduced" ? "reduced" : "full",
54926
- rail: Number.isFinite(e.rail) ? Math.min(x2, Math.max(b2, e.rail)) : S2,
54927
- nav: Number.isFinite(e.nav) ? Math.min(T2, Math.max(w2, e.nav)) : Me(),
54960
+ rail: Number.isFinite(e.rail) ? Math.min(w2, Math.max(C2, e.rail)) : T2,
54961
+ nav: Number.isFinite(e.nav) ? Math.min(O2, Math.max(D2, e.nav)) : Me(),
54928
54962
  collapsed: e.collapsed === !0,
54929
54963
  brief_collapsed: e.brief_collapsed === !0,
54930
54964
  rail_collapsed: e.rail_collapsed === !0
@@ -54933,7 +54967,7 @@ var c1 = {
54933
54967
  return {
54934
54968
  reading: "default",
54935
54969
  effects: "full",
54936
- rail: S2,
54970
+ rail: T2,
54937
54971
  nav: Me(),
54938
54972
  collapsed: !1,
54939
54973
  brief_collapsed: !1,
@@ -54942,11 +54976,11 @@ var c1 = {
54942
54976
  }
54943
54977
  }
54944
54978
  function Me() {
54945
- return typeof window > "u" ? E2 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : E2;
54979
+ return typeof window > "u" ? k2 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : k2;
54946
54980
  }
54947
54981
  function Ne() {
54948
54982
  try {
54949
- localStorage.setItem(y2, JSON.stringify({
54983
+ localStorage.setItem(S2, JSON.stringify({
54950
54984
  reading: y.value,
54951
54985
  effects: b.value,
54952
54986
  rail: x.value,
@@ -54980,19 +55014,19 @@ var c1 = {
54980
55014
  }, e.currentTarget.setPointerCapture(e.pointerId));
54981
55015
  }
54982
55016
  function Be(e) {
54983
- k.value?.pointer === e.pointerId && (x.value = Math.round(Math.min(x2, Math.max(b2, k.value.width + k.value.x - e.clientX))));
55017
+ k.value?.pointer === e.pointerId && (x.value = Math.round(Math.min(w2, Math.max(C2, k.value.width + k.value.x - e.clientX))));
54984
55018
  }
54985
55019
  function Ve(e) {
54986
55020
  k.value?.pointer === e.pointerId && (k.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Ne());
54987
55021
  }
54988
55022
  function He(e) {
54989
55023
  let t = {
54990
- ArrowLeft: x.value + C2,
54991
- ArrowRight: x.value - C2,
54992
- Home: b2,
54993
- End: x2
55024
+ ArrowLeft: x.value + E2,
55025
+ ArrowRight: x.value - E2,
55026
+ Home: C2,
55027
+ End: w2
54994
55028
  };
54995
- Object.hasOwn(t, e.key) && (e.preventDefault(), x.value = Math.min(x2, Math.max(b2, t[e.key])), Ne());
55029
+ Object.hasOwn(t, e.key) && (e.preventDefault(), x.value = Math.min(w2, Math.max(C2, t[e.key])), Ne());
54996
55030
  }
54997
55031
  function Ue(e) {
54998
55032
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), A.value = {
@@ -55002,19 +55036,19 @@ var c1 = {
55002
55036
  }, e.currentTarget.setPointerCapture(e.pointerId));
55003
55037
  }
55004
55038
  function We(e) {
55005
- A.value?.pointer === e.pointerId && (S.value = Math.round(Math.min(oe.value, Math.max(w2, A.value.width + e.clientX - A.value.x))));
55039
+ A.value?.pointer === e.pointerId && (S.value = Math.round(Math.min(oe.value, Math.max(D2, A.value.width + e.clientX - A.value.x))));
55006
55040
  }
55007
55041
  function Ge(e) {
55008
55042
  A.value?.pointer === e.pointerId && (A.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Ne());
55009
55043
  }
55010
55044
  function Ke(e) {
55011
55045
  let t = {
55012
- ArrowLeft: se.value - D2,
55013
- ArrowRight: se.value + D2,
55014
- Home: w2,
55046
+ ArrowLeft: se.value - A2,
55047
+ ArrowRight: se.value + A2,
55048
+ Home: D2,
55015
55049
  End: oe.value
55016
55050
  };
55017
- Object.hasOwn(t, e.key) && (e.preventDefault(), S.value = Math.min(oe.value, Math.max(w2, t[e.key])), Ne());
55051
+ Object.hasOwn(t, e.key) && (e.preventDefault(), S.value = Math.min(oe.value, Math.max(D2, t[e.key])), Ne());
55018
55052
  }
55019
55053
  return (e, r) => {
55020
55054
  let _ = MA, v = RV, S = sA, C = kV, E = PV, ie = jV, ae = DV, fe = wV, je = vV, Me = gV;
@@ -55026,7 +55060,7 @@ var c1 = {
55026
55060
  }]),
55027
55061
  style: j(ce.value)
55028
55062
  }, [
55029
- D.value ? (U(), G(TZ, {
55063
+ D.value ? (U(), G(OZ, {
55030
55064
  key: 0,
55031
55065
  tabs: de,
55032
55066
  onSelect: we,
@@ -55048,7 +55082,7 @@ var c1 = {
55048
55082
  "aria-label": "调整房间栏宽度",
55049
55083
  "aria-orientation": "vertical",
55050
55084
  "aria-controls": "channel-sidebar",
55051
- "aria-valuemin": w2,
55085
+ "aria-valuemin": D2,
55052
55086
  "aria-valuemax": oe.value,
55053
55087
  "aria-valuenow": se.value,
55054
55088
  "aria-valuetext": `${se.value} 像素`,
@@ -55059,13 +55093,13 @@ var c1 = {
55059
55093
  onPointercancel: Ge,
55060
55094
  onLostpointercapture: Ge,
55061
55095
  onKeydown: Ke
55062
- }, null, 40, P0)) : Y("", !0),
55063
- K("main", F0, [K("div", {
55096
+ }, null, 40, L0)) : Y("", !0),
55097
+ K("main", R0, [K("div", {
55064
55098
  ref_key: "topbar",
55065
55099
  ref: re,
55066
55100
  class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
55067
55101
  }, [
55068
- K("header", I0, [
55102
+ K("header", z0, [
55069
55103
  ee.value ? (U(), G(v, {
55070
55104
  key: 0,
55071
55105
  text: w.value ? "展开房间栏" : "收起房间栏"
@@ -55093,8 +55127,8 @@ var c1 = {
55093
55127
  "aria-expanded": d.value,
55094
55128
  onClick: r[2] ||= (e) => d.value = !0
55095
55129
  }, null, 8, ["aria-expanded"])),
55096
- K("span", L0, [q(S, { name: "i-lucide-hash" })]),
55097
- K("div", R0, [K("div", z0, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, B0)]), o.value?.archived ? (U(), G(C, {
55130
+ K("span", B0, [q(S, { name: "i-lucide-hash" })]),
55131
+ K("div", V0, [K("div", H0, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, U0)]), o.value?.archived ? (U(), G(C, {
55098
55132
  key: 0,
55099
55133
  color: "neutral",
55100
55134
  variant: "subtle",
@@ -55103,12 +55137,12 @@ var c1 = {
55103
55137
  default: L(() => [...r[25] ||= [J("已存档", -1)]]),
55104
55138
  _: 1
55105
55139
  })) : Y("", !0)]),
55106
- o.value ? (U(), W("span", V0, [
55140
+ o.value ? (U(), W("span", W0, [
55107
55141
  J(P(de.find((e) => e.value === I(t).tab)?.label), 1),
55108
55142
  r[26] ||= K("span", null, "·", -1),
55109
55143
  J(P(o.value.message_count) + " 条记录", 1)
55110
55144
  ])) : Y("", !0),
55111
- K("div", H0, [I(t).tab === "discussion" ? (U(), W("form", {
55145
+ K("div", G0, [I(t).tab === "discussion" ? (U(), W("form", {
55112
55146
  key: 0,
55113
55147
  class: "channel-search",
55114
55148
  onSubmit: r[5] ||= uu((e) => I(i)("filter", { query: I(h) }), ["prevent"])
@@ -55183,12 +55217,12 @@ var c1 = {
55183
55217
  _: 1
55184
55218
  }, 8, ["text"])
55185
55219
  ]),
55186
- I(t).launch.recoveries.length ? (U(), W("section", U0, [
55220
+ I(t).launch.recoveries.length ? (U(), W("section", K0, [
55187
55221
  r[27] ||= K("h2", null, "继续未完成的请求", -1),
55188
55222
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
55189
55223
  K("strong", null, P(e.title), 1),
55190
- K("p", W0, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
55191
- K("div", G0, [
55224
+ K("p", q0, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
55225
+ K("div", J0, [
55192
55226
  q(_, {
55193
55227
  label: e.direct ? "继续创建房间" : "继续本次启动",
55194
55228
  size: "sm",
@@ -55221,7 +55255,7 @@ var c1 = {
55221
55255
  ]))), 128)),
55222
55256
  r[28] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
55223
55257
  ])) : Y("", !0),
55224
- o.value ? (U(), W("div", K0, [q(ie, {
55258
+ o.value ? (U(), W("div", Y0, [q(ie, {
55225
55259
  modelValue: ue.value,
55226
55260
  "onUpdate:modelValue": r[7] ||= (e) => ue.value = e,
55227
55261
  items: de,
@@ -55236,7 +55270,7 @@ var c1 = {
55236
55270
  key: 2,
55237
55271
  class: M(["channel-host-brief", { "is-collapsed": T.value }]),
55238
55272
  "aria-label": "主持简报"
55239
- }, [K("div", q0, [K("div", J0, [K("button", {
55273
+ }, [K("div", X0, [K("div", Z0, [K("button", {
55240
55274
  type: "button",
55241
55275
  class: "channel-brief-toggle",
55242
55276
  "aria-label": T.value ? "展开主持简报" : "收起主持简报",
@@ -55246,8 +55280,8 @@ var c1 = {
55246
55280
  }, [
55247
55281
  q(S, { name: T.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
55248
55282
  K("strong", null, "主持简报" + P(T.value ? ":" : ""), 1),
55249
- T.value ? (U(), W("span", X0, P(ne.value), 1)) : Y("", !0)
55250
- ], 8, Y0), T.value ? Y("", !0) : (U(), W(H, { key: 0 }, [q(_, {
55283
+ T.value ? (U(), W("span", $0, P(ne.value), 1)) : Y("", !0)
55284
+ ], 8, Q0), T.value ? Y("", !0) : (U(), W(H, { key: 0 }, [q(_, {
55251
55285
  label: "详细共识与讨论记录",
55252
55286
  color: "neutral",
55253
55287
  variant: "link",
@@ -55261,26 +55295,26 @@ var c1 = {
55261
55295
  size: "xs",
55262
55296
  class: "channel-brief-update",
55263
55297
  onClick: r[9] ||= (e) => _e(!0)
55264
- })], 64))]), vr(K("div", Z0, [K("div", {
55298
+ })], 64))]), vr(K("div", e2, [K("div", {
55265
55299
  class: "channel-brief-text markdown-body",
55266
55300
  innerHTML: o.value.rendered_brief
55267
- }, null, 8, Q0), K("div", $0, [pe.value ? Y("", !0) : (U(), W("span", e2, P(I(n).progress_speaker(o.value)), 1)), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !T.value]])])], 2)) : Y("", !0)
55301
+ }, null, 8, t2), K("div", n2, [pe.value ? Y("", !0) : (U(), W("span", r2, P(I(n).progress_speaker(o.value)), 1)), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !T.value]])])], 2)) : Y("", !0)
55268
55302
  ], 2), o.value ? (U(), W("div", {
55269
55303
  key: 0,
55270
55304
  class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
55271
- }, [K("div", t2, [
55305
+ }, [K("div", i2, [
55272
55306
  vr(q(oK, {
55273
55307
  onDetail: Te,
55274
55308
  onEdit: r[10] ||= (e) => s.value = "edit"
55275
55309
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
55276
- I(t).tab === "overview" ? (U(), W("div", n2, [q(N$), pe.value ? Y("", !0) : (U(), G(TK, {
55310
+ I(t).tab === "overview" ? (U(), W("div", a2, [q(I$), pe.value ? Y("", !0) : (U(), G(TK, {
55277
55311
  key: 0,
55278
55312
  section: "access",
55279
55313
  onOpen: r[11] ||= (e) => s.value = e,
55280
55314
  onDetail: Te
55281
55315
  }))])) : Y("", !0),
55282
- I(t).tab === "timeline" ? (U(), W("div", r2, [q(N0, { onDetail: Te })])) : Y("", !0)
55283
- ])], 2)) : (U(), W("div", i2, [
55316
+ I(t).tab === "timeline" ? (U(), W("div", o2, [q(I0, { onDetail: Te })])) : Y("", !0)
55317
+ ])], 2)) : (U(), W("div", s2, [
55284
55318
  q(S, { name: "i-lucide-hash" }),
55285
55319
  r[29] ||= K("h2", null, "新建一个协作房间", -1),
55286
55320
  r[30] ||= K("p", null, "邀请 AI 一起协作,随时 @ 提问;需要时开启讨论,保留所有人的观点。", -1),
@@ -55302,14 +55336,14 @@ var c1 = {
55302
55336
  body: "dialog-body"
55303
55337
  }
55304
55338
  }, {
55305
- body: L(() => [K("div", a2, [
55339
+ body: L(() => [K("div", c2, [
55306
55340
  pe.value ? Y("", !0) : (U(), G(TK, {
55307
55341
  key: 0,
55308
55342
  section: "host",
55309
55343
  onOpen: ve,
55310
55344
  onDetail: ye
55311
55345
  })),
55312
- K("section", o2, [K("div", s2, [r[31] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), ge.value ? Y("", !0) : (U(), G(_, {
55346
+ K("section", l2, [K("div", u2, [r[31] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), ge.value ? Y("", !0) : (U(), G(_, {
55313
55347
  key: 0,
55314
55348
  icon: "i-lucide-pencil",
55315
55349
  label: "编辑",
@@ -55353,7 +55387,7 @@ var c1 = {
55353
55387
  }, null, 8, ["modelValue"])]),
55354
55388
  _: 1
55355
55389
  }),
55356
- K("div", c2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", l2, [q(_, {
55390
+ K("div", d2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", f2, [q(_, {
55357
55391
  label: "取消",
55358
55392
  color: "neutral",
55359
55393
  variant: "ghost",
@@ -55366,7 +55400,7 @@ var c1 = {
55366
55400
  class: "channel-primary-button",
55367
55401
  loading: I(a) === "save_context"
55368
55402
  }, null, 8, ["loading"])])])
55369
- ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", u2, [K("h3", null, [r[32] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55403
+ ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", p2, [K("h3", null, [r[32] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55370
55404
  key: 0,
55371
55405
  type: "button",
55372
55406
  class: "subtle-link",
@@ -55374,7 +55408,7 @@ var c1 = {
55374
55408
  }, "整理至 #" + P(o.value.state_until), 1)) : Y("", !0)]), K("div", {
55375
55409
  class: "markdown-body",
55376
55410
  innerHTML: o.value.rendered_brief
55377
- }, null, 8, d2)]), N.value ? (U(), W("details", f2, [K("summary", null, [
55411
+ }, null, 8, m2)]), N.value ? (U(), W("details", h2, [K("summary", null, [
55378
55412
  r[33] ||= K("h3", null, "详细共识与进度", -1),
55379
55413
  r[34] ||= K("span", null, "依据、已处理内容、未决问题与下一步", -1),
55380
55414
  q(S, {
@@ -55384,8 +55418,8 @@ var c1 = {
55384
55418
  ]), K("div", {
55385
55419
  class: "markdown-body consensus-state",
55386
55420
  innerHTML: N.value
55387
- }, null, 8, p2)])) : Y("", !0)], 64)) : (U(), W("p", m2, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55388
- q(o$, { onDetail: ye })
55421
+ }, null, 8, g2)])) : Y("", !0)], 64)) : (U(), W("p", _2, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55422
+ q(l$, { onDetail: ye })
55389
55423
  ])]),
55390
55424
  _: 1
55391
55425
  }, 8, ["open"])) : Y("", !0),
@@ -55397,8 +55431,8 @@ var c1 = {
55397
55431
  "aria-label": "调整右侧栏宽度",
55398
55432
  "aria-orientation": "vertical",
55399
55433
  "aria-controls": "channel-member-rail",
55400
- "aria-valuemin": b2,
55401
- "aria-valuemax": x2,
55434
+ "aria-valuemin": C2,
55435
+ "aria-valuemax": w2,
55402
55436
  "aria-valuenow": x.value,
55403
55437
  "aria-valuetext": `${x.value} 像素`,
55404
55438
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -55408,8 +55442,8 @@ var c1 = {
55408
55442
  onPointercancel: Ve,
55409
55443
  onLostpointercapture: Ve,
55410
55444
  onKeydown: He
55411
- }, null, 40, h2)) : Y("", !0),
55412
- O.value ? (U(), W("aside", g2, [K("section", _2, [o.value ? (U(), G(GQ, { key: 0 })) : (U(), W("div", v2, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55445
+ }, null, 40, v2)) : Y("", !0),
55446
+ O.value ? (U(), W("aside", y2, [K("section", b2, [o.value ? (U(), G(JQ, { key: 0 })) : (U(), W("div", x2, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55413
55447
  q(Me, {
55414
55448
  open: d.value,
55415
55449
  "onUpdate:open": r[20] ||= (e) => d.value = e,
@@ -55420,7 +55454,7 @@ var c1 = {
55420
55454
  content: "channel-navigation-drawer"
55421
55455
  }
55422
55456
  }, {
55423
- content: L(() => [q(TZ, {
55457
+ content: L(() => [q(OZ, {
55424
55458
  tabs: de,
55425
55459
  onSelect: we,
55426
55460
  onManage: xe,
@@ -55450,10 +55484,10 @@ var c1 = {
55450
55484
  body: "progress-drawer-body"
55451
55485
  }
55452
55486
  }, {
55453
- body: L(() => [q(GQ)]),
55487
+ body: L(() => [q(JQ)]),
55454
55488
  _: 1
55455
55489
  }, 8, ["open", "description"])) : Y("", !0),
55456
- q(LX, {
55490
+ q(BX, {
55457
55491
  modelValue: s.value,
55458
55492
  "onUpdate:modelValue": r[22] ||= (e) => s.value = e,
55459
55493
  "reading-width": y.value,
@@ -55477,7 +55511,7 @@ var c1 = {
55477
55511
  ], 6);
55478
55512
  };
55479
55513
  }
55480
- }, M2 = 120, N2 = {
55514
+ }, F2 = 120, I2 = {
55481
55515
  __name: "App",
55482
55516
  setup(e) {
55483
55517
  let t = {
@@ -55504,7 +55538,7 @@ var c1 = {
55504
55538
  n.add({
55505
55539
  ...t[e] || t.info,
55506
55540
  id: `${e}:${i}`,
55507
- title: i.length > M2 ? `${i.slice(0, 119)}…` : i
55541
+ title: i.length > F2 ? `${i.slice(0, 119)}…` : i
55508
55542
  });
55509
55543
  }
55510
55544
  return document.addEventListener("discuss:notice", r), ta(() => document.removeEventListener("discuss:notice", r)), (e, t) => {
@@ -55518,7 +55552,7 @@ var c1 = {
55518
55552
  }
55519
55553
  }, {
55520
55554
  default: L(() => [q(I(Iz), { "reduced-motion": "never" }, {
55521
- default: L(() => [q(j2)]),
55555
+ default: L(() => [q(P2)]),
55522
55556
  _: 1
55523
55557
  }, 8, ["reduced-motion"])]),
55524
55558
  _: 1
@@ -55528,8 +55562,8 @@ var c1 = {
55528
55562
  };
55529
55563
  //#endregion
55530
55564
  //#region frontend/main.js
55531
- function P2() {
55532
- bu(N2).use(ph).mount("#modern-root");
55565
+ function L2() {
55566
+ bu(I2).use(ph).mount("#modern-root");
55533
55567
  }
55534
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", P2) : P2();
55568
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", L2) : L2();
55535
55569
  //#endregion