ai_co_discuss 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web/modern.js CHANGED
@@ -47655,7 +47655,9 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
47655
47655
  });
47656
47656
  function Ne() {
47657
47657
  if (Ee.value) return a.save_expert_preset(n.name);
47658
- Oe.value = `${a.platform_of(n.name)}-`, De.value = !0;
47658
+ let e = new Set(a.expert_presets().map((e) => e.name)), t = a.platform_of(n.name), r = 1;
47659
+ for (; e.has(a.preset_identity(n.name, `${t}-${r}`));) r += 1;
47660
+ Oe.value = `${t}-${r}`, De.value = !0;
47659
47661
  }
47660
47662
  async function Pe() {
47661
47663
  Ae.value || (await a.save_expert_preset(n.name, ke.value), De.value = !1);
@@ -47866,7 +47868,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
47866
47868
  inert: !f.value,
47867
47869
  "aria-hidden": !f.value
47868
47870
  }, [K("div", cJ, [
47869
- K("div", lJ, [K("strong", null, [J(P(I(a).member_label(e.name)), 1), K("span", null, "设置" + P(se.value ? " · 不访问项目" : ""), 1)]), K("span", uJ, [
47871
+ K("div", lJ, [K("strong", null, [J(P(I(a).member_label(e.name)), 1), n[19] ||= K("span", null, "设置", -1)]), K("span", uJ, [
47870
47872
  K("button", {
47871
47873
  type: "button",
47872
47874
  class: j(["expert-card-back-tool", { "is-set": Se.value }]),
@@ -47908,7 +47910,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
47908
47910
  role: y.value.state === "error" ? "alert" : "status",
47909
47911
  class: "expert-card-check"
47910
47912
  }, P(y.value.message), 9, pJ)) : Y("", !0),
47911
- g.value && m.value.length > 1 ? (U(), W("div", mJ, [n[19] ||= K("span", null, "接入", -1), q(S, {
47913
+ g.value && m.value.length > 1 ? (U(), W("div", mJ, [n[20] ||= K("span", null, "接入", -1), q(S, {
47912
47914
  "model-value": p.value.adapter || "",
47913
47915
  items: m.value,
47914
47916
  placeholder: "选择 API / App / CLI",
@@ -47937,7 +47939,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
47937
47939
  "aria-label",
47938
47940
  "onUpdate:modelValue"
47939
47941
  ])]))), 128)),
47940
- k.value ? (U(), W("div", hJ, [n[20] ||= K("span", null, "项目", -1), K("div", {
47942
+ k.value ? (U(), W("div", hJ, [n[21] ||= K("span", null, "项目", -1), K("div", {
47941
47943
  class: "expert-card-modes",
47942
47944
  role: "radiogroup",
47943
47945
  "aria-label": `${e.name} 的项目文件权限`
@@ -47953,7 +47955,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
47953
47955
  key: 3,
47954
47956
  name: e.name
47955
47957
  }, null, 8, ["name"])) : te.value && !ge.value.length ? (U(), W(H, { key: 4 }, [
47956
- K("div", vJ, [n[21] ||= K("span", null, "模型", -1), q(S, {
47958
+ K("div", vJ, [n[22] ||= K("span", null, "模型", -1), q(S, {
47957
47959
  "model-value": p.value.model || "__default__",
47958
47960
  items: O.value.items,
47959
47961
  title: O.value.source,
@@ -48020,7 +48022,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48020
48022
  class: "expert-card-flip is-done",
48021
48023
  "aria-label": `保存并返回 ${e.name} 角色卡片`,
48022
48024
  onClick: n[10] ||= (e) => be(!1)
48023
- }, [q(d, { name: "i-lucide-check" }), n[22] ||= J("完成", -1)], 8, OJ)
48025
+ }, [q(d, { name: "i-lucide-check" }), n[23] ||= J("完成", -1)], 8, OJ)
48024
48026
  ])], 8, sJ)) : Y("", !0)]),
48025
48027
  _: 1
48026
48028
  }, 8, ["style"]),
@@ -48107,7 +48109,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48107
48109
  ], 42, Rq);
48108
48110
  };
48109
48111
  }
48110
- }, [["__scopeId", "data-v-ba27f504"]]), NJ = {
48112
+ }, [["__scopeId", "data-v-765548c6"]]), NJ = {
48111
48113
  key: 0,
48112
48114
  class: "project-field"
48113
48115
  }, PJ = ["disabled"], FJ = {
@@ -48467,6 +48469,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48467
48469
  "disabled",
48468
48470
  "title",
48469
48471
  "aria-label",
48472
+ "aria-pressed",
48470
48473
  "onClick"
48471
48474
  ], ZJ = /*#__PURE__*/ YH({
48472
48475
  __name: "RosterAdd",
@@ -48499,9 +48502,11 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48499
48502
  "aria-hidden": "true"
48500
48503
  }, null, -1), n[1] ||= K("span", { class: "roster-add-label" }, "预设", -1)], 64)) : Y("", !0), K("button", {
48501
48504
  type: "button",
48505
+ class: j({ "is-selected": e.selected }),
48502
48506
  disabled: e.disabled,
48503
48507
  title: e.title,
48504
48508
  "aria-label": e.aria_label,
48509
+ "aria-pressed": e.selected === void 0 ? void 0 : e.selected,
48505
48510
  onClick: (t) => r("add", e.value)
48506
48511
  }, [
48507
48512
  q(a, {
@@ -48517,18 +48522,18 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48517
48522
  "class"
48518
48523
  ]),
48519
48524
  J(P(e.name), 1),
48520
- q(o, { name: "i-lucide-plus" })
48521
- ], 8, XJ)], 64))), 128))], 8, YJ);
48525
+ q(o, { name: e.selected ? "i-lucide-check" : "i-lucide-plus" }, null, 8, ["name"])
48526
+ ], 10, XJ)], 64))), 128))], 8, YJ);
48522
48527
  };
48523
48528
  }
48524
- }, [["__scopeId", "data-v-480b43ee"]]), QJ = { class: "scheduler-settings" }, $J = { class: "scheduler-title" }, eY = { class: "scheduler-description" }, tY = {
48529
+ }, [["__scopeId", "data-v-b682fa87"]]), QJ = { class: "scheduler-settings" }, $J = { class: "scheduler-title" }, eY = { class: "scheduler-description" }, tY = { class: "scheduler-cards" }, nY = {
48525
48530
  key: 0,
48526
- class: "scheduler-cards"
48527
- }, nY = { class: "scheduler-identity" }, rY = { class: "scheduler-facts" }, iY = ["title"], aY = { class: "scheduler-flip" }, oY = { class: "scheduler-tools" }, sY = ["aria-label"], cY = { class: "scheduler-back" }, lY = { class: "scheduler-heading" }, uY = { class: "scheduler-field" }, dY = { class: "scheduler-field" }, fY = {
48531
+ class: "scheduler-slot"
48532
+ }, rY = { class: "scheduler-identity" }, iY = { class: "scheduler-facts" }, aY = ["title"], oY = { class: "scheduler-flip" }, sY = { class: "scheduler-tools" }, cY = ["aria-label"], lY = { class: "scheduler-back" }, uY = { class: "scheduler-heading" }, dY = { class: "scheduler-field" }, fY = { class: "scheduler-field" }, pY = {
48528
48533
  key: 0,
48529
48534
  role: "alert",
48530
48535
  class: "scheduler-error"
48531
- }, pY = ["role"], mY = { class: "scheduler-flip-actions" }, hY = "••••••••••••", gY = /*#__PURE__*/ YH({
48536
+ }, mY = ["role"], hY = { class: "scheduler-flip-actions" }, gY = "••••••••••••", _Y = /*#__PURE__*/ YH({
48532
48537
  __name: "SchedulerSettings",
48533
48538
  props: {
48534
48539
  free: {
@@ -48553,15 +48558,19 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48553
48558
  icon: "/icons/openai.svg",
48554
48559
  style: "codex"
48555
48560
  }
48556
- }, c = Z(() => !!i.value.enabled && !t.blocker), l = /* @__PURE__ */ F(null), u = Z(() => a.value.map(({ value: e, label: n }) => ({
48557
- value: e,
48558
- name: n,
48559
- initials: n.slice(0, 2),
48560
- ...s[e],
48561
- disabled: !!t.blocker || c.value,
48562
- title: c.value ? "只能添加一个决策模型,先移出当前的" : n,
48563
- aria_label: `添加决策模型 ${n}`
48564
- }))), d = /* @__PURE__ */ F(""), f = /* @__PURE__ */ F(!1), p = /* @__PURE__ */ F(!1), m = /* @__PURE__ */ F(""), h = /* @__PURE__ */ F(!1), g = null;
48561
+ }, c = Z(() => !!i.value.enabled && !t.blocker), l = /* @__PURE__ */ F(null), u = Z(() => a.value.map(({ value: e, label: n }) => {
48562
+ let r = c.value && i.value.provider === e;
48563
+ return {
48564
+ value: e,
48565
+ name: n,
48566
+ initials: n.slice(0, 2),
48567
+ ...s[e],
48568
+ disabled: !!t.blocker,
48569
+ selected: r,
48570
+ title: r ? "当前决策模型" : c.value ? `替换为 ${n}` : n,
48571
+ aria_label: c.value && !r ? `替换决策模型为 ${n}` : `添加决策模型 ${n}`
48572
+ };
48573
+ })), d = /* @__PURE__ */ F(""), f = /* @__PURE__ */ F(!1), p = /* @__PURE__ */ F(!1), m = /* @__PURE__ */ F(""), h = /* @__PURE__ */ F(!1), g = null;
48565
48574
  function _() {
48566
48575
  let { model: e, api_key_ref: t } = i.value;
48567
48576
  g = {
@@ -48574,7 +48583,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48574
48583
  g = null, d.value = "", m.value = "", h.value = !1;
48575
48584
  }
48576
48585
  function y(e) {
48577
- r.write_scheduler("provider", e), r.write_scheduler("enabled", !0);
48586
+ c.value && i.value.provider === e || (h.value = !1, g = null, r.write_scheduler("provider", e), r.write_scheduler("enabled", !0));
48578
48587
  }
48579
48588
  function b() {
48580
48589
  r.write_scheduler("enabled", !1), Qn(() => l.value?.focus_first());
@@ -48639,7 +48648,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48639
48648
  }
48640
48649
  }
48641
48650
  return (t, a) => {
48642
- let g = WV, E = pA, D = sA, O = MA, te = oq, ne = YV;
48651
+ let g = WV, E = sA, D = pA, O = MA, te = oq, ne = YV;
48643
48652
  return U(), W("div", QJ, [
48644
48653
  K("div", null, [K("p", $J, [
48645
48654
  a[5] ||= J("智能调度", -1),
@@ -48660,8 +48669,11 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48660
48669
  items: u.value,
48661
48670
  onAdd: y
48662
48671
  }, null, 8, ["items"]),
48663
- c.value ? (U(), W("div", tY, [K("div", { class: j(["scheduler-card", { "is-editing": h.value }]) }, [h.value ? (U(), W(H, { key: 1 }, [K("div", cY, [
48664
- K("div", lY, [K("strong", null, [J(P(x.value), 1), a[11] ||= K("span", null, "设置", -1)]), q(O, {
48672
+ K("div", tY, [c.value ? (U(), W("div", {
48673
+ key: 1,
48674
+ class: j(["scheduler-card", { "is-editing": h.value }])
48675
+ }, [h.value ? (U(), W(H, { key: 1 }, [K("div", lY, [
48676
+ K("div", uY, [K("strong", null, [J(P(x.value), 1), a[13] ||= K("span", null, "设置", -1)]), q(O, {
48665
48677
  icon: "i-lucide-zap",
48666
48678
  "aria-label": "检查智能调度配置",
48667
48679
  title: "检查配置:向决策模型发送一道极短的是非题,核对供应商、模型与密钥",
@@ -48676,7 +48688,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48676
48688
  "loading",
48677
48689
  "disabled"
48678
48690
  ])]),
48679
- K("div", uY, [a[12] ||= K("span", null, "模型", -1), q(te, {
48691
+ K("div", dY, [a[14] ||= K("span", null, "模型", -1), q(te, {
48680
48692
  mode: "autocomplete",
48681
48693
  "ignore-filter": "",
48682
48694
  "model-value": i.value.model || "",
@@ -48688,7 +48700,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48688
48700
  class: "w-full",
48689
48701
  "onUpdate:modelValue": a[0] ||= (e) => I(r).write_scheduler("model", e)
48690
48702
  }, null, 8, ["model-value", "items"])]),
48691
- K("div", dY, [a[13] ||= K("span", null, "密钥", -1), q(ne, {
48703
+ K("div", fY, [a[15] ||= K("span", null, "密钥", -1), q(ne, {
48692
48704
  modelValue: d.value,
48693
48705
  "onUpdate:modelValue": a[2] ||= (e) => d.value = e,
48694
48706
  type: "text",
@@ -48696,7 +48708,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48696
48708
  spellcheck: "false",
48697
48709
  "data-1p-ignore": "",
48698
48710
  "data-lpignore": "true",
48699
- placeholder: i.value.api_key_ref ? hY : "填写所选供应商的 API Key",
48711
+ placeholder: i.value.api_key_ref ? gY : "填写所选供应商的 API Key",
48700
48712
  title: i.value.api_key_ref && !d.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
48701
48713
  "aria-label": "智能调度 API Key",
48702
48714
  size: "xs",
@@ -48731,14 +48743,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48731
48743
  "loading",
48732
48744
  "ui"
48733
48745
  ])]),
48734
- m.value ? (U(), W("p", fY, P(m.value), 1)) : Y("", !0),
48746
+ m.value ? (U(), W("p", pY, P(m.value), 1)) : Y("", !0),
48735
48747
  C.value.message ? (U(), W("p", {
48736
48748
  key: 1,
48737
48749
  role: C.value.state === "error" ? "alert" : "status",
48738
48750
  class: j(C.value.state === "error" ? "scheduler-error" : "scheduler-ok")
48739
- }, P(C.value.message), 11, pY)) : Y("", !0),
48740
- a[14] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10~20 条消息发给所选供应商;密钥只存本机。", -1)
48741
- ]), K("span", mY, [K("button", {
48751
+ }, P(C.value.message), 11, mY)) : Y("", !0),
48752
+ a[16] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10~20 条消息发给所选供应商;密钥只存本机。", -1)
48753
+ ]), K("span", hY, [K("button", {
48742
48754
  type: "button",
48743
48755
  class: "scheduler-flip is-cancel",
48744
48756
  "aria-label": "放弃决策模型的修改",
@@ -48748,14 +48760,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48748
48760
  class: "scheduler-flip is-done",
48749
48761
  "aria-label": "完成并返回决策模型卡片",
48750
48762
  onClick: a[3] ||= (e) => h.value = !1
48751
- }, [q(D, { name: "i-lucide-check" }), a[15] ||= J("完成", -1)])])], 64)) : (U(), W(H, { key: 0 }, [K("button", {
48763
+ }, [q(E, { name: "i-lucide-check" }), a[17] ||= J("完成", -1)])])], 64)) : (U(), W(H, { key: 0 }, [K("button", {
48752
48764
  type: "button",
48753
48765
  class: "scheduler-open",
48754
48766
  "aria-label": "设置智能调度的决策模型",
48755
48767
  title: "点击设置",
48756
48768
  onClick: _
48757
48769
  }, [
48758
- K("span", nY, [q(E, {
48770
+ K("span", rY, [q(D, {
48759
48771
  src: s[i.value.provider]?.icon,
48760
48772
  text: x.value.slice(0, 2),
48761
48773
  alt: x.value,
@@ -48767,40 +48779,44 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48767
48779
  "alt",
48768
48780
  "class"
48769
48781
  ]), K("strong", null, P(x.value), 1)]),
48770
- K("dl", rY, [K("div", null, [a[8] ||= K("dt", null, "状态", -1), K("dd", { class: j(`is-${S.value.tone}`) }, [a[7] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(S.value.text), 1)], 2)]), K("div", null, [a[9] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, iY)])]),
48771
- K("span", aY, [q(D, { name: "i-lucide-settings-2" }), a[10] ||= J("设置", -1)])
48772
- ]), K("span", oY, [K("button", {
48782
+ K("dl", iY, [K("div", null, [a[10] ||= K("dt", null, "状态", -1), K("dd", { class: j(`is-${S.value.tone}`) }, [a[9] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(S.value.text), 1)], 2)]), K("div", null, [a[11] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, aY)])]),
48783
+ K("span", oY, [q(E, { name: "i-lucide-settings-2" }), a[12] ||= J("设置", -1)])
48784
+ ]), K("span", sY, [K("button", {
48773
48785
  type: "button",
48774
48786
  "aria-label": `移出决策模型 ${x.value}`,
48775
48787
  title: "移出",
48776
48788
  onClick: b
48777
- }, [q(D, { name: "i-lucide-x" })], 8, sY)])], 64))], 2)])) : Y("", !0)
48789
+ }, [q(E, { name: "i-lucide-x" })], 8, cY)])], 64))], 2)) : (U(), W("div", nY, [
48790
+ q(E, { name: "i-lucide-zap" }),
48791
+ a[7] ||= K("strong", null, "决策模型槽位", -1),
48792
+ a[8] ||= K("span", null, "只能放一个;从上方添加,再点其他会替换", -1)
48793
+ ]))])
48778
48794
  ]);
48779
48795
  };
48780
48796
  }
48781
- }, [["__scopeId", "data-v-5a7b8cc6"]]), _Y = { class: "create-discussion" }, vY = {
48797
+ }, [["__scopeId", "data-v-3324f536"]]), vY = { class: "create-discussion" }, yY = {
48782
48798
  key: 0,
48783
48799
  class: "create-connect",
48784
48800
  role: "status"
48785
- }, yY = { class: "create-connect-command" }, bY = {
48801
+ }, bY = { class: "create-connect-command" }, xY = {
48786
48802
  key: 1,
48787
48803
  class: "channel-create-location"
48788
- }, xY = { class: "create-section" }, SY = { class: "create-section" }, CY = {
48804
+ }, SY = { class: "create-section" }, CY = { class: "create-section" }, wY = {
48789
48805
  key: 0,
48790
48806
  class: "create-experts",
48791
48807
  role: "group",
48792
48808
  "aria-label": "参与的 AI"
48793
- }, wY = {
48809
+ }, TY = {
48794
48810
  key: 1,
48795
48811
  class: "create-experts-empty"
48796
- }, TY = {
48812
+ }, EY = {
48797
48813
  key: 2,
48798
48814
  class: "fine-print create-hint create-host-hint"
48799
- }, EY = { class: "create-section" }, DY = { class: "create-advanced" }, OY = { class: "create-footer" }, kY = {
48815
+ }, DY = { class: "create-section" }, OY = { class: "create-advanced" }, kY = { class: "create-footer" }, AY = {
48800
48816
  key: 0,
48801
48817
  role: "alert",
48802
48818
  class: "create-error"
48803
- }, AY = { class: "create-footer-row" }, jY = ["title"], MY = "new-expert-modes", NY = 3e3, PY = "preset:", FY = /*#__PURE__*/ YH({
48819
+ }, jY = { class: "create-footer-row" }, MY = ["title"], NY = "new-expert-modes", PY = 3e3, FY = "preset:", IY = /*#__PURE__*/ YH({
48804
48820
  __name: "CreateDiscussion",
48805
48821
  props: { targetFolder: {
48806
48822
  type: Object,
@@ -48808,7 +48824,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48808
48824
  } },
48809
48825
  emits: ["submit", "cancel"],
48810
48826
  setup(e, { emit: t }) {
48811
- 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[MY] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
48827
+ 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[NY] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
48812
48828
  R(m, (e) => {
48813
48829
  p.value = [...p.value.filter((t) => e.includes(t)), ...e.filter((e) => !p.value.includes(e))];
48814
48830
  }, { immediate: !0 });
@@ -48832,14 +48848,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48832
48848
  Qi(() => {
48833
48849
  se(), ae = window.setInterval(() => {
48834
48850
  ie.value && !document.hidden && o("check_launch_connection");
48835
- }, NY);
48851
+ }, PY);
48836
48852
  }), ta(() => window.clearInterval(ae));
48837
48853
  function ce(e) {
48838
48854
  i.write_create_discussion(e), Qn(se);
48839
48855
  }
48840
48856
  let le = (e) => i.launch_clients[e]?.some((e) => e.value !== "api"), ue = (e) => d.value && e === v.value ? [] : ["cli", "manual"];
48841
48857
  function de(e, t) {
48842
- i.write_expert(MY, e, t), se();
48858
+ i.write_expert(NY, e, t), se();
48843
48859
  }
48844
48860
  function fe(e) {
48845
48861
  if (C.value) return ee(e) ? {
@@ -48869,7 +48885,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48869
48885
  title: pe(e),
48870
48886
  aria_label: `添加 ${e} 实例`
48871
48887
  })), ...r.value && i.expert_presets().map((e, t) => ({
48872
- value: PY + e.name,
48888
+ value: FY + e.name,
48873
48889
  name: e.label || e.name,
48874
48890
  ...i.identities[i.platform_of(e.name)],
48875
48891
  separated: t === 0,
@@ -48877,11 +48893,11 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48877
48893
  aria_label: `添加预设 ${e.label || e.name}`
48878
48894
  }))]);
48879
48895
  function me(e) {
48880
- if (e.startsWith(PY)) {
48896
+ if (e.startsWith(FY)) {
48881
48897
  let t = i.expert_presets().find((t) => t.name === e.slice(7));
48882
- return t && i.add_preset(MY, t, "cli"), se();
48898
+ return t && i.add_preset(NY, t, "cli"), se();
48883
48899
  }
48884
- i.launch_clients[e] && (i.default_launch_entry(e), g(e) ? i.add_instance(MY, e, "cli") : de(e, "cli"), se());
48900
+ i.launch_clients[e] && (i.default_launch_entry(e), g(e) ? i.add_instance(NY, e, "cli") : de(e, "cli"), se());
48885
48901
  }
48886
48902
  function he(e) {
48887
48903
  de(e, ""), Qn(() => _.value?.focus_first());
@@ -48903,20 +48919,20 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48903
48919
  });
48904
48920
  return (t, s) => {
48905
48921
  let c = sA, p = MA, m = YV, g = zV, x = FK, T = HV;
48906
- return U(), W("div", _Y, [K("form", {
48922
+ return U(), W("div", vY, [K("form", {
48907
48923
  id: "create-discussion-form",
48908
48924
  class: "create-scroll dialog-form",
48909
48925
  onSubmit: uu(ge, ["prevent"])
48910
48926
  }, [
48911
- ie.value ? (U(), W("div", vY, [K("p", null, [q(c, { name: "i-lucide-plug-zap" }), s[10] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", yY, [K("code", null, P(I(r).launch.connect_command), 1), q(p, {
48927
+ ie.value ? (U(), W("div", yY, [K("p", null, [q(c, { name: "i-lucide-plug-zap" }), s[10] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", bY, [K("code", null, P(I(r).launch.connect_command), 1), q(p, {
48912
48928
  icon: "i-lucide-copy",
48913
48929
  "aria-label": "复制本机连接命令",
48914
48930
  variant: "ghost",
48915
48931
  color: "neutral",
48916
48932
  onClick: s[0] ||= (e) => I(o)("copy", I(r).launch.connect_command)
48917
48933
  })])])) : Y("", !0),
48918
- e.targetFolder?.id ? (U(), W("p", bY, [q(c, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48919
- K("section", xY, [
48934
+ e.targetFolder?.id ? (U(), W("p", xY, [q(c, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48935
+ K("section", SY, [
48920
48936
  s[11] ||= K("h3", null, [K("span", null, "1"), J("这次做什么")], -1),
48921
48937
  q(g, {
48922
48938
  label: "话题名称",
@@ -48942,7 +48958,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48942
48958
  _: 1
48943
48959
  }, 8, ["description"])
48944
48960
  ]),
48945
- K("section", SY, [
48961
+ K("section", CY, [
48946
48962
  s[12] ||= K("h3", null, [K("span", null, "2"), J("谁来参与")], -1),
48947
48963
  q(ZJ, {
48948
48964
  ref_key: "library",
@@ -48951,7 +48967,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48951
48967
  items: A.value,
48952
48968
  onAdd: me
48953
48969
  }, null, 8, ["items"]),
48954
- h.value.length ? (U(), W("div", CY, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(MJ, {
48970
+ h.value.length ? (U(), W("div", wY, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(MJ, {
48955
48971
  key: e,
48956
48972
  name: e,
48957
48973
  mode: f.value[e],
@@ -48973,14 +48989,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
48973
48989
  "onHost",
48974
48990
  "onRemove",
48975
48991
  "onMode"
48976
- ]))), 128))])) : (U(), W("p", wY, "请至少添加一位成员。同一平台可添加多位,各自独立会话。")),
48977
- h.value.length ? (U(), W("div", TY, [q(c, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48978
- q(gY, {
48992
+ ]))), 128))])) : (U(), W("p", TY, "请至少添加一位成员。同一平台可添加多位,各自独立会话。")),
48993
+ h.value.length ? (U(), W("div", EY, [q(c, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48994
+ q(_Y, {
48979
48995
  free: !0,
48980
48996
  blocker: ne.value
48981
48997
  }, null, 8, ["blocker"])
48982
48998
  ]),
48983
- K("section", EY, [
48999
+ K("section", DY, [
48984
49000
  s[13] ||= K("h3", null, [K("span", null, "3"), J("讨论(可选)")], -1),
48985
49001
  q(x, {
48986
49002
  "model-value": d.value,
@@ -49026,7 +49042,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49026
49042
  "execution_minutes"
49027
49043
  ])], 64)) : Y("", !0)
49028
49044
  ]),
49029
- K("details", DY, [K("summary", null, [
49045
+ K("details", OY, [K("summary", null, [
49030
49046
  q(c, {
49031
49047
  name: "i-lucide-chevron-right",
49032
49048
  class: "create-advanced-icon"
@@ -49040,7 +49056,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49040
49056
  default: L(() => [...s[15] ||= [J("建房后可在房间页修改。", -1)]]),
49041
49057
  _: 1
49042
49058
  }, 8, ["model-value"])])
49043
- ], 32), K("footer", OY, [E.value && I(r).launch.error ? (U(), W("p", kY, P(I(r).launch.error), 1)) : Y("", !0), K("div", AY, [
49059
+ ], 32), K("footer", kY, [E.value && I(r).launch.error ? (U(), W("p", AY, P(I(r).launch.error), 1)) : Y("", !0), K("div", jY, [
49044
49060
  K("span", {
49045
49061
  class: j(["create-summary", { "is-blocked": oe.value }]),
49046
49062
  title: oe.value || _e.value,
@@ -49048,7 +49064,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49048
49064
  }, [oe.value ? (U(), G(c, {
49049
49065
  key: 0,
49050
49066
  name: "i-lucide-circle-alert"
49051
- })) : Y("", !0), J(P(oe.value ? `还差:${oe.value}` : h.value.length || d.value ? _e.value : ""), 1)], 10, jY),
49067
+ })) : Y("", !0), J(P(oe.value ? `还差:${oe.value}` : h.value.length || d.value ? _e.value : ""), 1)], 10, MY),
49052
49068
  q(p, {
49053
49069
  label: "取消",
49054
49070
  color: "neutral",
@@ -49072,46 +49088,46 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49072
49088
  ])])]);
49073
49089
  };
49074
49090
  }
49075
- }, [["__scopeId", "data-v-4da10016"]]), IY = {
49091
+ }, [["__scopeId", "data-v-4da10016"]]), LY = {
49076
49092
  class: "account-settings",
49077
49093
  "aria-labelledby": "account-heading"
49078
- }, LY = {
49094
+ }, RY = {
49079
49095
  key: 0,
49080
49096
  class: "fine-print",
49081
49097
  role: "status"
49082
- }, RY = ["aria-label"], zY = { class: "fine-print account-intro" }, BY = {
49098
+ }, zY = ["aria-label"], BY = { class: "fine-print account-intro" }, VY = {
49083
49099
  key: 0,
49084
49100
  class: "account-message is-error",
49085
49101
  role: "status"
49086
- }, VY = {
49087
- key: 1,
49088
- class: "fine-print"
49089
49102
  }, HY = {
49090
49103
  key: 1,
49091
49104
  class: "fine-print"
49092
49105
  }, UY = {
49106
+ key: 1,
49107
+ class: "fine-print"
49108
+ }, WY = {
49093
49109
  key: 2,
49094
49110
  class: "account-message is-error",
49095
49111
  role: "alert"
49096
- }, WY = {
49112
+ }, GY = {
49097
49113
  key: 3,
49098
49114
  class: "account-message",
49099
49115
  role: "status"
49100
- }, GY = { class: "account-actions" }, KY = {
49116
+ }, KY = { class: "account-actions" }, qY = {
49101
49117
  key: 2,
49102
49118
  class: "account-profile"
49103
- }, qY = { class: "account-identity" }, JY = { class: "account-avatar-actions" }, YY = { class: "account-name-row" }, XY = {
49119
+ }, JY = { class: "account-identity" }, YY = { class: "account-avatar-actions" }, XY = { class: "account-name-row" }, ZY = {
49104
49120
  key: 0,
49105
49121
  class: "account-message is-error",
49106
49122
  role: "alert"
49107
- }, ZY = {
49123
+ }, QY = {
49108
49124
  key: 1,
49109
49125
  class: "account-message",
49110
49126
  role: "status"
49111
- }, QY = {
49127
+ }, $Y = {
49112
49128
  key: 2,
49113
49129
  class: "account-signout account-actions"
49114
- }, $Y = {
49130
+ }, eX = {
49115
49131
  __name: "AccountSettings",
49116
49132
  setup(e) {
49117
49133
  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({
@@ -49179,13 +49195,13 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49179
49195
  }
49180
49196
  return (e, t) => {
49181
49197
  let p = YV, y = zV, b = MA, x = pA;
49182
- return U(), W("section", IY, [t[9] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", LY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
49198
+ return U(), W("section", LY, [t[9] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", RY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
49183
49199
  key: 1,
49184
49200
  class: "dialog-form account-form",
49185
49201
  "aria-label": a.value === "register" ? "设置管理员账号" : "登录管理员账号",
49186
49202
  onSubmit: uu(m, ["prevent"])
49187
49203
  }, [
49188
- K("p", zY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
49204
+ K("p", BY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
49189
49205
  q(y, {
49190
49206
  label: "用户名",
49191
49207
  description: a.value === "register" ? "1–30 个字符,也是公开显示的名称" : void 0,
@@ -49252,24 +49268,24 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49252
49268
  }, null, 8, ["modelValue", "disabled"])]),
49253
49269
  _: 1
49254
49270
  }),
49255
- f.value ? (U(), W("p", BY, [...t[6] ||= [
49271
+ f.value ? (U(), W("p", VY, [...t[6] ||= [
49256
49272
  J("尚无可用的注册令牌。请在部署网站的电脑上运行 ", -1),
49257
49273
  K("code", null, "codiscuss token", -1),
49258
49274
  J(",再刷新本页;本地版也可设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启。", -1)
49259
- ]])) : (U(), W("p", VY, [...t[7] ||= [
49275
+ ]])) : (U(), W("p", HY, [...t[7] ||= [
49260
49276
  J("首个注册者需要令牌,防止他人抢注:在部署网站的电脑上运行 ", -1),
49261
49277
  K("code", null, "codiscuss token", -1),
49262
49278
  J(" 获取(一次性);本地版也可用服务端启动日志里的安装令牌。在已连接本机服务的电脑上注册时,账号与密码会保存到 ~/.codiscuss。忘记密码:本地版运行 ", -1),
49263
49279
  K("code", null, "python server.py --reset-admin", -1),
49264
49280
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
49265
49281
  ]]))
49266
- ], 64)) : (U(), W("p", HY, [...t[8] ||= [
49282
+ ], 64)) : (U(), W("p", UY, [...t[8] ||= [
49267
49283
  J("忘记密码:本地版运行 ", -1),
49268
49284
  K("code", null, "python server.py --reset-admin", -1),
49269
49285
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
49270
49286
  ]])),
49271
- s.auth.error ? (U(), W("p", UY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", WY, P(s.auth.notice), 1)) : Y("", !0),
49272
- K("div", GY, [q(b, {
49287
+ s.auth.error ? (U(), W("p", WY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", GY, P(s.auth.notice), 1)) : Y("", !0),
49288
+ K("div", KY, [q(b, {
49273
49289
  type: "submit",
49274
49290
  class: "channel-primary-button",
49275
49291
  label: a.value === "register" ? "创建并登录" : "登录",
@@ -49280,13 +49296,13 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49280
49296
  "loading",
49281
49297
  "disabled"
49282
49298
  ])])
49283
- ], 40, RY)) : (U(), W("div", KY, [
49284
- K("div", qY, [q(x, {
49299
+ ], 40, zY)) : (U(), W("div", qY, [
49300
+ K("div", JY, [q(x, {
49285
49301
  src: I(n).identities.用户.icon,
49286
49302
  alt: `${I(n).display_name("用户")} 的头像`,
49287
49303
  size: "lg",
49288
49304
  class: "channel-avatar user account-avatar"
49289
- }, null, 8, ["src", "alt"]), K("div", JY, [
49305
+ }, null, 8, ["src", "alt"]), K("div", YY, [
49290
49306
  K("input", {
49291
49307
  ref_key: "avatar_input",
49292
49308
  ref: u,
@@ -49324,7 +49340,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49324
49340
  label: "显示名称",
49325
49341
  description: "即用户名,对所有访客可见"
49326
49342
  }, {
49327
- default: L(() => [K("div", YY, [q(p, {
49343
+ default: L(() => [K("div", XY, [q(p, {
49328
49344
  modelValue: l.value,
49329
49345
  "onUpdate:modelValue": t[5] ||= (e) => l.value = e,
49330
49346
  autocomplete: "username",
@@ -49342,8 +49358,8 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49342
49358
  }, null, 8, ["loading", "disabled"])])]),
49343
49359
  _: 1
49344
49360
  })], 32),
49345
- s.profile.error ? (U(), W("p", XY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", ZY, P(s.profile.notice), 1)) : Y("", !0),
49346
- r.value.local ? Y("", !0) : (U(), W("div", QY, [q(b, {
49361
+ s.profile.error ? (U(), W("p", ZY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", QY, P(s.profile.notice), 1)) : Y("", !0),
49362
+ r.value.local ? Y("", !0) : (U(), W("div", $Y, [q(b, {
49347
49363
  label: "退出登录",
49348
49364
  icon: "i-lucide-log-out",
49349
49365
  color: "neutral",
@@ -49356,68 +49372,68 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49356
49372
  ]))]);
49357
49373
  };
49358
49374
  }
49359
- }, eX = {
49375
+ }, tX = {
49360
49376
  key: 0,
49361
49377
  class: "channel-archive-manager"
49362
- }, tX = { class: "channel-archive-toolbar" }, nX = {
49378
+ }, nX = { class: "channel-archive-toolbar" }, rX = {
49363
49379
  key: 0,
49364
49380
  class: "channel-archive-confirm channel-archive-bulk",
49365
49381
  role: "alert"
49366
- }, rX = {
49382
+ }, iX = {
49367
49383
  key: 1,
49368
49384
  role: "alert",
49369
49385
  class: "channel-directory-error"
49370
- }, iX = { class: "channel-archive-results" }, aX = {
49386
+ }, aX = { class: "channel-archive-results" }, oX = {
49371
49387
  key: 0,
49372
49388
  class: "channel-archive-list",
49373
49389
  "aria-label": "已存档房间列表"
49374
- }, oX = { class: "channel-archive-row" }, sX = { class: "channel-archive-info" }, cX = [
49390
+ }, sX = { class: "channel-archive-row" }, cX = { class: "channel-archive-info" }, lX = [
49375
49391
  "title",
49376
49392
  "disabled",
49377
49393
  "onClick"
49378
- ], lX = { key: 0 }, uX = ["datetime"], dX = { class: "channel-archive-actions" }, fX = {
49394
+ ], uX = { key: 0 }, dX = ["datetime"], fX = { class: "channel-archive-actions" }, pX = {
49379
49395
  key: 0,
49380
49396
  class: "channel-archive-confirm channel-archive-bulk",
49381
49397
  role: "alert"
49382
- }, pX = {
49398
+ }, mX = {
49383
49399
  key: 1,
49384
49400
  class: "channel-archive-empty"
49385
- }, mX = { class: "fine-print" }, hX = {
49401
+ }, hX = { class: "fine-print" }, gX = {
49386
49402
  key: 0,
49387
49403
  class: "fine-print"
49388
- }, gX = { class: "dialog-actions" }, _X = { class: "fine-print" }, vX = { class: "dialog-actions" }, yX = { class: "dialog-actions" }, bX = { class: "channel-management-target" }, xX = {
49404
+ }, _X = { class: "dialog-actions" }, vX = { class: "fine-print" }, yX = { class: "dialog-actions" }, bX = { class: "dialog-actions" }, xX = { class: "channel-management-target" }, SX = {
49389
49405
  key: 0,
49390
49406
  class: "fine-print"
49391
- }, SX = {
49407
+ }, CX = {
49392
49408
  key: 1,
49393
49409
  class: "fine-print"
49394
- }, CX = {
49410
+ }, wX = {
49395
49411
  key: 2,
49396
49412
  class: "fine-print"
49397
- }, wX = { class: "dialog-actions" }, TX = { key: 5 }, EX = { class: "theme-choices" }, DX = ["aria-pressed", "onClick"], OX = { class: "theme-check" }, kX = { class: "channel-reading-setting" }, AX = {
49413
+ }, TX = { class: "dialog-actions" }, EX = { key: 5 }, DX = { class: "theme-choices" }, OX = ["aria-pressed", "onClick"], kX = { class: "theme-check" }, AX = { class: "channel-reading-setting" }, jX = {
49398
49414
  class: "channel-reading-options",
49399
49415
  role: "group",
49400
49416
  "aria-labelledby": "channel-reading-label"
49401
- }, jX = { class: "channel-reading-setting" }, MX = {
49417
+ }, MX = { class: "channel-reading-setting" }, NX = {
49402
49418
  class: "channel-reading-options channel-effect-options",
49403
49419
  role: "group",
49404
49420
  "aria-labelledby": "channel-effects-label"
49405
- }, NX = { class: "advanced-content" }, PX = {
49421
+ }, PX = { class: "advanced-content" }, FX = {
49406
49422
  key: 0,
49407
49423
  class: "fine-print"
49408
- }, FX = { class: "advanced-content" }, IX = { class: "expert-fields" }, LX = { class: "dialog-actions" }, RX = { class: "dialog-actions" }, zX = {
49424
+ }, IX = { class: "advanced-content" }, LX = { class: "expert-fields" }, RX = { class: "dialog-actions" }, zX = { class: "dialog-actions" }, BX = {
49409
49425
  key: 9,
49410
49426
  class: "original-message"
49411
- }, BX = {
49427
+ }, VX = {
49412
49428
  key: 0,
49413
49429
  role: "alert"
49414
- }, VX = { class: "original-meta" }, HX = { class: "fine-print" }, UX = {
49430
+ }, HX = { class: "original-meta" }, UX = { class: "fine-print" }, WX = {
49415
49431
  key: 0,
49416
49432
  class: "channel-answer-summary"
49417
- }, WX = { class: "message-prose" }, GX = { class: "message-prose" }, KX = ["innerHTML"], qX = {
49433
+ }, GX = { class: "message-prose" }, KX = { class: "message-prose" }, qX = ["innerHTML"], JX = {
49418
49434
  key: 2,
49419
49435
  class: "fine-print"
49420
- }, JX = "topic-expert-modes", YX = {
49436
+ }, YX = "topic-expert-modes", XX = {
49421
49437
  __name: "WorkspaceDialogs",
49422
49438
  props: /*@__PURE__*/ Fa({
49423
49439
  detailId: {
@@ -49709,8 +49725,8 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49709
49725
  } : void 0,
49710
49726
  "onAfter:leave": xe
49711
49727
  }, {
49712
- body: L(() => [a.value === "archives" ? (U(), W("section", eX, [
49713
- K("div", tX, [
49728
+ body: L(() => [a.value === "archives" ? (U(), W("section", tX, [
49729
+ K("div", nX, [
49714
49730
  q(x, {
49715
49731
  modelValue: h.value,
49716
49732
  "onUpdate:modelValue": c[0] ||= (e) => h.value = e,
@@ -49739,7 +49755,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49739
49755
  }
49740
49756
  }, null, 8, ["label", "disabled"])
49741
49757
  ]),
49742
- b.value && v.value.length ? (U(), W("div", nX, [
49758
+ b.value && v.value.length ? (U(), W("div", rX, [
49743
49759
  K("span", null, "将永久删除当前列表中的 " + P(v.value.length) + " 个房间及其全部记录,无法撤销。", 1),
49744
49760
  q(fe, {
49745
49761
  label: "取消",
@@ -49755,20 +49771,20 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49755
49771
  onClick: E
49756
49772
  })
49757
49773
  ])) : Y("", !0),
49758
- I(o).directory_error ? (U(), W("p", rX, P(I(o).directory_error), 1)) : Y("", !0),
49759
- K("div", iX, [v.value.length ? (U(), W("ul", aX, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
49774
+ I(o).directory_error ? (U(), W("p", iX, P(I(o).directory_error), 1)) : Y("", !0),
49775
+ K("div", aX, [v.value.length ? (U(), W("ul", oX, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
49760
49776
  key: e.id,
49761
49777
  class: "channel-archive-item"
49762
- }, [K("div", oX, [K("div", sX, [K("button", {
49778
+ }, [K("div", sX, [K("div", cX, [K("button", {
49763
49779
  class: "channel-archive-title",
49764
49780
  title: e.title,
49765
49781
  disabled: !!I(u),
49766
49782
  onClick: (t) => T(e)
49767
- }, P(e.title), 9, cX), K("small", null, [e.created_at ? (U(), W("span", lX, [
49783
+ }, P(e.title), 9, lX), K("small", null, [e.created_at ? (U(), W("span", uX, [
49768
49784
  c[28] ||= J("创建于 ", -1),
49769
- K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, uX),
49785
+ K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, dX),
49770
49786
  c[29] ||= J(" · ", -1)
49771
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", dX, [q(fe, {
49787
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", fX, [q(fe, {
49772
49788
  "aria-label": `彻底删除 ${e.title}`,
49773
49789
  title: "彻底删除",
49774
49790
  icon: "i-lucide-trash-2",
@@ -49800,7 +49816,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49800
49816
  "aria-label",
49801
49817
  "disabled",
49802
49818
  "onClick"
49803
- ])])]), y.value === e.id ? (U(), W("div", fX, [
49819
+ ])])]), y.value === e.id ? (U(), W("div", pX, [
49804
49820
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
49805
49821
  q(fe, {
49806
49822
  label: "取消",
@@ -49816,15 +49832,15 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49816
49832
  disabled: w(e),
49817
49833
  onClick: ee
49818
49834
  }, null, 8, ["disabled"])
49819
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", pX, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
49835
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", mX, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
49820
49836
  ])) : a.value === "delete-folder" ? (U(), W("form", {
49821
49837
  key: 1,
49822
49838
  class: "dialog-form",
49823
49839
  onSubmit: c[7] ||= uu((e) => ae(!1), ["prevent"])
49824
49840
  }, [
49825
- K("p", mX, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
49826
- ie.value.length ? (U(), W("p", hX, "也可以连同其中的 " + P(ie.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
49827
- K("div", gX, [
49841
+ K("p", hX, "仅移除「" + P(e.targetFolder?.name) + "」时,房间变为未分组,所有消息和存档状态都会保留。", 1),
49842
+ ie.value.length ? (U(), W("p", gX, "也可以连同其中的 " + P(ie.value.length) + " 个房间一起永久删除,无法撤销。", 1)) : Y("", !0),
49843
+ K("div", _X, [
49828
49844
  q(fe, {
49829
49845
  label: "取消",
49830
49846
  color: "neutral",
@@ -49849,7 +49865,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49849
49865
  key: 2,
49850
49866
  class: "dialog-form",
49851
49867
  onSubmit: uu(oe, ["prevent"])
49852
- }, [K("p", _X, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(ie.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", vX, [q(fe, {
49868
+ }, [K("p", vX, "存档「" + P(e.targetFolder?.name) + "」中的 " + P(ie.value.length) + " 个房间,文件夹保留。存档后可在侧栏「已存档」中查阅与恢复;尚未收束的讨论会暂停。", 1), K("div", yX, [q(fe, {
49853
49869
  label: "取消",
49854
49870
  color: "neutral",
49855
49871
  variant: "ghost",
@@ -49879,7 +49895,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49879
49895
  "modelValue",
49880
49896
  "aria-label",
49881
49897
  "readonly"
49882
- ]), K("div", yX, [q(fe, {
49898
+ ]), K("div", bX, [q(fe, {
49883
49899
  label: "取消",
49884
49900
  color: "neutral",
49885
49901
  variant: "ghost",
@@ -49904,10 +49920,10 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49904
49920
  class: "dialog-form",
49905
49921
  onSubmit: uu(ne, ["prevent"])
49906
49922
  }, [
49907
- K("p", bX, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49908
- a.value === "archive" ? (U(), W("p", xX, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49909
- a.value === "restore" ? (U(), W("p", SX, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49910
- a.value === "delete" ? (U(), W("p", CX, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49923
+ K("p", xX, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49924
+ a.value === "archive" ? (U(), W("p", SX, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49925
+ a.value === "restore" ? (U(), W("p", CX, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49926
+ a.value === "delete" ? (U(), W("p", wX, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49911
49927
  a.value === "rename" ? (U(), G(pe, {
49912
49928
  key: 3,
49913
49929
  label: "房间名称",
@@ -49924,7 +49940,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49924
49940
  }, null, 8, ["modelValue"])]),
49925
49941
  _: 1
49926
49942
  })) : Y("", !0),
49927
- K("div", wX, [q(fe, {
49943
+ K("div", TX, [q(fe, {
49928
49944
  label: "取消",
49929
49945
  color: "neutral",
49930
49946
  variant: "ghost",
@@ -49941,10 +49957,10 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49941
49957
  "loading",
49942
49958
  "disabled"
49943
49959
  ])])
49944
- ], 32)) : a.value === "settings" ? (U(), W("div", TX, [
49945
- q($Y),
49960
+ ], 32)) : a.value === "settings" ? (U(), W("div", EX, [
49961
+ q(eX),
49946
49962
  c[34] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
49947
- K("div", EX, [(U(), W(H, null, B(_e, (e) => K("button", {
49963
+ K("div", DX, [(U(), W(H, null, B(_e, (e) => K("button", {
49948
49964
  key: e.value,
49949
49965
  class: j({ chosen: I(o).theme === e.value }),
49950
49966
  "aria-pressed": I(o).theme === e.value,
@@ -49959,12 +49975,12 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49959
49975
  K("b")
49960
49976
  ], -1)]], 2),
49961
49977
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
49962
- K("span", OX, [I(o).theme === e.value ? (U(), G(ye, {
49978
+ K("span", kX, [I(o).theme === e.value ? (U(), G(ye, {
49963
49979
  key: 0,
49964
49980
  name: "i-lucide-check"
49965
49981
  })) : Y("", !0)])
49966
- ], 10, DX)), 64))]),
49967
- K("section", kX, [c[31] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", AX, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(fe, {
49982
+ ], 10, OX)), 64))]),
49983
+ K("section", AX, [c[31] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", jX, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(fe, {
49968
49984
  key: e.value,
49969
49985
  label: e.label,
49970
49986
  color: "neutral",
@@ -49978,9 +49994,9 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49978
49994
  "aria-pressed",
49979
49995
  "onClick"
49980
49996
  ]))), 128))])]),
49981
- K("section", jX, [
49997
+ K("section", MX, [
49982
49998
  c[32] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
49983
- K("div", MX, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(fe, {
49999
+ K("div", NX, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(fe, {
49984
50000
  key: e.value,
49985
50001
  label: e.label,
49986
50002
  color: "neutral",
@@ -49996,7 +50012,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
49996
50012
  ]))), 128))]),
49997
50013
  c[33] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
49998
50014
  ])
49999
- ])) : a.value === "create" ? (U(), G(FY, {
50015
+ ])) : a.value === "create" ? (U(), G(IY, {
50000
50016
  key: 6,
50001
50017
  "target-folder": e.targetFolder,
50002
50018
  onSubmit: N,
@@ -50054,7 +50070,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50054
50070
  }, null, 8, ["model-value"])]),
50055
50071
  _: 1
50056
50072
  })) : Y("", !0),
50057
- K("section", NX, [
50073
+ K("section", PX, [
50058
50074
  c[35] ||= K("h3", null, "讨论上限", -1),
50059
50075
  q(yU, {
50060
50076
  ref_key: "topic_limits",
@@ -50074,14 +50090,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50074
50090
  "execution",
50075
50091
  "disabled"
50076
50092
  ]),
50077
- de.value ? (U(), W("p", PX, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
50093
+ de.value ? (U(), W("p", FX, "讨论未结束时,上限不可在此修改。")) : Y("", !0)
50078
50094
  ]),
50079
50095
  q(Te, {
50080
50096
  open: le.value,
50081
50097
  "onUpdate:open": c[22] ||= (e) => le.value = e,
50082
50098
  class: "advanced-fields"
50083
50099
  }, {
50084
- content: L(() => [K("div", FX, [
50100
+ content: L(() => [K("div", IX, [
50085
50101
  (U(), W(H, null, B([
50086
50102
  {
50087
50103
  key: "user_request",
@@ -50108,11 +50124,11 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50108
50124
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
50109
50125
  _: 2
50110
50126
  }, 1032, ["label"])), 64)),
50111
- K("div", IX, [(U(!0), W(H, null, B(I(k), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
50112
- "model-value": I(o).experts[JX]?.[e] || "none",
50127
+ K("div", LX, [(U(!0), W(H, null, B(I(k), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
50128
+ "model-value": I(o).experts[YX]?.[e] || "none",
50113
50129
  items: ce,
50114
50130
  "aria-label": `${e} 参与方式`,
50115
- "onUpdate:modelValue": (t) => I(s).write_expert(JX, e, t === "none" ? "" : t)
50131
+ "onUpdate:modelValue": (t) => I(s).write_expert(YX, e, t === "none" ? "" : t)
50116
50132
  }, null, 8, [
50117
50133
  "model-value",
50118
50134
  "aria-label",
@@ -50130,7 +50146,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50130
50146
  }, null, 8, ["trailing-icon"])]),
50131
50147
  _: 1
50132
50148
  }, 8, ["open"]),
50133
- K("div", LX, [q(fe, {
50149
+ K("div", RX, [q(fe, {
50134
50150
  label: "取消",
50135
50151
  color: "neutral",
50136
50152
  variant: "ghost",
@@ -50174,7 +50190,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50174
50190
  _: 1
50175
50191
  }),
50176
50192
  c[37] ||= K("p", { class: "fine-print" }, "创建后为待通知状态;由主持人实际联系专家。", -1),
50177
- K("div", RX, [q(fe, {
50193
+ K("div", zX, [q(fe, {
50178
50194
  label: "取消",
50179
50195
  variant: "ghost",
50180
50196
  color: "neutral",
@@ -50185,8 +50201,8 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50185
50201
  label: "创建发言安排",
50186
50202
  loading: I(u) === "schedule"
50187
50203
  }, null, 8, ["loading"])])
50188
- ], 32)) : a.value === "message" ? (U(), W("div", zX, [me.value ? (U(), W("p", BX, P(me.value), 1)) : A.value ? (U(), W(H, { key: 1 }, [
50189
- K("div", VX, [
50204
+ ], 32)) : a.value === "message" ? (U(), W("div", BX, [me.value ? (U(), W("p", VX, P(me.value), 1)) : A.value ? (U(), W(H, { key: 1 }, [
50205
+ K("div", HX, [
50190
50206
  K("strong", null, P(I(s).display_name(A.value.author)), 1),
50191
50207
  K("span", null, "#" + P(A.value.id), 1),
50192
50208
  q(Ee, {
@@ -50197,14 +50213,14 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50197
50213
  _: 1
50198
50214
  })
50199
50215
  ]),
50200
- K("p", HX, P(I(s).provenance(A.value)) + " · " + P(new Date(A.value.created_at).toLocaleString("zh-CN")), 1),
50201
- A.value.summary ? (U(), W("section", UX, [K("small", null, "回答摘要 · " + P(I(s).display_name(A.value.summary_by)), 1), K("p", WX, P(A.value.summary), 1)])) : Y("", !0),
50202
- K("p", GX, P(A.value.text), 1),
50216
+ K("p", UX, P(I(s).provenance(A.value)) + " · " + P(new Date(A.value.created_at).toLocaleString("zh-CN")), 1),
50217
+ A.value.summary ? (U(), W("section", WX, [K("small", null, "回答摘要 · " + P(I(s).display_name(A.value.summary_by)), 1), K("p", GX, P(A.value.summary), 1)])) : Y("", !0),
50218
+ K("p", KX, P(A.value.text), 1),
50203
50219
  A.value.attachments?.length ? (U(), W("div", {
50204
50220
  key: 1,
50205
50221
  onClick: be,
50206
50222
  innerHTML: I(s).attachment_markup(A.value.attachments)
50207
- }, null, 8, KX)) : Y("", !0),
50223
+ }, null, 8, qX)) : Y("", !0),
50208
50224
  A.value.reply_to ? (U(), G(fe, {
50209
50225
  key: 2,
50210
50226
  label: `查看被回复的原文 #${A.value.reply_to}`,
@@ -50214,7 +50230,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50214
50230
  class: "channel-surface-button",
50215
50231
  onClick: Se
50216
50232
  }, null, 8, ["label"])) : Y("", !0)
50217
- ], 64)) : (U(), W("p", qX, "正在读取原文…"))])) : Y("", !0)]),
50233
+ ], 64)) : (U(), W("p", JX, "正在读取原文…"))])) : Y("", !0)]),
50218
50234
  _: 1
50219
50235
  }, 8, [
50220
50236
  "open",
@@ -50225,7 +50241,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50225
50241
  ]);
50226
50242
  };
50227
50243
  }
50228
- }, XX = {
50244
+ }, ZX = {
50229
50245
  __name: "ContextMenuContent",
50230
50246
  props: {
50231
50247
  items: {
@@ -50520,7 +50536,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50520
50536
  "disabled",
50521
50537
  "text-value",
50522
50538
  "class"
50523
- ]), q(XX, X({
50539
+ ]), q(ZX, X({
50524
50540
  sub: "",
50525
50541
  class: r.ui?.content,
50526
50542
  ui: e.ui,
@@ -50631,7 +50647,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50631
50647
  _: 3
50632
50648
  }, 16)], 64));
50633
50649
  }
50634
- }, ZX = {
50650
+ }, QX = {
50635
50651
  slots: {
50636
50652
  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",
50637
50653
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -50819,7 +50835,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50819
50835
  }
50820
50836
  ],
50821
50837
  defaultVariants: { size: "md" }
50822
- }, QX = {
50838
+ }, $X = {
50823
50839
  __name: "ContextMenu",
50824
50840
  props: {
50825
50841
  size: {
@@ -50889,7 +50905,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50889
50905
  emits: ["update:open"],
50890
50906
  setup(e, { emit: t }) {
50891
50907
  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({
50892
- extend: ZX,
50908
+ extend: QX,
50893
50909
  ...o.ui?.contextMenu || {}
50894
50910
  })({ size: a.size }));
50895
50911
  return (e, t) => (U(), G(I(iC), M(Ss(I(s))), {
@@ -50901,7 +50917,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50901
50917
  }, {
50902
50918
  default: L(() => [V(e.$slots, "default")]),
50903
50919
  _: 3
50904
- }, 8, ["disabled", "class"])) : Y("", !0), q(XX, X({
50920
+ }, 8, ["disabled", "class"])) : Y("", !0), q(ZX, X({
50905
50921
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
50906
50922
  ui: u.value,
50907
50923
  "ui-override": I(a).ui
@@ -50931,20 +50947,20 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
50931
50947
  _: 3
50932
50948
  }, 16));
50933
50949
  }
50934
- }, $X = {
50950
+ }, eZ = {
50935
50951
  key: 0,
50936
50952
  class: "channel-import-reading"
50937
- }, eZ = {
50953
+ }, tZ = {
50938
50954
  class: "channel-import-list",
50939
50955
  "aria-live": "polite"
50940
- }, tZ = { class: "channel-import-head" }, nZ = ["title"], rZ = {
50956
+ }, nZ = { class: "channel-import-head" }, rZ = ["title"], iZ = {
50941
50957
  key: 0,
50942
50958
  role: "alert",
50943
50959
  class: "channel-import-error"
50944
- }, iZ = {
50960
+ }, aZ = {
50945
50961
  key: 1,
50946
50962
  class: "channel-import-members"
50947
- }, aZ = ["title"], oZ = { class: "dialog-actions" }, sZ = /*#__PURE__*/ YH({
50963
+ }, oZ = ["title"], sZ = { class: "dialog-actions" }, cZ = /*#__PURE__*/ YH({
50948
50964
  __name: "ImportDialog",
50949
50965
  props: {
50950
50966
  open: {
@@ -51000,21 +51016,21 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51000
51016
  }
51001
51017
  }, {
51002
51018
  body: L(() => [
51003
- !r.value.done && !r.value.rooms.length ? (U(), W("p", $X, "正在读取备份文件…")) : Y("", !0),
51004
- K("ul", eZ, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
51019
+ !r.value.done && !r.value.rooms.length ? (U(), W("p", eZ, "正在读取备份文件…")) : Y("", !0),
51020
+ K("ul", tZ, [(U(!0), W(H, null, B(r.value.rooms, (e, t) => (U(), W("li", {
51005
51021
  key: t,
51006
51022
  class: j(["channel-import-room", `is-${e.status}`])
51007
51023
  }, [
51008
- K("div", tZ, [
51024
+ K("div", nZ, [
51009
51025
  q(o, {
51010
51026
  name: i[e.status].icon,
51011
51027
  class: j({ "animate-spin": e.status === "importing" })
51012
51028
  }, null, 8, ["name", "class"]),
51013
- K("strong", { title: e.title }, P(e.title), 9, nZ),
51029
+ K("strong", { title: e.title }, P(e.title), 9, rZ),
51014
51030
  K("span", null, P(i[e.status].label), 1)
51015
51031
  ]),
51016
- e.error ? (U(), W("p", rZ, P(e.error), 1)) : Y("", !0),
51017
- e.members.length ? (U(), W("ul", iZ, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
51032
+ e.error ? (U(), W("p", iZ, P(e.error), 1)) : Y("", !0),
51033
+ e.members.length ? (U(), W("ul", aZ, [(U(!0), W(H, null, B(e.members, (e) => (U(), W("li", {
51018
51034
  key: e.name,
51019
51035
  class: j({ "is-failed": e.failed })
51020
51036
  }, [
@@ -51023,7 +51039,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51023
51039
  e.resume ? (U(), W("code", {
51024
51040
  key: 0,
51025
51041
  title: `没有开着的原窗口时,在 ${e.resume.cwd} 运行`
51026
- }, P(e.resume.command), 9, aZ)) : Y("", !0)
51042
+ }, P(e.resume.command), 9, oZ)) : Y("", !0)
51027
51043
  ], 2))), 128))])) : Y("", !0),
51028
51044
  (U(!0), W(H, null, B(e.problems, (e) => (U(), W("p", {
51029
51045
  key: e,
@@ -51035,7 +51051,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51035
51051
  role: "alert",
51036
51052
  class: "channel-import-error is-file"
51037
51053
  }, P(e), 1))), 128)),
51038
- K("div", oZ, [q(s, {
51054
+ K("div", sZ, [q(s, {
51039
51055
  label: "完成",
51040
51056
  class: "channel-primary-button",
51041
51057
  disabled: !r.value.done,
@@ -51051,47 +51067,47 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51051
51067
  ]);
51052
51068
  };
51053
51069
  }
51054
- }, [["__scopeId", "data-v-03a2f1dd"]]), cZ = { class: "channel-directory-manager" }, lZ = { class: "channel-directory-heading" }, uZ = ["aria-expanded"], dZ = { class: "channel-directory-actions" }, fZ = {
51070
+ }, [["__scopeId", "data-v-03a2f1dd"]]), lZ = { class: "channel-directory-manager" }, uZ = { class: "channel-directory-heading" }, dZ = ["aria-expanded"], fZ = { class: "channel-directory-actions" }, pZ = {
51055
51071
  "aria-label": "协作房间列表",
51056
51072
  class: "channel-room-list",
51057
51073
  "data-room-directory": ""
51058
- }, pZ = ["data-room-folder", "data-drag-folder"], mZ = [
51074
+ }, mZ = ["data-room-folder", "data-drag-folder"], hZ = [
51059
51075
  "disabled",
51060
51076
  "aria-label",
51061
51077
  "aria-expanded",
51062
51078
  "onKeydown",
51063
51079
  "onClick"
51064
- ], hZ = { class: "channel-folder-name" }, gZ = {
51080
+ ], gZ = { class: "channel-folder-name" }, _Z = {
51065
51081
  class: "channel-directory-count",
51066
51082
  "aria-hidden": "true"
51067
- }, _Z = { class: "channel-folder-actions" }, vZ = ["data-drop-folder"], yZ = {
51083
+ }, vZ = { class: "channel-folder-actions" }, yZ = ["data-drop-folder"], bZ = {
51068
51084
  key: 0,
51069
51085
  class: "channel-directory-empty",
51070
51086
  role: "status"
51071
- }, bZ = ["data-drag-room"], xZ = [
51087
+ }, xZ = ["data-drag-room"], SZ = [
51072
51088
  "aria-label",
51073
51089
  "disabled",
51074
51090
  "onKeydown"
51075
- ], SZ = [
51091
+ ], CZ = [
51076
51092
  "title",
51077
51093
  "aria-label",
51078
51094
  "aria-current",
51079
51095
  "onClick"
51080
- ], CZ = { class: "channel-room-actions" }, wZ = {
51096
+ ], wZ = { class: "channel-room-actions" }, TZ = {
51081
51097
  key: 0,
51082
51098
  class: "channel-directory-empty"
51083
- }, TZ = {
51099
+ }, EZ = {
51084
51100
  key: 0,
51085
51101
  class: "channel-archive-count"
51086
- }, EZ = {
51102
+ }, DZ = {
51087
51103
  key: 0,
51088
51104
  role: "status",
51089
51105
  class: "channel-directory-notice"
51090
- }, DZ = {
51106
+ }, OZ = {
51091
51107
  key: 1,
51092
51108
  role: "alert",
51093
51109
  class: "channel-directory-error"
51094
- }, OZ = {
51110
+ }, kZ = {
51095
51111
  __name: "ChannelDirectory",
51096
51112
  emits: [
51097
51113
  "select",
@@ -51322,8 +51338,8 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51322
51338
  ];
51323
51339
  }
51324
51340
  return (e, t) => {
51325
- let u = MA, m = sA, h = $V, b = CH, x = QX;
51326
- return U(), W("div", cZ, [
51341
+ let u = MA, m = sA, h = $V, b = CH, x = $X;
51342
+ return U(), W("div", lZ, [
51327
51343
  q(u, {
51328
51344
  label: "新建对话",
51329
51345
  icon: "i-lucide-plus",
@@ -51332,12 +51348,12 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51332
51348
  disabled: I(r).directory_pending.includes("create-room"),
51333
51349
  onClick: t[0] ||= (e) => n("create", null)
51334
51350
  }, null, 8, ["disabled"]),
51335
- K("div", lZ, [K("button", {
51351
+ K("div", uZ, [K("button", {
51336
51352
  type: "button",
51337
51353
  class: "channel-section-toggle",
51338
51354
  "aria-expanded": _.value,
51339
51355
  onClick: t[1] ||= (e) => _.value = !_.value
51340
- }, [q(m, { name: _.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[8] ||= J("协作房间", -1)], 8, uZ), K("div", dZ, [
51356
+ }, [q(m, { name: _.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[8] ||= J("协作房间", -1)], 8, dZ), K("div", fZ, [
51341
51357
  q(h, { text: "新建文件夹" }, {
51342
51358
  default: L(() => [q(u, {
51343
51359
  icon: "i-lucide-plus",
@@ -51379,7 +51395,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51379
51395
  onChange: g
51380
51396
  }, null, 544)
51381
51397
  ])]),
51382
- vr(K("nav", fZ, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
51398
+ vr(K("nav", pZ, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
51383
51399
  key: e.order_id,
51384
51400
  class: "channel-folder-section",
51385
51401
  "data-room-folder": e.id,
@@ -51408,9 +51424,9 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51408
51424
  }, [
51409
51425
  q(m, { name: v.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
51410
51426
  q(m, { name: "i-lucide-folder" }),
51411
- K("span", hZ, P(e.name), 1),
51412
- K("small", gZ, P(e.pending ? "保存中" : e.rooms.length), 1)
51413
- ], 40, mZ), K("div", _Z, [q(h, { text: `在${e.name}中新建对话` }, {
51427
+ K("span", gZ, P(e.name), 1),
51428
+ K("small", _Z, P(e.pending ? "保存中" : e.rooms.length), 1)
51429
+ ], 40, hZ), K("div", vZ, [q(h, { text: `在${e.name}中新建对话` }, {
51414
51430
  default: L(() => [q(u, {
51415
51431
  icon: "i-lucide-square-pen",
51416
51432
  "aria-label": `在${e.name}中新建对话`,
@@ -51447,7 +51463,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51447
51463
  key: 1,
51448
51464
  class: j(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
51449
51465
  "data-drop-folder": e.id ? void 0 : ""
51450
- }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", yZ, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(x, {
51466
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", bZ, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(x, {
51451
51467
  key: s.id,
51452
51468
  items: C(s, c, s.folder_id || null, e.rooms.length),
51453
51469
  ui: { content: "channel-menu channel-topic-menu" }
@@ -51472,7 +51488,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51472
51488
  direction: 1,
51473
51489
  folder_id: s.folder_id || null
51474
51490
  }), ["prevent"]), ["down"])]
51475
- }, [q(m, { name: "i-lucide-grip-vertical" })], 40, xZ),
51491
+ }, [q(m, { name: "i-lucide-grip-vertical" })], 40, SZ),
51476
51492
  K("button", {
51477
51493
  class: "channel-room-select",
51478
51494
  "data-drag-title": "",
@@ -51481,8 +51497,8 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51481
51497
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
51482
51498
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
51483
51499
  onClick: (e) => n("select", s.id)
51484
- }, [K("span", null, P(s.title), 1)], 40, SZ),
51485
- K("div", CZ, [q(h, {
51500
+ }, [K("span", null, P(s.title), 1)], 40, CZ),
51501
+ K("div", wZ, [q(h, {
51486
51502
  text: s.archived ? "恢复房间" : "存档房间",
51487
51503
  ui: { content: "channel-topic-tooltip" }
51488
51504
  }, {
@@ -51523,9 +51539,9 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51523
51539
  }, null, 8, ["aria-label"])]),
51524
51540
  _: 2
51525
51541
  }, 1032, ["items"])])
51526
- ], 10, bZ)]),
51542
+ ], 10, xZ)]),
51527
51543
  _: 2
51528
- }, 1032, ["items"]))), 128))], 10, vZ)) : Y("", !0)], 8, pZ))), 128)), s.value.length ? Y("", !0) : (U(), W("p", wZ, "暂无协作房间"))], 512), [[Vc, _.value]]),
51544
+ }, 1032, ["items"]))), 128))], 10, yZ)) : Y("", !0)], 8, mZ))), 128)), s.value.length ? Y("", !0) : (U(), W("p", TZ, "暂无协作房间"))], 512), [[Vc, _.value]]),
51529
51545
  vr(q(u, {
51530
51546
  icon: "i-lucide-archive",
51531
51547
  color: "neutral",
@@ -51534,44 +51550,44 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51534
51550
  "aria-haspopup": "dialog",
51535
51551
  onClick: t[6] ||= (e) => n("archives")
51536
51552
  }, {
51537
- default: L(() => [t[9] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", TZ, P(c.value), 1)) : Y("", !0)]),
51553
+ default: L(() => [t[9] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", EZ, P(c.value), 1)) : Y("", !0)]),
51538
51554
  _: 1
51539
51555
  }, 512), [[Vc, _.value]]),
51540
- I(r).directory_notice ? (U(), W("p", EZ, P(I(r).directory_notice), 1)) : Y("", !0),
51541
- I(r).directory_error ? (U(), W("p", DZ, P(I(r).directory_error), 1)) : Y("", !0),
51542
- q(sZ, {
51556
+ I(r).directory_notice ? (U(), W("p", DZ, P(I(r).directory_notice), 1)) : Y("", !0),
51557
+ I(r).directory_error ? (U(), W("p", OZ, P(I(r).directory_error), 1)) : Y("", !0),
51558
+ q(cZ, {
51543
51559
  open: p.value,
51544
51560
  "onUpdate:open": t[7] ||= (e) => p.value = e
51545
51561
  }, null, 8, ["open"])
51546
51562
  ]);
51547
51563
  };
51548
51564
  }
51549
- }, kZ = {
51565
+ }, AZ = {
51550
51566
  key: 0,
51551
51567
  class: "pb-invite",
51552
51568
  "aria-label": "启动手动成员"
51553
- }, AZ = { class: "pb-invite-lead" }, jZ = {
51569
+ }, jZ = { class: "pb-invite-lead" }, MZ = {
51554
51570
  key: 0,
51555
51571
  role: "alert",
51556
51572
  class: "pb-free-note is-error"
51557
- }, MZ = { class: "pb-invite-launches" }, NZ = { class: "pb-invite-footer" }, PZ = {
51573
+ }, NZ = { class: "pb-invite-launches" }, PZ = { class: "pb-invite-footer" }, FZ = {
51558
51574
  key: 0,
51559
51575
  class: "pb-invite-cards"
51560
- }, FZ = {
51576
+ }, IZ = {
51561
51577
  key: 0,
51562
51578
  class: "fine-print"
51563
- }, IZ = ["aria-hidden"], LZ = {
51579
+ }, LZ = ["aria-hidden"], RZ = {
51564
51580
  key: 2,
51565
51581
  class: "pb-invite-empty"
51566
- }, RZ = {
51582
+ }, zZ = {
51567
51583
  key: 3,
51568
51584
  role: "alert",
51569
51585
  class: "fine-print"
51570
- }, zZ = {
51586
+ }, BZ = {
51571
51587
  key: 4,
51572
51588
  role: "alert",
51573
51589
  class: "pb-free-note is-error"
51574
- }, BZ = { class: "pb-invite-footer" }, VZ = 2e3, HZ = "preset:", UZ = /*#__PURE__*/ YH({
51590
+ }, VZ = { class: "pb-invite-footer" }, HZ = 2e3, UZ = "preset:", WZ = /*#__PURE__*/ YH({
51575
51591
  __name: "InviteDialog",
51576
51592
  props: /*@__PURE__*/ Fa({ description: {
51577
51593
  type: String,
@@ -51589,7 +51605,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51589
51605
  async function u(e) {
51590
51606
  clearTimeout(l), c.value = "", await i("copy_member_launch", e) && (c.value = e, l = setTimeout(() => {
51591
51607
  c.value = "";
51592
- }, VZ));
51608
+ }, HZ));
51593
51609
  }
51594
51610
  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(() => {
51595
51611
  let e = /* @__PURE__ */ new Set([..._.value, ...d.value.filter((e) => e.preset).map((e) => e.name)]);
@@ -51628,7 +51644,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51628
51644
  title: v(e) ? `已在场 ${v(e)} 位 · 将添加新实例` : "",
51629
51645
  aria_label: `添加 ${e} 实例`
51630
51646
  })), ...g.value.map((e, t) => ({
51631
- value: HZ + e.name,
51647
+ value: UZ + e.name,
51632
51648
  name: e.label || e.name,
51633
51649
  ...r.identities[r.platform_of(e.name)],
51634
51650
  separated: t === 0,
@@ -51636,7 +51652,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51636
51652
  aria_label: `添加预设 ${e.label || e.name}`
51637
51653
  }))]);
51638
51654
  function T(e) {
51639
- if (!e.startsWith(HZ)) return C(e);
51655
+ if (!e.startsWith(UZ)) return C(e);
51640
51656
  let t = g.value.find((t) => t.name === e.slice(7));
51641
51657
  t && ee(t);
51642
51658
  }
@@ -51675,10 +51691,10 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51675
51691
  body: "dialog-body"
51676
51692
  }
51677
51693
  }, {
51678
- body: L(() => [p.value.length && !d.value.length ? (U(), W("div", kZ, [
51679
- K("p", AZ, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51680
- I(n).access?.error ? (U(), W("p", jZ, P(I(n).access.error), 1)) : Y("", !0),
51681
- K("ul", MZ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
51694
+ body: L(() => [p.value.length && !d.value.length ? (U(), W("div", AZ, [
51695
+ K("p", jZ, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51696
+ I(n).access?.error ? (U(), W("p", MZ, P(I(n).access.error), 1)) : Y("", !0),
51697
+ K("ul", NZ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
51682
51698
  q(l, {
51683
51699
  src: I(r).identities[I(r).platform_of(e)]?.icon,
51684
51700
  text: I(r).identities[I(r).platform_of(e)]?.initials,
@@ -51713,7 +51729,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51713
51729
  ])
51714
51730
  ]))), 128))]),
51715
51731
  o[3] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51716
- K("div", NZ, [q(f, {
51732
+ K("div", PZ, [q(f, {
51717
51733
  label: "完成",
51718
51734
  class: "channel-primary-button",
51719
51735
  onClick: o[0] ||= (e) => t.value = !1
@@ -51729,7 +51745,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51729
51745
  items: w.value,
51730
51746
  onAdd: T
51731
51747
  }, null, 8, ["items"]),
51732
- d.value.length ? (U(), W("div", PZ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
51748
+ d.value.length ? (U(), W("div", FZ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
51733
51749
  key: e.id,
51734
51750
  class: "pb-invite-pick"
51735
51751
  }, [q(MJ, {
@@ -51745,15 +51761,15 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51745
51761
  "status",
51746
51762
  "onMode",
51747
51763
  "onRemove"
51748
- ]), b.value.get(e) === e.name ? Y("", !0) : (U(), W("p", FZ, "同一 AI 已有实例,将以 " + P(b.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
51764
+ ]), b.value.get(e) === e.name ? Y("", !0) : (U(), W("p", IZ, "同一 AI 已有实例,将以 " + P(b.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
51749
51765
  d.value.length ? (U(), W("p", {
51750
51766
  key: 1,
51751
51767
  class: j(["fine-print", { "pb-invite-reserved": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual")) }]),
51752
51768
  "aria-hidden": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual"))
51753
- }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, IZ)) : (U(), W("p", LZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
51754
- d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", RZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
51755
- m.value && I(n).free_error ? (U(), W("p", zZ, P(I(n).free_error), 1)) : Y("", !0),
51756
- K("div", BZ, [q(f, {
51769
+ }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, LZ)) : (U(), W("p", RZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
51770
+ d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", zZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
51771
+ m.value && I(n).free_error ? (U(), W("p", BZ, P(I(n).free_error), 1)) : Y("", !0),
51772
+ K("div", VZ, [q(f, {
51757
51773
  label: "取消",
51758
51774
  color: "neutral",
51759
51775
  variant: "ghost",
@@ -51775,7 +51791,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51775
51791
  }, 8, ["open", "description"]);
51776
51792
  };
51777
51793
  }
51778
- }, [["__scopeId", "data-v-95048b60"]]), WZ = { class: "start-discussion-footer" }, GZ = 3, KZ = /*#__PURE__*/ YH({
51794
+ }, [["__scopeId", "data-v-95048b60"]]), GZ = { class: "start-discussion-footer" }, KZ = 3, qZ = /*#__PURE__*/ YH({
51779
51795
  __name: "StartDiscussionDialog",
51780
51796
  props: {
51781
51797
  open: {
@@ -51786,9 +51802,9 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51786
51802
  },
51787
51803
  emits: ["update:open"],
51788
51804
  setup(e) {
51789
- let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(GZ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(""), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(null);
51805
+ let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(KZ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(""), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(null);
51790
51806
  R(t, (e) => {
51791
- e && (a.value = "", o.value = GZ, s.value = 0, c.value = "", l.value = !1);
51807
+ e && (a.value = "", o.value = KZ, s.value = 0, c.value = "", l.value = !1);
51792
51808
  });
51793
51809
  async function d() {
51794
51810
  u.value?.settle();
@@ -51856,7 +51872,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51856
51872
  "minutes",
51857
51873
  "execution_minutes"
51858
51874
  ]),
51859
- K("div", WZ, [q(h, {
51875
+ K("div", GZ, [q(h, {
51860
51876
  label: "取消",
51861
51877
  color: "neutral",
51862
51878
  variant: "ghost",
@@ -51874,21 +51890,21 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51874
51890
  }, 8, ["open"]);
51875
51891
  };
51876
51892
  }
51877
- }, [["__scopeId", "data-v-dee972d6"]]), qZ = { class: "pb-status-line" }, JZ = { role: "status" }, YZ = {
51893
+ }, [["__scopeId", "data-v-dee972d6"]]), JZ = { class: "pb-status-line" }, YZ = { role: "status" }, XZ = {
51878
51894
  key: 0,
51879
51895
  class: "pb-status-detail"
51880
- }, XZ = { class: "pb-meters" }, ZZ = { class: "pb-meter-label" }, QZ = {
51896
+ }, ZZ = { class: "pb-meters" }, QZ = { class: "pb-meter-label" }, $Z = {
51881
51897
  key: 0,
51882
51898
  class: "pb-bar"
51883
- }, $Z = {
51899
+ }, eQ = {
51884
51900
  key: 0,
51885
51901
  class: "pb-section",
51886
51902
  "aria-label": "当前焦点"
51887
- }, eQ = {
51903
+ }, tQ = {
51888
51904
  key: 1,
51889
51905
  class: "pb-actions",
51890
51906
  "aria-label": "讨论操作"
51891
- }, tQ = { class: "progress-ending" }, nQ = ["disabled"], rQ = 90, iQ = {
51907
+ }, nQ = { class: "progress-ending" }, rQ = ["disabled"], iQ = 90, aQ = {
51892
51908
  __name: "ProgressBoard",
51893
51909
  setup(e) {
51894
51910
  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);
@@ -51954,24 +51970,24 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
51954
51970
  class: j(["pb-status", `is-${h.value.tone}`]),
51955
51971
  "aria-label": "讨论状态"
51956
51972
  }, [
51957
- K("div", qZ, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", JZ, P(h.value.title), 1)]),
51958
- h.value.detail ? (U(), W("p", YZ, P(h.value.detail), 1)) : Y("", !0),
51959
- K("div", XZ, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
51973
+ K("div", JZ, [t[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", YZ, P(h.value.title), 1)]),
51974
+ h.value.detail ? (U(), W("p", XZ, P(h.value.detail), 1)) : Y("", !0),
51975
+ K("div", ZZ, [(U(!0), W(H, null, B(_.value, (e) => (U(), W("div", {
51960
51976
  key: e.label,
51961
51977
  class: "pb-meter"
51962
- }, [K("div", ZZ, [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: A({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51978
+ }, [K("div", QZ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", $Z, [K("i", { style: A({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51963
51979
  ], 2),
51964
- m.value ? (U(), W("section", $Z, [
51980
+ m.value ? (U(), W("section", eQ, [
51965
51981
  t[7] ||= K("h4", null, "当前焦点", -1),
51966
51982
  K("p", { class: j(["pb-focus", { "is-expanded": p.value }]) }, P(m.value), 3),
51967
- m.value.length > rQ ? (U(), W("button", {
51983
+ m.value.length > iQ ? (U(), W("button", {
51968
51984
  key: 0,
51969
51985
  type: "button",
51970
51986
  class: "pb-link",
51971
51987
  onClick: t[0] ||= (e) => p.value = !p.value
51972
51988
  }, P(p.value ? "收起" : "展开"), 1)) : Y("", !0)
51973
51989
  ])) : Y("", !0),
51974
- a.value.archived ? Y("", !0) : (U(), W("section", eQ, [
51990
+ a.value.archived ? Y("", !0) : (U(), W("section", tQ, [
51975
51991
  l.value ? (U(), G(o, {
51976
51992
  key: 0,
51977
51993
  icon: "i-lucide-play",
@@ -52034,51 +52050,51 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
52034
52050
  body: "dialog-body"
52035
52051
  }
52036
52052
  }, {
52037
- body: L(() => [K("div", tQ, [K("button", {
52053
+ body: L(() => [K("div", nQ, [K("button", {
52038
52054
  type: "button",
52039
52055
  class: "progress-ending-option",
52040
52056
  disabled: !!I(i),
52041
52057
  onClick: v
52042
- }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, nQ)])]),
52058
+ }, [...t[8] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, rQ)])]),
52043
52059
  _: 1
52044
52060
  }, 8, ["open"])
52045
52061
  ], 64);
52046
52062
  };
52047
52063
  }
52048
- }, aQ = { class: "speaking-order" }, oQ = {
52064
+ }, oQ = { class: "speaking-order" }, sQ = {
52049
52065
  key: 0,
52050
52066
  class: "speaking-order-divider",
52051
52067
  "aria-hidden": "true"
52052
- }, sQ = ["data-key", "data-movable"], cQ = [
52068
+ }, cQ = ["data-key", "data-movable"], lQ = [
52053
52069
  "aria-disabled",
52054
52070
  "aria-label",
52055
52071
  "title",
52056
52072
  "onPointerdown",
52057
52073
  "onKeydown"
52058
- ], lQ = { class: "speaking-order-number" }, uQ = {
52074
+ ], uQ = { class: "speaking-order-number" }, dQ = {
52059
52075
  key: 1,
52060
52076
  class: "speaking-order-place",
52061
52077
  title: "已发言",
52062
52078
  "aria-label": "已发言"
52063
- }, dQ = ["title"], fQ = {
52079
+ }, fQ = ["title"], pQ = {
52064
52080
  key: 0,
52065
52081
  class: "speaking-order-later"
52066
- }, pQ = {
52082
+ }, mQ = {
52067
52083
  key: 1,
52068
52084
  class: "speaking-order-divider",
52069
52085
  "aria-hidden": "true"
52070
- }, mQ = {
52086
+ }, hQ = {
52071
52087
  key: 0,
52072
52088
  role: "status",
52073
52089
  class: "pb-free-note"
52074
- }, hQ = {
52090
+ }, gQ = {
52075
52091
  key: 1,
52076
52092
  role: "alert",
52077
52093
  class: "pb-free-note is-error"
52078
- }, gQ = {
52094
+ }, _Q = {
52079
52095
  class: "speaking-order-live",
52080
52096
  "aria-live": "polite"
52081
- }, _Q = "发言顺序刚有变化,已更新为最新顺序,请重新调整", vQ = /*#__PURE__*/ YH({
52097
+ }, vQ = "发言顺序刚有变化,已更新为最新顺序,请重新调整", yQ = /*#__PURE__*/ YH({
52082
52098
  __name: "SpeakingOrder",
52083
52099
  props: {
52084
52100
  away: {
@@ -52098,7 +52114,7 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
52098
52114
  }), c = Z(() => s.value.kind === "default" ? "idle" : "queued"), l = Z(() => !!n.value.access?.can_manage && !o.value.archived && s.value.movable.length > 1), u = {
52099
52115
  queue: "不在本次依次回答中",
52100
52116
  turns: "本轮未安排"
52101
- }, d = Z(() => s.value.kind === "default" ? "拖动设置默认发言顺序,@全体依次 按此顺序;聚焦后可用上下方向键" : "拖动调整还没发言的顺序,立即生效;聚焦后可用上下方向键"), f = /* @__PURE__ */ F(!1), p = Z(() => f.value ? _Q : n.value.order_error?.room_id === o.value.id ? n.value.order_error.message : ""), m = /* @__PURE__ */ F(null), h = /* @__PURE__ */ F(null), g = /* @__PURE__ */ F(null), _ = /* @__PURE__ */ F("");
52117
+ }, d = Z(() => s.value.kind === "default" ? "拖动设置默认发言顺序,@全体依次 按此顺序;聚焦后可用上下方向键" : "拖动调整还没发言的顺序,立即生效;聚焦后可用上下方向键"), f = /* @__PURE__ */ F(!1), p = Z(() => f.value ? vQ : n.value.order_error?.room_id === o.value.id ? n.value.order_error.message : ""), m = /* @__PURE__ */ F(null), h = /* @__PURE__ */ F(null), g = /* @__PURE__ */ F(null), _ = /* @__PURE__ */ F("");
52102
52118
  R(() => s.value.revision, () => {
52103
52119
  g.value = null;
52104
52120
  }), R(() => o.value.id, () => {
@@ -52185,13 +52201,13 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
52185
52201
  }
52186
52202
  return (e, n) => {
52187
52203
  let i = sA;
52188
- return U(), W("div", aQ, [
52204
+ return U(), W("div", oQ, [
52189
52205
  K("ul", {
52190
52206
  ref_key: "list",
52191
52207
  ref: m,
52192
52208
  class: j(["pb-members", { "is-dragging": h.value }])
52193
52209
  }, [
52194
- (U(!0), W(H, null, B(y.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", oQ, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
52210
+ (U(!0), W(H, null, B(y.value, (t, r) => (U(), W(H, { key: t.key }, [t.outside ? (U(), W("li", sQ, [K("span", null, P(u[s.value.kind]), 1)])) : Y("", !0), K("li", {
52195
52211
  class: j(["pb-member speaking-order-row", [
52196
52212
  `is-${t.state}`,
52197
52213
  ee(r),
@@ -52212,19 +52228,19 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
52212
52228
  onPointercancel: n[0] ||= (e) => w(e, !0),
52213
52229
  onLostpointercapture: n[1] ||= (e) => w(e, !0),
52214
52230
  onKeydown: [fu((e) => E(e, b(r), -1), ["up"]), fu((e) => E(e, b(r), 1), ["down"])]
52215
- }, [K("span", lQ, P(t.place), 1), q(i, {
52231
+ }, [K("span", uQ, P(t.place), 1), q(i, {
52216
52232
  name: "i-lucide-grip-vertical",
52217
52233
  class: "speaking-order-handle"
52218
- })], 40, cQ)) : t.state === "done" ? (U(), W("span", uQ, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
52234
+ })], 40, lQ)) : t.state === "done" ? (U(), W("span", dQ, [q(i, { name: "i-lucide-check" })])) : (U(), W("span", {
52219
52235
  key: 2,
52220
52236
  class: "speaking-order-place",
52221
52237
  title: t.state === "speaking" ? "正在发言" : void 0
52222
- }, P(t.place || ""), 9, dQ)), V(e.$slots, "default", {
52238
+ }, P(t.place || ""), 9, fQ)), V(e.$slots, "default", {
52223
52239
  item: t,
52224
52240
  place: t.place
52225
- }, void 0, !0)], 10, sQ)], 64))), 128)),
52226
- s.value.later?.length ? (U(), W("li", fQ, [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),
52227
- t.away.length ? (U(), W("li", pQ, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
52241
+ }, void 0, !0)], 10, cQ)], 64))), 128)),
52242
+ s.value.later?.length ? (U(), W("li", pQ, [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),
52243
+ t.away.length ? (U(), W("li", mQ, [...n[2] ||= [K("span", null, "已离开", -1)]])) : Y("", !0),
52228
52244
  (U(!0), W(H, null, B(t.away, (t) => (U(), W("li", {
52229
52245
  key: `away-${t}`,
52230
52246
  class: "pb-member speaking-order-row is-away"
@@ -52236,13 +52252,13 @@ var Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { c
52236
52252
  place: 0
52237
52253
  }, void 0, !0)]))), 128))
52238
52254
  ], 2),
52239
- p.value === _Q ? (U(), W("p", mQ, P(p.value), 1)) : p.value ? (U(), W("p", hQ, P(p.value), 1)) : Y("", !0),
52240
- K("p", gQ, P(_.value), 1)
52255
+ p.value === vQ ? (U(), W("p", hQ, P(p.value), 1)) : p.value ? (U(), W("p", gQ, P(p.value), 1)) : Y("", !0),
52256
+ K("p", _Q, P(_.value), 1)
52241
52257
  ]);
52242
52258
  };
52243
52259
  }
52244
- }, [["__scopeId", "data-v-dc33a051"]]), yQ = ["dispatched", "started"], bQ = (e) => e.pending > 0 || yQ.includes(e.execution?.status);
52245
- function xQ(e, { view: t, act: n, describe: r }) {
52260
+ }, [["__scopeId", "data-v-dc33a051"]]), bQ = ["dispatched", "started"], xQ = (e) => e.pending > 0 || bQ.includes(e.execution?.status);
52261
+ function SQ(e, { view: t, act: n, describe: r }) {
52246
52262
  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 = {}) => ({
52247
52263
  label: t,
52248
52264
  icon: r,
@@ -52288,7 +52304,7 @@ function xQ(e, { view: t, act: n, describe: r }) {
52288
52304
  }] : []
52289
52305
  ],
52290
52306
  [
52291
- ...bQ(e) ? [l("停止", "i-lucide-square", "interrupt")] : [],
52307
+ ...xQ(e) ? [l("停止", "i-lucide-square", "interrupt")] : [],
52292
52308
  ...s && e.pending ? [{
52293
52309
  label: "复制阅读通知",
52294
52310
  icon: "i-lucide-copy",
@@ -52309,54 +52325,54 @@ function xQ(e, { view: t, act: n, describe: r }) {
52309
52325
  }
52310
52326
  //#endregion
52311
52327
  //#region frontend/FreeBoard.vue
52312
- var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ = { class: "pb-mode" }, TQ = { class: "pb-status-line" }, EQ = { role: "status" }, DQ = {
52328
+ var CQ = { class: "progress-board is-docked" }, wQ = { class: "pb-header" }, TQ = { class: "pb-mode" }, EQ = { class: "pb-status-line" }, DQ = { role: "status" }, OQ = {
52313
52329
  key: 0,
52314
52330
  class: "pb-status-detail"
52315
- }, OQ = {
52331
+ }, kQ = {
52316
52332
  key: 1,
52317
52333
  class: "pb-chain-actions"
52318
- }, kQ = { class: "pb-meters" }, AQ = { class: "pb-meter-label" }, jQ = {
52334
+ }, AQ = { class: "pb-meters" }, jQ = { class: "pb-meter-label" }, MQ = {
52319
52335
  key: 0,
52320
52336
  class: "pb-bar"
52321
- }, MQ = {
52337
+ }, NQ = {
52322
52338
  key: 2,
52323
52339
  class: "pb-section",
52324
52340
  "aria-label": "当前任务"
52325
- }, NQ = {
52341
+ }, PQ = {
52326
52342
  class: "pb-section",
52327
52343
  "aria-label": "发言顺序"
52328
- }, PQ = { class: "pb-member-body" }, FQ = ["title"], IQ = ["title"], LQ = ["title"], RQ = ["title"], zQ = {
52344
+ }, FQ = { class: "pb-member-body" }, IQ = ["title"], LQ = ["title"], RQ = ["title"], zQ = ["title"], BQ = {
52329
52345
  key: 0,
52330
52346
  role: "alert",
52331
52347
  class: "pb-free-note is-error"
52332
- }, BQ = {
52348
+ }, VQ = {
52333
52349
  key: 1,
52334
52350
  role: "status",
52335
52351
  class: "pb-free-note"
52336
- }, VQ = {
52352
+ }, HQ = {
52337
52353
  key: 2,
52338
52354
  role: "alert",
52339
52355
  class: "pb-free-note is-error"
52340
- }, HQ = {
52356
+ }, UQ = {
52341
52357
  key: 3,
52342
52358
  role: "status",
52343
52359
  class: "pb-free-note"
52344
- }, UQ = {
52360
+ }, WQ = {
52345
52361
  key: 3,
52346
52362
  class: "pb-section",
52347
52363
  "aria-label": "头脑风暴"
52348
- }, WQ = ["onClick"], GQ = {
52364
+ }, GQ = ["onClick"], KQ = {
52349
52365
  key: 4,
52350
52366
  class: "pb-actions",
52351
52367
  "aria-label": "操作"
52352
- }, KQ = {
52368
+ }, qQ = {
52353
52369
  key: 0,
52354
52370
  class: "pb-free-note"
52355
- }, qQ = {
52371
+ }, JQ = {
52356
52372
  key: 5,
52357
52373
  class: "pb-section",
52358
52374
  "aria-label": "执行耗时"
52359
- }, JQ = { class: "pb-timing-heading" }, YQ = { class: "pb-timings" }, XQ = { class: "pb-timing-who" }, ZQ = { class: "pb-timing-stages" }, QQ = 90, $Q = /*#__PURE__*/ YH({
52375
+ }, YQ = { class: "pb-timing-heading" }, XQ = { class: "pb-timings" }, ZQ = { class: "pb-timing-who" }, QQ = { class: "pb-timing-stages" }, $Q = 90, e$ = /*#__PURE__*/ YH({
52360
52376
  __name: "FreeBoard",
52361
52377
  setup(e) {
52362
52378
  let { view: t, bridge: n, act: r, pending: i } = xr("discussion"), a = ["dispatched", "started"], o = {
@@ -52371,7 +52387,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52371
52387
  online: "网页代发"
52372
52388
  }, c = Z(() => t.value.room), l = Z(() => c.value.free || {}), u = Z(() => ["active", "paused"].includes(c.value.session?.status)), d = Z(() => u.value ? c.value.current_turn?.round || (c.value.completed_rounds || 0) + 1 : 0), f = Z(() => (l.value.members || []).find((e) => e.role === "host" && e.status === "active")), p = (e) => (l.value.members || []).find((t) => t.name === e), m = Z(() => (l.value.members || []).filter((e) => e.status === "away").map((e) => e.name)), h = (e) => n.display_name((l.value.members || []).find((t) => t.id === e)?.name || "成员"), g = (e) => e.access === "manual" && e.manual_source !== "web" && e.status === "active" && !e.registered_at;
52373
52389
  function _(e) {
52374
- return e.status === "away" ? "neutral" : g(e) ? "warning" : e.execution?.stale ? "error" : bQ(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
52390
+ return e.status === "away" ? "neutral" : g(e) ? "warning" : e.execution?.stale ? "error" : xQ(e) ? e.pending && !a.includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
52375
52391
  }
52376
52392
  function v(e, t) {
52377
52393
  if (e.status === "away") return "已离开:不会被唤醒,可请回";
@@ -52403,7 +52419,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52403
52419
  title: "已存档",
52404
52420
  detail: ""
52405
52421
  };
52406
- let e = (l.value.members || []).filter(bQ);
52422
+ let e = (l.value.members || []).filter(xQ);
52407
52423
  if (e.some((e) => e.execution?.stale)) return {
52408
52424
  tone: "error",
52409
52425
  title: "执行失联",
@@ -52471,7 +52487,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52471
52487
  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)}分`;
52472
52488
  }
52473
52489
  function re(e) {
52474
- return xQ(e, {
52490
+ return SQ(e, {
52475
52491
  view: t.value,
52476
52492
  act: r,
52477
52493
  describe: (e) => {
@@ -52496,16 +52512,16 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52496
52512
  se.value = !1;
52497
52513
  }), (e, i) => {
52498
52514
  let a = MA, s = pA, g = sA, ee = CH;
52499
- return U(), W("div", SQ, [
52500
- K("header", CQ, [K("strong", null, P(u.value ? "讨论进度" : "自由协作"), 1), K("span", wQ, P(f.value ? `${I(n).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
52501
- u.value ? (U(), G(iQ, { key: 0 })) : (U(), W("section", {
52515
+ return U(), W("div", CQ, [
52516
+ K("header", wQ, [K("strong", null, P(u.value ? "讨论进度" : "自由协作"), 1), K("span", TQ, P(f.value ? `${I(n).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
52517
+ u.value ? (U(), G(aQ, { key: 0 })) : (U(), W("section", {
52502
52518
  key: 1,
52503
52519
  class: j(["pb-status", `is-${T.value.tone}`]),
52504
52520
  "aria-label": "房间状态"
52505
52521
  }, [
52506
- K("div", TQ, [i[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", EQ, P(T.value.title), 1)]),
52507
- T.value.detail ? (U(), W("p", DQ, P(T.value.detail), 1)) : Y("", !0),
52508
- T.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", OQ, [(U(!0), W(H, null, B(S.value, (e) => (U(), G(a, {
52522
+ K("div", EQ, [i[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", DQ, P(T.value.title), 1)]),
52523
+ T.value.detail ? (U(), W("p", OQ, P(T.value.detail), 1)) : Y("", !0),
52524
+ T.value.continue_chain && I(t).access?.can_manage ? (U(), W("div", kQ, [(U(!0), W(H, null, B(S.value, (e) => (U(), G(a, {
52509
52525
  key: e,
52510
52526
  label: `继续 ${e} 轮`,
52511
52527
  icon: "i-lucide-play",
@@ -52521,24 +52537,24 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52521
52537
  "disabled",
52522
52538
  "onClick"
52523
52539
  ]))), 128))])) : Y("", !0),
52524
- K("div", kQ, [(U(!0), W(H, null, B(E.value, (e) => (U(), W("div", {
52540
+ K("div", AQ, [(U(!0), W(H, null, B(E.value, (e) => (U(), W("div", {
52525
52541
  key: e.label,
52526
52542
  class: "pb-meter"
52527
- }, [K("div", AQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", jQ, [K("i", { style: A({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52543
+ }, [K("div", jQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", MQ, [K("i", { style: A({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
52528
52544
  ], 2)),
52529
- D.value && !u.value ? (U(), W("section", MQ, [
52545
+ D.value && !u.value ? (U(), W("section", NQ, [
52530
52546
  i[7] ||= K("h4", null, "当前任务", -1),
52531
52547
  K("p", { class: j(["pb-focus", { "is-expanded": O.value }]) }, P(D.value), 3),
52532
- D.value.length > QQ ? (U(), W("button", {
52548
+ D.value.length > $Q ? (U(), W("button", {
52533
52549
  key: 0,
52534
52550
  type: "button",
52535
52551
  class: "pb-link",
52536
52552
  onClick: i[0] ||= (e) => O.value = !O.value
52537
52553
  }, P(O.value ? "收起" : "展开"), 1)) : Y("", !0)
52538
52554
  ])) : Y("", !0),
52539
- K("section", NQ, [
52555
+ K("section", PQ, [
52540
52556
  i[9] ||= K("h4", null, "发言顺序", -1),
52541
- q(vQ, {
52557
+ q(yQ, {
52542
52558
  away: m.value,
52543
52559
  round: d.value
52544
52560
  }, {
@@ -52555,7 +52571,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52555
52571
  "alt",
52556
52572
  "class"
52557
52573
  ]),
52558
- K("div", PQ, [
52574
+ K("div", FQ, [
52559
52575
  K("div", {
52560
52576
  class: "pb-member-name",
52561
52577
  title: c.value.descriptions?.[r.name] || void 0
@@ -52566,17 +52582,17 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52566
52582
  name: "i-lucide-crown",
52567
52583
  title: "主持人"
52568
52584
  })) : Y("", !0),
52569
- K("small", { title: b(r) || void 0 }, P(y(r)), 9, IQ)
52570
- ], 8, FQ),
52585
+ K("small", { title: b(r) || void 0 }, P(y(r)), 9, LQ)
52586
+ ], 8, IQ),
52571
52587
  x(r) ? (U(), W("div", {
52572
52588
  key: 0,
52573
52589
  class: "pb-member-model",
52574
52590
  title: I(n).participant_session_hint(r.name, c.value, I(t).launch.room_models)
52575
- }, P(x(r)), 9, LQ)) : Y("", !0),
52591
+ }, P(x(r)), 9, RQ)) : Y("", !0),
52576
52592
  K("div", { class: j(["pb-member-status", `is-${_(r)}`]) }, [i[8] ||= K("span", { class: "pb-dot" }, null, -1), K("span", {
52577
52593
  class: "pb-member-status-text",
52578
52594
  title: r.execution?.status === "failed" ? r.execution.result : void 0
52579
- }, P(v(r, e.state)), 9, RQ)], 2)
52595
+ }, P(v(r, e.state)), 9, zQ)], 2)
52580
52596
  ]),
52581
52597
  q(ee, {
52582
52598
  items: re(r),
@@ -52600,8 +52616,8 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52600
52616
  key: e.executions.join("-"),
52601
52617
  class: "pb-free-note is-warning"
52602
52618
  }, "可能冲突:" + P(e.members.map((e) => I(n).display_name(e)).join(" 与 ")) + " 的重叠执行观察到 " + P(e.files.join("、")) + " 变化;修改者未确认。", 1))), 128)),
52603
- I(t).free_error ? (U(), W("p", zQ, P(I(t).free_error), 1)) : I(t).free_notice ? (U(), W("p", BQ, P(I(t).free_notice), 1)) : Y("", !0),
52604
- I(t).access?.error ? (U(), W("p", VQ, P(I(t).access.error), 1)) : I(t).access?.notice ? (U(), W("p", HQ, P(I(t).access.notice), 1)) : Y("", !0),
52619
+ I(t).free_error ? (U(), W("p", BQ, P(I(t).free_error), 1)) : I(t).free_notice ? (U(), W("p", VQ, P(I(t).free_notice), 1)) : Y("", !0),
52620
+ I(t).access?.error ? (U(), W("p", HQ, P(I(t).access.error), 1)) : I(t).access?.notice ? (U(), W("p", UQ, P(I(t).access.notice), 1)) : Y("", !0),
52605
52621
  c.value.archived ? Y("", !0) : (U(), G(a, {
52606
52622
  key: 4,
52607
52623
  icon: "i-lucide-plus",
@@ -52613,13 +52629,13 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52613
52629
  onClick: i[1] ||= (e) => ie.value = !0
52614
52630
  }))
52615
52631
  ]),
52616
- c.value.linked_rooms?.length ? (U(), W("section", UQ, [i[10] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
52632
+ c.value.linked_rooms?.length ? (U(), W("section", WQ, [i[10] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
52617
52633
  key: e.id,
52618
52634
  type: "button",
52619
52635
  class: "pb-link pb-free-linked",
52620
52636
  onClick: (t) => I(r)("room", e.id)
52621
- }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, WQ))), 128))])) : Y("", !0),
52622
- !c.value.archived && !u.value ? (U(), W("section", GQ, [q(a, {
52637
+ }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, GQ))), 128))])) : Y("", !0),
52638
+ !c.value.archived && !u.value ? (U(), W("section", KQ, [q(a, {
52623
52639
  icon: "i-lucide-messages-square",
52624
52640
  label: "开启讨论",
52625
52641
  size: "sm",
@@ -52629,13 +52645,13 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52629
52645
  title: "由主持人推进成员轮流发言,到上限或结束后房间回到自由协作",
52630
52646
  disabled: !ce.value,
52631
52647
  onClick: i[2] ||= (e) => se.value = !0
52632
- }, null, 8, ["disabled"]), ce.value ? Y("", !0) : (U(), W("p", KQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
52633
- te.value.items.length ? (U(), W("section", qQ, [K("div", JQ, [i[11] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(te.value.items.length) + " 次执行 · " + P(ne(te.value.total)), 1)]), K("details", YQ, [i[12] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(te.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", XQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(o[e.status] || e.status), 1)]), K("span", ZQ, [K("span", null, "用时 " + P(ne(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
52634
- q(KZ, {
52648
+ }, null, 8, ["disabled"]), ce.value ? Y("", !0) : (U(), W("p", qQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])) : Y("", !0),
52649
+ te.value.items.length ? (U(), W("section", JQ, [K("div", YQ, [i[11] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(te.value.items.length) + " 次执行 · " + P(ne(te.value.total)), 1)]), K("details", XQ, [i[12] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(te.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", ZQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(o[e.status] || e.status), 1)]), K("span", QQ, [K("span", null, "用时 " + P(ne(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
52650
+ q(qZ, {
52635
52651
  open: se.value,
52636
52652
  "onUpdate:open": i[3] ||= (e) => se.value = e
52637
52653
  }, null, 8, ["open"]),
52638
- q(UZ, {
52654
+ q(WZ, {
52639
52655
  open: ie.value,
52640
52656
  "onUpdate:open": i[4] ||= (e) => ie.value = e,
52641
52657
  description: "新成员加入后不打断其他成员;点卡片翻面可设置软件、模型、项目权限和要续接的已有会话。"
@@ -52662,7 +52678,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52662
52678
  ]);
52663
52679
  };
52664
52680
  }
52665
- }, [["__scopeId", "data-v-81d8efa9"]]), e$ = { class: "progress-panel-anchor" }, t$ = ["aria-expanded", "aria-label"], n$ = { class: "progress-chip-text" }, r$ = { class: "progress-chip-rounds" }, i$ = {
52681
+ }, [["__scopeId", "data-v-81d8efa9"]]), t$ = { class: "progress-panel-anchor" }, n$ = ["aria-expanded", "aria-label"], r$ = { class: "progress-chip-text" }, i$ = { class: "progress-chip-rounds" }, a$ = {
52666
52682
  __name: "ProgressPanel",
52667
52683
  setup(e) {
52668
52684
  let { view: t, bridge: n } = xr("discussion"), r = /* @__PURE__ */ F(!1), i = Z(() => t.value.room), a = Z(() => i.value.limits || {}), o = Z(() => {
@@ -52689,7 +52705,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52689
52705
  }), s = Z(() => a.value.round_cap || a.value.max_rounds ? n.limit_rounds(a.value).text.replace(" / ", "/") : n.progress_round(i.value)), c = Z(() => `${o.value.title} · ${s.value}`);
52690
52706
  return (e, t) => {
52691
52707
  let n = $V, a = NV;
52692
- return U(), W("div", e$, [q(n, { text: "查看讨论进度" }, {
52708
+ return U(), W("div", t$, [q(n, { text: "查看讨论进度" }, {
52693
52709
  default: L(() => [K("button", {
52694
52710
  type: "button",
52695
52711
  class: j(["progress-chip", `is-${o.value.tone}`]),
@@ -52697,7 +52713,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52697
52713
  "aria-expanded": r.value,
52698
52714
  "aria-label": `查看讨论进度:${c.value}`,
52699
52715
  onClick: t[0] ||= (e) => r.value = !0
52700
- }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", n$, [J(P(o.value.title), 1), K("span", r$, " · " + P(s.value), 1)])], 10, t$)]),
52716
+ }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", r$, [J(P(o.value.title), 1), K("span", i$, " · " + P(s.value), 1)])], 10, n$)]),
52701
52717
  _: 1
52702
52718
  }), q(a, {
52703
52719
  open: r.value,
@@ -52710,36 +52726,36 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52710
52726
  body: "progress-drawer-body"
52711
52727
  }
52712
52728
  }, {
52713
- body: L(() => [q($Q)]),
52729
+ body: L(() => [q(e$)]),
52714
52730
  _: 1
52715
52731
  }, 8, ["open", "description"])]);
52716
52732
  };
52717
52733
  }
52718
- }, a$ = {
52734
+ }, o$ = {
52719
52735
  class: "merged-section discussion-history",
52720
52736
  "aria-label": "讨论记录"
52721
- }, o$ = {
52737
+ }, s$ = {
52722
52738
  key: 0,
52723
52739
  class: "fine-print"
52724
- }, s$ = { class: "history-timeline" }, c$ = {
52740
+ }, c$ = { class: "history-timeline" }, l$ = {
52725
52741
  key: 0,
52726
52742
  class: "history-free"
52727
- }, l$ = {
52743
+ }, u$ = {
52728
52744
  key: 1,
52729
52745
  class: "history-discussion"
52730
- }, u$ = { class: "history-meta" }, d$ = {
52746
+ }, d$ = { class: "history-meta" }, f$ = {
52731
52747
  key: 0,
52732
52748
  class: "fine-print"
52733
- }, f$ = {
52749
+ }, p$ = {
52734
52750
  key: 1,
52735
52751
  class: "fine-print"
52736
- }, p$ = {
52752
+ }, m$ = {
52737
52753
  key: 2,
52738
52754
  class: "history-conclusion"
52739
- }, m$ = ["onClick"], h$ = ["innerHTML"], g$ = {
52755
+ }, h$ = ["onClick"], g$ = ["innerHTML"], _$ = {
52740
52756
  key: 1,
52741
52757
  class: "fine-print"
52742
- }, _$ = ["aria-expanded", "onClick"], v$ = ["innerHTML"], y$ = /*#__PURE__*/ YH({
52758
+ }, v$ = ["aria-expanded", "onClick"], y$ = ["innerHTML"], b$ = /*#__PURE__*/ YH({
52743
52759
  __name: "DiscussionHistory",
52744
52760
  emits: ["detail"],
52745
52761
  setup(e) {
@@ -52797,16 +52813,16 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52797
52813
  }
52798
52814
  return (e, t) => {
52799
52815
  let l = WV, d = sA;
52800
- return U(), W("section", a$, [
52816
+ return U(), W("section", o$, [
52801
52817
  t[2] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "讨论记录"), K("p", null, "每场讨论及其结束时的结论,最新的在上;自由协作的消息按段汇总。")])], -1),
52802
- i.value.discussions?.length ? Y("", !0) : (U(), W("p", o$, "还没有开启过讨论。")),
52803
- K("ol", s$, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
52818
+ i.value.discussions?.length ? Y("", !0) : (U(), W("p", s$, "还没有开启过讨论。")),
52819
+ K("ol", c$, [(U(!0), W(H, null, B(c.value, (i) => (U(), W("li", {
52804
52820
  key: i.key,
52805
52821
  class: j(`is-${i.kind}`)
52806
52822
  }, [t[1] ||= K("span", {
52807
52823
  class: "history-dot",
52808
52824
  "aria-hidden": "true"
52809
- }, null, -1), i.kind === "free" ? (U(), W("p", c$, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", l$, [
52825
+ }, null, -1), i.kind === "free" ? (U(), W("p", l$, "自由协作 · " + P(i.count) + " 条消息", 1)) : (U(), W("article", u$, [
52810
52826
  K("header", null, [K("h3", null, [K("small", null, "讨论 " + P(i.number), 1), J(P(i.goal || "未填写目标"), 1)]), q(l, {
52811
52827
  color: r[i.status]?.color || "neutral",
52812
52828
  variant: "subtle",
@@ -52815,74 +52831,74 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52815
52831
  default: L(() => [J(P(r[i.status]?.label || i.status), 1)]),
52816
52832
  _: 2
52817
52833
  }, 1032, ["color"])]),
52818
- K("p", u$, [
52834
+ K("p", d$, [
52819
52835
  J(P(s(i.created_at)) + " 开始 · " + P(i.count) + " 条消息", 1),
52820
52836
  i.status === "concluded" && i.state !== null ? (U(), W(H, { key: 0 }, [J(" · " + P(I(n).stop_reason_label(i)), 1)], 64)) : Y("", !0),
52821
52837
  i.concluded_at ? (U(), W(H, { key: 1 }, [J(" · " + P(s(i.concluded_at)) + " 结束", 1)], 64)) : Y("", !0)
52822
52838
  ]),
52823
- i.result?.current ? (U(), W("p", d$, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", f$, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", p$, [
52839
+ i.result?.current ? (U(), W("p", f$, "结论即上方的当前共识。")) : i.result?.missing ? (U(), W("p", p$, "这场讨论结束于结论快照功能之前,没有保存当时的结论。")) : i.result ? (U(), W("div", m$, [
52824
52840
  K("small", null, [J(P(i.result.label), 1), i.result.until ? (U(), W("button", {
52825
52841
  key: 0,
52826
52842
  type: "button",
52827
52843
  class: "subtle-link",
52828
52844
  onClick: (t) => e.$emit("detail", i.result.until)
52829
- }, "整理至 #" + P(i.result.until), 9, m$)) : Y("", !0)]),
52845
+ }, "整理至 #" + P(i.result.until), 9, h$)) : Y("", !0)]),
52830
52846
  i.result.brief ? (U(), W("div", {
52831
52847
  key: 0,
52832
52848
  class: "markdown-body",
52833
52849
  innerHTML: o(i.result.brief)
52834
- }, null, 8, h$)) : i.result.state ? Y("", !0) : (U(), W("p", g$, "主持人没有留下简报或共识。")),
52850
+ }, null, 8, g$)) : i.result.state ? Y("", !0) : (U(), W("p", _$, "主持人没有留下简报或共识。")),
52835
52851
  i.result.state ? (U(), W(H, { key: 2 }, [K("button", {
52836
52852
  type: "button",
52837
52853
  class: "history-toggle",
52838
52854
  "aria-expanded": a.value.has(i.id),
52839
52855
  onClick: (e) => u(i.id)
52840
- }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, _$), a.value.has(i.id) ? (U(), W("div", {
52856
+ }, [t[0] ||= J("详细共识与进度", -1), q(d, { name: a.value.has(i.id) ? "i-lucide-chevron-up" : "i-lucide-chevron-down" }, null, 8, ["name"])], 8, v$), a.value.has(i.id) ? (U(), W("div", {
52841
52857
  key: 0,
52842
52858
  class: "markdown-body history-state",
52843
52859
  innerHTML: o(i.result.state)
52844
- }, null, 8, v$)) : Y("", !0)], 64)) : Y("", !0)
52860
+ }, null, 8, y$)) : Y("", !0)], 64)) : Y("", !0)
52845
52861
  ])) : Y("", !0)
52846
52862
  ]))], 2))), 128))])
52847
52863
  ]);
52848
52864
  };
52849
52865
  }
52850
- }, [["__scopeId", "data-v-8daffdea"]]), b$ = {
52866
+ }, [["__scopeId", "data-v-8daffdea"]]), x$ = {
52851
52867
  class: "merged-section room-overview",
52852
52868
  "aria-label": "成员与设置"
52853
- }, x$ = { class: "page-heading" }, S$ = { class: "overview-section" }, C$ = {
52869
+ }, S$ = { class: "page-heading" }, C$ = { class: "overview-section" }, w$ = {
52854
52870
  key: 0,
52855
52871
  class: "overview-local",
52856
52872
  role: "status"
52857
- }, w$ = {
52873
+ }, T$ = {
52858
52874
  class: "member-cards",
52859
52875
  "aria-label": "成员"
52860
- }, T$ = { class: "member-card-head" }, E$ = { class: "member-card-name" }, D$ = ["title"], O$ = { class: "member-card-facts" }, k$ = ["aria-label", "title"], A$ = [
52876
+ }, E$ = { class: "member-card-head" }, D$ = { class: "member-card-name" }, O$ = ["title"], k$ = { class: "member-card-facts" }, A$ = ["aria-label", "title"], j$ = [
52861
52877
  "aria-checked",
52862
52878
  "disabled",
52863
52879
  "onClick"
52864
- ], j$ = { key: 1 }, M$ = ["title"], N$ = [
52880
+ ], M$ = { key: 1 }, N$ = ["title"], P$ = [
52865
52881
  "aria-label",
52866
52882
  "aria-busy",
52867
52883
  "title"
52868
- ], P$ = [
52884
+ ], F$ = [
52869
52885
  "aria-checked",
52870
52886
  "title",
52871
52887
  "disabled",
52872
52888
  "onClick"
52873
- ], F$ = ["title"], I$ = ["aria-label"], L$ = { key: 0 }, R$ = {
52889
+ ], I$ = ["title"], L$ = ["aria-label"], R$ = { key: 0 }, z$ = {
52874
52890
  key: 1,
52875
52891
  class: "overview-result is-error",
52876
52892
  role: "alert"
52877
- }, z$ = {
52893
+ }, B$ = {
52878
52894
  key: 2,
52879
52895
  class: "overview-result",
52880
52896
  role: "status"
52881
- }, B$ = ["role"], V$ = { class: "overview-section" }, H$ = { class: "overview-settings" }, U$ = { key: 0 }, W$ = {
52897
+ }, V$ = ["role"], H$ = { class: "overview-section" }, U$ = { class: "overview-settings" }, W$ = { key: 0 }, G$ = {
52882
52898
  key: 0,
52883
52899
  role: "status",
52884
52900
  class: "overview-saved"
52885
- }, G$ = { key: 1 }, K$ = { key: 1 }, q$ = { class: "overview-address" }, J$ = { key: 2 }, Y$ = 2e3, X$ = "设为主持人", Z$ = /*#__PURE__*/ YH({
52901
+ }, K$ = { key: 1 }, q$ = { key: 1 }, J$ = { class: "overview-address" }, Y$ = { key: 2 }, X$ = 2e3, Z$ = "设为主持人", Q$ = /*#__PURE__*/ YH({
52886
52902
  __name: "RoomOverview",
52887
52903
  setup(e) {
52888
52904
  let { view: t, bridge: n, act: r } = xr("discussion"), i = {
@@ -52917,7 +52933,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
52917
52933
  try {
52918
52934
  await n.set_chain_rounds(e), v.value = !0, setTimeout(() => {
52919
52935
  v.value = !1;
52920
- }, Y$);
52936
+ }, X$);
52921
52937
  } catch {
52922
52938
  _.value = u.value.free?.max_rounds || 0;
52923
52939
  } finally {
@@ -53027,7 +53043,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53027
53043
  }
53028
53044
  let E = Z(() => p.value ? "—" : f.value.scheduler ? `${t.value.launch.scheduler_providers?.[f.value.scheduler.provider]?.label || f.value.scheduler.provider} · ${f.value.scheduler.model}` : "未开启");
53029
53045
  function D(e) {
53030
- let [n, i, a] = xQ(C(e), {
53046
+ let [n, i, a] = SQ(C(e), {
53031
53047
  view: t.value,
53032
53048
  act: r,
53033
53049
  describe: (e) => {
@@ -53036,8 +53052,8 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53036
53052
  });
53037
53053
  return d.value ? {
53038
53054
  taking_part: n,
53039
- host: i.find((e) => e.label === X$) || null,
53040
- place: [...i.filter((e) => e.label !== X$), ...a]
53055
+ host: i.find((e) => e.label === Z$) || null,
53056
+ place: [...i.filter((e) => e.label !== Z$), ...a]
53041
53057
  } : {
53042
53058
  taking_part: n,
53043
53059
  host: null,
@@ -53064,8 +53080,8 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53064
53080
  let ie = Z(() => `${location.origin}/r/${u.value.id}`), ae = Z(() => u.value.created_at ? new Date(u.value.created_at).toLocaleString("zh-CN", { hour12: !1 }) : "");
53065
53081
  return (e, i) => {
53066
53082
  let s = MA, l = pA, oe = sA, k = WV;
53067
- return U(), W("section", b$, [
53068
- K("div", x$, [i[5] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
53083
+ return U(), W("section", x$, [
53084
+ K("div", S$, [i[5] ||= K("div", null, [K("h2", null, "成员与设置"), K("p", null, "成员的接入、权限与全部操作,以及房间的协作设置;右栏成员菜单是同样操作的快捷入口。")], -1), u.value.archived ? Y("", !0) : (U(), G(s, {
53069
53085
  key: 0,
53070
53086
  icon: "i-lucide-plus",
53071
53087
  label: "邀请 AI 加入",
@@ -53075,19 +53091,19 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53075
53091
  disabled: !I(t).access?.can_manage,
53076
53092
  onClick: i[0] ||= (e) => O.value = !0
53077
53093
  }, null, 8, ["disabled"]))]),
53078
- K("section", S$, [
53094
+ K("section", C$, [
53079
53095
  i[9] ||= K("h3", null, "成员", -1),
53080
- p.value ? (U(), W("p", C$, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
53096
+ p.value ? (U(), W("p", w$, [J(P(p.value.text), 1), p.value.retry ? (U(), W("button", {
53081
53097
  key: 0,
53082
53098
  type: "button",
53083
53099
  class: "subtle-link",
53084
53100
  onClick: i[1] ||= (e) => I(n).reload_room_models()
53085
53101
  }, "重试")) : Y("", !0)])) : Y("", !0),
53086
- K("ul", w$, [(U(!0), W(H, null, B(x.value, (e) => (U(), W("li", {
53102
+ K("ul", T$, [(U(!0), W(H, null, B(x.value, (e) => (U(), W("li", {
53087
53103
  key: e.name,
53088
53104
  class: "member-card"
53089
53105
  }, [
53090
- K("header", T$, [
53106
+ K("header", E$, [
53091
53107
  q(l, {
53092
53108
  src: I(n).identities[e.name]?.icon,
53093
53109
  text: I(n).identities[e.name]?.initials,
@@ -53100,14 +53116,14 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53100
53116
  "alt",
53101
53117
  "class"
53102
53118
  ]),
53103
- K("div", E$, [K("strong", null, [J(P(I(n).display_name(e.name)), 1), e.role === "host" ? (U(), G(oe, {
53119
+ K("div", D$, [K("strong", null, [J(P(I(n).display_name(e.name)), 1), e.role === "host" ? (U(), G(oe, {
53104
53120
  key: 0,
53105
53121
  name: "i-lucide-crown",
53106
53122
  title: "主持人"
53107
53123
  })) : Y("", !0)]), u.value.descriptions?.[e.name] ? (U(), W("small", {
53108
53124
  key: 0,
53109
53125
  title: u.value.descriptions[e.name]
53110
- }, P(u.value.descriptions[e.name]), 9, D$)) : Y("", !0)]),
53126
+ }, P(u.value.descriptions[e.name]), 9, O$)) : Y("", !0)]),
53111
53127
  D(e).host ? (U(), G(s, {
53112
53128
  key: 0,
53113
53129
  icon: D(e).host.icon,
@@ -53132,7 +53148,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53132
53148
  _: 2
53133
53149
  }, 1032, ["color"])
53134
53150
  ]),
53135
- K("dl", O$, [
53151
+ K("dl", k$, [
53136
53152
  K("div", null, [i[6] ||= K("dt", null, "接入", -1), K("dd", null, [S(C(e)).value ? (U(), W("div", {
53137
53153
  key: 0,
53138
53154
  class: j(["expert-card-modes overview-switch", { "is-locked": !S(C(e)).editable }]),
@@ -53146,11 +53162,11 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53146
53162
  "aria-checked": S(C(e)).value === t.value,
53147
53163
  disabled: !S(C(e)).editable || !!h.value,
53148
53164
  onClick: (n) => w(e, t.value)
53149
- }, P(t.label), 9, A$)), 64))], 10, k$)) : (U(), W("span", j$, P(S(e).text), 1))])]),
53165
+ }, P(t.label), 9, j$)), 64))], 10, A$)) : (U(), W("span", M$, P(S(e).text), 1))])]),
53150
53166
  K("div", null, [i[7] ||= K("dt", null, "模型", -1), K("dd", {
53151
53167
  class: j(["overview-model", { "overview-muted": m(e.name) }]),
53152
53168
  title: I(n).participant_model(e.name, u.value, f.value) || void 0
53153
- }, P(e.access === "runner" ? I(n).participant_model(e.name, u.value, f.value) || "—" : "在它自己的会话里设置"), 11, M$)]),
53169
+ }, P(e.access === "runner" ? I(n).participant_model(e.name, u.value, f.value) || "—" : "在它自己的会话里设置"), 11, N$)]),
53154
53170
  K("div", null, [i[8] ||= K("dt", null, "项目文件", -1), K("dd", null, [T(e).value ? (U(), W("div", {
53155
53171
  key: 0,
53156
53172
  class: j(["expert-card-modes overview-switch", { "is-locked": !T(e).editable }]),
@@ -53166,11 +53182,11 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53166
53182
  title: t.hint,
53167
53183
  disabled: !T(e).editable || !!h.value,
53168
53184
  onClick: (n) => ee(e, t.value)
53169
- }, P(t.label), 9, P$))), 128))], 10, N$)) : (U(), W("span", {
53185
+ }, P(t.label), 9, F$))), 128))], 10, P$)) : (U(), W("span", {
53170
53186
  key: 1,
53171
53187
  class: "overview-muted",
53172
53188
  title: T(e).hint
53173
- }, P(T(e).text), 9, F$))])])
53189
+ }, P(T(e).text), 9, I$))])])
53174
53190
  ]),
53175
53191
  K("footer", {
53176
53192
  class: "member-card-actions",
@@ -53189,7 +53205,7 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53189
53205
  "label",
53190
53206
  "disabled",
53191
53207
  "onClick"
53192
- ]))), 128))]), D(e).place.length ? (U(), W("div", L$, [(U(!0), W(H, null, B(D(e).place, (e) => (U(), G(s, {
53208
+ ]))), 128))]), D(e).place.length ? (U(), W("div", R$, [(U(!0), W(H, null, B(D(e).place, (e) => (U(), G(s, {
53193
53209
  key: e.label,
53194
53210
  icon: e.icon,
53195
53211
  label: e.label,
@@ -53204,26 +53220,26 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53204
53220
  "color",
53205
53221
  "disabled",
53206
53222
  "onClick"
53207
- ]))), 128))])) : Y("", !0)], 8, I$)
53223
+ ]))), 128))])) : Y("", !0)], 8, L$)
53208
53224
  ]))), 128))]),
53209
- I(t).access?.error || I(t).free_error ? (U(), W("p", R$, P(I(t).access?.error || I(t).free_error), 1)) : I(t).access?.notice || I(t).free_notice ? (U(), W("p", z$, P(I(t).access?.notice || I(t).free_notice), 1)) : Y("", !0),
53225
+ I(t).access?.error || I(t).free_error ? (U(), W("p", z$, P(I(t).access?.error || I(t).free_error), 1)) : I(t).access?.notice || I(t).free_notice ? (U(), W("p", B$, P(I(t).access?.notice || I(t).free_notice), 1)) : Y("", !0),
53210
53226
  i[10] ||= K("p", { class: "overview-result" }, "复制说明或下载配置不代表 AI 已接入,以实际回答和运行记录为准。", -1),
53211
53227
  b.value.text ? (U(), W("p", {
53212
53228
  key: 3,
53213
53229
  class: j(["overview-result", { "is-error": b.value.tone === "error" }]),
53214
53230
  role: b.value.tone === "error" ? "alert" : "status"
53215
- }, P(b.value.text), 11, B$)) : Y("", !0)
53231
+ }, P(b.value.text), 11, V$)) : Y("", !0)
53216
53232
  ]),
53217
- K("section", V$, [i[17] ||= K("h3", null, "协作设置", -1), K("dl", H$, [
53233
+ K("section", H$, [i[17] ||= K("h3", null, "协作设置", -1), K("dl", U$, [
53218
53234
  K("div", null, [i[11] ||= K("dt", null, "主持人", -1), K("dd", null, P(u.value.host ? I(n).display_name(u.value.host) : "未指定"), 1)]),
53219
53235
  K("div", null, [i[12] ||= K("dt", null, "智能调度", -1), K("dd", null, P(E.value), 1)]),
53220
- u.value.free?.max_rounds ? (U(), W("div", U$, [i[13] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), W(H, { key: 0 }, [q(WK, {
53236
+ u.value.free?.max_rounds ? (U(), W("div", W$, [i[13] ||= K("dt", null, "连续派活上限", -1), K("dd", null, [I(t).access?.can_manage ? (U(), W(H, { key: 0 }, [q(WK, {
53221
53237
  "model-value": _.value,
53222
53238
  disabled: g.value,
53223
53239
  "onUpdate:modelValue": y
53224
- }, null, 8, ["model-value", "disabled"]), v.value ? (U(), W("small", W$, "已保存,进行中的任务链也按新值")) : Y("", !0)], 64)) : (U(), W("span", G$, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
53225
- d.value ? Y("", !0) : (U(), W("div", K$, [i[14] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
53226
- K("div", null, [i[15] ||= K("dt", null, "阅读地址", -1), K("dd", q$, [K("code", null, P(ie.value), 1), q(s, {
53240
+ }, null, 8, ["model-value", "disabled"]), v.value ? (U(), W("small", G$, "已保存,进行中的任务链也按新值")) : Y("", !0)], 64)) : (U(), W("span", K$, "主持人收到你的一条消息后,最多连续派活 " + P(u.value.free.max_rounds) + " 轮(派活 → 成员回答 → 交回汇总为一轮),然后停下等你", 1))])])) : Y("", !0),
53241
+ d.value ? Y("", !0) : (U(), W("div", q$, [i[14] ||= K("dt", null, "逐人追问", -1), K("dd", null, P(u.value.named_followup ? "开启:主持人每轮给每位专家写针对性追问" : "关闭:首轮后请专家回应上一轮观点"), 1)])),
53242
+ K("div", null, [i[15] ||= K("dt", null, "阅读地址", -1), K("dd", J$, [K("code", null, P(ie.value), 1), q(s, {
53227
53243
  icon: "i-lucide-copy",
53228
53244
  color: "neutral",
53229
53245
  variant: "ghost",
@@ -53231,9 +53247,9 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53231
53247
  "aria-label": "复制阅读地址",
53232
53248
  onClick: i[2] ||= (e) => I(r)("copy", ie.value)
53233
53249
  })])]),
53234
- ae.value ? (U(), W("div", J$, [i[16] ||= K("dt", null, "创建时间", -1), K("dd", null, P(ae.value), 1)])) : Y("", !0)
53250
+ ae.value ? (U(), W("div", Y$, [i[16] ||= K("dt", null, "创建时间", -1), K("dd", null, P(ae.value), 1)])) : Y("", !0)
53235
53251
  ])]),
53236
- q(UZ, {
53252
+ q(WZ, {
53237
53253
  open: O.value,
53238
53254
  "onUpdate:open": i[3] ||= (e) => O.value = e,
53239
53255
  description: d.value ? "新成员加入后不打断其他成员;点卡片翻面可设置软件、模型、项目权限和要续接的已有会话。" : "新专家由程序按本机软件配置启动,或由你手动启动,加入本轮发言队列。"
@@ -53260,31 +53276,31 @@ var SQ = { class: "progress-board is-docked" }, CQ = { class: "pb-header" }, wQ
53260
53276
  ]);
53261
53277
  };
53262
53278
  }
53263
- }, [["__scopeId", "data-v-cfcbc22f"]]), Q$ = {
53279
+ }, [["__scopeId", "data-v-cfcbc22f"]]), $$ = {
53264
53280
  thinking: "思考",
53265
53281
  command: "命令",
53266
53282
  tool: "工具",
53267
53283
  editing: "编辑",
53268
53284
  writing: "撰写"
53269
- }, $$ = {
53285
+ }, e1 = {
53270
53286
  thinking: "model",
53271
53287
  writing: "model",
53272
53288
  command: "tool",
53273
53289
  tool: "tool",
53274
53290
  editing: "tool"
53275
- }, e1 = {
53291
+ }, t1 = {
53276
53292
  running: "进行中",
53277
53293
  done: "完成",
53278
53294
  failed: "失败",
53279
53295
  cancelled: "已撤销"
53280
- }, t1 = 3e5, n1 = .03;
53281
- function r1(e) {
53296
+ }, n1 = 3e5, r1 = .03;
53297
+ function i1(e) {
53282
53298
  if (e < 1e3) return `${Math.max(0, Math.round(e))}ms`;
53283
53299
  if (e < 1e4) return `${(e / 1e3).toFixed(1)}s`;
53284
53300
  let t = Math.round(e / 1e3);
53285
53301
  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`;
53286
53302
  }
53287
- function i1(e, t) {
53303
+ function a1(e, t) {
53288
53304
  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) => {
53289
53305
  let o = n && a === e.segments.length - 1, s = Math.min(i + t.end_ms, r);
53290
53306
  return {
@@ -53310,8 +53326,8 @@ function i1(e, t) {
53310
53326
  notes: l
53311
53327
  };
53312
53328
  }
53313
- var a1 = 18e4;
53314
- function o1(e, t) {
53329
+ var o1 = 18e4;
53330
+ function s1(e, t) {
53315
53331
  let { item: n } = e;
53316
53332
  if (n.state === "failed") return {
53317
53333
  tone: "failed",
@@ -53335,22 +53351,22 @@ function o1(e, t) {
53335
53351
  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;
53336
53352
  return o >= 18e4 ? i?.phase === "command" ? {
53337
53353
  tone: "warn",
53338
- text: `命令已运行 ${r1(o)}`
53354
+ text: `命令已运行 ${i1(o)}`
53339
53355
  } : {
53340
53356
  tone: "warn",
53341
- text: `已 ${r1(o)} 无输出,可能卡住`
53357
+ text: `已 ${i1(o)} 无输出,可能卡住`
53342
53358
  } : n.last_note ? {
53343
53359
  tone: "live",
53344
53360
  text: n.last_note
53345
53361
  } : i ? {
53346
53362
  tone: "live",
53347
- text: `${Q$[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
53363
+ text: `${$$[i.phase]}${i.tool ? ` · ${i.tool}` : ""}中`
53348
53364
  } : {
53349
53365
  tone: "live",
53350
53366
  text: "处理中"
53351
53367
  };
53352
53368
  }
53353
- function s1(e, t) {
53369
+ function c1(e, t) {
53354
53370
  return [...e.segments.map((e) => ({
53355
53371
  at: e.start,
53356
53372
  kind: "phase",
@@ -53364,7 +53380,7 @@ function s1(e, t) {
53364
53380
  text: t?.[e.index] ?? (t ? "(未能读取)" : "读取中…")
53365
53381
  }))].sort((e, t) => e.at - t.at || (e.kind === "note") - (t.kind === "note"));
53366
53382
  }
53367
- function c1(e, t, n = /* @__PURE__ */ new Map()) {
53383
+ function l1(e, t, n = /* @__PURE__ */ new Map()) {
53368
53384
  let r = t / 1e3, i = [];
53369
53385
  for (let t of e.executions) {
53370
53386
  if ((t.queued_at || t.dispatched_at || Infinity) > r) continue;
@@ -53398,7 +53414,7 @@ function c1(e, t, n = /* @__PURE__ */ new Map()) {
53398
53414
  executions: i
53399
53415
  };
53400
53416
  }
53401
- function l1(e, t, n) {
53417
+ function u1(e, t, n) {
53402
53418
  let r = e.filter((e) => e.at >= t && e.at <= n);
53403
53419
  if (r.length) return {
53404
53420
  notes: r,
@@ -53410,13 +53426,13 @@ function l1(e, t, n) {
53410
53426
  earlier: !!i
53411
53427
  };
53412
53428
  }
53413
- function u1(e, t) {
53429
+ function d1(e, t) {
53414
53430
  let n = e.executions.map((n) => ({
53415
53431
  key: `${n.source}:${n.id}`,
53416
53432
  parent: n.parent_id ? `free:${n.parent_id}` : "",
53417
53433
  item: n,
53418
53434
  truncated: n.segments.length >= e.segment_limit,
53419
- ...i1(n, t)
53435
+ ...a1(n, t)
53420
53436
  })), r = new Map(n.map((e) => [e.key, e])), i = (e) => {
53421
53437
  let t = r.get(e.parent);
53422
53438
  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);
@@ -53445,18 +53461,18 @@ function u1(e, t) {
53445
53461
  });
53446
53462
  return o;
53447
53463
  }
53448
- function d1(e, t) {
53464
+ function f1(e, t) {
53449
53465
  if (e.source === "discussion") return `run:${e.run_id || e.id}`;
53450
53466
  let n = e;
53451
53467
  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);
53452
53468
  return n.task_id ? `task:${n.task_id}` : `exec:${n.id}`;
53453
53469
  }
53454
- function f1(e, t) {
53470
+ function p1(e, t) {
53455
53471
  let n = new Map(e.executions.filter((e) => e.source === "free").map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
53456
53472
  for (let a of e.executions) {
53457
- let e = d1(a, n);
53473
+ let e = f1(a, n);
53458
53474
  i.set(`${a.source}:${a.id}`, e);
53459
- let o = i1(a, t), s = r.get(e) || {
53475
+ let o = a1(a, t), s = r.get(e) || {
53460
53476
  key: e,
53461
53477
  source: a.source,
53462
53478
  start: o.start,
@@ -53474,7 +53490,7 @@ function f1(e, t) {
53474
53490
  of: i
53475
53491
  };
53476
53492
  }
53477
- function p1(e, t) {
53493
+ function m1(e, t) {
53478
53494
  let n = new Map(e.map((e, t) => [e.key, t])), r = /* @__PURE__ */ new Map(), i = (e, t) => {
53479
53495
  r.has(e) || r.set(e, []), r.get(e).push(t);
53480
53496
  };
@@ -53500,7 +53516,7 @@ function p1(e, t) {
53500
53516
  });
53501
53517
  }), r;
53502
53518
  }
53503
- var m1 = [
53519
+ var h1 = [
53504
53520
  5,
53505
53521
  10,
53506
53522
  15,
@@ -53524,8 +53540,8 @@ var m1 = [
53524
53540
  21600,
53525
53541
  43200,
53526
53542
  86400
53527
- ].map((e) => e * 1e3), h1 = .75;
53528
- function g1(e, t = !1) {
53543
+ ].map((e) => e * 1e3), g1 = .75;
53544
+ function _1(e, t = !1) {
53529
53545
  let n = e.map((e) => [e.start, e.end]).sort((e, t) => e[0] - t[0]);
53530
53546
  if (!n.length) return {
53531
53547
  start: 0,
@@ -53541,8 +53557,8 @@ function g1(e, t = !1) {
53541
53557
  n && e <= n[1] + 3e5 ? n[1] = Math.max(n[1], t) : r.push([e, t]);
53542
53558
  }
53543
53559
  let i = r.reduce((e, [t, n]) => e + (n - t), 0), a = i;
53544
- t && i && (a = m1.find((e) => e >= i / h1) ?? Math.ceil(i / h1), r.at(-1)[1] += a - i);
53545
- let o = Math.min(n1, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
53560
+ t && i && (a = h1.find((e) => e >= i / g1) ?? Math.ceil(i / g1), r.at(-1)[1] += a - i);
53561
+ let o = Math.min(r1, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
53546
53562
  return r.forEach(([e, t], n) => {
53547
53563
  if (n) {
53548
53564
  let t = r[n - 1][1];
@@ -53585,7 +53601,7 @@ function g1(e, t = !1) {
53585
53601
  }))
53586
53602
  };
53587
53603
  }
53588
- var _1 = [
53604
+ var v1 = [
53589
53605
  1,
53590
53606
  2,
53591
53607
  5,
@@ -53604,14 +53620,14 @@ var _1 = [
53604
53620
  21600,
53605
53621
  43200,
53606
53622
  86400
53607
- ].map((e) => e * 1e3), v1 = .12;
53608
- function y1(e, t = 6, n = {
53623
+ ].map((e) => e * 1e3), y1 = .12;
53624
+ function b1(e, t = 6, n = {
53609
53625
  from: 0,
53610
53626
  span: 1
53611
53627
  }) {
53612
53628
  let r = (e.total_ms ?? e.busy_ms) * n.span;
53613
53629
  if (!r) return [];
53614
- let i = _1.find((e) => r / e <= t) ?? _1.at(-1), a = v1 * n.span, o = [];
53630
+ let i = v1.find((e) => r / e <= t) ?? v1.at(-1), a = y1 * n.span, o = [];
53615
53631
  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) {
53616
53632
  let t = e.x(r);
53617
53633
  t < n.from || t > n.from + n.span || (!o.length || t - o.at(-1).x >= a) && o.push({
@@ -53624,8 +53640,8 @@ function y1(e, t = 6, n = {
53624
53640
  seconds: i < 6e4
53625
53641
  }));
53626
53642
  }
53627
- var b1 = .01, x1 = 2e3;
53628
- function S1(e, t) {
53643
+ var x1 = .01, S1 = 2e3;
53644
+ function C1(e, t) {
53629
53645
  let n = (e) => (e - t.from) / t.span;
53630
53646
  return {
53631
53647
  ...e,
@@ -53642,20 +53658,20 @@ function S1(e, t) {
53642
53658
  }))
53643
53659
  };
53644
53660
  }
53645
- function C1(e, t, n, r = 0) {
53646
- let i = Math.max(b1, r ? x1 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
53661
+ function w1(e, t, n, r = 0) {
53662
+ let i = Math.max(x1, r ? S1 / r : 0), a = Math.min(1, Math.max(i, e.span * n)), o = e.from + t * e.span;
53647
53663
  return {
53648
53664
  from: Math.min(1 - a, Math.max(0, o - t * a)),
53649
53665
  span: a
53650
53666
  };
53651
53667
  }
53652
- function w1(e, t) {
53668
+ function T1(e, t) {
53653
53669
  return {
53654
53670
  from: Math.min(1 - e.span, Math.max(0, e.from + t * e.span)),
53655
53671
  span: e.span
53656
53672
  };
53657
53673
  }
53658
- function T1(e, t = Date.now()) {
53674
+ function E1(e, t = Date.now()) {
53659
53675
  let n = null;
53660
53676
  for (let t of e) for (let e of t.segments) (!n || e.seen - e.start > n.end - n.start) && (n = {
53661
53677
  ...e,
@@ -53667,7 +53683,7 @@ function T1(e, t = Date.now()) {
53667
53683
  executions: e.length,
53668
53684
  running: e.filter((e) => e.item.state === "running").length,
53669
53685
  failed: e.filter((e) => e.item.state === "failed").length,
53670
- stalled: e.filter((e) => e.item.state === "running" && o1(e, t).tone === "warn").length,
53686
+ stalled: e.filter((e) => e.item.state === "running" && s1(e, t).tone === "warn").length,
53671
53687
  tool_segments: e.reduce((e, t) => e + t.segments.filter((e) => [
53672
53688
  "command",
53673
53689
  "tool",
@@ -53678,116 +53694,116 @@ function T1(e, t = Date.now()) {
53678
53694
  }
53679
53695
  //#endregion
53680
53696
  //#region frontend/ExecutionTimeline.vue
53681
- var E1 = {
53697
+ var D1 = {
53682
53698
  class: "merged-section execution-timeline",
53683
53699
  "aria-label": "执行时间线"
53684
- }, D1 = {
53700
+ }, O1 = {
53685
53701
  key: 0,
53686
53702
  role: "alert",
53687
53703
  class: "fine-print wf-error"
53688
- }, O1 = {
53704
+ }, k1 = {
53689
53705
  key: 1,
53690
53706
  class: "fine-print"
53691
- }, k1 = { class: "wf-head" }, A1 = {
53707
+ }, A1 = { class: "wf-head" }, j1 = {
53692
53708
  key: 0,
53693
53709
  class: "wf-state is-replay"
53694
- }, j1 = {
53710
+ }, M1 = {
53695
53711
  key: 2,
53696
53712
  class: "wf-headline"
53697
- }, M1 = { class: "wf-summary" }, N1 = ["title"], P1 = ["title"], F1 = { title: "连续调用同一工具合并为一段" }, I1 = {
53713
+ }, N1 = { class: "wf-summary" }, P1 = ["title"], F1 = ["title"], I1 = { title: "连续调用同一工具合并为一段" }, L1 = {
53698
53714
  class: "wf-legend",
53699
53715
  "aria-label": "图例"
53700
- }, L1 = {
53716
+ }, R1 = {
53701
53717
  key: 0,
53702
53718
  class: "wf-legend-note"
53703
- }, R1 = {
53719
+ }, z1 = {
53704
53720
  key: 1,
53705
53721
  class: "wf-legend-note"
53706
- }, z1 = { class: "wf-axis-label" }, B1 = {
53722
+ }, B1 = { class: "wf-axis-label" }, V1 = {
53707
53723
  key: 0,
53708
53724
  class: "wf-zoom"
53709
- }, V1 = {
53725
+ }, H1 = {
53710
53726
  key: 1,
53711
53727
  class: "wf-zoom-hint",
53712
53728
  title: "Ctrl + 滚轮缩放;放大后按住中键或拖动时间轴平移,双击时间轴还原"
53713
- }, H1 = {
53729
+ }, U1 = {
53714
53730
  key: 2,
53715
53731
  class: "wf-branch"
53716
- }, U1 = ["title"], W1 = {
53732
+ }, W1 = ["title"], G1 = {
53717
53733
  key: 0,
53718
53734
  class: "wf-guides",
53719
53735
  "aria-hidden": "true"
53720
- }, G1 = [
53736
+ }, K1 = [
53721
53737
  "aria-expanded",
53722
53738
  "aria-label",
53723
53739
  "onClick"
53724
- ], K1 = {
53740
+ ], q1 = {
53725
53741
  key: 2,
53726
53742
  class: "wf-toggle-space"
53727
- }, q1 = [
53743
+ }, J1 = [
53728
53744
  "aria-expanded",
53729
53745
  "onClick",
53730
53746
  "onMouseenter",
53731
53747
  "onMouseleave"
53732
- ], J1 = { class: "wf-name-line" }, Y1 = {
53748
+ ], Y1 = { class: "wf-name-line" }, X1 = {
53733
53749
  key: 0,
53734
53750
  class: "wf-spinner",
53735
53751
  "aria-hidden": "true"
53736
- }, X1 = {
53752
+ }, Z1 = {
53737
53753
  key: 1,
53738
53754
  class: "wf-pill is-slowest"
53739
- }, Z1 = {
53755
+ }, Q1 = {
53740
53756
  key: 0,
53741
53757
  class: "wf-live-dot",
53742
53758
  "aria-hidden": "true"
53743
- }, Q1 = ["aria-label", "onMouseleave"], $1 = { class: "wf-track" }, e0 = ["data-tone"], t0 = ["onMouseenter", "onClick"], n0 = ["onMouseenter", "onClick"], r0 = [
53759
+ }, $1 = ["aria-label", "onMouseleave"], e0 = { class: "wf-track" }, t0 = ["data-tone"], n0 = ["onMouseenter", "onClick"], r0 = ["onMouseenter", "onClick"], i0 = [
53744
53760
  "data-tone",
53745
53761
  "onMouseenter",
53746
53762
  "onClick"
53747
- ], i0 = [
53763
+ ], a0 = [
53748
53764
  "data-tone",
53749
53765
  "onMouseenter",
53750
53766
  "onClick"
53751
- ], a0 = [
53767
+ ], o0 = [
53752
53768
  "data-tone",
53753
53769
  "onMouseenter",
53754
53770
  "onClick"
53755
- ], o0 = [
53771
+ ], s0 = [
53756
53772
  "aria-label",
53757
53773
  "onMouseenter",
53758
53774
  "onClick",
53759
53775
  "onFocus",
53760
53776
  "onBlur"
53761
- ], s0 = { class: "wf-end" }, c0 = { key: 1 }, l0 = ["aria-label"], u0 = { class: "wf-detail-head" }, d0 = { key: 0 }, f0 = { key: 1 }, p0 = { class: "is-failed" }, m0 = { key: 2 }, h0 = { key: 3 }, g0 = {
53777
+ ], c0 = { class: "wf-end" }, l0 = { key: 1 }, u0 = ["aria-label"], d0 = { class: "wf-detail-head" }, f0 = { key: 0 }, p0 = { key: 1 }, m0 = { class: "is-failed" }, h0 = { key: 2 }, g0 = { key: 3 }, _0 = {
53762
53778
  key: 0,
53763
53779
  class: "wf-log",
53764
53780
  "aria-label": "过程"
53765
- }, _0 = ["data-tone"], v0 = {
53781
+ }, v0 = ["data-tone"], y0 = {
53766
53782
  key: 1,
53767
53783
  class: "wf-log-note"
53768
- }, y0 = {
53784
+ }, b0 = {
53769
53785
  key: 1,
53770
53786
  class: "fine-print"
53771
- }, b0 = {
53787
+ }, x0 = {
53772
53788
  key: 1,
53773
53789
  class: "wf-player"
53774
- }, x0 = {
53790
+ }, S0 = {
53775
53791
  key: 2,
53776
53792
  class: "wf-player"
53777
- }, S0 = ["aria-label"], C0 = ["disabled"], w0 = ["max", "value"], T0 = { class: "wf-player-time" }, E0 = {
53793
+ }, C0 = ["aria-label"], w0 = ["disabled"], T0 = ["max", "value"], E0 = { class: "wf-player-time" }, D0 = {
53778
53794
  key: 3,
53779
53795
  class: "wf-foot"
53780
- }, D0 = { key: 0 }, O0 = { key: 1 }, k0 = ["role"], A0 = {
53796
+ }, O0 = { key: 0 }, k0 = { key: 1 }, A0 = ["role"], j0 = {
53781
53797
  key: 1,
53782
53798
  class: "wf-card-text"
53783
- }, j0 = {
53799
+ }, M0 = {
53784
53800
  key: 2,
53785
53801
  class: "wf-card-reason"
53786
- }, M0 = { class: "wf-card-label" }, N0 = 2e3, P0 = 6e4, F0 = 100, I0 = 60, L0 = 2e4, R0 = 600, z0 = 5, B0 = 16, V0 = 90, H0 = 2, U0 = 8, W0 = 560, G0 = .0015, K0 = "latest", q0 = "all", J0 = 22, Y0 = 5, X0 = 52, Z0 = /*#__PURE__*/ YH({
53802
+ }, N0 = { class: "wf-card-label" }, P0 = 2e3, F0 = 6e4, I0 = 100, L0 = 60, R0 = 2e4, z0 = 600, B0 = 5, V0 = 16, H0 = 90, U0 = 2, W0 = 8, G0 = 560, K0 = .0015, q0 = "latest", J0 = "all", Y0 = 22, X0 = 5, Z0 = 52, Q0 = /*#__PURE__*/ YH({
53787
53803
  __name: "ExecutionTimeline",
53788
53804
  emits: ["detail"],
53789
53805
  setup(e, { emit: t }) {
53790
- let n = t, { view: r, bridge: i } = xr("discussion"), a = a1 / 6e4, o = [
53806
+ let n = t, { view: r, bridge: i } = xr("discussion"), a = o1 / 6e4, o = [
53791
53807
  1,
53792
53808
  2,
53793
53809
  4,
@@ -53803,7 +53819,7 @@ var E1 = {
53803
53819
  let t = d.value;
53804
53820
  if (!t || w) return;
53805
53821
  w = !0;
53806
- let n = e || !S || Date.now() - C >= P0 ? 0 : S - z0;
53822
+ let n = e || !S || Date.now() - C >= F0 ? 0 : S - B0;
53807
53823
  try {
53808
53824
  let e = await i.request(`/api/rooms/${t}/timeline${n ? `?after=${n}` : ""}`);
53809
53825
  if (t !== d.value) return;
@@ -53826,7 +53842,7 @@ var E1 = {
53826
53842
  R(Z(() => re.value?.executions.some((e) => e.state === "running")), (e) => {
53827
53843
  clearInterval(T), e && (T = setInterval(() => {
53828
53844
  document.hidden || ne();
53829
- }, N0));
53845
+ }, P0));
53830
53846
  }, { immediate: !0 }), R(d, () => {
53831
53847
  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);
53832
53848
  }, { immediate: !0 }), R(() => r.value.room, (e, t) => {
@@ -53841,7 +53857,7 @@ var E1 = {
53841
53857
  };
53842
53858
  }
53843
53859
  function oe(e) {
53844
- c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), De.value = C1(De.value, ae(e).share, Math.exp(e.deltaY * G0), Te.value.total_ms)) : Oe.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), De.value = w1(De.value, (e.shiftKey ? e.deltaY : e.deltaX) / ae(e).width)));
53860
+ c.value && e.target.closest?.(".wf-track, .wf-axis") && (e.ctrlKey || e.metaKey ? (e.preventDefault(), De.value = w1(De.value, ae(e).share, Math.exp(e.deltaY * K0), Te.value.total_ms)) : Oe.value && (e.shiftKey || Math.abs(e.deltaX) > Math.abs(e.deltaY)) && (e.preventDefault(), De.value = T1(De.value, (e.shiftKey ? e.deltaY : e.deltaX) / ae(e).width)));
53845
53861
  }
53846
53862
  function k(e) {
53847
53863
  let t = e.target.closest?.(".wf-axis");
@@ -53852,7 +53868,7 @@ var E1 = {
53852
53868
  }, e.currentTarget.setPointerCapture(e.pointerId));
53853
53869
  }
53854
53870
  function se(e) {
53855
- ie && (De.value = w1({
53871
+ ie && (De.value = T1({
53856
53872
  from: ie.from,
53857
53873
  span: De.value.span
53858
53874
  }, -(e.clientX - ie.x) / ie.width));
@@ -53878,15 +53894,15 @@ var E1 = {
53878
53894
  }), ta(() => {
53879
53895
  clearInterval(T), cancelAnimationFrame(ee), document.removeEventListener("pointerdown", ue), document.removeEventListener("keydown", de), u?.disconnect();
53880
53896
  });
53881
- let fe = /* @__PURE__ */ F(K0), pe = Z(() => re.value ? f1(re.value, h.value) : {
53897
+ let fe = /* @__PURE__ */ F(q0), pe = Z(() => re.value ? p1(re.value, h.value) : {
53882
53898
  list: [],
53883
53899
  of: /* @__PURE__ */ new Map()
53884
- }), me = Z(() => fe.value === K0 ? pe.value.list[0]?.key : fe.value === q0 || pe.value.list.some((e) => e.key === fe.value) ? fe.value : pe.value.list[0]?.key), he = Z(() => !re.value || me.value === q0 ? re.value : {
53900
+ }), me = Z(() => fe.value === q0 ? pe.value.list[0]?.key : fe.value === J0 || pe.value.list.some((e) => e.key === fe.value) ? fe.value : pe.value.list[0]?.key), he = Z(() => !re.value || me.value === J0 ? re.value : {
53885
53901
  ...re.value,
53886
53902
  executions: re.value.executions.filter((e) => pe.value.of.get(`${e.source}:${e.id}`) === me.value)
53887
53903
  });
53888
53904
  R(d, () => {
53889
- fe.value = K0;
53905
+ fe.value = q0;
53890
53906
  });
53891
53907
  let ge = (e) => new Date(e).toLocaleString("zh-CN", {
53892
53908
  month: "numeric",
@@ -53896,13 +53912,13 @@ var E1 = {
53896
53912
  hour12: !1
53897
53913
  });
53898
53914
  function _e(e) {
53899
- let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, J0)}${e.task.length > J0 ? "…" : ""}` : e.source === "discussion" ? "讨论" : "执行";
53915
+ let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, Y0)}${e.task.length > Y0 ? "…" : ""}` : e.source === "discussion" ? "讨论" : "执行";
53900
53916
  return `${ge(e.start)} · ${t} · ${e.count} 次${e.running ? " · 进行中" : e.failed ? " · 有失败" : ""}`;
53901
53917
  }
53902
53918
  let M = Z(() => [
53903
53919
  {
53904
53920
  label: "最近一轮(自动跟随)",
53905
- value: K0
53921
+ value: q0
53906
53922
  },
53907
53923
  ...pe.value.list.map((e) => ({
53908
53924
  label: _e(e),
@@ -53910,9 +53926,9 @@ var E1 = {
53910
53926
  })),
53911
53927
  {
53912
53928
  label: "全部执行",
53913
- value: q0
53929
+ value: J0
53914
53930
  }
53915
- ]), N = Z(() => he.value ? u1(he.value, h.value) : []), ve = Z(() => N.value.some((e) => e.item.state === "running")), ye = Z(() => {
53931
+ ]), N = Z(() => he.value ? d1(he.value, h.value) : []), ve = Z(() => N.value.some((e) => e.item.state === "running")), ye = Z(() => {
53916
53932
  let e = Math.min(...N.value.map((e) => e.start)), t = Math.max(...N.value.map((e) => e.end));
53917
53933
  return Number.isFinite(e) ? {
53918
53934
  start: e,
@@ -53923,17 +53939,17 @@ var E1 = {
53923
53939
  end: 0,
53924
53940
  duration: 0
53925
53941
  };
53926
- }), be = Z(() => O.position !== null && !ve.value), xe = Z(() => be.value ? ye.value.start + O.position : h.value), Se = Z(() => be.value ? u1(c1(he.value, xe.value, _.value), xe.value) : N.value), Ce = Z(() => Se.value.filter((e) => !e.ancestors.some((e) => g.value.has(e)))), we = Z(() => Se.value.some((e) => e.item.state === "running")), Te = Z(() => g1(Se.value, we.value)), Ee = {
53942
+ }), be = Z(() => O.position !== null && !ve.value), xe = Z(() => be.value ? ye.value.start + O.position : h.value), Se = Z(() => be.value ? d1(l1(he.value, xe.value, _.value), xe.value) : N.value), Ce = Z(() => Se.value.filter((e) => !e.ancestors.some((e) => g.value.has(e)))), we = Z(() => Se.value.some((e) => e.item.state === "running")), Te = Z(() => _1(Se.value, we.value)), Ee = {
53927
53943
  from: 0,
53928
53944
  span: 1
53929
53945
  }, De = /* @__PURE__ */ F(Ee), Oe = Z(() => De.value.span < 1);
53930
53946
  R([me, d], () => {
53931
53947
  De.value = Ee;
53932
53948
  });
53933
- let ke = Z(() => S1(Te.value, De.value)), Ae = Z(() => {
53949
+ let ke = Z(() => C1(Te.value, De.value)), Ae = Z(() => {
53934
53950
  let e = we.value ? ke.value.x(xe.value) : null;
53935
53951
  return e === null || e < 0 || e > 1 ? null : e;
53936
- }), je = Z(() => Math.max(1, ye.value.duration / L0)), Me = Z(() => [{
53952
+ }), je = Z(() => Math.max(1, ye.value.duration / R0)), Me = Z(() => [{
53937
53953
  label: `自动 · ${Math.round(je.value)}×`,
53938
53954
  value: 0
53939
53955
  }, ...o.map((e) => ({
@@ -53943,7 +53959,7 @@ var E1 = {
53943
53959
  function Pe(e) {
53944
53960
  let t = E ? Math.min(e - E, 250) : 0;
53945
53961
  E = e;
53946
- let n = Se.value.length <= I0 || e - D >= F0;
53962
+ let n = Se.value.length <= L0 || e - D >= I0;
53947
53963
  O.playing && (te += t * Ne.value, te >= ye.value.duration ? Object.assign(O, {
53948
53964
  position: null,
53949
53965
  playing: !1
@@ -53996,15 +54012,15 @@ var E1 = {
53996
54012
  let t = e.filter((e) => !Ve.has(e));
53997
54013
  t.forEach((e) => Ve.add(e)), t.length && (Be.value = /* @__PURE__ */ new Set([...Be.value, ...t]), setTimeout(() => {
53998
54014
  Be.value = new Set([...Be.value].filter((e) => !t.includes(e)));
53999
- }, R0));
54015
+ }, z0));
54000
54016
  }), R([me, d], () => {
54001
54017
  Ve = null;
54002
54018
  });
54003
- let Ue = Z(() => p1(Ce.value, ke.value)), We = Z(() => y1(Te.value, Math.min(U0, Math.max(H0, Math.round((l.value || 540) / V0))), De.value).map((e) => ({
54019
+ let Ue = Z(() => m1(Ce.value, ke.value)), We = Z(() => b1(Te.value, Math.min(W0, Math.max(U0, Math.round((l.value || 540) / H0))), De.value).map((e) => ({
54004
54020
  ...e,
54005
54021
  x: (e.x - De.value.from) / De.value.span
54006
- }))), Ge = Z(() => T1(Se.value, xe.value)), Ke = Z(() => Se.value.filter((e) => e.has_children).map((e) => e.key)), qe = Z(() => Se.value.find((e) => e.key === y.value)), Je = Z(() => qe.value ? s1(qe.value, _.value.get(qe.value.item.id)) : []), Ye = Z(() => {
54007
- let e = Se.value, t = new Set(e.flatMap((e) => e.segments.map((e) => $$[e.phase])));
54022
+ }))), Ge = Z(() => E1(Se.value, xe.value)), Ke = Z(() => Se.value.filter((e) => e.has_children).map((e) => e.key)), qe = Z(() => Se.value.find((e) => e.key === y.value)), Je = Z(() => qe.value ? c1(qe.value, _.value.get(qe.value.item.id)) : []), Ye = Z(() => {
54023
+ let e = Se.value, t = new Set(e.flatMap((e) => e.segments.map((e) => e1[e.phase])));
54008
54024
  return [
54009
54025
  ...e.some((e) => e.queue[1] > e.queue[0]) ? [["queue", "排队"]] : [],
54010
54026
  ...e.some((e) => e.wake) ? [["wake", "唤醒"]] : [],
@@ -54017,10 +54033,10 @@ var E1 = {
54017
54033
  ];
54018
54034
  }), Xe = Z(() => Se.value.length > 0 && Se.value.every((e) => !e.segments.length)), Ze = Z(() => {
54019
54035
  let e = /* @__PURE__ */ new Map();
54020
- for (let t of [...Se.value].sort((e, t) => e.start - t.start)) e.has(t.item.member) || e.set(t.item.member, e.size % Y0 + 1);
54036
+ for (let t of [...Se.value].sort((e, t) => e.start - t.start)) e.has(t.item.member) || e.set(t.item.member, e.size % X0 + 1);
54021
54037
  return e;
54022
54038
  }), Qe = Z(() => {
54023
- let e = X0 / (l.value || 800), t = [];
54039
+ let e = Z0 / (l.value || 800), t = [];
54024
54040
  for (let n of ke.value.folds) {
54025
54041
  let r = n.from + n.width / 2;
54026
54042
  r < 0 || r > 1 || (!t.length || r - t.at(-1).middle >= e) && t.push({
@@ -54030,12 +54046,12 @@ var E1 = {
54030
54046
  }
54031
54047
  return t;
54032
54048
  }), $e = Z(() => {
54033
- let e = X0 / (l.value || 800);
54049
+ let e = Z0 / (l.value || 800);
54034
54050
  return We.value.filter((t) => !Qe.value.some((n) => Math.abs(t.x - n.middle) < e));
54035
54051
  });
54036
54052
  function et(e, t) {
54037
54053
  if (y.value = y.value === e.key ? "" : e.key, !y.value) return;
54038
- let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(W0, r.width - 16);
54054
+ let n = t.currentTarget.getBoundingClientRect(), r = x.value.getBoundingClientRect(), i = Math.min(G0, r.width - 16);
54039
54055
  b.value = {
54040
54056
  top: n.bottom - r.top + 4,
54041
54057
  left: Math.max(8, Math.min(n.left - r.left, r.width - i - 8))
@@ -54062,15 +54078,15 @@ var E1 = {
54062
54078
  function it(e) {
54063
54079
  return [...e.item.source === "discussion" ? ["讨论"] : [], ...e.item.role === "host" ? ["主持"] : []];
54064
54080
  }
54065
- let at = (e) => o1(e, xe.value);
54081
+ let at = (e) => s1(e, xe.value);
54066
54082
  function ot(e) {
54067
54083
  let t = [
54068
54084
  i.display_name(e.item.member),
54069
54085
  rt(e),
54070
- e1[e.item.state],
54071
- `用时 ${r1(e.end - e.start)}`
54086
+ t1[e.item.state],
54087
+ `用时 ${i1(e.end - e.start)}`
54072
54088
  ];
54073
- return e.wake && t.push(`唤醒 ${r1(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(",");
54089
+ return e.wake && t.push(`唤醒 ${i1(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(",");
54074
54090
  }
54075
54091
  async function st(e) {
54076
54092
  let t = e.item.id;
@@ -54094,7 +54110,7 @@ var E1 = {
54094
54110
  let i = e.currentTarget.getBoundingClientRect(), a = n.note ? {
54095
54111
  notes: [n.note],
54096
54112
  earlier: !1
54097
- } : l1(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;
54113
+ } : u1(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;
54098
54114
  v.value = {
54099
54115
  key: t.key,
54100
54116
  id: dt(t, n),
@@ -54118,7 +54134,7 @@ var E1 = {
54118
54134
  }
54119
54135
  let ht = Z(() => {
54120
54136
  let e = v.value?.piece;
54121
- return e ? e.note ? `过程说明 · ${ct(e.note.at)}` : `${e.kind === "segment" ? `${Q$[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${r1(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54137
+ return e ? e.note ? `过程说明 · ${ct(e.note.at)}` : `${e.kind === "segment" ? `${$$[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${i1(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54122
54138
  }), gt = Z(() => {
54123
54139
  if (!v.value) return [];
54124
54140
  let e = _.value.get(v.value.row.item.id);
@@ -54129,17 +54145,17 @@ var E1 = {
54129
54145
  });
54130
54146
  return (e, t) => {
54131
54147
  let r = bH, o = sA, s = pA;
54132
- return U(), W("section", E1, [
54148
+ return U(), W("section", D1, [
54133
54149
  t[30] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "执行时间线"), K("p", null, "本机接入程序唤醒的每次执行;点名字看详情,悬停条形看当时的过程说明。")])], -1),
54134
- m.value ? (U(), W("p", D1, P(m.value), 1)) : Y("", !0),
54135
- re.value && !Se.value.length ? (U(), W("p", O1, "还没有执行记录。")) : Y("", !0),
54150
+ m.value ? (U(), W("p", O1, P(m.value), 1)) : Y("", !0),
54151
+ re.value && !Se.value.length ? (U(), W("p", k1, "还没有执行记录。")) : Y("", !0),
54136
54152
  Se.value.length ? (U(), W("div", {
54137
54153
  key: 2,
54138
54154
  ref_key: "wf_element",
54139
54155
  ref: x,
54140
54156
  class: "wf"
54141
54157
  }, [
54142
- K("header", k1, [
54158
+ K("header", A1, [
54143
54159
  t[12] ||= K("span", { class: "wf-title" }, "执行瀑布", -1),
54144
54160
  q(r, {
54145
54161
  modelValue: fe.value,
@@ -54158,17 +54174,17 @@ var E1 = {
54158
54174
  trailingIcon: "wf-select-icon"
54159
54175
  }
54160
54176
  }, null, 8, ["modelValue", "items"]),
54161
- be.value ? (U(), W("span", A1, "回放中 · " + P(ct(xe.value)), 1)) : (U(), W("span", {
54177
+ be.value ? (U(), W("span", j1, "回放中 · " + P(ct(xe.value)), 1)) : (U(), W("span", {
54162
54178
  key: 1,
54163
54179
  class: j(["wf-state", { "is-live": Ge.value.running }])
54164
54180
  }, P(Ge.value.running ? `${Ge.value.running} 个进行中` : "均已结束"), 3)),
54165
- Ge.value.slowest ? (U(), W("span", j1, [
54181
+ Ge.value.slowest ? (U(), W("span", M1, [
54166
54182
  t[11] ||= J("最慢一步 ", -1),
54167
- K("b", null, [J(P(I(i).display_name(Ge.value.slowest.member)) + " · " + P(I(Q$)[Ge.value.slowest.phase]), 1), Ge.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ge.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54168
- J(" · " + P(I(r1)(Ge.value.slowest.end - Ge.value.slowest.start)), 1)
54183
+ K("b", null, [J(P(I(i).display_name(Ge.value.slowest.member)) + " · " + P(I($$)[Ge.value.slowest.phase]), 1), Ge.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(Ge.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54184
+ J(" · " + P(I(i1)(Ge.value.slowest.end - Ge.value.slowest.start)), 1)
54169
54185
  ])) : Y("", !0)
54170
54186
  ]),
54171
- K("dl", M1, [
54187
+ K("dl", N1, [
54172
54188
  K("div", null, [t[13] ||= K("dt", null, "执行", -1), K("dd", null, [(U(), W("span", {
54173
54189
  key: Ge.value.executions,
54174
54190
  class: "wf-roll"
@@ -54184,17 +54200,17 @@ var E1 = {
54184
54200
  K("div", { title: `超过 ${a} 分钟没有输出` }, [t[16] ||= K("dt", null, "可能卡住", -1), K("dd", { class: j(Ge.value.stalled ? "is-warn" : "is-zero") }, [(U(), W("span", {
54185
54201
  key: Ge.value.stalled,
54186
54202
  class: "wf-roll"
54187
- }, P(Ge.value.stalled), 1))], 2)], 8, N1),
54188
- K("div", { title: Te.value.folds.length ? `已折叠 ${Te.value.folds.length} 段超过 ${I(t1) / 6e4} 分钟的空闲` : void 0 }, [t[17] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(r1)(Te.value.busy_ms)), 1)], 8, P1),
54189
- K("div", F1, [t[19] ||= K("dt", null, "工具与命令", -1), K("dd", { class: j({ "is-zero": !Ge.value.tool_segments }) }, [(U(), W("span", {
54203
+ }, P(Ge.value.stalled), 1))], 2)], 8, P1),
54204
+ K("div", { title: Te.value.folds.length ? `已折叠 ${Te.value.folds.length} 段超过 ${I(n1) / 6e4} 分钟的空闲` : void 0 }, [t[17] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(i1)(Te.value.busy_ms)), 1)], 8, F1),
54205
+ K("div", I1, [t[19] ||= K("dt", null, "工具与命令", -1), K("dd", { class: j({ "is-zero": !Ge.value.tool_segments }) }, [(U(), W("span", {
54190
54206
  key: Ge.value.tool_segments,
54191
54207
  class: "wf-roll"
54192
54208
  }, P(Ge.value.tool_segments), 1)), t[18] ||= J(" 段", -1)], 2)])
54193
54209
  ]),
54194
- K("ul", I1, [
54210
+ K("ul", L1, [
54195
54211
  (U(!0), W(H, null, B(Ye.value, ([e, t]) => (U(), W("li", { key: e }, [K("i", { class: j(["wf-swatch", `is-${e}`]) }, null, 2), J(P(t), 1)]))), 128)),
54196
- Ze.value.size > 1 ? (U(), W("li", L1, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
54197
- Xe.value ? (U(), W("li", R1, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、在线 AI、Codex App")) : Y("", !0)
54212
+ Ze.value.size > 1 ? (U(), W("li", R1, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
54213
+ Xe.value ? (U(), W("li", z1, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、在线 AI、Codex App")) : Y("", !0)
54198
54214
  ]),
54199
54215
  K("div", {
54200
54216
  class: j(["wf-grid", {
@@ -54202,7 +54218,7 @@ var E1 = {
54202
54218
  "is-panning": I(ie)
54203
54219
  }]),
54204
54220
  role: "list",
54205
- style: A({ "--wf-depth-px": `${B0}px` }),
54221
+ style: A({ "--wf-depth-px": `${V0}px` }),
54206
54222
  onWheel: oe,
54207
54223
  onMousedown: le,
54208
54224
  onPointerdown: k,
@@ -54210,14 +54226,14 @@ var E1 = {
54210
54226
  onPointerup: ce,
54211
54227
  onPointercancel: ce
54212
54228
  }, [
54213
- K("div", z1, [
54229
+ K("div", B1, [
54214
54230
  K("span", null, "执行 · " + P(Ce.value.length) + "/" + P(Se.value.length), 1),
54215
- Oe.value ? (U(), W("span", B1, [J("放大 " + P((1 / De.value.span).toFixed(1)) + "×", 1), K("button", {
54231
+ Oe.value ? (U(), W("span", V1, [J("放大 " + P((1 / De.value.span).toFixed(1)) + "×", 1), K("button", {
54216
54232
  type: "button",
54217
54233
  class: "wf-text-button",
54218
54234
  onClick: t[1] ||= (e) => De.value = Ee
54219
- }, "重置")])) : (U(), W("span", V1, "Ctrl + 滚轮缩放")),
54220
- Ke.value.length ? (U(), W("span", H1, [K("button", {
54235
+ }, "重置")])) : (U(), W("span", H1, "Ctrl + 滚轮缩放")),
54236
+ Ke.value.length ? (U(), W("span", U1, [K("button", {
54221
54237
  type: "button",
54222
54238
  class: "wf-text-button",
54223
54239
  onClick: t[2] ||= (e) => g.value = /* @__PURE__ */ new Set()
@@ -54244,7 +54260,7 @@ var E1 = {
54244
54260
  class: "wf-fold-label",
54245
54261
  style: A({ left: `${e.middle * 100}%` }),
54246
54262
  title: `${ct(e.start)} – ${ct(e.end)} 没有执行,已折叠`
54247
- }, "⋯ " + P(I(r1)(e.end - e.start)), 13, U1))), 128)),
54263
+ }, "⋯ " + P(I(i1)(e.end - e.start)), 13, W1))), 128)),
54248
54264
  Ae.value === null ? Y("", !0) : (U(), W("span", {
54249
54265
  key: 0,
54250
54266
  class: "wf-cursor-head",
@@ -54264,7 +54280,7 @@ var E1 = {
54264
54280
  class: "wf-label",
54265
54281
  style: A({ "--depth": e.depth })
54266
54282
  }, [
54267
- e.depth ? (U(), W("span", W1)) : Y("", !0),
54283
+ e.depth ? (U(), W("span", G1)) : Y("", !0),
54268
54284
  e.has_children ? (U(), W("button", {
54269
54285
  key: 1,
54270
54286
  type: "button",
@@ -54272,7 +54288,7 @@ var E1 = {
54272
54288
  "aria-expanded": !g.value.has(e.key),
54273
54289
  "aria-label": `${g.value.has(e.key) ? "展开" : "收起"} ${I(i).display_name(e.item.member)} 派出的执行`,
54274
54290
  onClick: (t) => tt(e.key)
54275
- }, [q(o, { name: "i-lucide-chevron-right" })], 10, G1)) : (U(), W("span", K1)),
54291
+ }, [q(o, { name: "i-lucide-chevron-right" })], 10, K1)) : (U(), W("span", q1)),
54276
54292
  q(s, {
54277
54293
  src: I(i).identities[e.item.member]?.icon,
54278
54294
  text: I(i).identities[e.item.member]?.initials,
@@ -54291,29 +54307,29 @@ var E1 = {
54291
54307
  "aria-expanded": y.value === e.key,
54292
54308
  onClick: (t) => et(e, t),
54293
54309
  onMouseenter: (t) => ft(t, e, {
54294
- label: I(e1)[e.item.state],
54310
+ label: I(t1)[e.item.state],
54295
54311
  start: e.start,
54296
54312
  end: e.end,
54297
54313
  text: at(e).text,
54298
54314
  live: e.item.state === "running"
54299
54315
  }),
54300
54316
  onMouseleave: (t) => mt(e)
54301
- }, [K("span", J1, [
54302
- e.item.state === "running" ? (U(), W("i", Y1)) : Y("", !0),
54317
+ }, [K("span", Y1, [
54318
+ e.item.state === "running" ? (U(), W("i", X1)) : Y("", !0),
54303
54319
  K("strong", null, P(I(i).display_name(e.item.member)), 1),
54304
54320
  (U(!0), W(H, null, B(it(e), (e) => (U(), W("em", {
54305
54321
  key: e,
54306
54322
  class: "wf-pill is-role"
54307
54323
  }, P(e), 1))), 128)),
54308
- Ge.value.slowest?.row === e.key ? (U(), W("em", X1, "最慢")) : Y("", !0)
54309
- ]), K("span", { class: j(["wf-status", `is-${at(e).tone}`]) }, [at(e).tone === "live" ? (U(), W("i", Z1)) : Y("", !0), J(P(at(e).text), 1)], 2)], 40, q1)
54324
+ Ge.value.slowest?.row === e.key ? (U(), W("em", Z1, "最慢")) : Y("", !0)
54325
+ ]), K("span", { class: j(["wf-status", `is-${at(e).tone}`]) }, [at(e).tone === "live" ? (U(), W("i", Q1)) : Y("", !0), J(P(at(e).text), 1)], 2)], 40, J1)
54310
54326
  ], 4),
54311
54327
  K("div", {
54312
54328
  class: "wf-lane",
54313
54329
  role: "img",
54314
54330
  "aria-label": ot(e),
54315
54331
  onMouseleave: (t) => mt(e)
54316
- }, [K("div", $1, [
54332
+ }, [K("div", e0, [
54317
54333
  (U(!0), W(H, null, B($e.value, (e) => (U(), W("i", {
54318
54334
  key: e.at,
54319
54335
  class: "wf-gridline",
@@ -54333,7 +54349,7 @@ var E1 = {
54333
54349
  class: j(["wf-link", `is-${e.part}`]),
54334
54350
  "data-tone": Ze.value.get(e.member),
54335
54351
  style: A({ left: `${e.x * 100}%` })
54336
- }, null, 14, e0))), 128)),
54352
+ }, null, 14, t0))), 128)),
54337
54353
  Ae.value === null ? Y("", !0) : (U(), W("i", {
54338
54354
  key: 0,
54339
54355
  class: "wf-cursor",
@@ -54352,7 +54368,7 @@ var E1 = {
54352
54368
  start: e.queue[0],
54353
54369
  end: e.queue[1]
54354
54370
  })
54355
- }, null, 44, t0),
54371
+ }, null, 44, n0),
54356
54372
  e.wake ? (U(), W("i", {
54357
54373
  key: 1,
54358
54374
  class: "wf-bar is-wake",
@@ -54367,7 +54383,7 @@ var E1 = {
54367
54383
  start: e.wake[0],
54368
54384
  end: e.wake[1]
54369
54385
  })
54370
- }, null, 44, n0)) : Y("", !0),
54386
+ }, null, 44, r0)) : Y("", !0),
54371
54387
  e.work ? (U(), W("i", {
54372
54388
  key: 2,
54373
54389
  class: j(["wf-bar is-work", { "has-detail": e.segments.length }]),
@@ -54385,9 +54401,9 @@ var E1 = {
54385
54401
  end: e.work[1],
54386
54402
  live: e.item.state === "running"
54387
54403
  })
54388
- }, null, 46, r0)) : Y("", !0),
54404
+ }, null, 46, i0)) : Y("", !0),
54389
54405
  (U(!0), W(H, null, B(e.segments, (t) => (U(), W(H, { key: t.start + t.phase }, [K("i", {
54390
- class: j(["wf-bar wf-seg", [`is-${I($$)[t.phase]}`, { "is-live": t.live }]]),
54406
+ class: j(["wf-bar wf-seg", [`is-${I(e1)[t.phase]}`, { "is-live": t.live }]]),
54391
54407
  "data-tone": Ze.value.get(e.item.member),
54392
54408
  style: A(nt(t.start, t.seen, !0)),
54393
54409
  onMouseenter: (n) => ft(n, e, {
@@ -54398,9 +54414,9 @@ var E1 = {
54398
54414
  kind: "segment",
54399
54415
  ...t
54400
54416
  })
54401
- }, null, 46, i0), t.end > t.seen ? (U(), W("i", {
54417
+ }, null, 46, a0), t.end > t.seen ? (U(), W("i", {
54402
54418
  key: 0,
54403
- class: j(["wf-bar wf-seg is-tail", `is-${I($$)[t.phase]}`]),
54419
+ class: j(["wf-bar wf-seg is-tail", `is-${I(e1)[t.phase]}`]),
54404
54420
  "data-tone": Ze.value.get(e.item.member),
54405
54421
  style: A(nt(t.seen, t.end)),
54406
54422
  onMouseenter: (n) => ft(n, e, {
@@ -54411,7 +54427,7 @@ var E1 = {
54411
54427
  kind: "segment",
54412
54428
  ...t
54413
54429
  })
54414
- }, null, 46, a0)) : Y("", !0)], 64))), 128)),
54430
+ }, null, 46, o0)) : Y("", !0)], 64))), 128)),
54415
54431
  (U(!0), W(H, null, B(e.notes, (t) => (U(), W("button", {
54416
54432
  key: `note-${t.index}`,
54417
54433
  type: "button",
@@ -54434,15 +54450,15 @@ var E1 = {
54434
54450
  end: t.at
54435
54451
  }),
54436
54452
  onBlur: (t) => mt(e)
54437
- }, null, 44, o0))), 128))
54438
- ])], 40, Q1),
54439
- K("span", s0, [
54440
- J(P(I(r1)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54453
+ }, null, 44, s0))), 128))
54454
+ ])], 40, $1),
54455
+ K("span", c0, [
54456
+ J(P(I(i1)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54441
54457
  e.item.state === "done" ? Y("", !0) : (U(), W("small", {
54442
54458
  key: 0,
54443
54459
  class: j(`is-${e.item.state}`)
54444
- }, P(I(e1)[e.item.state]), 3)),
54445
- e.truncated ? (U(), W("small", c0, "明细已截断")) : Y("", !0)
54460
+ }, P(I(t1)[e.item.state]), 3)),
54461
+ e.truncated ? (U(), W("small", l0, "明细已截断")) : Y("", !0)
54446
54462
  ])
54447
54463
  ], 2))), 128))
54448
54464
  ], 38),
@@ -54456,9 +54472,9 @@ var E1 = {
54456
54472
  left: `${b.value.left}px`
54457
54473
  })
54458
54474
  }, [
54459
- K("header", u0, [
54475
+ K("header", d0, [
54460
54476
  K("strong", null, P(I(i).display_name(qe.value.item.member)), 1),
54461
- K("small", null, P(rt(qe.value)) + " · " + P(I(e1)[qe.value.item.state]) + " · " + P(I(r1)(qe.value.end - qe.value.start)), 1),
54477
+ K("small", null, P(rt(qe.value)) + " · " + P(I(t1)[qe.value.item.state]) + " · " + P(I(i1)(qe.value.end - qe.value.start)), 1),
54462
54478
  K("button", {
54463
54479
  type: "button",
54464
54480
  class: "wf-card-close",
@@ -54467,47 +54483,47 @@ var E1 = {
54467
54483
  }, [q(o, { name: "i-lucide-x" })])
54468
54484
  ]),
54469
54485
  K("dl", null, [
54470
- qe.value.item.task ? (U(), W("div", d0, [t[22] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(qe.value.item.task), 1), qe.value.item.task_id ? (U(), W("button", {
54486
+ qe.value.item.task ? (U(), W("div", f0, [t[22] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(qe.value.item.task), 1), qe.value.item.task_id ? (U(), W("button", {
54471
54487
  key: 0,
54472
54488
  type: "button",
54473
54489
  class: "subtle-link",
54474
54490
  onClick: t[6] ||= (e) => n("detail", qe.value.item.task_id)
54475
54491
  }, "#" + P(qe.value.item.task_id), 1)) : Y("", !0)])])) : Y("", !0),
54476
- qe.value.item.state === "failed" ? (U(), W("div", f0, [t[23] ||= K("dt", null, "失败原因", -1), K("dd", p0, P(qe.value.item.reason || "执行失败"), 1)])) : qe.value.item.result || qe.value.item.answer_id ? (U(), W("div", m0, [t[24] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(qe.value.item.result), 1), qe.value.item.answer_id ? (U(), W("button", {
54492
+ qe.value.item.state === "failed" ? (U(), W("div", p0, [t[23] ||= K("dt", null, "失败原因", -1), K("dd", m0, P(qe.value.item.reason || "执行失败"), 1)])) : qe.value.item.result || qe.value.item.answer_id ? (U(), W("div", h0, [t[24] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(qe.value.item.result), 1), qe.value.item.answer_id ? (U(), W("button", {
54477
54493
  key: 0,
54478
54494
  type: "button",
54479
54495
  class: "subtle-link",
54480
54496
  onClick: t[7] ||= (e) => n("detail", qe.value.item.answer_id)
54481
54497
  }, "在消息中查看 #" + P(qe.value.item.answer_id), 1)) : Y("", !0)])])) : Y("", !0),
54482
- qe.value.item.changes ? (U(), W("div", h0, [t[25] ||= K("dt", null, "改动", -1), K("dd", null, P(qe.value.item.changes) + " 个文件", 1)])) : Y("", !0)
54498
+ qe.value.item.changes ? (U(), W("div", g0, [t[25] ||= K("dt", null, "改动", -1), K("dd", null, P(qe.value.item.changes) + " 个文件", 1)])) : Y("", !0)
54483
54499
  ]),
54484
- Je.value.length ? (U(), W("ol", g0, [(U(!0), W(H, null, B(Je.value, (e) => (U(), W("li", {
54500
+ Je.value.length ? (U(), W("ol", _0, [(U(!0), W(H, null, B(Je.value, (e) => (U(), W("li", {
54485
54501
  key: `${e.kind}-${e.at}-${e.phase || ""}`,
54486
54502
  class: j(`log-${e.kind}`)
54487
54503
  }, [K("time", null, P(ct(e.at)), 1), e.kind === "phase" ? (U(), W(H, { key: 0 }, [K("i", {
54488
- class: j(["wf-swatch", `is-${I($$)[e.phase]}`]),
54504
+ class: j(["wf-swatch", `is-${I(e1)[e.phase]}`]),
54489
54505
  "data-tone": Ze.value.get(qe.value.item.member),
54490
54506
  "aria-hidden": "true"
54491
- }, null, 10, _0), K("span", null, [
54492
- J(P(I(Q$)[e.phase]), 1),
54507
+ }, null, 10, v0), K("span", null, [
54508
+ J(P(I($$)[e.phase]), 1),
54493
54509
  e.tool ? (U(), W(H, { key: 0 }, [J(" · " + P(e.tool), 1)], 64)) : Y("", !0),
54494
- J(" · " + P(e.live ? "进行中" : I(r1)(e.duration)), 1)
54495
- ])], 64)) : (U(), W("span", v0, P(e.text), 1))], 2))), 128))])) : (U(), W("p", y0, "这次执行没有阶段明细或过程说明。"))
54496
- ], 12, l0)) : Y("", !0),
54497
- me.value === q0 ? (U(), W("div", b0, [...t[26] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", x0, [ve.value ? (U(), W(H, { key: 0 }, [t[27] ||= K("span", { class: "wf-state is-live" }, "实时", -1), t[28] ||= K("span", { class: "wf-player-note" }, "这一轮结束后可以回放", -1)], 64)) : (U(), W(H, { key: 1 }, [
54510
+ J(" · " + P(e.live ? "进行中" : I(i1)(e.duration)), 1)
54511
+ ])], 64)) : (U(), W("span", y0, P(e.text), 1))], 2))), 128))])) : (U(), W("p", b0, "这次执行没有阶段明细或过程说明。"))
54512
+ ], 12, u0)) : Y("", !0),
54513
+ me.value === J0 ? (U(), W("div", x0, [...t[26] ||= [K("span", { class: "wf-player-note" }, "回放按轮进行:在上方选一轮即可回放", -1)]])) : (U(), W("div", S0, [ve.value ? (U(), W(H, { key: 0 }, [t[27] ||= K("span", { class: "wf-state is-live" }, "实时", -1), t[28] ||= K("span", { class: "wf-player-note" }, "这一轮结束后可以回放", -1)], 64)) : (U(), W(H, { key: 1 }, [
54498
54514
  K("button", {
54499
54515
  type: "button",
54500
54516
  class: "wf-player-button",
54501
54517
  "aria-label": O.playing ? "暂停回放" : "回放这一轮",
54502
54518
  onClick: t[8] ||= (e) => O.playing ? Le() : Fe()
54503
- }, [q(o, { name: O.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, S0),
54519
+ }, [q(o, { name: O.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, C0),
54504
54520
  K("button", {
54505
54521
  type: "button",
54506
54522
  class: "wf-player-button",
54507
54523
  "aria-label": "从头回放",
54508
54524
  disabled: !be.value,
54509
54525
  onClick: Re
54510
- }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, C0),
54526
+ }, [q(o, { name: "i-lucide-rotate-ccw" })], 8, w0),
54511
54527
  q(r, {
54512
54528
  modelValue: O.speed,
54513
54529
  "onUpdate:modelValue": t[9] ||= (e) => O.speed = e,
@@ -54534,13 +54550,13 @@ var E1 = {
54534
54550
  value: be.value ? O.position : ye.value.duration,
54535
54551
  "aria-label": "回放位置",
54536
54552
  onInput: ze
54537
- }, null, 40, w0),
54538
- K("span", T0, P(I(r1)(be.value ? O.position : ye.value.duration)) + " / " + P(I(r1)(ye.value.duration)), 1)
54553
+ }, null, 40, T0),
54554
+ K("span", E0, P(I(i1)(be.value ? O.position : ye.value.duration)) + " / " + P(I(i1)(ye.value.duration)), 1)
54539
54555
  ], 64))])),
54540
- Te.value.folds.length || re.value.executions.length >= re.value.execution_limit ? (U(), W("footer", E0, [Te.value.folds.length ? (U(), W("span", D0, [t[29] ||= K("i", {
54556
+ Te.value.folds.length || re.value.executions.length >= re.value.execution_limit ? (U(), W("footer", D0, [Te.value.folds.length ? (U(), W("span", O0, [t[29] ||= K("i", {
54541
54557
  class: "wf-swatch is-fold",
54542
54558
  "aria-hidden": "true"
54543
- }, null, -1), J("已折叠 " + P(Te.value.folds.length) + " 段超过 " + P(I(t1) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), re.value.executions.length >= re.value.execution_limit ? (U(), W("span", O0, "只列出最近 " + P(re.value.execution_limit) + " 次讨论执行与 " + P(re.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54559
+ }, null, -1), J("已折叠 " + P(Te.value.folds.length) + " 段超过 " + P(I(n1) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), re.value.executions.length >= re.value.execution_limit ? (U(), W("span", k0, "只列出最近 " + P(re.value.execution_limit) + " 次讨论执行与 " + P(re.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54544
54560
  ], 512)) : Y("", !0),
54545
54561
  v.value ? (U(), W("div", {
54546
54562
  key: 3,
@@ -54560,79 +54576,79 @@ var E1 = {
54560
54576
  onClick: t[10] ||= (e) => v.value = null
54561
54577
  }, [q(o, { name: "i-lucide-x" })])) : Y("", !0),
54562
54578
  K("small", null, [J(P(ct(v.value.piece.start)), 1), v.value.piece.end > v.value.piece.start ? (U(), W(H, { key: 0 }, [J(" – " + P(v.value.piece.live ? "现在" : ct(v.value.piece.end)), 1)], 64)) : Y("", !0)]),
54563
- v.value.piece.text ? (U(), W("p", A0, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", j0, P(v.value.row.item.reason), 1)) : Y("", !0),
54564
- gt.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(gt.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(ct(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
54565
- ], 14, k0)) : Y("", !0)
54579
+ v.value.piece.text ? (U(), W("p", j0, P(v.value.piece.text), 1)) : v.value.row.item.reason ? (U(), W("p", M0, P(v.value.row.item.reason), 1)) : Y("", !0),
54580
+ gt.value.length ? (U(), W(H, { key: 3 }, [K("small", N0, P(v.value.related.earlier ? "此前的过程说明" : "过程说明"), 1), K("ol", null, [(U(!0), W(H, null, B(gt.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(ct(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
54581
+ ], 14, A0)) : Y("", !0)
54566
54582
  ]);
54567
54583
  };
54568
54584
  }
54569
- }, [["__scopeId", "data-v-ae571187"]]), Q0 = {
54585
+ }, [["__scopeId", "data-v-ae571187"]]), $0 = {
54570
54586
  id: "channel-sidebar",
54571
54587
  class: "channel-sidebar",
54572
54588
  "aria-label": "房间导航"
54573
- }, $0 = { class: "channel-sidebar-content" }, e2 = { class: "channel-directory-heading channel-tools-heading" }, t2 = ["aria-expanded"], n2 = { class: "channel-sidebar-footer" }, r2 = ["aria-label"], i2 = { class: "channel-self" }, a2 = ["title"], o2 = [
54589
+ }, e2 = { class: "channel-sidebar-content" }, t2 = { class: "channel-directory-heading channel-tools-heading" }, n2 = ["aria-expanded"], r2 = { class: "channel-sidebar-footer" }, i2 = ["aria-label"], a2 = { class: "channel-self" }, o2 = ["title"], s2 = [
54574
54590
  "aria-valuemax",
54575
54591
  "aria-valuenow",
54576
54592
  "aria-valuetext"
54577
- ], s2 = { class: "channel-main" }, c2 = { class: "channel-header" }, l2 = { class: "channel-title-icon" }, u2 = { class: "channel-title" }, d2 = { class: "channel-title-copy" }, f2 = ["title"], p2 = {
54593
+ ], c2 = { class: "channel-main" }, l2 = { class: "channel-header" }, u2 = { class: "channel-title-icon" }, d2 = { class: "channel-title" }, f2 = { class: "channel-title-copy" }, p2 = ["title"], m2 = {
54578
54594
  key: 2,
54579
54595
  class: "channel-header-context"
54580
- }, m2 = { class: "channel-header-actions" }, h2 = {
54596
+ }, h2 = { class: "channel-header-actions" }, g2 = {
54581
54597
  key: 0,
54582
54598
  class: "channel-launch-recovery",
54583
54599
  "aria-label": "未完成的创建或启动请求"
54584
- }, g2 = { role: "status" }, _2 = { class: "button-row" }, v2 = {
54600
+ }, _2 = { role: "status" }, v2 = { class: "button-row" }, y2 = {
54585
54601
  key: 1,
54586
54602
  class: "channel-tabbar"
54587
- }, y2 = { class: "channel-brief-inner" }, b2 = { class: "channel-brief-heading" }, x2 = ["aria-label", "aria-expanded"], S2 = {
54603
+ }, b2 = { class: "channel-brief-inner" }, x2 = { class: "channel-brief-heading" }, S2 = ["aria-label", "aria-expanded"], C2 = {
54588
54604
  key: 0,
54589
54605
  class: "channel-brief-preview"
54590
- }, C2 = {
54606
+ }, w2 = {
54591
54607
  id: "channel-brief-content",
54592
54608
  class: "channel-brief-content"
54593
- }, w2 = ["innerHTML"], T2 = { class: "channel-brief-footer" }, E2 = { class: "channel-brief-status" }, D2 = { class: "channel-content" }, O2 = {
54609
+ }, T2 = ["innerHTML"], E2 = { class: "channel-brief-footer" }, D2 = { class: "channel-brief-status" }, O2 = { class: "channel-content" }, k2 = {
54594
54610
  key: 0,
54595
54611
  class: "content-page merged-page",
54596
54612
  role: "tabpanel",
54597
54613
  "aria-label": "讨论"
54598
- }, k2 = {
54614
+ }, A2 = {
54599
54615
  key: 1,
54600
54616
  class: "merged-section",
54601
54617
  "aria-label": "当前讨论"
54602
- }, A2 = { class: "page-heading" }, j2 = {
54618
+ }, j2 = { class: "page-heading" }, M2 = {
54603
54619
  key: 0,
54604
54620
  class: "fine-print"
54605
- }, M2 = {
54621
+ }, N2 = {
54606
54622
  class: "merged-section channel-summary",
54607
54623
  "aria-label": "当前共识"
54608
- }, N2 = { class: "page-heading" }, P2 = { class: "form-footer" }, F2 = { class: "button-row" }, I2 = { class: "consensus-card is-brief" }, L2 = ["innerHTML"], R2 = {
54624
+ }, P2 = { class: "page-heading" }, F2 = { class: "form-footer" }, I2 = { class: "button-row" }, L2 = { class: "consensus-card is-brief" }, R2 = ["innerHTML"], z2 = {
54609
54625
  key: 0,
54610
54626
  class: "consensus-card"
54611
- }, z2 = ["innerHTML"], B2 = {
54627
+ }, B2 = ["innerHTML"], V2 = {
54612
54628
  key: 2,
54613
54629
  class: "fine-print"
54614
- }, V2 = {
54630
+ }, H2 = {
54615
54631
  key: 1,
54616
54632
  class: "content-page merged-page",
54617
54633
  role: "tabpanel",
54618
54634
  "aria-label": "房间"
54619
- }, H2 = {
54635
+ }, U2 = {
54620
54636
  key: 2,
54621
54637
  class: "content-page merged-page",
54622
54638
  role: "tabpanel",
54623
54639
  "aria-label": "执行"
54624
- }, U2 = {
54640
+ }, W2 = {
54625
54641
  key: 1,
54626
54642
  class: "channel-empty"
54627
- }, W2 = ["aria-valuenow", "aria-valuetext"], G2 = {
54643
+ }, G2 = ["aria-valuenow", "aria-valuetext"], K2 = {
54628
54644
  key: 2,
54629
54645
  id: "channel-member-rail",
54630
54646
  class: "channel-member-rail",
54631
54647
  "aria-label": "当前焦点与讨论进度"
54632
- }, K2 = { class: "channel-rail-board" }, q2 = {
54648
+ }, q2 = { class: "channel-rail-board" }, J2 = {
54633
54649
  key: 1,
54634
54650
  class: "progress-board is-docked"
54635
- }, J2 = { class: "channel-detail-title" }, Y2 = { class: "info-section" }, X2 = "ai-codiscuss-channel-layout", Z2 = 220, Q2 = 440, $2 = 280, e4 = 16, t4 = 180, n4 = 400, r4 = 248, i4 = 16, a4 = 480, o4 = 1200, s4 = 0, c4 = {
54651
+ }, Y2 = { class: "channel-detail-title" }, X2 = { class: "info-section" }, Z2 = "ai-codiscuss-channel-layout", Q2 = 220, $2 = 440, e4 = 280, t4 = 16, n4 = 180, r4 = 400, i4 = 248, a4 = 16, o4 = 480, s4 = 1200, c4 = 0, l4 = {
54636
54652
  __name: "ChannelWorkspace",
54637
54653
  setup(e) {
54638
54654
  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(!0), p = /* @__PURE__ */ F(!1), m = r("state-input"), h = r("brief-input"), g = r("search-input"), _ = r("author-select"), v = [{
@@ -54654,14 +54670,14 @@ var E1 = {
54654
54670
  label: "宽",
54655
54671
  width: 1240
54656
54672
  }
54657
- }, b = Ne(), x = /* @__PURE__ */ F(b.reading), S = /* @__PURE__ */ F(b.effects), C = /* @__PURE__ */ F(b.rail), w = /* @__PURE__ */ F(b.nav), T = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), ee = /* @__PURE__ */ F(b.collapsed), E = /* @__PURE__ */ F(!0), D = /* @__PURE__ */ F(b.rail_collapsed), O = Z(() => T.value >= o4), te = Z(() => O.value && !ee.value), ne = Z(() => t.value.tab === "discussion" && !D.value), re = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ie = Z(() => {
54673
+ }, b = Ne(), x = /* @__PURE__ */ F(b.reading), S = /* @__PURE__ */ F(b.effects), C = /* @__PURE__ */ F(b.rail), w = /* @__PURE__ */ F(b.nav), T = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), ee = /* @__PURE__ */ F(b.collapsed), E = /* @__PURE__ */ F(!0), D = /* @__PURE__ */ F(b.rail_collapsed), O = Z(() => T.value >= s4), te = Z(() => O.value && !ee.value), ne = Z(() => t.value.tab === "discussion" && !D.value), re = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ie = Z(() => {
54658
54674
  let e = document.createElement("template");
54659
54675
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
54660
- }), ae = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(0), k = null, se = /* @__PURE__ */ F(null), ce = /* @__PURE__ */ F(null), le = Z(() => Math.min(n4, Math.max(t4, T.value - a4 - s4))), ue = Z(() => Math.min(w.value, le.value)), de = Z(() => ({
54676
+ }), ae = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(0), k = null, se = /* @__PURE__ */ F(null), ce = /* @__PURE__ */ F(null), le = Z(() => Math.min(r4, Math.max(n4, T.value - o4 - c4))), ue = Z(() => Math.min(w.value, le.value)), de = Z(() => ({
54661
54677
  "--channel-reading-width": `${y[x.value].width}px`,
54662
54678
  "--channel-rail-width": `${C.value}px`,
54663
54679
  "--channel-topbar-height": `${oe.value}px`,
54664
- "--channel-main-columns": te.value ? `${ue.value}px ${s4}px minmax(0, 1fr)` : "minmax(0, 1fr)"
54680
+ "--channel-main-columns": te.value ? `${ue.value}px ${c4}px minmax(0, 1fr)` : "minmax(0, 1fr)"
54665
54681
  })), fe = Object.entries(y).map(([e, t]) => ({
54666
54682
  value: e,
54667
54683
  label: t.label
@@ -54758,12 +54774,12 @@ var E1 = {
54758
54774
  }
54759
54775
  function Ne() {
54760
54776
  try {
54761
- let e = JSON.parse(localStorage.getItem(X2)) || {};
54777
+ let e = JSON.parse(localStorage.getItem(Z2)) || {};
54762
54778
  return {
54763
54779
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
54764
54780
  effects: e.effects === "reduced" ? "reduced" : "full",
54765
- rail: Number.isFinite(e.rail) ? Math.min(Q2, Math.max(Z2, e.rail)) : $2,
54766
- nav: Number.isFinite(e.nav) ? Math.min(n4, Math.max(t4, e.nav)) : Pe(),
54781
+ rail: Number.isFinite(e.rail) ? Math.min($2, Math.max(Q2, e.rail)) : e4,
54782
+ nav: Number.isFinite(e.nav) ? Math.min(r4, Math.max(n4, e.nav)) : Pe(),
54767
54783
  collapsed: e.collapsed === !0,
54768
54784
  brief_collapsed: e.brief_collapsed === !0,
54769
54785
  rail_collapsed: e.rail_collapsed === !0
@@ -54772,7 +54788,7 @@ var E1 = {
54772
54788
  return {
54773
54789
  reading: "default",
54774
54790
  effects: "full",
54775
- rail: $2,
54791
+ rail: e4,
54776
54792
  nav: Pe(),
54777
54793
  collapsed: !1,
54778
54794
  brief_collapsed: !1,
@@ -54781,11 +54797,11 @@ var E1 = {
54781
54797
  }
54782
54798
  }
54783
54799
  function Pe() {
54784
- return typeof window > "u" ? r4 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : r4;
54800
+ return typeof window > "u" ? i4 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : i4;
54785
54801
  }
54786
54802
  function Fe() {
54787
54803
  try {
54788
- localStorage.setItem(X2, JSON.stringify({
54804
+ localStorage.setItem(Z2, JSON.stringify({
54789
54805
  reading: x.value,
54790
54806
  effects: S.value,
54791
54807
  rail: C.value,
@@ -54816,19 +54832,19 @@ var E1 = {
54816
54832
  }, e.currentTarget.setPointerCapture(e.pointerId));
54817
54833
  }
54818
54834
  function Ve(e) {
54819
- se.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(Q2, Math.max(Z2, se.value.width + se.value.x - e.clientX))));
54835
+ se.value?.pointer === e.pointerId && (C.value = Math.round(Math.min($2, Math.max(Q2, se.value.width + se.value.x - e.clientX))));
54820
54836
  }
54821
54837
  function He(e) {
54822
54838
  se.value?.pointer === e.pointerId && (se.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Fe());
54823
54839
  }
54824
54840
  function Ue(e) {
54825
54841
  let t = {
54826
- ArrowLeft: C.value + e4,
54827
- ArrowRight: C.value - e4,
54828
- Home: Z2,
54829
- End: Q2
54842
+ ArrowLeft: C.value + t4,
54843
+ ArrowRight: C.value - t4,
54844
+ Home: Q2,
54845
+ End: $2
54830
54846
  };
54831
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(Q2, Math.max(Z2, t[e.key])), Fe());
54847
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min($2, Math.max(Q2, t[e.key])), Fe());
54832
54848
  }
54833
54849
  function We(e) {
54834
54850
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), ce.value = {
@@ -54838,19 +54854,19 @@ var E1 = {
54838
54854
  }, e.currentTarget.setPointerCapture(e.pointerId));
54839
54855
  }
54840
54856
  function Ge(e) {
54841
- ce.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(le.value, Math.max(t4, ce.value.width + e.clientX - ce.value.x))));
54857
+ ce.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(le.value, Math.max(n4, ce.value.width + e.clientX - ce.value.x))));
54842
54858
  }
54843
54859
  function Ke(e) {
54844
54860
  ce.value?.pointer === e.pointerId && (ce.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Fe());
54845
54861
  }
54846
54862
  function qe(e) {
54847
54863
  let t = {
54848
- ArrowLeft: ue.value - i4,
54849
- ArrowRight: ue.value + i4,
54850
- Home: t4,
54864
+ ArrowLeft: ue.value - a4,
54865
+ ArrowRight: ue.value + a4,
54866
+ Home: n4,
54851
54867
  End: le.value
54852
54868
  };
54853
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(le.value, Math.max(t4, t[e.key])), Fe());
54869
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(le.value, Math.max(n4, t[e.key])), Fe());
54854
54870
  }
54855
54871
  return (e, r) => {
54856
54872
  let y = sA, b = lH, w = pA, T = MA, D = $V, oe = WV, k = YV, he = KV, N = HV, Ne = zV, Pe = NV, Fe = AV;
@@ -54862,10 +54878,10 @@ var E1 = {
54862
54878
  }]),
54863
54879
  style: A(de.value)
54864
54880
  }, [
54865
- K("aside", Q0, [
54881
+ K("aside", $0, [
54866
54882
  r[30] ||= 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),
54867
- K("div", $0, [
54868
- q(OZ, {
54883
+ K("div", e2, [
54884
+ q(kZ, {
54869
54885
  onSelect: Ee,
54870
54886
  onManage: we,
54871
54887
  onCreate: Oe,
@@ -54875,12 +54891,12 @@ var E1 = {
54875
54891
  onArchiveFolder: Me,
54876
54892
  onArchives: Te
54877
54893
  }),
54878
- K("div", e2, [K("button", {
54894
+ K("div", t2, [K("button", {
54879
54895
  type: "button",
54880
54896
  class: "channel-section-toggle",
54881
54897
  "aria-expanded": f.value,
54882
54898
  onClick: r[0] ||= (e) => f.value = !f.value
54883
- }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[29] ||= J("频道工具", -1)], 8, t2)]),
54899
+ }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[29] ||= J("频道工具", -1)], 8, n2)]),
54884
54900
  f.value ? (U(), G(b, {
54885
54901
  key: 0,
54886
54902
  items: xe.value,
@@ -54896,7 +54912,7 @@ var E1 = {
54896
54912
  }
54897
54913
  }, null, 8, ["items"])) : Y("", !0)
54898
54914
  ]),
54899
- K("footer", n2, [K("button", {
54915
+ K("footer", r2, [K("button", {
54900
54916
  type: "button",
54901
54917
  class: "channel-self-button",
54902
54918
  "aria-label": `账号与设置:${I(n).display_name(I(_))}${Se.value ? "," + Se.value : ""}`,
@@ -54912,10 +54928,10 @@ var E1 = {
54912
54928
  "text",
54913
54929
  "alt",
54914
54930
  "class"
54915
- ]), K("span", i2, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: j(["channel-connection", { "is-action": Se.value }]) }, [K("span", {
54931
+ ]), K("span", a2, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: j(["channel-connection", { "is-action": Se.value }]) }, [K("span", {
54916
54932
  class: j({ connected: I(t).connected }),
54917
54933
  title: I(t).connected ? "网站已连接" : "网站未连接"
54918
- }, null, 10, a2), J(P(Se.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, r2), q(D, { text: "设置" }, {
54934
+ }, null, 10, o2), J(P(Se.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, i2), q(D, { text: "设置" }, {
54919
54935
  default: L(() => [q(T, {
54920
54936
  icon: "i-lucide-settings-2",
54921
54937
  color: "neutral",
@@ -54936,7 +54952,7 @@ var E1 = {
54936
54952
  "aria-label": "调整房间栏宽度",
54937
54953
  "aria-orientation": "vertical",
54938
54954
  "aria-controls": "channel-sidebar",
54939
- "aria-valuemin": t4,
54955
+ "aria-valuemin": n4,
54940
54956
  "aria-valuemax": le.value,
54941
54957
  "aria-valuenow": ue.value,
54942
54958
  "aria-valuetext": `${ue.value} 像素`,
@@ -54947,13 +54963,13 @@ var E1 = {
54947
54963
  onPointercancel: Ke,
54948
54964
  onLostpointercapture: Ke,
54949
54965
  onKeydown: qe
54950
- }, null, 40, o2)) : Y("", !0),
54951
- K("main", s2, [K("div", {
54966
+ }, null, 40, s2)) : Y("", !0),
54967
+ K("main", c2, [K("div", {
54952
54968
  ref_key: "topbar",
54953
54969
  ref: ae,
54954
54970
  class: j(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
54955
54971
  }, [
54956
- K("header", c2, [
54972
+ K("header", l2, [
54957
54973
  O.value ? (U(), G(D, {
54958
54974
  key: 0,
54959
54975
  text: ee.value ? "展开房间栏" : "收起房间栏"
@@ -54981,8 +54997,8 @@ var E1 = {
54981
54997
  "aria-expanded": d.value,
54982
54998
  onClick: r[4] ||= (e) => d.value = !0
54983
54999
  }, null, 8, ["aria-expanded"])),
54984
- K("span", l2, [q(y, { name: "i-lucide-hash" })]),
54985
- K("div", u2, [K("div", d2, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, f2)]), o.value?.archived ? (U(), G(oe, {
55000
+ K("span", u2, [q(y, { name: "i-lucide-hash" })]),
55001
+ K("div", d2, [K("div", f2, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, p2)]), o.value?.archived ? (U(), G(oe, {
54986
55002
  key: 0,
54987
55003
  color: "neutral",
54988
55004
  variant: "subtle",
@@ -54991,12 +55007,12 @@ var E1 = {
54991
55007
  default: L(() => [...r[31] ||= [J("已存档", -1)]]),
54992
55008
  _: 1
54993
55009
  })) : Y("", !0)]),
54994
- o.value ? (U(), W("span", p2, [
55010
+ o.value ? (U(), W("span", m2, [
54995
55011
  J(P(me.find((e) => e.value === I(t).tab)?.label), 1),
54996
55012
  r[32] ||= K("span", null, "·", -1),
54997
55013
  J(P(o.value.message_count) + " 条记录", 1)
54998
55014
  ])) : Y("", !0),
54999
- K("div", m2, [
55015
+ K("div", h2, [
55000
55016
  I(t).tab === "discussion" ? (U(), W("form", {
55001
55017
  key: 0,
55002
55018
  class: "channel-search",
@@ -55054,7 +55070,7 @@ var E1 = {
55054
55070
  ])]),
55055
55071
  _: 1
55056
55072
  })) : Y("", !0),
55057
- o.value && !(ne.value && O.value) ? (U(), G(i$, { key: 2 })) : Y("", !0)
55073
+ o.value && !(ne.value && O.value) ? (U(), G(a$, { key: 2 })) : Y("", !0)
55058
55074
  ]),
55059
55075
  q(D, { text: re.value }, {
55060
55076
  default: L(() => [q(T, {
@@ -55075,12 +55091,12 @@ var E1 = {
55075
55091
  _: 1
55076
55092
  }, 8, ["text"])
55077
55093
  ]),
55078
- I(t).launch.recoveries.length ? (U(), W("section", h2, [
55094
+ I(t).launch.recoveries.length ? (U(), W("section", g2, [
55079
55095
  r[33] ||= K("h2", null, "继续未完成的请求", -1),
55080
55096
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
55081
55097
  K("strong", null, P(e.title), 1),
55082
- K("p", g2, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
55083
- K("div", _2, [
55098
+ K("p", _2, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
55099
+ K("div", v2, [
55084
55100
  q(T, {
55085
55101
  label: e.direct ? "继续创建房间" : "继续本次启动",
55086
55102
  size: "sm",
@@ -55113,7 +55129,7 @@ var E1 = {
55113
55129
  ]))), 128)),
55114
55130
  r[34] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
55115
55131
  ])) : Y("", !0),
55116
- o.value ? (U(), W("div", v2, [q(he, {
55132
+ o.value ? (U(), W("div", y2, [q(he, {
55117
55133
  modelValue: pe.value,
55118
55134
  "onUpdate:modelValue": r[9] ||= (e) => pe.value = e,
55119
55135
  items: me,
@@ -55128,7 +55144,7 @@ var E1 = {
55128
55144
  key: 2,
55129
55145
  class: j(["channel-host-brief", { "is-collapsed": E.value }]),
55130
55146
  "aria-label": "主持简报"
55131
- }, [K("div", y2, [K("div", b2, [K("button", {
55147
+ }, [K("div", b2, [K("div", x2, [K("button", {
55132
55148
  type: "button",
55133
55149
  class: "channel-brief-toggle",
55134
55150
  "aria-label": E.value ? "展开主持简报" : "收起主持简报",
@@ -55138,8 +55154,8 @@ var E1 = {
55138
55154
  }, [
55139
55155
  q(y, { name: E.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
55140
55156
  K("strong", null, "主持简报" + P(E.value ? ":" : ""), 1),
55141
- E.value ? (U(), W("span", S2, P(ie.value), 1)) : Y("", !0)
55142
- ], 8, x2), E.value ? Y("", !0) : (U(), G(T, {
55157
+ E.value ? (U(), W("span", C2, P(ie.value), 1)) : Y("", !0)
55158
+ ], 8, S2), E.value ? Y("", !0) : (U(), G(T, {
55143
55159
  key: 0,
55144
55160
  label: "更新简报",
55145
55161
  color: "neutral",
@@ -55147,20 +55163,20 @@ var E1 = {
55147
55163
  size: "xs",
55148
55164
  class: "channel-brief-update",
55149
55165
  onClick: r[10] ||= (e) => I(i)("tab", "context")
55150
- }))]), vr(K("div", C2, [K("div", {
55166
+ }))]), vr(K("div", w2, [K("div", {
55151
55167
  class: "channel-brief-text markdown-body",
55152
55168
  innerHTML: o.value.rendered_brief
55153
- }, null, 8, w2), K("div", T2, [K("span", E2, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !E.value]])])], 2)) : Y("", !0)
55169
+ }, null, 8, T2), K("div", E2, [K("span", D2, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !E.value]])])], 2)) : Y("", !0)
55154
55170
  ], 2), o.value ? (U(), W("div", {
55155
55171
  key: 0,
55156
55172
  class: j(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
55157
- }, [K("div", D2, [
55173
+ }, [K("div", O2, [
55158
55174
  vr(q(uK, {
55159
55175
  onDetail: De,
55160
55176
  onEdit: r[11] ||= (e) => s.value = "edit"
55161
55177
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
55162
- I(t).tab === "history" ? (U(), W("div", O2, [
55163
- ge.value ? (U(), W("section", k2, [K("div", A2, [r[35] ||= K("div", null, [K("h2", null, "当前讨论"), K("p", null, "没有进行中的讨论。开启后由主持人推进成员轮流发言,到上限或结束后房间回到自由协作,记录与结论保留。")], -1), q(T, {
55178
+ I(t).tab === "history" ? (U(), W("div", k2, [
55179
+ ge.value ? (U(), W("section", A2, [K("div", j2, [r[35] ||= K("div", null, [K("h2", null, "当前讨论"), K("p", null, "没有进行中的讨论。开启后由主持人推进成员轮流发言,到上限或结束后房间回到自由协作,记录与结论保留。")], -1), q(T, {
55164
55180
  icon: "i-lucide-messages-square",
55165
55181
  label: "开启讨论",
55166
55182
  variant: "outline",
@@ -55168,13 +55184,13 @@ var E1 = {
55168
55184
  class: "channel-surface-button",
55169
55185
  disabled: !ve.value,
55170
55186
  onClick: r[13] ||= (e) => _e.value = !0
55171
- }, null, 8, ["disabled"])]), !ve.value && !o.value.archived ? (U(), W("p", j2, "开启讨论需要一位由本机唤醒的 AI 主持人,且本机服务在线。")) : Y("", !0)])) : (U(), G(jK, {
55187
+ }, null, 8, ["disabled"])]), !ve.value && !o.value.archived ? (U(), W("p", M2, "开启讨论需要一位由本机唤醒的 AI 主持人,且本机服务在线。")) : Y("", !0)])) : (U(), G(jK, {
55172
55188
  key: 0,
55173
55189
  section: "host",
55174
55190
  onOpen: r[12] ||= (e) => s.value = e,
55175
55191
  onDetail: De
55176
55192
  })),
55177
- K("section", M2, [K("div", N2, [r[36] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), M.value ? Y("", !0) : (U(), G(T, {
55193
+ K("section", N2, [K("div", P2, [r[36] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), M.value ? Y("", !0) : (U(), G(T, {
55178
55194
  key: 0,
55179
55195
  icon: "i-lucide-pencil",
55180
55196
  label: "编辑",
@@ -55218,7 +55234,7 @@ var E1 = {
55218
55234
  }, null, 8, ["modelValue"])]),
55219
55235
  _: 1
55220
55236
  }),
55221
- K("div", P2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", F2, [q(T, {
55237
+ K("div", F2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", I2, [q(T, {
55222
55238
  label: "取消",
55223
55239
  color: "neutral",
55224
55240
  variant: "ghost",
@@ -55231,7 +55247,7 @@ var E1 = {
55231
55247
  class: "channel-primary-button",
55232
55248
  loading: I(a) === "save_context"
55233
55249
  }, null, 8, ["loading"])])])
55234
- ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", I2, [K("h3", null, [r[37] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55250
+ ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", L2, [K("h3", null, [r[37] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55235
55251
  key: 0,
55236
55252
  type: "button",
55237
55253
  class: "subtle-link",
@@ -55239,7 +55255,7 @@ var E1 = {
55239
55255
  }, "整理至 #" + P(o.value.state_until), 1)) : Y("", !0)]), K("div", {
55240
55256
  class: "markdown-body",
55241
55257
  innerHTML: o.value.rendered_brief
55242
- }, null, 8, L2)]), ye.value ? (U(), W("details", R2, [K("summary", null, [
55258
+ }, null, 8, R2)]), ye.value ? (U(), W("details", z2, [K("summary", null, [
55243
55259
  r[38] ||= K("h3", null, "详细共识与进度", -1),
55244
55260
  r[39] ||= K("span", null, "依据、已处理内容、未决问题与下一步", -1),
55245
55261
  q(y, {
@@ -55249,21 +55265,21 @@ var E1 = {
55249
55265
  ]), K("div", {
55250
55266
  class: "markdown-body consensus-state",
55251
55267
  innerHTML: ye.value
55252
- }, null, 8, z2)])) : Y("", !0)], 64)) : (U(), W("p", B2, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55253
- q(y$, { onDetail: De }),
55254
- q(KZ, {
55268
+ }, null, 8, B2)])) : Y("", !0)], 64)) : (U(), W("p", V2, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55269
+ q(b$, { onDetail: De }),
55270
+ q(qZ, {
55255
55271
  open: _e.value,
55256
55272
  "onUpdate:open": r[19] ||= (e) => _e.value = e
55257
55273
  }, null, 8, ["open"])
55258
55274
  ])) : Y("", !0),
55259
- I(t).tab === "overview" ? (U(), W("div", V2, [q(Z$), ge.value ? Y("", !0) : (U(), G(jK, {
55275
+ I(t).tab === "overview" ? (U(), W("div", H2, [q(Q$), ge.value ? Y("", !0) : (U(), G(jK, {
55260
55276
  key: 0,
55261
55277
  section: "access",
55262
55278
  onOpen: r[20] ||= (e) => s.value = e,
55263
55279
  onDetail: De
55264
55280
  }))])) : Y("", !0),
55265
- I(t).tab === "timeline" ? (U(), W("div", H2, [q(Z0, { onDetail: De })])) : Y("", !0)
55266
- ])], 2)) : (U(), W("div", U2, [
55281
+ I(t).tab === "timeline" ? (U(), W("div", U2, [q(Q0, { onDetail: De })])) : Y("", !0)
55282
+ ])], 2)) : (U(), W("div", W2, [
55267
55283
  q(y, { name: "i-lucide-hash" }),
55268
55284
  r[40] ||= K("h2", null, "新建一个协作房间", -1),
55269
55285
  r[41] ||= K("p", null, "邀请 AI 一起协作,随时 @ 提问;需要时开启讨论,保留所有人的观点。", -1),
@@ -55282,8 +55298,8 @@ var E1 = {
55282
55298
  "aria-label": "调整右侧栏宽度",
55283
55299
  "aria-orientation": "vertical",
55284
55300
  "aria-controls": "channel-member-rail",
55285
- "aria-valuemin": Z2,
55286
- "aria-valuemax": Q2,
55301
+ "aria-valuemin": Q2,
55302
+ "aria-valuemax": $2,
55287
55303
  "aria-valuenow": C.value,
55288
55304
  "aria-valuetext": `${C.value} 像素`,
55289
55305
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -55293,8 +55309,8 @@ var E1 = {
55293
55309
  onPointercancel: He,
55294
55310
  onLostpointercapture: He,
55295
55311
  onKeydown: Ue
55296
- }, null, 40, W2)) : Y("", !0),
55297
- ne.value ? (U(), W("aside", G2, [K("section", K2, [o.value ? (U(), G($Q, { key: 0 })) : (U(), W("div", q2, [...r[42] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55312
+ }, null, 40, G2)) : Y("", !0),
55313
+ ne.value ? (U(), W("aside", K2, [K("section", q2, [o.value ? (U(), G(e$, { key: 0 })) : (U(), W("div", J2, [...r[42] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55298
55314
  q(Pe, {
55299
55315
  open: d.value,
55300
55316
  "onUpdate:open": r[23] ||= (e) => d.value = e,
@@ -55306,7 +55322,7 @@ var E1 = {
55306
55322
  body: "channel-drawer-body"
55307
55323
  }
55308
55324
  }, {
55309
- body: L(() => [q(OZ, {
55325
+ body: L(() => [q(kZ, {
55310
55326
  onSelect: Ee,
55311
55327
  onManage: we,
55312
55328
  onCreate: Oe,
@@ -55338,7 +55354,7 @@ var E1 = {
55338
55354
  }
55339
55355
  }, {
55340
55356
  body: L(() => [o.value ? (U(), W(H, { key: 0 }, [
55341
- K("div", J2, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
55357
+ K("div", Y2, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
55342
55358
  (U(), W(H, null, B([
55343
55359
  {
55344
55360
  key: "goal",
@@ -55365,7 +55381,7 @@ var E1 = {
55365
55381
  class: "info-section"
55366
55382
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
55367
55383
  q(Fe),
55368
- K("section", Y2, [r[43] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(Ce.value, (e) => (U(), W("div", {
55384
+ K("section", X2, [r[43] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(Ce.value, (e) => (U(), W("div", {
55369
55385
  key: e.name,
55370
55386
  class: "expert-row"
55371
55387
  }, [
@@ -55398,7 +55414,7 @@ var E1 = {
55398
55414
  ], 64)) : Y("", !0)]),
55399
55415
  _: 1
55400
55416
  }, 8, ["open"]),
55401
- q(YX, {
55417
+ q(XX, {
55402
55418
  modelValue: s.value,
55403
55419
  "onUpdate:modelValue": r[26] ||= (e) => s.value = e,
55404
55420
  "reading-width": x.value,
@@ -55422,7 +55438,7 @@ var E1 = {
55422
55438
  ], 6);
55423
55439
  };
55424
55440
  }
55425
- }, l4 = {
55441
+ }, u4 = {
55426
55442
  __name: "App",
55427
55443
  setup(e) {
55428
55444
  return br("discussion", OV()), (e, t) => {
@@ -55433,7 +55449,7 @@ var E1 = {
55433
55449
  toaster: null
55434
55450
  }, {
55435
55451
  default: L(() => [q(I(Qz), { "reduced-motion": "user" }, {
55436
- default: L(() => [q(c4)]),
55452
+ default: L(() => [q(l4)]),
55437
55453
  _: 1
55438
55454
  })]),
55439
55455
  _: 1
@@ -55443,8 +55459,8 @@ var E1 = {
55443
55459
  };
55444
55460
  //#endregion
55445
55461
  //#region frontend/main.js
55446
- function u4() {
55447
- bu(l4).use(ph).mount("#modern-root");
55462
+ function d4() {
55463
+ bu(u4).use(ph).mount("#modern-root");
55448
55464
  }
55449
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", u4) : u4();
55465
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", d4) : d4();
55450
55466
  //#endregion