ai_co_discuss 0.2.43 → 0.2.44

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
@@ -45199,7 +45199,7 @@ var _H = {
45199
45199
  }
45200
45200
  let S = Z(() => {
45201
45201
  let e = o.value?.limits || {};
45202
- return `${e.max_rounds ? `${e.completed_rounds || 0} / ${e.max_rounds} 轮` : `${e.completed_rounds || 0} 轮`} · 已用 ${Math.floor((e.elapsed_seconds || 0) / 60)} 分钟`;
45202
+ return `${n.limit_rounds(e).text} · 已用 ${Math.floor((e.elapsed_seconds || 0) / 60)} 分钟`;
45203
45203
  });
45204
45204
  return (e, C) => {
45205
45205
  let w = MA, T = WV, ee = pA, E = sA, D = bH, O = zV, k = YV, te = TH;
@@ -45632,7 +45632,7 @@ var _H = {
45632
45632
  ]);
45633
45633
  };
45634
45634
  }
45635
- }, [["__scopeId", "data-v-32d54af5"]]), RK = {
45635
+ }, [["__scopeId", "data-v-ff9406dc"]]), RK = {
45636
45636
  slots: {
45637
45637
  overlay: "fixed inset-0",
45638
45638
  content: "bg-default divide-y divide-default flex flex-col focus:outline-none",
@@ -47477,11 +47477,14 @@ var cq = /*#__PURE__*/ jH({
47477
47477
  }, 8, ["style"])], 42, Cq);
47478
47478
  };
47479
47479
  }
47480
- }, [["__scopeId", "data-v-22c260cb"]]), oJ = { class: "scheduler-settings" }, sJ = { class: "scheduler-title" }, cJ = { class: "scheduler-facts" }, lJ = ["title"], uJ = { class: "scheduler-flip" }, dJ = { class: "scheduler-back" }, fJ = { class: "scheduler-heading" }, pJ = { class: "scheduler-field" }, mJ = { class: "scheduler-field" }, hJ = { class: "scheduler-field" }, gJ = {
47480
+ }, [["__scopeId", "data-v-22c260cb"]]), oJ = { class: "scheduler-settings" }, sJ = { class: "scheduler-title" }, cJ = {
47481
+ key: 0,
47482
+ class: "scheduler-cards"
47483
+ }, lJ = { class: "scheduler-facts" }, uJ = ["title"], dJ = { class: "scheduler-flip" }, fJ = { class: "scheduler-back" }, pJ = { class: "scheduler-heading" }, mJ = { class: "scheduler-field" }, hJ = { class: "scheduler-field" }, gJ = { class: "scheduler-field" }, _J = {
47481
47484
  key: 0,
47482
47485
  role: "alert",
47483
47486
  class: "scheduler-error"
47484
- }, _J = ["role"], vJ = "••••••••••••", yJ = /*#__PURE__*/ jH({
47487
+ }, vJ = ["role"], yJ = "••••••••••••", bJ = /*#__PURE__*/ jH({
47485
47488
  __name: "SchedulerSettings",
47486
47489
  props: {
47487
47490
  free: {
@@ -47584,11 +47587,8 @@ var cq = /*#__PURE__*/ jH({
47584
47587
  "model-value",
47585
47588
  "disabled",
47586
47589
  "description"
47587
- ]), i.value.enabled && !e.blocker ? (U(), W("div", {
47588
- key: 0,
47589
- class: M(["scheduler-card", { "is-editing": d.value }])
47590
- }, [d.value ? (U(), W(H, { key: 1 }, [K("div", dJ, [
47591
- K("div", fJ, [v[16] ||= K("strong", null, [J("决策模型"), K("span", null, "设置")], -1), q(S, {
47590
+ ]), i.value.enabled && !e.blocker ? (U(), W("div", cJ, [K("div", { class: M(["scheduler-card", { "is-editing": d.value }]) }, [d.value ? (U(), W(H, { key: 1 }, [K("div", fJ, [
47591
+ K("div", pJ, [v[16] ||= K("strong", null, [J("决策模型"), K("span", null, "设置")], -1), q(S, {
47592
47592
  icon: "i-lucide-zap",
47593
47593
  "aria-label": "检查智能调度配置",
47594
47594
  title: "检查配置:向决策模型发送一道极短的是非题,核对供应商、模型与密钥",
@@ -47603,7 +47603,7 @@ var cq = /*#__PURE__*/ jH({
47603
47603
  "loading",
47604
47604
  "disabled"
47605
47605
  ])]),
47606
- K("div", pJ, [v[17] ||= K("span", null, "供应商", -1), q(C, {
47606
+ K("div", mJ, [v[17] ||= K("span", null, "供应商", -1), q(C, {
47607
47607
  "model-value": i.value.provider || "",
47608
47608
  items: a.value,
47609
47609
  "aria-label": "智能调度供应商",
@@ -47611,7 +47611,7 @@ var cq = /*#__PURE__*/ jH({
47611
47611
  class: "w-full",
47612
47612
  "onUpdate:modelValue": v[2] ||= (e) => I(r).write_scheduler("provider", e)
47613
47613
  }, null, 8, ["model-value", "items"])]),
47614
- K("div", mJ, [v[18] ||= K("span", null, "模型", -1), q(w, {
47614
+ K("div", hJ, [v[18] ||= K("span", null, "模型", -1), q(w, {
47615
47615
  mode: "autocomplete",
47616
47616
  "ignore-filter": "",
47617
47617
  "model-value": i.value.model || "",
@@ -47623,7 +47623,7 @@ var cq = /*#__PURE__*/ jH({
47623
47623
  class: "w-full",
47624
47624
  "onUpdate:modelValue": v[3] ||= (e) => I(r).write_scheduler("model", e)
47625
47625
  }, null, 8, ["model-value", "items"])]),
47626
- K("div", hJ, [v[19] ||= K("span", null, "密钥", -1), q(T, {
47626
+ K("div", gJ, [v[19] ||= K("span", null, "密钥", -1), q(T, {
47627
47627
  modelValue: s.value,
47628
47628
  "onUpdate:modelValue": v[5] ||= (e) => s.value = e,
47629
47629
  type: "text",
@@ -47631,7 +47631,7 @@ var cq = /*#__PURE__*/ jH({
47631
47631
  spellcheck: "false",
47632
47632
  "data-1p-ignore": "",
47633
47633
  "data-lpignore": "true",
47634
- placeholder: i.value.api_key_ref ? vJ : "填写所选供应商的 API Key",
47634
+ placeholder: i.value.api_key_ref ? yJ : "填写所选供应商的 API Key",
47635
47635
  title: i.value.api_key_ref && !s.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
47636
47636
  "aria-label": "智能调度 API Key",
47637
47637
  size: "xs",
@@ -47666,12 +47666,12 @@ var cq = /*#__PURE__*/ jH({
47666
47666
  "loading",
47667
47667
  "ui"
47668
47668
  ])]),
47669
- u.value ? (U(), W("p", gJ, P(u.value), 1)) : Y("", !0),
47669
+ u.value ? (U(), W("p", _J, P(u.value), 1)) : Y("", !0),
47670
47670
  m.value.message ? (U(), W("p", {
47671
47671
  key: 1,
47672
47672
  role: m.value.state === "error" ? "alert" : "status",
47673
47673
  class: M(m.value.state === "error" ? "scheduler-error" : "scheduler-ok")
47674
- }, P(m.value.message), 11, _J)) : Y("", !0),
47674
+ }, P(m.value.message), 11, vJ)) : Y("", !0),
47675
47675
  v[20] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10 条消息发给所选供应商;密钥只存本机。", -1)
47676
47676
  ]), K("button", {
47677
47677
  type: "button",
@@ -47687,57 +47687,57 @@ var cq = /*#__PURE__*/ jH({
47687
47687
  onClick: v[1] ||= (e) => d.value = !0
47688
47688
  }, [
47689
47689
  v[15] ||= K("strong", null, "决策模型", -1),
47690
- K("dl", cJ, [
47690
+ K("dl", lJ, [
47691
47691
  K("div", null, [v[11] ||= K("dt", null, "状态", -1), K("dd", { class: M(`is-${p.value.tone}`) }, [v[10] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(p.value.text), 1)], 2)]),
47692
47692
  K("div", null, [v[12] ||= K("dt", null, "供应商", -1), K("dd", null, P(f.value), 1)]),
47693
- K("div", null, [v[13] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, lJ)])
47693
+ K("div", null, [v[13] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, uJ)])
47694
47694
  ]),
47695
- K("span", uJ, [q(x, { name: "i-lucide-settings-2" }), v[14] ||= J("设置", -1)])
47696
- ]))], 2)) : Y("", !0)]);
47695
+ K("span", dJ, [q(x, { name: "i-lucide-settings-2" }), v[14] ||= J("设置", -1)])
47696
+ ]))], 2)])) : Y("", !0)]);
47697
47697
  };
47698
47698
  }
47699
- }, [["__scopeId", "data-v-b8754c8b"]]), bJ = { class: "create-discussion" }, xJ = {
47699
+ }, [["__scopeId", "data-v-a592f30e"]]), xJ = { class: "create-discussion" }, SJ = {
47700
47700
  key: 0,
47701
47701
  class: "create-connect",
47702
47702
  role: "status"
47703
- }, SJ = { class: "create-connect-command" }, CJ = {
47703
+ }, CJ = { class: "create-connect-command" }, wJ = {
47704
47704
  key: 1,
47705
47705
  class: "channel-create-location"
47706
- }, wJ = { class: "create-section" }, TJ = [
47706
+ }, TJ = { class: "create-section" }, EJ = [
47707
47707
  "aria-checked",
47708
47708
  "tabindex",
47709
47709
  "onClick"
47710
- ], EJ = { class: "create-mode-copy" }, DJ = { class: "create-section" }, OJ = { class: "fine-print create-hint" }, kJ = {
47710
+ ], DJ = { class: "create-mode-copy" }, OJ = { class: "create-section" }, kJ = { class: "fine-print create-hint" }, AJ = {
47711
47711
  key: 0,
47712
47712
  class: "create-experts",
47713
47713
  role: "group",
47714
47714
  "aria-label": "参与的 AI"
47715
- }, AJ = {
47715
+ }, jJ = {
47716
47716
  key: 1,
47717
47717
  class: "create-experts-empty"
47718
- }, jJ = [
47718
+ }, MJ = [
47719
47719
  "disabled",
47720
47720
  "title",
47721
47721
  "aria-label",
47722
47722
  "onClick"
47723
- ], MJ = { class: "fine-print create-hint create-host-hint" }, NJ = {
47723
+ ], NJ = { class: "fine-print create-hint create-host-hint" }, PJ = {
47724
47724
  key: 2,
47725
47725
  class: "create-section"
47726
- }, PJ = { class: "form-two-columns" }, FJ = { class: "create-host" }, IJ = {
47726
+ }, FJ = { class: "form-two-columns" }, IJ = { class: "create-host" }, LJ = {
47727
47727
  class: "create-chips",
47728
47728
  role: "radiogroup",
47729
47729
  "aria-label": "达到上限后"
47730
- }, LJ = ["aria-checked", "onClick"], RJ = {
47730
+ }, RJ = ["aria-checked", "onClick"], zJ = {
47731
47731
  class: "create-limit-rule",
47732
47732
  "aria-live": "polite"
47733
- }, zJ = { class: "create-section" }, BJ = {
47733
+ }, BJ = { class: "create-section" }, VJ = {
47734
47734
  key: 0,
47735
47735
  class: "fine-print create-hint"
47736
- }, VJ = { class: "create-footer" }, HJ = {
47736
+ }, HJ = { class: "create-footer" }, UJ = {
47737
47737
  key: 0,
47738
47738
  role: "alert",
47739
47739
  class: "create-error"
47740
- }, UJ = { class: "create-footer-row" }, WJ = ["title"], GJ = "new-expert-modes", KJ = 3e3, qJ = /*#__PURE__*/ jH({
47740
+ }, WJ = { class: "create-footer-row" }, GJ = ["title"], KJ = "new-expert-modes", qJ = 3e3, JJ = /*#__PURE__*/ jH({
47741
47741
  __name: "CreateDiscussion",
47742
47742
  props: { targetFolder: {
47743
47743
  type: Object,
@@ -47755,7 +47755,7 @@ var cq = /*#__PURE__*/ jH({
47755
47755
  icon: "i-lucide-message-circle",
47756
47756
  title: "自由协作",
47757
47757
  text: "按需点名 AI,在各自会话中工作"
47758
- }], p = Z(() => r.value.experts[GJ] || {}), m = /* @__PURE__ */ F([]), h = Z(() => Object.keys(p.value).filter((e) => p.value[e]));
47758
+ }], p = Z(() => r.value.experts[KJ] || {}), m = /* @__PURE__ */ F([]), h = Z(() => Object.keys(p.value).filter((e) => p.value[e]));
47759
47759
  R(h, (e) => {
47760
47760
  m.value = [...m.value.filter((t) => e.includes(t)), ...e.filter((e) => !m.value.includes(e))];
47761
47761
  }, { immediate: !0 });
@@ -47780,7 +47780,7 @@ var cq = /*#__PURE__*/ jH({
47780
47780
  Qi(() => {
47781
47781
  re(), te = window.setInterval(() => {
47782
47782
  k.value && !document.hidden && o("check_launch_connection");
47783
- }, KJ);
47783
+ }, qJ);
47784
47784
  }), ta(() => window.clearInterval(te));
47785
47785
  function ie(e) {
47786
47786
  u("kind", e), re();
@@ -47805,7 +47805,7 @@ var cq = /*#__PURE__*/ jH({
47805
47805
  "online"
47806
47806
  ] : e === y.value ? [] : ["cli", "manual"];
47807
47807
  function se(e, t) {
47808
- t === "cli" && !A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert(GJ, e, t), re();
47808
+ t === "cli" && !A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert(KJ, e, t), re();
47809
47809
  }
47810
47810
  function ce(e) {
47811
47811
  if (p.value[e] === "online") return {
@@ -47829,7 +47829,7 @@ var cq = /*#__PURE__*/ jH({
47829
47829
  return _(e) ? `已加入 ${_(e)} 位 · 可继续添加` : A(e) ? "API / 本地 App / CLI / 手动启动" : d.value ? "API / 手动启动 / 网页代发" : "API / 手动启动";
47830
47830
  }
47831
47831
  function ue(e) {
47832
- i.launch_clients[e] && (!A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), _(e) ? i.add_instance(GJ, e, "cli") : se(e, "cli"), re());
47832
+ i.launch_clients[e] && (!A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), _(e) ? i.add_instance(KJ, e, "cli") : se(e, "cli"), re());
47833
47833
  }
47834
47834
  function de(e) {
47835
47835
  se(e, ""), Qn(() => v.value?.querySelector("button:not(:disabled)")?.focus({ preventScroll: !0 }));
@@ -47867,20 +47867,20 @@ var cq = /*#__PURE__*/ jH({
47867
47867
  });
47868
47868
  return (t, c) => {
47869
47869
  let m = sA, h = MA, _ = YV, S = zV, w = HV, E = pA, te = UK;
47870
- return U(), W("div", bJ, [K("form", {
47870
+ return U(), W("div", xJ, [K("form", {
47871
47871
  id: "create-discussion-form",
47872
47872
  class: "create-scroll dialog-form",
47873
47873
  onSubmit: uu(pe, ["prevent"])
47874
47874
  }, [
47875
- k.value ? (U(), W("div", xJ, [K("p", null, [q(m, { name: "i-lucide-plug-zap" }), c[11] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", SJ, [K("code", null, P(I(r).launch.connect_command), 1), q(h, {
47875
+ k.value ? (U(), W("div", SJ, [K("p", null, [q(m, { name: "i-lucide-plug-zap" }), c[11] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", CJ, [K("code", null, P(I(r).launch.connect_command), 1), q(h, {
47876
47876
  icon: "i-lucide-copy",
47877
47877
  "aria-label": "复制本机连接命令",
47878
47878
  variant: "ghost",
47879
47879
  color: "neutral",
47880
47880
  onClick: c[0] ||= (e) => I(o)("copy", I(r).launch.connect_command)
47881
47881
  })])])) : Y("", !0),
47882
- e.targetFolder?.id ? (U(), W("p", CJ, [q(m, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
47883
- K("section", wJ, [
47882
+ e.targetFolder?.id ? (U(), W("p", wJ, [q(m, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
47883
+ K("section", TJ, [
47884
47884
  c[12] ||= K("h3", null, [K("span", null, "1"), J("这次做什么")], -1),
47885
47885
  K("div", {
47886
47886
  class: "create-modes",
@@ -47895,7 +47895,7 @@ var cq = /*#__PURE__*/ jH({
47895
47895
  "aria-checked": (l("kind") || "brainstorm") === e.value,
47896
47896
  tabindex: (l("kind") || "brainstorm") === e.value ? 0 : -1,
47897
47897
  onClick: (t) => ie(e.value)
47898
- }, [q(m, { name: e.icon }, null, 8, ["name"]), K("span", EJ, [K("strong", null, P(e.title), 1), K("small", null, P(e.text), 1)])], 10, TJ)), 64))], 32),
47898
+ }, [q(m, { name: e.icon }, null, 8, ["name"]), K("span", DJ, [K("strong", null, P(e.title), 1), K("small", null, P(e.text), 1)])], 10, EJ)), 64))], 32),
47899
47899
  q(S, {
47900
47900
  label: "话题名称",
47901
47901
  required: ""
@@ -47932,10 +47932,10 @@ var cq = /*#__PURE__*/ jH({
47932
47932
  _: 1
47933
47933
  }))
47934
47934
  ]),
47935
- K("section", DJ, [
47935
+ K("section", OJ, [
47936
47936
  c[14] ||= K("h3", null, [K("span", null, "2"), J("谁来参与")], -1),
47937
- K("p", OJ, P(d.value ? "每位成员单独选:自动(本机唤醒)、手动(你来启动)或网页(由你转发回答)。" : "主持人由本机自动启动,专家可选自动或手动。网页 AI 请用自由协作。"), 1),
47938
- g.value.length ? (U(), W("div", kJ, [(U(!0), W(H, null, B(g.value, (e) => (U(), G(aJ, {
47937
+ K("p", kJ, P(d.value ? "每位成员单独选:自动(本机唤醒)、手动(你来启动)或网页(由你转发回答)。" : "主持人由本机自动启动,专家可选自动或手动。网页 AI 请用自由协作。"), 1),
47938
+ g.value.length ? (U(), W("div", AJ, [(U(!0), W(H, null, B(g.value, (e) => (U(), G(aJ, {
47939
47939
  key: e,
47940
47940
  name: e,
47941
47941
  mode: p.value[e],
@@ -47957,7 +47957,7 @@ var cq = /*#__PURE__*/ jH({
47957
47957
  "onHost",
47958
47958
  "onRemove",
47959
47959
  "onMode"
47960
- ]))), 128))])) : (U(), W("p", AJ, "从下方添加 AI;同一平台可添加多位,各自独立会话。")),
47960
+ ]))), 128))])) : (U(), W("p", jJ, "从下方添加 AI;同一平台可添加多位,各自独立会话。")),
47961
47961
  K("div", {
47962
47962
  ref_key: "library",
47963
47963
  ref: v,
@@ -47986,14 +47986,14 @@ var cq = /*#__PURE__*/ jH({
47986
47986
  ]),
47987
47987
  J(P(e), 1),
47988
47988
  q(m, { name: "i-lucide-plus" })
47989
- ], 8, jJ))), 128))], 512),
47990
- K("div", MJ, [q(m, { name: "i-lucide-crown" }), K("span", null, P(d.value ? b.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "网页 AI 不能主持;添加一位本地 AI 后,没 @ 的消息才有人接。" : b.value.length ? "点卡片上的皇冠指定主持人,负责补全议题、安排发言与收束,也可同时作为专家。" : "先添加一位 AI 担任主持人。"), 1)]),
47991
- q(yJ, {
47989
+ ], 8, MJ))), 128))], 512),
47990
+ K("div", NJ, [q(m, { name: "i-lucide-crown" }), K("span", null, P(d.value ? b.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "网页 AI 不能主持;添加一位本地 AI 后,没 @ 的消息才有人接。" : b.value.length ? "点卡片上的皇冠指定主持人,负责补全议题、安排发言与收束,也可同时作为专家。" : "先添加一位 AI 担任主持人。"), 1)]),
47991
+ q(bJ, {
47992
47992
  free: d.value,
47993
47993
  blocker: D.value
47994
47994
  }, null, 8, ["free", "blocker"])
47995
47995
  ]),
47996
- d.value ? Y("", !0) : (U(), W("section", NJ, [
47996
+ d.value ? Y("", !0) : (U(), W("section", PJ, [
47997
47997
  c[17] ||= K("h3", null, [K("span", null, "3"), J("讨论多久")], -1),
47998
47998
  q(cq, {
47999
47999
  ref_key: "limit_picker",
@@ -48010,7 +48010,7 @@ var cq = /*#__PURE__*/ jH({
48010
48010
  description: "开启后,主持人每轮读完回答再逐位点名追问;关闭时专家之间互相回应、互相提问,主持人只开场和收尾。",
48011
48011
  "onUpdate:modelValue": c[5] ||= (e) => I(i).write_named_followup(e)
48012
48012
  }, null, 8, ["model-value"]),
48013
- K("div", PJ, [q(S, {
48013
+ K("div", FJ, [q(S, {
48014
48014
  label: "单次 AI 执行(分钟)",
48015
48015
  description: "留空或 0 表示不限"
48016
48016
  }, {
@@ -48026,9 +48026,9 @@ var cq = /*#__PURE__*/ jH({
48026
48026
  }, null, 8, ["model-value"])]),
48027
48027
  _: 1
48028
48028
  })]),
48029
- K("div", FJ, [
48029
+ K("div", IJ, [
48030
48030
  c[16] ||= K("span", { class: "create-label" }, "达到任一上限后", -1),
48031
- K("div", IJ, [(U(), W(H, null, B([{
48031
+ K("div", LJ, [(U(), W(H, null, B([{
48032
48032
  value: "pause",
48033
48033
  label: "暂停保留现场"
48034
48034
  }, {
@@ -48041,7 +48041,7 @@ var cq = /*#__PURE__*/ jH({
48041
48041
  "aria-checked": (l("limit-on_limit") || "pause") === e.value,
48042
48042
  class: M({ "is-selected": (l("limit-on_limit") || "pause") === e.value }),
48043
48043
  onClick: (t) => u("limit-on_limit", e.value)
48044
- }, P(e.label), 11, LJ)), 64))]),
48044
+ }, P(e.label), 11, RJ)), 64))]),
48045
48045
  l("limit-on_limit") === "summarize" ? (U(), G(_, {
48046
48046
  key: 0,
48047
48047
  "model-value": l("limit-summary_minutes"),
@@ -48057,9 +48057,9 @@ var cq = /*#__PURE__*/ jH({
48057
48057
  _: 1
48058
48058
  }, 8, ["model-value"])) : Y("", !0)
48059
48059
  ]),
48060
- K("p", RJ, [q(m, { name: "i-lucide-flag" }), J(P(me.value), 1)])
48060
+ K("p", zJ, [q(m, { name: "i-lucide-flag" }), J(P(me.value), 1)])
48061
48061
  ])),
48062
- K("section", zJ, [K("h3", null, [K("span", null, P(d.value ? 3 : 4), 1), c[19] ||= J("启动 AI", -1)]), I(r).launch.available ? (U(), W(H, { key: 1 }, [d.value ? Y("", !0) : (U(), G(te, {
48062
+ K("section", BJ, [K("h3", null, [K("span", null, P(d.value ? 3 : 4), 1), c[19] ||= J("启动 AI", -1)]), I(r).launch.available ? (U(), W(H, { key: 1 }, [d.value ? Y("", !0) : (U(), G(te, {
48063
48063
  key: 0,
48064
48064
  "model-value": I(r).launch.create,
48065
48065
  label: "创建后立即启动 AI",
@@ -48086,12 +48086,12 @@ var cq = /*#__PURE__*/ jH({
48086
48086
  _: 1
48087
48087
  }, 8, ["model-value"])]),
48088
48088
  _: 1
48089
- }), c[20] ||= K("p", { class: "fine-print create-hint" }, "供本地软件查看的项目,读写权限在专家卡片上设置。API 仅使用房间上下文。", -1)], 64)) : Y("", !0)], 64)) : (U(), W("p", BJ, "连接本机服务后,可在此设置项目目录和启动方式。"))])
48090
- ], 32), K("footer", VJ, [T.value && I(r).launch.error ? (U(), W("p", HJ, P(I(r).launch.error), 1)) : Y("", !0), K("div", UJ, [
48089
+ }), c[20] ||= K("p", { class: "fine-print create-hint" }, "供本地软件查看的项目,读写权限在专家卡片上设置。API 仅使用房间上下文。", -1)], 64)) : Y("", !0)], 64)) : (U(), W("p", VJ, "连接本机服务后,可在此设置项目目录和启动方式。"))])
48090
+ ], 32), K("footer", HJ, [T.value && I(r).launch.error ? (U(), W("p", UJ, P(I(r).launch.error), 1)) : Y("", !0), K("div", WJ, [
48091
48091
  K("span", {
48092
48092
  class: M(["create-summary", { "is-blocked": ne.value }]),
48093
48093
  title: he.value
48094
- }, P(ne.value ? `还差:${ne.value}` : he.value), 11, WJ),
48094
+ }, P(ne.value ? `还差:${ne.value}` : he.value), 11, GJ),
48095
48095
  q(h, {
48096
48096
  label: "取消",
48097
48097
  color: "neutral",
@@ -48115,46 +48115,46 @@ var cq = /*#__PURE__*/ jH({
48115
48115
  ])])]);
48116
48116
  };
48117
48117
  }
48118
- }, [["__scopeId", "data-v-cabc90c9"]]), JJ = {
48118
+ }, [["__scopeId", "data-v-cabc90c9"]]), YJ = {
48119
48119
  class: "account-settings",
48120
48120
  "aria-labelledby": "account-heading"
48121
- }, YJ = {
48121
+ }, XJ = {
48122
48122
  key: 0,
48123
48123
  class: "fine-print",
48124
48124
  role: "status"
48125
- }, XJ = ["aria-label"], ZJ = { class: "fine-print account-intro" }, QJ = {
48125
+ }, ZJ = ["aria-label"], QJ = { class: "fine-print account-intro" }, $J = {
48126
48126
  key: 0,
48127
48127
  class: "account-message is-error",
48128
48128
  role: "status"
48129
- }, $J = {
48130
- key: 1,
48131
- class: "fine-print"
48132
48129
  }, eY = {
48133
48130
  key: 1,
48134
48131
  class: "fine-print"
48135
48132
  }, tY = {
48133
+ key: 1,
48134
+ class: "fine-print"
48135
+ }, nY = {
48136
48136
  key: 2,
48137
48137
  class: "account-message is-error",
48138
48138
  role: "alert"
48139
- }, nY = {
48139
+ }, rY = {
48140
48140
  key: 3,
48141
48141
  class: "account-message",
48142
48142
  role: "status"
48143
- }, rY = { class: "account-actions" }, iY = {
48143
+ }, iY = { class: "account-actions" }, aY = {
48144
48144
  key: 2,
48145
48145
  class: "account-profile"
48146
- }, aY = { class: "account-identity" }, oY = { class: "account-avatar-actions" }, sY = { class: "account-actions" }, cY = {
48146
+ }, oY = { class: "account-identity" }, sY = { class: "account-avatar-actions" }, cY = { class: "account-actions" }, lY = {
48147
48147
  key: 0,
48148
48148
  class: "account-message is-error",
48149
48149
  role: "alert"
48150
- }, lY = {
48150
+ }, uY = {
48151
48151
  key: 1,
48152
48152
  class: "account-message",
48153
48153
  role: "status"
48154
- }, uY = {
48154
+ }, dY = {
48155
48155
  key: 2,
48156
48156
  class: "account-signout account-actions"
48157
- }, dY = {
48157
+ }, fY = {
48158
48158
  __name: "AccountSettings",
48159
48159
  setup(e) {
48160
48160
  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({
@@ -48222,13 +48222,13 @@ var cq = /*#__PURE__*/ jH({
48222
48222
  }
48223
48223
  return (e, t) => {
48224
48224
  let p = YV, y = zV, b = MA, x = pA;
48225
- return U(), W("section", JJ, [t[8] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", YJ, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48225
+ return U(), W("section", YJ, [t[8] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", XJ, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48226
48226
  key: 1,
48227
48227
  class: "dialog-form account-form",
48228
48228
  "aria-label": a.value === "register" ? "设置管理员账号" : "登录管理员账号",
48229
48229
  onSubmit: uu(m, ["prevent"])
48230
48230
  }, [
48231
- K("p", ZJ, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48231
+ K("p", QJ, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48232
48232
  q(y, {
48233
48233
  label: "用户名",
48234
48234
  description: a.value === "register" ? "1–30 个字符,也是公开显示的名称" : void 0,
@@ -48295,18 +48295,18 @@ var cq = /*#__PURE__*/ jH({
48295
48295
  }, null, 8, ["modelValue", "disabled"])]),
48296
48296
  _: 1
48297
48297
  }),
48298
- f.value ? (U(), W("p", QJ, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", $J, [...t[6] ||= [
48298
+ f.value ? (U(), W("p", $J, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", eY, [...t[6] ||= [
48299
48299
  J("首个注册者需要安装令牌,防止他人抢注。本地版见服务端启动日志;Cloudflare 版为部署机密 ADMIN_SETUP_KEY。忘记密码:本地版运行 ", -1),
48300
48300
  K("code", null, "python server.py --reset-admin", -1),
48301
48301
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48302
48302
  ]]))
48303
- ], 64)) : (U(), W("p", eY, [...t[7] ||= [
48303
+ ], 64)) : (U(), W("p", tY, [...t[7] ||= [
48304
48304
  J("忘记密码:本地版运行 ", -1),
48305
48305
  K("code", null, "python server.py --reset-admin", -1),
48306
48306
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48307
48307
  ]])),
48308
- s.auth.error ? (U(), W("p", tY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", nY, P(s.auth.notice), 1)) : Y("", !0),
48309
- K("div", rY, [q(b, {
48308
+ s.auth.error ? (U(), W("p", nY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", rY, P(s.auth.notice), 1)) : Y("", !0),
48309
+ K("div", iY, [q(b, {
48310
48310
  type: "submit",
48311
48311
  class: "channel-primary-button",
48312
48312
  label: a.value === "register" ? "创建并登录" : "登录",
@@ -48317,13 +48317,13 @@ var cq = /*#__PURE__*/ jH({
48317
48317
  "loading",
48318
48318
  "disabled"
48319
48319
  ])])
48320
- ], 40, XJ)) : (U(), W("div", iY, [
48321
- K("div", aY, [q(x, {
48320
+ ], 40, ZJ)) : (U(), W("div", aY, [
48321
+ K("div", oY, [q(x, {
48322
48322
  src: I(n).identities.用户.icon,
48323
48323
  alt: `${I(n).display_name("用户")} 的头像`,
48324
48324
  size: "lg",
48325
48325
  class: "channel-avatar user account-avatar"
48326
- }, null, 8, ["src", "alt"]), K("div", oY, [
48326
+ }, null, 8, ["src", "alt"]), K("div", sY, [
48327
48327
  K("input", {
48328
48328
  ref_key: "avatar_input",
48329
48329
  ref: u,
@@ -48371,7 +48371,7 @@ var cq = /*#__PURE__*/ jH({
48371
48371
  "aria-label": "显示名称"
48372
48372
  }, null, 8, ["modelValue"])]),
48373
48373
  _: 1
48374
- }), K("div", sY, [q(b, {
48374
+ }), K("div", cY, [q(b, {
48375
48375
  type: "submit",
48376
48376
  label: "保存名称",
48377
48377
  color: "neutral",
@@ -48380,8 +48380,8 @@ var cq = /*#__PURE__*/ jH({
48380
48380
  loading: o.value === "name",
48381
48381
  disabled: !!o.value || !d.value || !l.value.trim()
48382
48382
  }, null, 8, ["loading", "disabled"])])], 32),
48383
- s.profile.error ? (U(), W("p", cY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", lY, P(s.profile.notice), 1)) : Y("", !0),
48384
- r.value.local ? Y("", !0) : (U(), W("div", uY, [q(b, {
48383
+ s.profile.error ? (U(), W("p", lY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", uY, P(s.profile.notice), 1)) : Y("", !0),
48384
+ r.value.local ? Y("", !0) : (U(), W("div", dY, [q(b, {
48385
48385
  label: "退出登录",
48386
48386
  icon: "i-lucide-log-out",
48387
48387
  color: "neutral",
@@ -48394,65 +48394,65 @@ var cq = /*#__PURE__*/ jH({
48394
48394
  ]))]);
48395
48395
  };
48396
48396
  }
48397
- }, fY = {
48397
+ }, pY = {
48398
48398
  key: 0,
48399
48399
  class: "channel-archive-manager"
48400
- }, pY = { class: "channel-archive-toolbar" }, mY = {
48400
+ }, mY = { class: "channel-archive-toolbar" }, hY = {
48401
48401
  key: 0,
48402
48402
  class: "channel-archive-confirm channel-archive-bulk",
48403
48403
  role: "alert"
48404
- }, hY = {
48404
+ }, gY = {
48405
48405
  key: 1,
48406
48406
  role: "alert",
48407
48407
  class: "channel-directory-error"
48408
- }, gY = { class: "channel-archive-results" }, _Y = {
48408
+ }, _Y = { class: "channel-archive-results" }, vY = {
48409
48409
  key: 0,
48410
48410
  class: "channel-archive-list",
48411
48411
  "aria-label": "已存档房间列表"
48412
- }, vY = { class: "channel-archive-row" }, yY = { class: "channel-archive-info" }, bY = [
48412
+ }, yY = { class: "channel-archive-row" }, bY = { class: "channel-archive-info" }, xY = [
48413
48413
  "title",
48414
48414
  "disabled",
48415
48415
  "onClick"
48416
- ], xY = { key: 0 }, SY = ["datetime"], CY = { class: "channel-archive-actions" }, wY = {
48416
+ ], SY = { key: 0 }, CY = ["datetime"], wY = { class: "channel-archive-actions" }, TY = {
48417
48417
  key: 0,
48418
48418
  class: "channel-archive-confirm channel-archive-bulk",
48419
48419
  role: "alert"
48420
- }, TY = {
48420
+ }, EY = {
48421
48421
  key: 1,
48422
48422
  class: "channel-archive-empty"
48423
- }, EY = { class: "fine-print" }, DY = { class: "dialog-actions" }, OY = { class: "dialog-actions" }, kY = { class: "channel-management-target" }, AY = {
48423
+ }, DY = { class: "fine-print" }, OY = { class: "dialog-actions" }, kY = { class: "dialog-actions" }, AY = { class: "channel-management-target" }, jY = {
48424
48424
  key: 0,
48425
48425
  class: "fine-print"
48426
- }, jY = {
48426
+ }, MY = {
48427
48427
  key: 1,
48428
48428
  class: "fine-print"
48429
- }, MY = {
48429
+ }, NY = {
48430
48430
  key: 2,
48431
48431
  class: "fine-print"
48432
- }, NY = { class: "dialog-actions" }, PY = { key: 4 }, FY = { class: "theme-choices" }, IY = ["aria-pressed", "onClick"], LY = { class: "theme-check" }, RY = { class: "channel-reading-setting" }, zY = {
48432
+ }, PY = { class: "dialog-actions" }, FY = { key: 4 }, IY = { class: "theme-choices" }, LY = ["aria-pressed", "onClick"], RY = { class: "theme-check" }, zY = { class: "channel-reading-setting" }, BY = {
48433
48433
  class: "channel-reading-options",
48434
48434
  role: "group",
48435
48435
  "aria-labelledby": "channel-reading-label"
48436
- }, BY = { class: "channel-reading-setting" }, VY = {
48436
+ }, VY = { class: "channel-reading-setting" }, HY = {
48437
48437
  class: "channel-reading-options channel-effect-options",
48438
48438
  role: "group",
48439
48439
  "aria-labelledby": "channel-effects-label"
48440
- }, HY = { class: "form-two-columns" }, UY = { class: "advanced-content" }, WY = { class: "form-two-columns" }, GY = {
48440
+ }, UY = { class: "form-two-columns" }, WY = { class: "advanced-content" }, GY = { class: "form-two-columns" }, KY = {
48441
48441
  key: 0,
48442
48442
  class: "fine-print"
48443
- }, KY = { class: "advanced-content" }, qY = { class: "expert-fields" }, JY = { class: "dialog-actions" }, YY = { class: "dialog-actions" }, XY = {
48443
+ }, qY = { class: "advanced-content" }, JY = { class: "expert-fields" }, YY = { class: "dialog-actions" }, XY = { class: "dialog-actions" }, ZY = {
48444
48444
  key: 8,
48445
48445
  class: "original-message"
48446
- }, ZY = {
48446
+ }, QY = {
48447
48447
  key: 0,
48448
48448
  role: "alert"
48449
- }, QY = { class: "original-meta" }, $Y = { class: "fine-print" }, eX = {
48449
+ }, $Y = { class: "original-meta" }, eX = { class: "fine-print" }, tX = {
48450
48450
  key: 0,
48451
48451
  class: "channel-answer-summary"
48452
- }, tX = { class: "message-prose" }, nX = { class: "message-prose" }, rX = ["innerHTML"], iX = {
48452
+ }, nX = { class: "message-prose" }, rX = { class: "message-prose" }, iX = ["innerHTML"], aX = {
48453
48453
  key: 2,
48454
48454
  class: "fine-print"
48455
- }, aX = "topic-expert-modes", oX = {
48455
+ }, oX = "topic-expert-modes", sX = {
48456
48456
  __name: "WorkspaceDialogs",
48457
48457
  props: /*@__PURE__*/ Fa({
48458
48458
  detailId: {
@@ -48741,8 +48741,8 @@ var cq = /*#__PURE__*/ jH({
48741
48741
  } : void 0,
48742
48742
  "onAfter:leave": xe
48743
48743
  }, {
48744
- body: L(() => [a.value === "archives" ? (U(), W("section", fY, [
48745
- K("div", pY, [
48744
+ body: L(() => [a.value === "archives" ? (U(), W("section", pY, [
48745
+ K("div", mY, [
48746
48746
  q(x, {
48747
48747
  modelValue: h.value,
48748
48748
  "onUpdate:modelValue": c[0] ||= (e) => h.value = e,
@@ -48771,7 +48771,7 @@ var cq = /*#__PURE__*/ jH({
48771
48771
  }
48772
48772
  }, null, 8, ["label", "disabled"])
48773
48773
  ]),
48774
- b.value && v.value.length ? (U(), W("div", mY, [
48774
+ b.value && v.value.length ? (U(), W("div", hY, [
48775
48775
  K("span", null, "将永久删除当前列表中的 " + P(v.value.length) + " 个房间及其全部记录,无法撤销。", 1),
48776
48776
  q(le, {
48777
48777
  label: "取消",
@@ -48787,20 +48787,20 @@ var cq = /*#__PURE__*/ jH({
48787
48787
  onClick: E
48788
48788
  })
48789
48789
  ])) : Y("", !0),
48790
- I(o).directory_error ? (U(), W("p", hY, P(I(o).directory_error), 1)) : Y("", !0),
48791
- K("div", gY, [v.value.length ? (U(), W("ul", _Y, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48790
+ I(o).directory_error ? (U(), W("p", gY, P(I(o).directory_error), 1)) : Y("", !0),
48791
+ K("div", _Y, [v.value.length ? (U(), W("ul", vY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48792
48792
  key: e.id,
48793
48793
  class: "channel-archive-item"
48794
- }, [K("div", vY, [K("div", yY, [K("button", {
48794
+ }, [K("div", yY, [K("div", bY, [K("button", {
48795
48795
  class: "channel-archive-title",
48796
48796
  title: e.title,
48797
48797
  disabled: !!I(u),
48798
48798
  onClick: (t) => T(e)
48799
- }, P(e.title), 9, bY), K("small", null, [e.created_at ? (U(), W("span", xY, [
48799
+ }, P(e.title), 9, xY), K("small", null, [e.created_at ? (U(), W("span", SY, [
48800
48800
  c[25] ||= J("创建于 ", -1),
48801
- K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, SY),
48801
+ K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, CY),
48802
48802
  c[26] ||= J(" · ", -1)
48803
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", CY, [q(le, {
48803
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", wY, [q(le, {
48804
48804
  "aria-label": `彻底删除 ${e.title}`,
48805
48805
  title: "彻底删除",
48806
48806
  icon: "i-lucide-trash-2",
@@ -48832,7 +48832,7 @@ var cq = /*#__PURE__*/ jH({
48832
48832
  "aria-label",
48833
48833
  "disabled",
48834
48834
  "onClick"
48835
- ])])]), y.value === e.id ? (U(), W("div", wY, [
48835
+ ])])]), y.value === e.id ? (U(), W("div", TY, [
48836
48836
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
48837
48837
  q(le, {
48838
48838
  label: "取消",
@@ -48848,12 +48848,12 @@ var cq = /*#__PURE__*/ jH({
48848
48848
  disabled: w(e),
48849
48849
  onClick: ee
48850
48850
  }, null, 8, ["disabled"])
48851
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", TY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48851
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", EY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48852
48852
  ])) : a.value === "delete-folder" ? (U(), W("form", {
48853
48853
  key: 1,
48854
48854
  class: "dialog-form",
48855
48855
  onSubmit: uu(re, ["prevent"])
48856
- }, [K("p", EY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", DY, [q(le, {
48856
+ }, [K("p", DY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", OY, [q(le, {
48857
48857
  label: "取消",
48858
48858
  color: "neutral",
48859
48859
  variant: "ghost",
@@ -48884,7 +48884,7 @@ var cq = /*#__PURE__*/ jH({
48884
48884
  "modelValue",
48885
48885
  "aria-label",
48886
48886
  "readonly"
48887
- ]), K("div", OY, [q(le, {
48887
+ ]), K("div", kY, [q(le, {
48888
48888
  label: "取消",
48889
48889
  color: "neutral",
48890
48890
  variant: "ghost",
@@ -48909,10 +48909,10 @@ var cq = /*#__PURE__*/ jH({
48909
48909
  class: "dialog-form",
48910
48910
  onSubmit: uu(te, ["prevent"])
48911
48911
  }, [
48912
- K("p", kY, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
48913
- a.value === "archive" ? (U(), W("p", AY, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
48914
- a.value === "restore" ? (U(), W("p", jY, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
48915
- a.value === "delete" ? (U(), W("p", MY, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
48912
+ K("p", AY, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
48913
+ a.value === "archive" ? (U(), W("p", jY, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
48914
+ a.value === "restore" ? (U(), W("p", MY, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
48915
+ a.value === "delete" ? (U(), W("p", NY, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
48916
48916
  a.value === "rename" ? (U(), G(de, {
48917
48917
  key: 3,
48918
48918
  label: "房间名称",
@@ -48929,7 +48929,7 @@ var cq = /*#__PURE__*/ jH({
48929
48929
  }, null, 8, ["modelValue"])]),
48930
48930
  _: 1
48931
48931
  })) : Y("", !0),
48932
- K("div", NY, [q(le, {
48932
+ K("div", PY, [q(le, {
48933
48933
  label: "取消",
48934
48934
  color: "neutral",
48935
48935
  variant: "ghost",
@@ -48946,10 +48946,10 @@ var cq = /*#__PURE__*/ jH({
48946
48946
  "loading",
48947
48947
  "disabled"
48948
48948
  ])])
48949
- ], 32)) : a.value === "settings" ? (U(), W("div", PY, [
48950
- q(dY),
48949
+ ], 32)) : a.value === "settings" ? (U(), W("div", FY, [
48950
+ q(fY),
48951
48951
  c[31] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
48952
- K("div", FY, [(U(), W(H, null, B(ge, (e) => K("button", {
48952
+ K("div", IY, [(U(), W(H, null, B(ge, (e) => K("button", {
48953
48953
  key: e.value,
48954
48954
  class: M({ chosen: I(o).theme === e.value }),
48955
48955
  "aria-pressed": I(o).theme === e.value,
@@ -48964,12 +48964,12 @@ var cq = /*#__PURE__*/ jH({
48964
48964
  K("b")
48965
48965
  ], -1)]], 2),
48966
48966
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
48967
- K("span", LY, [I(o).theme === e.value ? (U(), G(fe, {
48967
+ K("span", RY, [I(o).theme === e.value ? (U(), G(fe, {
48968
48968
  key: 0,
48969
48969
  name: "i-lucide-check"
48970
48970
  })) : Y("", !0)])
48971
- ], 10, IY)), 64))]),
48972
- K("section", RY, [c[28] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", zY, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(le, {
48971
+ ], 10, LY)), 64))]),
48972
+ K("section", zY, [c[28] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", BY, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(le, {
48973
48973
  key: e.value,
48974
48974
  label: e.label,
48975
48975
  color: "neutral",
@@ -48983,9 +48983,9 @@ var cq = /*#__PURE__*/ jH({
48983
48983
  "aria-pressed",
48984
48984
  "onClick"
48985
48985
  ]))), 128))])]),
48986
- K("section", BY, [
48986
+ K("section", VY, [
48987
48987
  c[29] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
48988
- K("div", VY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(le, {
48988
+ K("div", HY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(le, {
48989
48989
  key: e.value,
48990
48990
  label: e.label,
48991
48991
  color: "neutral",
@@ -49001,7 +49001,7 @@ var cq = /*#__PURE__*/ jH({
49001
49001
  ]))), 128))]),
49002
49002
  c[30] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
49003
49003
  ])
49004
- ])) : a.value === "create" ? (U(), G(qJ, {
49004
+ ])) : a.value === "create" ? (U(), G(JJ, {
49005
49005
  key: 5,
49006
49006
  "target-folder": e.targetFolder,
49007
49007
  onSubmit: _e,
@@ -49036,7 +49036,7 @@ var cq = /*#__PURE__*/ jH({
49036
49036
  }, null, 8, ["model-value"])]),
49037
49037
  _: 1
49038
49038
  }),
49039
- K("div", HY, [q(de, { label: "主持人" }, {
49039
+ K("div", UY, [q(de, { label: "主持人" }, {
49040
49040
  default: L(() => [q(S, {
49041
49041
  "model-value": I(o).fields[N("host")],
49042
49042
  items: I(ae),
@@ -49070,9 +49070,9 @@ var cq = /*#__PURE__*/ jH({
49070
49070
  }, null, 8, ["model-value"])]),
49071
49071
  _: 1
49072
49072
  })) : Y("", !0),
49073
- K("section", UY, [
49073
+ K("section", WY, [
49074
49074
  c[32] ||= K("h3", null, "讨论上限", -1),
49075
- K("div", WY, [
49075
+ K("div", GY, [
49076
49076
  (U(!0), W(H, null, B(ue.value, (e) => (U(), G(de, {
49077
49077
  key: e.key,
49078
49078
  label: e.label
@@ -49133,14 +49133,14 @@ var cq = /*#__PURE__*/ jH({
49133
49133
  })) : Y("", !0)
49134
49134
  ]),
49135
49135
  c[33] ||= K("p", { class: "fine-print" }, "轮次、总时长、单次执行留空或 0 表示不限。一轮指每位专家各完成一次观点;首次进入讨论阶段或创建安排后计时,暂停期间不计时。收束预留计入总时长。", -1),
49136
- ce.value ? (U(), W("p", GY, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49136
+ ce.value ? (U(), W("p", KY, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49137
49137
  ]),
49138
49138
  q(we, {
49139
49139
  open: se.value,
49140
49140
  "onUpdate:open": c[19] ||= (e) => se.value = e,
49141
49141
  class: "advanced-fields"
49142
49142
  }, {
49143
- content: L(() => [K("div", KY, [
49143
+ content: L(() => [K("div", qY, [
49144
49144
  (U(), W(H, null, B([
49145
49145
  {
49146
49146
  key: "user_request",
@@ -49167,11 +49167,11 @@ var cq = /*#__PURE__*/ jH({
49167
49167
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
49168
49168
  _: 2
49169
49169
  }, 1032, ["label"])), 64)),
49170
- K("div", qY, [(U(!0), W(H, null, B(I(ie), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49171
- "model-value": I(o).experts[aX]?.[e] || "none",
49170
+ K("div", JY, [(U(!0), W(H, null, B(I(ie), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49171
+ "model-value": I(o).experts[oX]?.[e] || "none",
49172
49172
  items: oe,
49173
49173
  "aria-label": `${e} 参与方式`,
49174
- "onUpdate:modelValue": (t) => I(s).write_expert(aX, e, t === "none" ? "" : t)
49174
+ "onUpdate:modelValue": (t) => I(s).write_expert(oX, e, t === "none" ? "" : t)
49175
49175
  }, null, 8, [
49176
49176
  "model-value",
49177
49177
  "aria-label",
@@ -49189,7 +49189,7 @@ var cq = /*#__PURE__*/ jH({
49189
49189
  }, null, 8, ["trailing-icon"])]),
49190
49190
  _: 1
49191
49191
  }, 8, ["open"]),
49192
- K("div", JY, [q(le, {
49192
+ K("div", YY, [q(le, {
49193
49193
  label: "取消",
49194
49194
  color: "neutral",
49195
49195
  variant: "ghost",
@@ -49233,7 +49233,7 @@ var cq = /*#__PURE__*/ jH({
49233
49233
  _: 1
49234
49234
  }),
49235
49235
  c[35] ||= K("p", { class: "fine-print" }, "创建后为待通知状态;由主持人实际联系专家。", -1),
49236
- K("div", YY, [q(le, {
49236
+ K("div", XY, [q(le, {
49237
49237
  label: "取消",
49238
49238
  variant: "ghost",
49239
49239
  color: "neutral",
@@ -49244,8 +49244,8 @@ var cq = /*#__PURE__*/ jH({
49244
49244
  label: "创建发言安排",
49245
49245
  loading: I(u) === "schedule"
49246
49246
  }, null, 8, ["loading"])])
49247
- ], 32)) : a.value === "message" ? (U(), W("div", XY, [pe.value ? (U(), W("p", ZY, P(pe.value), 1)) : j.value ? (U(), W(H, { key: 1 }, [
49248
- K("div", QY, [
49247
+ ], 32)) : a.value === "message" ? (U(), W("div", ZY, [pe.value ? (U(), W("p", QY, P(pe.value), 1)) : j.value ? (U(), W(H, { key: 1 }, [
49248
+ K("div", $Y, [
49249
49249
  K("strong", null, P(I(s).display_name(j.value.author)), 1),
49250
49250
  K("span", null, "#" + P(j.value.id), 1),
49251
49251
  q(Te, {
@@ -49256,14 +49256,14 @@ var cq = /*#__PURE__*/ jH({
49256
49256
  _: 1
49257
49257
  })
49258
49258
  ]),
49259
- K("p", $Y, P(I(s).provenance(j.value)) + " · " + P(new Date(j.value.created_at).toLocaleString("zh-CN")), 1),
49260
- j.value.summary ? (U(), W("section", eX, [K("small", null, "回答摘要 · " + P(I(s).display_name(j.value.summary_by)), 1), K("p", tX, P(j.value.summary), 1)])) : Y("", !0),
49261
- K("p", nX, P(j.value.text), 1),
49259
+ K("p", eX, P(I(s).provenance(j.value)) + " · " + P(new Date(j.value.created_at).toLocaleString("zh-CN")), 1),
49260
+ j.value.summary ? (U(), W("section", tX, [K("small", null, "回答摘要 · " + P(I(s).display_name(j.value.summary_by)), 1), K("p", nX, P(j.value.summary), 1)])) : Y("", !0),
49261
+ K("p", rX, P(j.value.text), 1),
49262
49262
  j.value.attachments?.length ? (U(), W("div", {
49263
49263
  key: 1,
49264
49264
  onClick: be,
49265
49265
  innerHTML: I(s).attachment_markup(j.value.attachments)
49266
- }, null, 8, rX)) : Y("", !0),
49266
+ }, null, 8, iX)) : Y("", !0),
49267
49267
  j.value.reply_to ? (U(), G(le, {
49268
49268
  key: 2,
49269
49269
  label: `查看被回复的原文 #${j.value.reply_to}`,
@@ -49273,7 +49273,7 @@ var cq = /*#__PURE__*/ jH({
49273
49273
  class: "channel-surface-button",
49274
49274
  onClick: Se
49275
49275
  }, null, 8, ["label"])) : Y("", !0)
49276
- ], 64)) : (U(), W("p", iX, "正在读取原文…"))])) : Y("", !0)]),
49276
+ ], 64)) : (U(), W("p", aX, "正在读取原文…"))])) : Y("", !0)]),
49277
49277
  _: 1
49278
49278
  }, 8, [
49279
49279
  "open",
@@ -49284,7 +49284,7 @@ var cq = /*#__PURE__*/ jH({
49284
49284
  ]);
49285
49285
  };
49286
49286
  }
49287
- }, sX = {
49287
+ }, cX = {
49288
49288
  __name: "ContextMenuContent",
49289
49289
  props: {
49290
49290
  items: {
@@ -49579,7 +49579,7 @@ var cq = /*#__PURE__*/ jH({
49579
49579
  "disabled",
49580
49580
  "text-value",
49581
49581
  "class"
49582
- ]), q(sX, X({
49582
+ ]), q(cX, X({
49583
49583
  sub: "",
49584
49584
  class: r.ui?.content,
49585
49585
  ui: e.ui,
@@ -49690,7 +49690,7 @@ var cq = /*#__PURE__*/ jH({
49690
49690
  _: 3
49691
49691
  }, 16)], 64));
49692
49692
  }
49693
- }, cX = {
49693
+ }, lX = {
49694
49694
  slots: {
49695
49695
  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",
49696
49696
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -49878,7 +49878,7 @@ var cq = /*#__PURE__*/ jH({
49878
49878
  }
49879
49879
  ],
49880
49880
  defaultVariants: { size: "md" }
49881
- }, lX = {
49881
+ }, uX = {
49882
49882
  __name: "ContextMenu",
49883
49883
  props: {
49884
49884
  size: {
@@ -49948,7 +49948,7 @@ var cq = /*#__PURE__*/ jH({
49948
49948
  emits: ["update:open"],
49949
49949
  setup(e, { emit: t }) {
49950
49950
  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({
49951
- extend: cX,
49951
+ extend: lX,
49952
49952
  ...o.ui?.contextMenu || {}
49953
49953
  })({ size: a.size }));
49954
49954
  return (e, t) => (U(), G(I(iC), N(Ss(I(s))), {
@@ -49960,7 +49960,7 @@ var cq = /*#__PURE__*/ jH({
49960
49960
  }, {
49961
49961
  default: L(() => [V(e.$slots, "default")]),
49962
49962
  _: 3
49963
- }, 8, ["disabled", "class"])) : Y("", !0), q(sX, X({
49963
+ }, 8, ["disabled", "class"])) : Y("", !0), q(cX, X({
49964
49964
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
49965
49965
  ui: u.value,
49966
49966
  "ui-override": I(a).ui
@@ -49990,50 +49990,50 @@ var cq = /*#__PURE__*/ jH({
49990
49990
  _: 3
49991
49991
  }, 16));
49992
49992
  }
49993
- }, uX = { class: "channel-directory-manager" }, dX = { class: "channel-directory-heading" }, fX = ["aria-expanded"], pX = { class: "channel-directory-actions" }, mX = {
49993
+ }, dX = { class: "channel-directory-manager" }, fX = { class: "channel-directory-heading" }, pX = ["aria-expanded"], mX = { class: "channel-directory-actions" }, hX = {
49994
49994
  "aria-label": "讨论房间列表",
49995
49995
  class: "channel-room-list",
49996
49996
  "data-room-directory": ""
49997
- }, hX = ["data-room-folder", "data-drag-folder"], gX = {
49997
+ }, gX = ["data-room-folder", "data-drag-folder"], _X = {
49998
49998
  key: 0,
49999
49999
  class: "channel-folder-row"
50000
- }, _X = [
50000
+ }, vX = [
50001
50001
  "disabled",
50002
50002
  "aria-label",
50003
50003
  "aria-expanded",
50004
50004
  "onKeydown",
50005
50005
  "onClick"
50006
- ], vX = { class: "channel-folder-name" }, yX = { class: "channel-folder-actions" }, bX = {
50006
+ ], yX = { class: "channel-folder-name" }, bX = { class: "channel-folder-actions" }, xX = {
50007
50007
  class: "channel-directory-count",
50008
50008
  "aria-hidden": "true"
50009
- }, xX = ["data-drop-folder"], SX = {
50009
+ }, SX = ["data-drop-folder"], CX = {
50010
50010
  key: 0,
50011
50011
  class: "channel-directory-empty",
50012
50012
  role: "status"
50013
- }, CX = ["data-drag-room"], wX = [
50013
+ }, wX = ["data-drag-room"], TX = [
50014
50014
  "aria-label",
50015
50015
  "disabled",
50016
50016
  "onKeydown"
50017
- ], TX = [
50017
+ ], EX = [
50018
50018
  "title",
50019
50019
  "aria-label",
50020
50020
  "aria-current",
50021
50021
  "onClick"
50022
- ], EX = { class: "channel-room-actions" }, DX = {
50022
+ ], DX = { class: "channel-room-actions" }, OX = {
50023
50023
  key: 0,
50024
50024
  class: "channel-directory-empty"
50025
- }, OX = {
50025
+ }, kX = {
50026
50026
  key: 0,
50027
50027
  class: "channel-archive-count"
50028
- }, kX = {
50028
+ }, AX = {
50029
50029
  key: 0,
50030
50030
  role: "status",
50031
50031
  class: "channel-directory-notice"
50032
- }, AX = {
50032
+ }, jX = {
50033
50033
  key: 1,
50034
50034
  role: "alert",
50035
50035
  class: "channel-directory-error"
50036
- }, jX = {
50036
+ }, MX = {
50037
50037
  __name: "ChannelDirectory",
50038
50038
  emits: [
50039
50039
  "select",
@@ -50247,8 +50247,8 @@ var cq = /*#__PURE__*/ jH({
50247
50247
  ];
50248
50248
  }
50249
50249
  return (e, t) => {
50250
- let u = MA, _ = sA, v = TH, x = $V, S = lX;
50251
- return U(), W("div", uX, [
50250
+ let u = MA, _ = sA, v = TH, x = $V, S = uX;
50251
+ return U(), W("div", dX, [
50252
50252
  q(u, {
50253
50253
  label: "新建对话",
50254
50254
  icon: "i-lucide-plus",
@@ -50257,12 +50257,12 @@ var cq = /*#__PURE__*/ jH({
50257
50257
  disabled: I(r).directory_pending.includes("create-room"),
50258
50258
  onClick: t[0] ||= (e) => n("create", null)
50259
50259
  }, null, 8, ["disabled"]),
50260
- K("div", dX, [K("button", {
50260
+ K("div", fX, [K("button", {
50261
50261
  type: "button",
50262
50262
  class: "channel-section-toggle",
50263
50263
  "aria-expanded": m.value,
50264
50264
  onClick: t[1] ||= (e) => m.value = !m.value
50265
- }, [q(_, { name: m.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[7] ||= J("讨论房间", -1)], 8, fX), K("div", pX, [
50265
+ }, [q(_, { name: m.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[7] ||= J("讨论房间", -1)], 8, pX), K("div", mX, [
50266
50266
  q(v, {
50267
50267
  items: d.value,
50268
50268
  content: {
@@ -50304,12 +50304,12 @@ var cq = /*#__PURE__*/ jH({
50304
50304
  onChange: p
50305
50305
  }, null, 544)
50306
50306
  ])]),
50307
- vr(K("nav", mX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50307
+ vr(K("nav", hX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50308
50308
  key: e.order_id,
50309
50309
  class: "channel-folder-section",
50310
50310
  "data-room-folder": e.id,
50311
50311
  "data-drag-folder": e.order_id
50312
- }, [e.id ? (U(), W("div", gX, [
50312
+ }, [e.id ? (U(), W("div", _X, [
50313
50313
  K("button", {
50314
50314
  class: "channel-folder-heading",
50315
50315
  "data-drop-folder": "",
@@ -50331,9 +50331,9 @@ var cq = /*#__PURE__*/ jH({
50331
50331
  }, [
50332
50332
  q(_, { name: h.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
50333
50333
  q(_, { name: "i-lucide-folder" }),
50334
- K("span", vX, P(e.name), 1)
50335
- ], 40, _X),
50336
- K("div", yX, [q(v, {
50334
+ K("span", yX, P(e.name), 1)
50335
+ ], 40, vX),
50336
+ K("div", bX, [q(v, {
50337
50337
  items: g(e, s),
50338
50338
  content: {
50339
50339
  align: "start",
@@ -50367,12 +50367,12 @@ var cq = /*#__PURE__*/ jH({
50367
50367
  ])]),
50368
50368
  _: 2
50369
50369
  }, 1032, ["text"])]),
50370
- K("small", bX, P(e.pending ? "保存中" : e.rooms.length), 1)
50370
+ K("small", xX, P(e.pending ? "保存中" : e.rooms.length), 1)
50371
50371
  ])) : Y("", !0), !e.id || !h.value.has(e.id) ? (U(), W("div", {
50372
50372
  key: 1,
50373
50373
  class: M(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
50374
50374
  "data-drop-folder": e.id ? void 0 : ""
50375
- }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", SX, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(S, {
50375
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", CX, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(S, {
50376
50376
  key: s.id,
50377
50377
  items: b(s, c, s.folder_id || null, e.rooms.length),
50378
50378
  ui: { content: "channel-menu channel-topic-menu" }
@@ -50397,7 +50397,7 @@ var cq = /*#__PURE__*/ jH({
50397
50397
  direction: 1,
50398
50398
  folder_id: s.folder_id || null
50399
50399
  }), ["prevent"]), ["down"])]
50400
- }, [q(_, { name: "i-lucide-grip-vertical" })], 40, wX),
50400
+ }, [q(_, { name: "i-lucide-grip-vertical" })], 40, TX),
50401
50401
  K("button", {
50402
50402
  class: "channel-room-select",
50403
50403
  "data-drag-title": "",
@@ -50406,8 +50406,8 @@ var cq = /*#__PURE__*/ jH({
50406
50406
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
50407
50407
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
50408
50408
  onClick: (e) => n("select", s.id)
50409
- }, [K("span", null, P(s.title), 1)], 40, TX),
50410
- K("div", EX, [q(x, {
50409
+ }, [K("span", null, P(s.title), 1)], 40, EX),
50410
+ K("div", DX, [q(x, {
50411
50411
  text: s.archived ? "恢复房间" : "存档房间",
50412
50412
  ui: { content: "channel-topic-tooltip" }
50413
50413
  }, {
@@ -50448,9 +50448,9 @@ var cq = /*#__PURE__*/ jH({
50448
50448
  }, null, 8, ["aria-label"])]),
50449
50449
  _: 2
50450
50450
  }, 1032, ["items"])])
50451
- ], 10, CX)]),
50451
+ ], 10, wX)]),
50452
50452
  _: 2
50453
- }, 1032, ["items"]))), 128))], 10, xX)) : Y("", !0)], 8, hX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", DX, "暂无讨论房间"))], 512), [[Vc, m.value]]),
50453
+ }, 1032, ["items"]))), 128))], 10, SX)) : Y("", !0)], 8, gX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", OX, "暂无讨论房间"))], 512), [[Vc, m.value]]),
50454
50454
  vr(q(u, {
50455
50455
  icon: "i-lucide-archive",
50456
50456
  color: "neutral",
@@ -50459,114 +50459,118 @@ var cq = /*#__PURE__*/ jH({
50459
50459
  "aria-haspopup": "dialog",
50460
50460
  onClick: t[6] ||= (e) => n("archives")
50461
50461
  }, {
50462
- default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", OX, P(c.value), 1)) : Y("", !0)]),
50462
+ default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", kX, P(c.value), 1)) : Y("", !0)]),
50463
50463
  _: 1
50464
50464
  }, 512), [[Vc, m.value]]),
50465
- I(r).directory_notice ? (U(), W("p", kX, P(I(r).directory_notice), 1)) : Y("", !0),
50466
- I(r).directory_error ? (U(), W("p", AX, P(I(r).directory_error), 1)) : Y("", !0)
50465
+ I(r).directory_notice ? (U(), W("p", AX, P(I(r).directory_notice), 1)) : Y("", !0),
50466
+ I(r).directory_error ? (U(), W("p", jX, P(I(r).directory_error), 1)) : Y("", !0)
50467
50467
  ]);
50468
50468
  };
50469
50469
  }
50470
- }, MX = {
50470
+ }, NX = {
50471
50471
  key: 0,
50472
50472
  class: "pb-header"
50473
- }, NX = { class: "pb-mode" }, PX = { class: "pb-status-line" }, FX = { role: "status" }, IX = {
50473
+ }, PX = { class: "pb-mode" }, FX = { class: "pb-status-line" }, IX = { role: "status" }, LX = {
50474
50474
  key: 0,
50475
50475
  class: "pb-mode"
50476
- }, LX = {
50476
+ }, RX = {
50477
50477
  key: 0,
50478
50478
  class: "pb-status-detail"
50479
- }, RX = {
50479
+ }, zX = {
50480
50480
  key: 1,
50481
50481
  class: "pb-status-detail"
50482
- }, zX = { class: "pb-error-detail" }, BX = {
50483
- key: 3,
50482
+ }, BX = { class: "pb-error-detail" }, VX = {
50483
+ key: 2,
50484
+ class: "pb-decision",
50485
+ "aria-label": "暂停后的选择"
50486
+ }, HX = { class: "pb-decision-row" }, UX = { class: "pb-extend" }, WX = {
50487
+ key: 4,
50484
50488
  class: "pb-meters"
50485
- }, VX = { class: "pb-meter-label" }, HX = {
50489
+ }, GX = { class: "pb-meter-label" }, KX = {
50486
50490
  key: 0,
50487
50491
  class: "pb-bar"
50488
- }, UX = {
50492
+ }, qX = {
50489
50493
  key: 1,
50490
50494
  class: "pb-section",
50491
50495
  "aria-label": "当前焦点"
50492
- }, WX = {
50496
+ }, JX = {
50493
50497
  class: "pb-section",
50494
50498
  "aria-label": "参与者"
50495
- }, GX = { class: "pb-heading" }, KX = {
50499
+ }, YX = { class: "pb-heading" }, XX = {
50496
50500
  key: 0,
50497
50501
  class: "pb-status-detail pb-held"
50498
- }, qX = { class: "pb-members" }, JX = { class: "pb-member-body" }, YX = { class: "pb-member-name" }, XX = {
50502
+ }, ZX = { class: "pb-members" }, QX = { class: "pb-member-body" }, $X = { class: "pb-member-name" }, eZ = {
50499
50503
  key: 0,
50500
50504
  class: "pb-member-model",
50501
50505
  title: "本场启动配置;默认模型与默认强度由对应软件决定"
50502
- }, ZX = {
50506
+ }, tZ = {
50503
50507
  key: 1,
50504
50508
  class: "pb-member-model",
50505
50509
  title: "续接你已有的会话;它工作时请不要在原窗口继续操作"
50506
- }, QX = { key: 0 }, $X = {
50510
+ }, nZ = { key: 0 }, rZ = {
50507
50511
  key: 3,
50508
50512
  class: "pb-member-manual"
50509
- }, eZ = { key: 0 }, tZ = ["onClick"], nZ = { class: "pb-member-body" }, rZ = { class: "pb-member-name" }, iZ = {
50513
+ }, iZ = { key: 0 }, aZ = ["onClick"], oZ = { class: "pb-member-body" }, sZ = { class: "pb-member-name" }, cZ = {
50510
50514
  key: 1,
50511
50515
  role: "alert",
50512
50516
  class: "pb-free-note is-error"
50513
- }, aZ = {
50517
+ }, lZ = {
50514
50518
  key: 2,
50515
50519
  role: "status",
50516
50520
  class: "pb-free-note"
50517
- }, oZ = {
50521
+ }, uZ = {
50518
50522
  key: 2,
50519
50523
  class: "pb-actions",
50520
50524
  "aria-label": "操作"
50521
- }, sZ = {
50525
+ }, dZ = {
50522
50526
  key: 3,
50523
50527
  class: "pb-section",
50524
50528
  "aria-label": "阶段耗时"
50525
- }, cZ = { class: "pb-timing-heading" }, lZ = ["aria-label"], uZ = { class: "pb-timing-totals" }, dZ = ["title"], fZ = { class: "pb-timings" }, pZ = { class: "pb-timing-who" }, mZ = { class: "pb-timing-stages" }, hZ = ["title"], gZ = {
50529
+ }, fZ = { class: "pb-timing-heading" }, pZ = ["aria-label"], mZ = { class: "pb-timing-totals" }, hZ = ["title"], gZ = { class: "pb-timings" }, _Z = { class: "pb-timing-who" }, vZ = { class: "pb-timing-stages" }, yZ = ["title"], bZ = {
50526
50530
  key: 0,
50527
50531
  class: "pb-note"
50528
- }, _Z = { class: "pb-connection" }, vZ = { class: "fine-print" }, yZ = {
50532
+ }, xZ = { class: "pb-connection" }, SZ = { class: "fine-print" }, CZ = {
50529
50533
  key: 0,
50530
50534
  role: "status",
50531
50535
  class: "fine-print"
50532
- }, bZ = {
50536
+ }, wZ = {
50533
50537
  key: 2,
50534
50538
  role: "alert",
50535
50539
  class: "fine-print"
50536
- }, xZ = { key: 2 }, SZ = {
50540
+ }, TZ = { key: 2 }, EZ = {
50537
50541
  key: 0,
50538
50542
  class: "pb-invite",
50539
50543
  "aria-label": "启动手动成员"
50540
- }, CZ = { class: "pb-invite-lead" }, wZ = {
50544
+ }, DZ = { class: "pb-invite-lead" }, OZ = {
50541
50545
  key: 0,
50542
50546
  role: "alert",
50543
50547
  class: "pb-free-note is-error"
50544
- }, TZ = { class: "pb-invite-launches" }, EZ = { class: "pb-invite-footer" }, DZ = {
50548
+ }, kZ = { class: "pb-invite-launches" }, AZ = { class: "pb-invite-footer" }, jZ = {
50545
50549
  class: "pb-invite-library",
50546
50550
  role: "group",
50547
50551
  "aria-label": "选择 AI(可多选)"
50548
- }, OZ = [
50552
+ }, MZ = [
50549
50553
  "aria-pressed",
50550
50554
  "title",
50551
50555
  "onClick"
50552
- ], kZ = {
50556
+ ], NZ = {
50553
50557
  key: 0,
50554
50558
  class: "pb-invite-cards"
50555
- }, AZ = {
50559
+ }, PZ = {
50556
50560
  key: 0,
50557
50561
  class: "fine-print"
50558
- }, jZ = ["aria-hidden"], MZ = {
50562
+ }, FZ = ["aria-hidden"], IZ = {
50559
50563
  key: 2,
50560
50564
  class: "pb-invite-empty"
50561
- }, NZ = {
50565
+ }, LZ = {
50562
50566
  key: 3,
50563
50567
  role: "alert",
50564
50568
  class: "fine-print"
50565
- }, PZ = {
50569
+ }, RZ = {
50566
50570
  key: 4,
50567
50571
  role: "alert",
50568
50572
  class: "pb-free-note is-error"
50569
- }, FZ = { class: "pb-invite-footer" }, IZ = { class: "progress-ending" }, LZ = ["disabled"], RZ = { key: 0 }, zZ = ["disabled"], BZ = 2e3, VZ = 90, HZ = 100, UZ = /*#__PURE__*/ jH({
50573
+ }, zZ = { class: "pb-invite-footer" }, BZ = { class: "pb-invite-footer" }, VZ = { class: "progress-ending" }, HZ = ["disabled"], UZ = { key: 0 }, WZ = ["disabled"], GZ = 2e3, KZ = 90, qZ = 100, JZ = /*#__PURE__*/ jH({
50570
50574
  __name: "ProgressBoard",
50571
50575
  props: { docked: {
50572
50576
  type: Boolean,
@@ -50577,7 +50581,7 @@ var cq = /*#__PURE__*/ jH({
50577
50581
  async function l(e) {
50578
50582
  clearTimeout(c), s.value = "", await i("copy_member_launch", e) && (s.value = e, c = setTimeout(() => {
50579
50583
  s.value = "";
50580
- }, BZ));
50584
+ }, GZ));
50581
50585
  }
50582
50586
  let u = /* @__PURE__ */ F(!1), d = /* @__PURE__ */ F(null), f = /* @__PURE__ */ F(!1), p = ["pending", "notified"], m = {
50583
50587
  dispatched: "已交付,等待开始",
@@ -50605,19 +50609,19 @@ var cq = /*#__PURE__*/ jH({
50605
50609
  completed: "完成",
50606
50610
  cancelled: "已撤销",
50607
50611
  failed: "失败"
50608
- }, _ = Z(() => n.value.room), v = Z(() => _.value.limits || {}), y = Z(() => _.value.runtime || {}), b = Z(() => y.value.mode === "automatic"), x = Z(() => p.includes(_.value.current_turn?.status) ? _.value.current_turn : null), S = Z(() => ["paused", "concluded"].includes(_.value.phase)), C = Z(() => _.value.phase === "concluded"), w = Z(() => C.value || _.value.archived), T = Z(() => b.value && (y.value.status === "paused" || y.value.expired) && !C.value && !_.value.archived), ee = Z(() => [
50612
+ }, _ = Z(() => n.value.room), v = Z(() => _.value.limits || {}), y = Z(() => _.value.runtime || {}), b = Z(() => y.value.mode === "automatic"), x = Z(() => p.includes(_.value.current_turn?.status) ? _.value.current_turn : null), S = Z(() => ["paused", "concluded"].includes(_.value.phase)), C = Z(() => _.value.phase === "concluded"), w = Z(() => C.value || _.value.archived), T = Z(() => _.value.phase === "paused" && !_.value.archived && !!_.value.round_budget && ["round_limit", "goal_done"].includes(v.value.stop_reason)), ee = /* @__PURE__ */ F(1), E = /* @__PURE__ */ F(!1), D = /* @__PURE__ */ F(0), O = /* @__PURE__ */ F(0), k = Z(() => r.limit_rounds(v.value)), te = Z(() => C.value && b.value && !!_.value.round_budget && !_.value.archived), ne = Z(() => b.value && (y.value.status === "paused" || y.value.expired) && !C.value && !_.value.archived && !T.value), re = Z(() => [
50609
50613
  "initial",
50610
50614
  "discussing",
50611
50615
  "reviewing"
50612
- ].includes(_.value.phase) && !_.value.archived), E = Z(() => !!(x.value && (ee.value || T.value))), D = Z(() => !!n.value.access?.can_manage), O = Z(() => (ee.value || _.value.phase === "paused") && !_.value.archived), k = Z(() => ee.value || T.value || O.value), te = Z(() => !S.value && _.value.phase !== "preparing" && !_.value.archived && !v.value.closing), ne = Z(() => [_.value.host, ...Object.keys(_.value.experts || {}).filter((e) => e !== _.value.host)].filter((e) => e && e !== "用户").map(De)), re = Z(() => ne.value.find((e) => e.result)), ie = (e) => /^Codex(?:-|$)/.test(e), ae = Z(() => re.value && ie(re.value.name) && /active writer/.test(re.value.result) ? re.value : null), A = Z(() => (_.value.members || []).filter((e) => e.status === "away")), oe = (e) => (_.value.members || []).find((t) => t.name === e), se = Z(() => b.value && !w.value), ce = /* @__PURE__ */ F([]), le = 0, ue = /* @__PURE__ */ F(!1), de = /* @__PURE__ */ F([]), fe = /* @__PURE__ */ F(!1), pe = Z(() => Object.keys(r.launch_clients)), me = Z(() => (_.value.members || []).map((e) => e.name)), he = (e) => me.value.filter((t) => r.platform_of(t) === e).length, ge = Z(() => [...ce.value.filter((e) => e.mode !== "manual"), ...ce.value.filter((e) => e.mode === "manual")]), N = Z(() => {
50613
- let e = [...me.value];
50614
- return new Map(ge.value.map((t) => {
50616
+ ].includes(_.value.phase) && !_.value.archived), ie = Z(() => !!(x.value && (re.value || ne.value))), ae = Z(() => !!n.value.access?.can_manage), A = Z(() => (re.value || _.value.phase === "paused") && !_.value.archived), oe = Z(() => re.value || ne.value || A.value || te.value), se = Z(() => !S.value && _.value.phase !== "preparing" && !_.value.archived && !v.value.closing), ce = Z(() => [_.value.host, ...Object.keys(_.value.experts || {}).filter((e) => e !== _.value.host)].filter((e) => e && e !== "用户").map(Pe)), le = Z(() => ce.value.find((e) => e.result)), ue = (e) => /^Codex(?:-|$)/.test(e), de = Z(() => le.value && ue(le.value.name) && /active writer/.test(le.value.result) ? le.value : null), fe = Z(() => (_.value.members || []).filter((e) => e.status === "away")), pe = (e) => (_.value.members || []).find((t) => t.name === e), me = Z(() => b.value && !w.value), he = /* @__PURE__ */ F([]), ge = 0, N = /* @__PURE__ */ F(!1), _e = /* @__PURE__ */ F([]), ve = /* @__PURE__ */ F(!1), ye = Z(() => Object.keys(r.launch_clients)), be = Z(() => (_.value.members || []).map((e) => e.name)), xe = (e) => be.value.filter((t) => r.platform_of(t) === e).length, Se = Z(() => [...he.value.filter((e) => e.mode !== "manual"), ...he.value.filter((e) => e.mode === "manual")]), Ce = Z(() => {
50617
+ let e = [...be.value];
50618
+ return new Map(Se.value.map((t) => {
50615
50619
  let n = t.name;
50616
50620
  for (let r = 2; e.includes(n); r++) n = `${t.name}-${r}`;
50617
50621
  return e.push(n), [t, n];
50618
50622
  }));
50619
50623
  });
50620
- function _e(e) {
50624
+ function we(e) {
50621
50625
  let t = n.value.launch.profiles[e] || {}, r = t.adapter === "api";
50622
50626
  return (r ? t.base_url && t.api_protocol && t.api_key_ref && t.model : t.adapter && (t.adapter === "antigravity" ? t.ipc_directory : t.executable)) ? {
50623
50627
  text: r ? "已配置 API" : "已配置本机软件",
@@ -50627,23 +50631,23 @@ var cq = /*#__PURE__*/ jH({
50627
50631
  tone: "warn"
50628
50632
  };
50629
50633
  }
50630
- let ve = (e) => e.mode === "manual" ? {
50634
+ let Te = (e) => e.mode === "manual" ? {
50631
50635
  text: "手动启动,自行提交",
50632
50636
  tone: "muted"
50633
- } : _e(e.name), ye = Z(() => !ce.value.length || ce.value.some((e) => e.mode === "cli" && (!n.value.launch.available || _e(e.name).tone === "warn")));
50637
+ } : we(e.name), Ee = Z(() => !he.value.length || he.value.some((e) => e.mode === "cli" && (!n.value.launch.available || we(e.name).tone === "warn")));
50634
50638
  R(() => _.value.id, () => {
50635
- ue.value = !1, ce.value = [];
50639
+ N.value = !1, he.value = [];
50636
50640
  });
50637
- let be = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), xe = Z(() => be.value.length > VZ), Se = Z(() => y.value.timings || {
50641
+ let De = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), Oe = Z(() => De.value.length > KZ), ke = Z(() => y.value.timings || {
50638
50642
  items: [],
50639
50643
  totals: {},
50640
50644
  count: 0
50641
- }), Ce = Z({
50645
+ }), Ae = Z({
50642
50646
  get: () => d.value?.room_id === _.value.id,
50643
50647
  set: (e) => {
50644
50648
  e || (d.value = null);
50645
50649
  }
50646
- }), we = Z(() => f.value && n.value.launch.repair?.room_id === _.value.id ? n.value.launch.repair.participants[d.value?.name] : null), Te = Z(() => {
50650
+ }), je = Z(() => f.value && n.value.launch.repair?.room_id === _.value.id ? n.value.launch.repair.participants[d.value?.name] : null), Me = Z(() => {
50647
50651
  let e = _.value;
50648
50652
  if (e.archived) return {
50649
50653
  tone: "neutral",
@@ -50666,14 +50670,14 @@ var cq = /*#__PURE__*/ jH({
50666
50670
  detail: "讨论尚未开始"
50667
50671
  };
50668
50672
  if (e.phase === "paused") {
50669
- if (n.value.free_error && !ue.value) return {
50673
+ if (n.value.free_error && !N.value) return {
50670
50674
  tone: "error",
50671
50675
  title: "操作失败",
50672
50676
  detail: n.value.free_error
50673
50677
  };
50674
- let e = re.value;
50678
+ let e = le.value;
50675
50679
  if (e) {
50676
- let t = e.result.startsWith(e.name) ? e.result : `${r.display_name(e.name)} 执行失败:${e.result}`, n = t.split("\n")[0], i = n.length > HZ ? `${n.slice(0, HZ)}…` : n;
50680
+ let t = e.result.startsWith(e.name) ? e.result : `${r.display_name(e.name)} 执行失败:${e.result}`, n = t.split("\n")[0], i = n.length > qZ ? `${n.slice(0, qZ)}…` : n;
50677
50681
  return {
50678
50682
  tone: "error",
50679
50683
  title: "已暂停",
@@ -50681,7 +50685,11 @@ var cq = /*#__PURE__*/ jH({
50681
50685
  full_detail: t === i ? "" : t
50682
50686
  };
50683
50687
  }
50684
- return {
50688
+ return T.value ? {
50689
+ tone: "warning",
50690
+ title: v.value.stop_reason === "goal_done" ? "目标已完成,已暂停" : "已达轮次上限,已暂停",
50691
+ detail: "现场已保留,请选择后续"
50692
+ } : {
50685
50693
  tone: "warning",
50686
50694
  title: y.value.expired ? "已到截止时间" : "已暂停",
50687
50695
  detail: x.value ? `原安排 ${r.display_name(x.value.expert)} 保留` : ""
@@ -50696,28 +50704,28 @@ var cq = /*#__PURE__*/ jH({
50696
50704
  title: "进行中",
50697
50705
  detail: r.progress_speaker(e)
50698
50706
  };
50699
- }), Ee = Z(() => {
50707
+ }), Ne = Z(() => {
50700
50708
  let e = v.value, t = Math.floor((e.elapsed_seconds || 0) / 60);
50701
50709
  if (w.value) return [];
50702
- let n = _.value.rounds?.at(-1), r = n?.completed === !1 ? n.number : (e.completed_rounds || 0) + 1, i = e.max_rounds ? Math.min(r, e.max_rounds) : r;
50710
+ let n = k.value, r = !!_.value.round_budget, i = _.value.rounds?.at(-1), a = r ? n.done + +!e.reached : i?.completed === !1 ? i.number : (e.completed_rounds || 0) + 1, o = n.cap ? Math.min(a, n.cap) : a;
50703
50711
  return [{
50704
50712
  label: "轮次",
50705
- text: e.max_rounds ? `${i} / ${e.max_rounds}` : `${i} 轮`,
50706
- ratio: e.max_rounds ? i / e.max_rounds : null
50713
+ text: n.cap ? `${o} / ${n.cap}${n.total ? `(${n.total})` : ""}` : `${o} 轮`,
50714
+ ratio: n.cap ? o / n.cap : null
50707
50715
  }, {
50708
50716
  label: "用时",
50709
50717
  text: e.max_minutes ? `${t} / ${e.max_minutes} 分钟` : `${t} 分钟`,
50710
50718
  ratio: e.max_minutes ? t / e.max_minutes : null
50711
50719
  }].filter((t) => t.label !== "用时" || e.started_at);
50712
50720
  });
50713
- function De(e) {
50721
+ function Pe(e) {
50714
50722
  let t = (y.value.participants || []).find((t) => t.participant === e), i = _.value.rounds?.at(-1)?.completed === !1 ? _.value.rounds.at(-1).speakers : [], a = e === _.value.host, o = "等待", s = "neutral", c = m[t?.status] || "", l = (_.value.queued_turns || []).findIndex((t) => t.expert === e);
50715
- if (x.value?.expert === e) o = `第 ${_.value.rounds?.at(-1)?.completed === !1 ? _.value.rounds.at(-1).number : (_.value.completed_rounds || 0) + 1} 轮 · ${c && t.turn_id === x.value.id ? c : S.value ? "原安排保留" : oe(e)?.access === "manual" ? "轮到它了,请去它的 AI 会话触发" : "轮到发言"}`, s = S.value ? "neutral" : "primary";
50723
+ if (x.value?.expert === e) o = `第 ${_.value.rounds?.at(-1)?.completed === !1 ? _.value.rounds.at(-1).number : (_.value.completed_rounds || 0) + 1} 轮 · ${c && t.turn_id === x.value.id ? c : S.value ? "原安排保留" : pe(e)?.access === "manual" ? "轮到它了,请去它的 AI 会话触发" : "轮到发言"}`, s = S.value ? "neutral" : "primary";
50716
50724
  else if (a && !x.value && !S.value) {
50717
50725
  let e = v.value.closing ? "总结收尾中" : "安排下一步";
50718
50726
  o = c && t.role === "host" ? `${e} · ${c}` : e, s = "primary";
50719
50727
  } else l >= 0 && !S.value ? o = `本轮排队 · 第 ${l + 1} 位` : i.includes(e) && (o = "本轮已发言", s = "success");
50720
- let u = oe(e);
50728
+ let u = pe(e);
50721
50729
  if (u?.access === "manual" && u.status === "active" && !a) {
50722
50730
  let t = i.includes(e);
50723
50731
  u.registered_at ? t || (o = `已注册${o === "等待" ? "" : ` · ${o}`}`) : (o = `待注册${o === "等待" ? "" : ` · ${o}`}`, s = "warning");
@@ -50727,7 +50735,7 @@ var cq = /*#__PURE__*/ jH({
50727
50735
  is_host: a,
50728
50736
  text: o,
50729
50737
  tone: s,
50730
- manual: oe(e)?.access === "manual",
50738
+ manual: pe(e)?.access === "manual",
50731
50739
  failures: t?.failures || 0,
50732
50740
  result: t?.status === "failed" ? t.result : "",
50733
50741
  model: r.participant_model(e, _.value, n.value.launch.room_models),
@@ -50735,23 +50743,23 @@ var cq = /*#__PURE__*/ jH({
50735
50743
  mode: r.participant_access(e, _.value)
50736
50744
  };
50737
50745
  }
50738
- function Oe(e) {
50746
+ function Fe(e) {
50739
50747
  let t = e.session ? [{
50740
50748
  label: "复制会话 ID",
50741
50749
  icon: "i-lucide-copy",
50742
50750
  onSelect: () => i("copy", e.session)
50743
50751
  }] : [];
50744
- oe(e.name)?.access === "manual" && t.push({
50752
+ pe(e.name)?.access === "manual" && t.push({
50745
50753
  label: "复制启动指令(含凭证)",
50746
50754
  icon: "i-lucide-rocket",
50747
50755
  onSelect: () => i("copy_member_launch", e.name)
50748
- }), ie(e.name) && (e.session || oe(e.name)?.session_mode === "borrowed") && b.value && !w.value && n.value.launch.available && !n.value.launch.remote && ["running", "paused"].includes(y.value.status) && t.push({
50756
+ }), ue(e.name) && (e.session || pe(e.name)?.session_mode === "borrowed") && b.value && !w.value && n.value.launch.available && !n.value.launch.remote && ["running", "paused"].includes(y.value.status) && t.push({
50749
50757
  label: "切换 App / CLI",
50750
50758
  icon: "i-lucide-arrow-left-right",
50751
50759
  disabled: !!a.value,
50752
- onSelect: () => Me(e)
50760
+ onSelect: () => ze(e)
50753
50761
  });
50754
- let r = oe(e.name);
50762
+ let r = pe(e.name);
50755
50763
  if (!r || e.is_host || w.value) return [t].filter((e) => e.length);
50756
50764
  let o = (t, n, a, o = {}) => ({
50757
50765
  label: t,
@@ -50760,7 +50768,8 @@ var cq = /*#__PURE__*/ jH({
50760
50768
  onSelect: () => i("change_member", {
50761
50769
  member_id: r.id,
50762
50770
  name: e.name,
50763
- action: a
50771
+ action: a,
50772
+ ...a === "redo" ? { latest_id: _.value.latest_id } : {}
50764
50773
  })
50765
50774
  }), s = _.value.rounds?.at(-1);
50766
50775
  return [
@@ -50770,21 +50779,21 @@ var cq = /*#__PURE__*/ jH({
50770
50779
  [o("移除", "i-lucide-trash-2", "remove", { color: "error" })]
50771
50780
  ].filter((e) => e.length);
50772
50781
  }
50773
- function ke() {
50774
- ce.value = [], fe.value = !1, de.value = [], ue.value = !0;
50782
+ function Ie() {
50783
+ he.value = [], ve.value = !1, _e.value = [], N.value = !0;
50775
50784
  }
50776
- function Ae(e) {
50777
- !r.launch_clients[e]?.some((e) => e.value !== "api") && !n.value.launch.profiles[e]?.adapter && r.write_launch(e, "adapter", "api"), ce.value = [...ce.value, {
50778
- id: ++le,
50785
+ function Le(e) {
50786
+ !r.launch_clients[e]?.some((e) => e.value !== "api") && !n.value.launch.profiles[e]?.adapter && r.write_launch(e, "adapter", "api"), he.value = [...he.value, {
50787
+ id: ++ge,
50779
50788
  name: e,
50780
50789
  mode: "cli",
50781
50790
  session: ""
50782
50791
  }];
50783
50792
  }
50784
- async function je() {
50785
- fe.value = !0;
50786
- let e = [], t = new Map(N.value);
50787
- for (let a of [...ge.value]) {
50793
+ async function Re() {
50794
+ ve.value = !0;
50795
+ let e = [], t = new Map(Ce.value);
50796
+ for (let a of [...Se.value]) {
50788
50797
  let o = n.value.launch.profiles[a.name] || {}, s = a.mode === "manual", c = t.get(a);
50789
50798
  if (await i("invite_member", {
50790
50799
  name: a.name,
@@ -50792,52 +50801,102 @@ var cq = /*#__PURE__*/ jH({
50792
50801
  project_access: o.project_access || n.value.launch.workspace?.project_access || "read",
50793
50802
  session_id: r.launch_can_bind_session(a.name, n.value.launch) ? a.session : ""
50794
50803
  }), n.value.free_error) break;
50795
- s && e.push(c), ce.value = ce.value.filter((e) => e !== a);
50804
+ s && e.push(c), he.value = he.value.filter((e) => e !== a);
50796
50805
  }
50797
- de.value = [...de.value, ...e], !ce.value.length && !de.value.length && (ue.value = !1);
50806
+ _e.value = [..._e.value, ...e], !he.value.length && !_e.value.length && (N.value = !1);
50798
50807
  }
50799
- async function Me(e, t = "") {
50808
+ async function ze(e, t = "") {
50800
50809
  d.value = {
50801
50810
  room_id: _.value.id,
50802
50811
  name: e.name,
50803
50812
  prefer: t
50804
- }, f.value = !1, y.value.status === "paused" && await Ne();
50813
+ }, f.value = !1, y.value.status === "paused" && await Be();
50805
50814
  }
50806
- async function Ne() {
50815
+ async function Be() {
50807
50816
  let e = d.value;
50808
- e && e.room_id === _.value.id && (y.value.status !== "running" || await i("pause_runtime")) && d.value === e && _.value.id === e.room_id && y.value.status === "paused" && (await i("load_room_configuration"), d.value === e && _.value.id === e.room_id && (f.value = !n.value.launch.repair_error && n.value.launch.repair?.room_id === e.room_id, f.value && e.prefer && we.value?.adapter !== e.prefer && r.write_room_adapter(e.name, e.prefer)));
50817
+ e && e.room_id === _.value.id && (y.value.status !== "running" || await i("pause_runtime")) && d.value === e && _.value.id === e.room_id && y.value.status === "paused" && (await i("load_room_configuration"), d.value === e && _.value.id === e.room_id && (f.value = !n.value.launch.repair_error && n.value.launch.repair?.room_id === e.room_id, f.value && e.prefer && je.value?.adapter !== e.prefer && r.write_room_adapter(e.name, e.prefer)));
50809
50818
  }
50810
- let Pe = Z(() => {
50811
- let e = Se.value.totals || {}, t = h.reduce((t, n) => t + (e[n.key] || 0), 0);
50819
+ let Ve = Z(() => {
50820
+ let e = ke.value.totals || {}, t = h.reduce((t, n) => t + (e[n.key] || 0), 0);
50812
50821
  return h.map((n) => ({
50813
50822
  ...n,
50814
50823
  seconds: e[n.key] || 0,
50815
50824
  percent: t ? Math.round((e[n.key] || 0) / t * 100) : 0
50816
50825
  }));
50817
50826
  });
50818
- function Fe(e) {
50827
+ function He(e) {
50819
50828
  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)}分`;
50820
50829
  }
50821
- async function Ie(e) {
50830
+ function Ue() {
50831
+ D.value = v.value.max_rounds || 0, O.value = v.value.max_minutes || 0, E.value = !0;
50832
+ }
50833
+ async function We() {
50834
+ let e = (e) => Number.isInteger(e) && e >= 0 ? e : 0;
50835
+ await i("reopen_discussion", {
50836
+ max_rounds: e(D.value),
50837
+ max_minutes: e(O.value)
50838
+ }) && (E.value = !1);
50839
+ }
50840
+ async function Ge(e) {
50822
50841
  await i(e) && (o.value = !1);
50823
50842
  }
50824
50843
  return (e, c) => {
50825
- let f = MA, p = sA, m = pA, re = TH, ie = bH, le = zV, me = zK;
50844
+ let f = MA, p = sA, m = pA, k = TH, le = bH, ue = zV, ge = zK;
50826
50845
  return U(), W("div", { class: M(["progress-board", { "is-docked": t.docked }]) }, [
50827
- t.docked ? (U(), W("header", MX, [c[16] ||= K("strong", null, "讨论进度", -1), K("span", NX, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
50846
+ t.docked ? (U(), W("header", NX, [c[23] ||= K("strong", null, "讨论进度", -1), K("span", PX, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
50828
50847
  K("section", {
50829
- class: M(["pb-status", `is-${Te.value.tone}`]),
50848
+ class: M(["pb-status", `is-${Me.value.tone}`]),
50830
50849
  "aria-label": "讨论状态"
50831
50850
  }, [
50832
- K("div", PX, [
50833
- c[17] ||= K("span", { class: "pb-dot" }, null, -1),
50834
- K("strong", FX, P(Te.value.title), 1),
50835
- t.docked ? Y("", !0) : (U(), W("span", IX, P(b.value ? "全自动" : "手动"), 1))
50851
+ K("div", FX, [
50852
+ c[24] ||= K("span", { class: "pb-dot" }, null, -1),
50853
+ K("strong", IX, P(Me.value.title), 1),
50854
+ t.docked ? Y("", !0) : (U(), W("span", LX, P(b.value ? "全自动" : "手动"), 1))
50836
50855
  ]),
50837
- Te.value.detail ? (U(), W("p", LX, P(Te.value.detail), 1)) : Y("", !0),
50838
- Te.value.full_detail ? (U(), W("details", RX, [c[18] ||= K("summary", null, "查看错误详情", -1), K("pre", zX, P(Te.value.full_detail), 1)])) : Y("", !0),
50839
- ae.value && I(n).launch.available && !I(n).launch.remote ? (U(), G(f, {
50840
- key: 2,
50856
+ Me.value.detail ? (U(), W("p", RX, P(Me.value.detail), 1)) : Y("", !0),
50857
+ Me.value.full_detail ? (U(), W("details", zX, [c[25] ||= K("summary", null, "查看错误详情", -1), K("pre", BX, P(Me.value.full_detail), 1)])) : Y("", !0),
50858
+ T.value && b.value && ae.value ? (U(), W("div", VX, [
50859
+ K("div", HX, [K("label", UX, [
50860
+ c[26] ||= J("追加", -1),
50861
+ vr(K("input", {
50862
+ "onUpdate:modelValue": c[0] ||= (e) => ee.value = e,
50863
+ type: "number",
50864
+ min: "1",
50865
+ max: "100",
50866
+ inputmode: "numeric",
50867
+ "aria-label": "追加轮数"
50868
+ }, null, 512), [[
50869
+ Yl,
50870
+ ee.value,
50871
+ void 0,
50872
+ { number: !0 }
50873
+ ]]),
50874
+ c[27] ||= J("轮", -1)
50875
+ ]), q(f, {
50876
+ label: "追加并继续",
50877
+ icon: "i-lucide-plus",
50878
+ size: "xs",
50879
+ color: "neutral",
50880
+ variant: "outline",
50881
+ loading: I(a) === "extend_rounds",
50882
+ disabled: !!I(a) || !(ee.value >= 1 && ee.value <= 100),
50883
+ onClick: c[1] ||= (e) => I(i)("extend_rounds", ee.value)
50884
+ }, null, 8, ["loading", "disabled"])]),
50885
+ q(f, {
50886
+ label: "请主持人总结",
50887
+ icon: "i-lucide-file-text",
50888
+ size: "xs",
50889
+ color: "neutral",
50890
+ variant: "outline",
50891
+ title: "主持人根据已有材料总结,之后讨论收束",
50892
+ loading: I(a) === "request_summary",
50893
+ disabled: !!I(a),
50894
+ onClick: c[2] ||= (e) => I(i)("request_summary")
50895
+ }, null, 8, ["loading", "disabled"]),
50896
+ c[28] ||= K("small", null, "也可点“结束”直接收束,不总结。", -1)
50897
+ ])) : Y("", !0),
50898
+ de.value && I(n).launch.available && !I(n).launch.remote ? (U(), G(f, {
50899
+ key: 3,
50841
50900
  icon: "i-lucide-arrow-left-right",
50842
50901
  label: "切换到 Codex App",
50843
50902
  size: "xs",
@@ -50845,32 +50904,32 @@ var cq = /*#__PURE__*/ jH({
50845
50904
  variant: "outline",
50846
50905
  title: "会话正被 Codex App 占用时,改由 App 接入,沿用原聊天和讨论进度",
50847
50906
  disabled: !!I(a),
50848
- onClick: c[0] ||= (e) => Me(ae.value, "codex")
50907
+ onClick: c[3] ||= (e) => ze(de.value, "codex")
50849
50908
  }, null, 8, ["disabled"])) : Y("", !0),
50850
- Ee.value.length ? (U(), W("div", BX, [(U(!0), W(H, null, B(Ee.value, (e) => (U(), W("div", {
50909
+ Ne.value.length ? (U(), W("div", WX, [(U(!0), W(H, null, B(Ne.value, (e) => (U(), W("div", {
50851
50910
  key: e.label,
50852
50911
  class: "pb-meter"
50853
- }, [K("div", VX, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", HX, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])) : Y("", !0)
50912
+ }, [K("div", GX, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", KX, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])) : Y("", !0)
50854
50913
  ], 2),
50855
- be.value ? (U(), W("section", UX, [
50856
- c[19] ||= K("h4", null, "当前焦点", -1),
50857
- K("p", { class: M(["pb-focus", { "is-expanded": u.value }]) }, P(be.value), 3),
50858
- xe.value ? (U(), W("button", {
50914
+ De.value ? (U(), W("section", qX, [
50915
+ c[29] ||= K("h4", null, "当前焦点", -1),
50916
+ K("p", { class: M(["pb-focus", { "is-expanded": u.value }]) }, P(De.value), 3),
50917
+ Oe.value ? (U(), W("button", {
50859
50918
  key: 0,
50860
50919
  type: "button",
50861
50920
  class: "pb-link",
50862
- onClick: c[1] ||= (e) => u.value = !u.value
50921
+ onClick: c[4] ||= (e) => u.value = !u.value
50863
50922
  }, P(u.value ? "收起" : "展开"), 1)) : Y("", !0)
50864
50923
  ])) : Y("", !0),
50865
- K("section", WX, [
50866
- K("div", GX, [c[21] ||= K("h4", null, "参与者", -1), se.value ? (U(), W("button", {
50924
+ K("section", JX, [
50925
+ K("div", YX, [c[31] ||= K("h4", null, "参与者", -1), me.value ? (U(), W("button", {
50867
50926
  key: 0,
50868
50927
  type: "button",
50869
50928
  class: "pb-link",
50870
- onClick: ke
50871
- }, [q(p, { name: "i-lucide-plus" }), c[20] ||= J("邀请", -1)])) : Y("", !0)]),
50872
- _.value.held_since && x.value && !S.value ? (U(), W("p", KX, "用户有新操作," + P(I(r).display_name(x.value.expert)) + " 说完后交给主持人", 1)) : Y("", !0),
50873
- K("ul", qX, [(U(!0), W(H, null, B(ne.value, (e) => (U(), W("li", {
50929
+ onClick: Ie
50930
+ }, [q(p, { name: "i-lucide-plus" }), c[30] ||= J("邀请", -1)])) : Y("", !0)]),
50931
+ _.value.held_since && x.value && !S.value ? (U(), W("p", XX, "用户有新操作," + P(I(r).display_name(x.value.expert)) + " 说完后交给主持人", 1)) : Y("", !0),
50932
+ K("ul", ZX, [(U(!0), W(H, null, B(ce.value, (e) => (U(), W("li", {
50874
50933
  key: e.name,
50875
50934
  class: "pb-member"
50876
50935
  }, [
@@ -50886,8 +50945,8 @@ var cq = /*#__PURE__*/ jH({
50886
50945
  "alt",
50887
50946
  "class"
50888
50947
  ]),
50889
- K("div", JX, [
50890
- K("div", YX, [
50948
+ K("div", QX, [
50949
+ K("div", $X, [
50891
50950
  J(P(I(r).display_name(e.name)), 1),
50892
50951
  e.is_host ? (U(), G(p, {
50893
50952
  key: 0,
@@ -50896,26 +50955,26 @@ var cq = /*#__PURE__*/ jH({
50896
50955
  })) : Y("", !0),
50897
50956
  K("small", null, P(e.is_host ? `主持 · ${e.mode}` : e.mode), 1)
50898
50957
  ]),
50899
- e.model ? (U(), W("div", XX, P(e.model), 1)) : Y("", !0),
50900
- oe(e.name)?.session_mode === "borrowed" ? (U(), W("div", ZX, "借用已有会话")) : Y("", !0),
50958
+ e.model ? (U(), W("div", eZ, P(e.model), 1)) : Y("", !0),
50959
+ pe(e.name)?.session_mode === "borrowed" ? (U(), W("div", tZ, "借用已有会话")) : Y("", !0),
50901
50960
  w.value ? Y("", !0) : (U(), W("div", {
50902
50961
  key: 2,
50903
50962
  class: M(["pb-member-status", `is-${e.tone}`])
50904
50963
  }, [
50905
- c[22] ||= K("span", { class: "pb-dot" }, null, -1),
50964
+ c[32] ||= K("span", { class: "pb-dot" }, null, -1),
50906
50965
  J(P(e.text), 1),
50907
- e.failures ? (U(), W("small", QX, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
50966
+ e.failures ? (U(), W("small", nZ, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
50908
50967
  ], 2)),
50909
- e.manual && !w.value ? (U(), W("div", $X, [!oe(e.name)?.registered_at && !e.is_host ? (U(), W("span", eZ, "需在它的会话中注册,才算到场")) : Y("", !0), D.value ? (U(), W("button", {
50968
+ e.manual && !w.value ? (U(), W("div", rZ, [!pe(e.name)?.registered_at && !e.is_host ? (U(), W("span", iZ, "需在它的会话中注册,才算到场")) : Y("", !0), ae.value ? (U(), W("button", {
50910
50969
  key: 1,
50911
50970
  type: "button",
50912
50971
  class: "pb-link",
50913
50972
  onClick: (t) => l(e.name)
50914
- }, [q(p, { name: s.value === e.name ? "i-lucide-check" : "i-lucide-rocket" }, null, 8, ["name"]), J(P(s.value === e.name ? "已复制" : "复制启动指令"), 1)], 8, tZ)) : Y("", !0)])) : Y("", !0)
50973
+ }, [q(p, { name: s.value === e.name ? "i-lucide-check" : "i-lucide-rocket" }, null, 8, ["name"]), J(P(s.value === e.name ? "已复制" : "复制启动指令"), 1)], 8, aZ)) : Y("", !0)])) : Y("", !0)
50915
50974
  ]),
50916
- Oe(e).length ? (U(), G(re, {
50975
+ Fe(e).length ? (U(), G(k, {
50917
50976
  key: 0,
50918
- items: Oe(e),
50977
+ items: Fe(e),
50919
50978
  content: { align: "end" },
50920
50979
  ui: { content: "channel-menu" }
50921
50980
  }, {
@@ -50929,7 +50988,7 @@ var cq = /*#__PURE__*/ jH({
50929
50988
  }, null, 8, ["aria-label"])]),
50930
50989
  _: 2
50931
50990
  }, 1032, ["items"])) : Y("", !0)
50932
- ]))), 128)), (U(!0), W(H, null, B(A.value, (e) => (U(), W("li", {
50991
+ ]))), 128)), (U(!0), W(H, null, B(fe.value, (e) => (U(), W("li", {
50933
50992
  key: e.id,
50934
50993
  class: "pb-member is-away"
50935
50994
  }, [
@@ -50945,10 +51004,10 @@ var cq = /*#__PURE__*/ jH({
50945
51004
  "alt",
50946
51005
  "class"
50947
51006
  ]),
50948
- K("div", nZ, [K("div", rZ, [J(P(I(r).display_name(e.name)), 1), c[23] ||= K("small", null, "暂离", -1)]), c[24] ||= K("div", { class: "pb-member-status is-neutral" }, [K("span", { class: "pb-dot" }), J("保留位置和会话,不参与安排")], -1)]),
50949
- Oe({ name: e.name }).length ? (U(), G(re, {
51007
+ K("div", oZ, [K("div", sZ, [J(P(I(r).display_name(e.name)), 1), c[33] ||= K("small", null, "暂离", -1)]), c[34] ||= K("div", { class: "pb-member-status is-neutral" }, [K("span", { class: "pb-dot" }), J("保留位置和会话,不参与安排")], -1)]),
51008
+ Fe({ name: e.name }).length ? (U(), G(k, {
50950
51009
  key: 0,
50951
- items: Oe({ name: e.name }),
51010
+ items: Fe({ name: e.name }),
50952
51011
  content: { align: "end" },
50953
51012
  ui: { content: "channel-menu" }
50954
51013
  }, {
@@ -50963,10 +51022,10 @@ var cq = /*#__PURE__*/ jH({
50963
51022
  _: 2
50964
51023
  }, 1032, ["items"])) : Y("", !0)
50965
51024
  ]))), 128))]),
50966
- !ue.value && I(n).free_error && _.value.phase !== "paused" ? (U(), W("p", iZ, P(I(n).free_error), 1)) : I(n).free_notice ? (U(), W("p", aZ, P(I(n).free_notice), 1)) : Y("", !0)
51025
+ !N.value && I(n).free_error && _.value.phase !== "paused" ? (U(), W("p", cZ, P(I(n).free_error), 1)) : I(n).free_notice ? (U(), W("p", lZ, P(I(n).free_notice), 1)) : Y("", !0)
50967
51026
  ]),
50968
- k.value ? (U(), W("section", oZ, [
50969
- T.value ? (U(), G(f, {
51027
+ oe.value ? (U(), W("section", uZ, [
51028
+ ne.value ? (U(), G(f, {
50970
51029
  key: 0,
50971
51030
  icon: "i-lucide-rotate-ccw",
50972
51031
  label: "重启",
@@ -50976,10 +51035,10 @@ var cq = /*#__PURE__*/ jH({
50976
51035
  class: "pb-action pb-restart",
50977
51036
  title: "原安排重新交给对应 AI,需本机接入程序在运行",
50978
51037
  loading: I(a) === "restart_discussion",
50979
- disabled: !D.value,
50980
- onClick: c[2] ||= (e) => I(i)("restart_discussion")
51038
+ disabled: !ae.value,
51039
+ onClick: c[5] ||= (e) => I(i)("restart_discussion")
50981
51040
  }, null, 8, ["loading", "disabled"])) : Y("", !0),
50982
- ee.value ? (U(), G(f, {
51041
+ re.value ? (U(), G(f, {
50983
51042
  key: 1,
50984
51043
  icon: "i-lucide-pause",
50985
51044
  label: "暂停",
@@ -50989,10 +51048,10 @@ var cq = /*#__PURE__*/ jH({
50989
51048
  class: "pb-action",
50990
51049
  title: "暂停讨论,原安排保留",
50991
51050
  loading: I(a) === "pause_discussion",
50992
- disabled: !D.value,
50993
- onClick: c[3] ||= (e) => I(i)("pause_discussion")
51051
+ disabled: !ae.value,
51052
+ onClick: c[6] ||= (e) => I(i)("pause_discussion")
50994
51053
  }, null, 8, ["loading", "disabled"])) : Y("", !0),
50995
- E.value ? (U(), G(f, {
51054
+ ie.value ? (U(), G(f, {
50996
51055
  key: 2,
50997
51056
  icon: "i-lucide-skip-forward",
50998
51057
  label: "跳过",
@@ -51000,17 +51059,29 @@ var cq = /*#__PURE__*/ jH({
51000
51059
  color: "neutral",
51001
51060
  variant: "outline",
51002
51061
  class: "pb-action",
51003
- title: `跳过 ${I(r).display_name(x.value.expert)} 本次发言,${T.value ? "恢复讨论," : ""}交给主持人继续安排`,
51062
+ title: `跳过 ${I(r).display_name(x.value.expert)} 本次发言,${ne.value ? "恢复讨论," : ""}交给主持人继续安排`,
51004
51063
  loading: I(a) === "skip_turn",
51005
- disabled: !D.value || !!I(a),
51006
- onClick: c[4] ||= (e) => I(i)("skip_turn")
51064
+ disabled: !ae.value || !!I(a),
51065
+ onClick: c[7] ||= (e) => I(i)("skip_turn")
51007
51066
  }, null, 8, [
51008
51067
  "title",
51009
51068
  "loading",
51010
51069
  "disabled"
51011
51070
  ])) : Y("", !0),
51012
- O.value ? (U(), G(f, {
51071
+ te.value ? (U(), G(f, {
51013
51072
  key: 3,
51073
+ icon: "i-lucide-rotate-ccw",
51074
+ label: "重新开始",
51075
+ size: "sm",
51076
+ color: "neutral",
51077
+ variant: "outline",
51078
+ class: "pb-action pb-restart",
51079
+ title: "保留全部记录,设定新的轮次与时长上限后继续讨论,需本机接入程序在运行",
51080
+ disabled: !ae.value || !!I(a),
51081
+ onClick: Ue
51082
+ }, null, 8, ["disabled"])) : Y("", !0),
51083
+ A.value ? (U(), G(f, {
51084
+ key: 4,
51014
51085
  icon: "i-lucide-flag",
51015
51086
  label: "结束",
51016
51087
  size: "sm",
@@ -51018,37 +51089,37 @@ var cq = /*#__PURE__*/ jH({
51018
51089
  variant: "outline",
51019
51090
  class: "pb-action pb-end",
51020
51091
  title: "结束讨论:选择主持人收尾或直接结束",
51021
- disabled: !D.value,
51022
- onClick: c[5] ||= (e) => o.value = !0
51092
+ disabled: !ae.value,
51093
+ onClick: c[8] ||= (e) => o.value = !0
51023
51094
  }, null, 8, ["disabled"])) : Y("", !0)
51024
51095
  ])) : Y("", !0),
51025
- b.value && Se.value.count ? (U(), W("section", sZ, [
51026
- K("div", cZ, [c[25] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(Se.value.count) + " 次执行", 1)]),
51096
+ b.value && ke.value.count ? (U(), W("section", dZ, [
51097
+ K("div", fZ, [c[35] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(ke.value.count) + " 次执行", 1)]),
51027
51098
  K("div", {
51028
51099
  class: "pb-timing-bar",
51029
51100
  role: "img",
51030
- "aria-label": Pe.value.map((e) => `${e.label} ${e.percent}%`).join(",")
51031
- }, [(U(!0), W(H, null, B(Pe.value, (e) => (U(), W("i", {
51101
+ "aria-label": Ve.value.map((e) => `${e.label} ${e.percent}%`).join(",")
51102
+ }, [(U(!0), W(H, null, B(Ve.value, (e) => (U(), W("i", {
51032
51103
  key: e.key,
51033
51104
  class: M(`is-${e.key}`),
51034
51105
  style: j({ width: `${e.percent}%` })
51035
- }, null, 6))), 128))], 8, lZ),
51036
- K("dl", uZ, [(U(!0), W(H, null, B(Pe.value, (e) => (U(), W("div", {
51106
+ }, null, 6))), 128))], 8, pZ),
51107
+ K("dl", mZ, [(U(!0), W(H, null, B(Ve.value, (e) => (U(), W("div", {
51037
51108
  key: e.key,
51038
51109
  title: e.hint
51039
- }, [K("dt", null, [K("span", { class: M(`pb-timing-dot is-${e.key}`) }, null, 2), J(P(e.label), 1)]), K("dd", null, [J(P(Fe(e.seconds)), 1), K("small", null, P(e.percent) + "%", 1)])], 8, dZ))), 128))]),
51040
- K("details", fZ, [
51041
- c[26] ||= K("summary", null, "查看每次执行", -1),
51042
- K("ol", null, [(U(!0), W(H, null, B(Se.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", pZ, [J("#" + P(e.id) + " " + P(I(r).display_name(e.participant)), 1), K("small", null, P(e.role === "host" ? "主持" : "专家") + " · " + P(g[e.status] || e.status), 1)]), K("span", mZ, [(U(), W(H, null, B(h, (t) => K("span", {
51110
+ }, [K("dt", null, [K("span", { class: M(`pb-timing-dot is-${e.key}`) }, null, 2), J(P(e.label), 1)]), K("dd", null, [J(P(He(e.seconds)), 1), K("small", null, P(e.percent) + "%", 1)])], 8, hZ))), 128))]),
51111
+ K("details", gZ, [
51112
+ c[36] ||= K("summary", null, "查看每次执行", -1),
51113
+ K("ol", null, [(U(!0), W(H, null, B(ke.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", _Z, [J("#" + P(e.id) + " " + P(I(r).display_name(e.participant)), 1), K("small", null, P(e.role === "host" ? "主持" : "专家") + " · " + P(g[e.status] || e.status), 1)]), K("span", vZ, [(U(), W(H, null, B(h, (t) => K("span", {
51043
51114
  key: t.key,
51044
51115
  title: t.hint
51045
- }, P(t.label) + " " + P(Fe(e[t.key])), 9, hZ)), 64))])]))), 128))]),
51046
- Se.value.count > Se.value.items.length ? (U(), W("p", gZ, "只列出最近 " + P(Se.value.items.length) + " 次,共 " + P(Se.value.count) + " 次执行。", 1)) : Y("", !0)
51116
+ }, P(t.label) + " " + P(He(e[t.key])), 9, yZ)), 64))])]))), 128))]),
51117
+ ke.value.count > ke.value.items.length ? (U(), W("p", bZ, "只列出最近 " + P(ke.value.items.length) + " 次,共 " + P(ke.value.count) + " 次执行。", 1)) : Y("", !0)
51047
51118
  ])
51048
51119
  ])) : Y("", !0),
51049
- q(me, {
51050
- open: Ce.value,
51051
- "onUpdate:open": c[9] ||= (e) => Ce.value = e,
51120
+ q(ge, {
51121
+ open: Ae.value,
51122
+ "onUpdate:open": c[12] ||= (e) => Ae.value = e,
51052
51123
  title: "切换 Codex 接入方式",
51053
51124
  description: "沿用原聊天和讨论进度,仅修改本场讨论。",
51054
51125
  ui: {
@@ -51056,16 +51127,16 @@ var cq = /*#__PURE__*/ jH({
51056
51127
  body: "dialog-body"
51057
51128
  }
51058
51129
  }, {
51059
- body: L(() => [K("div", _Z, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[27] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51130
+ body: L(() => [K("div", xZ, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[37] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51060
51131
  label: "暂停并读取配置",
51061
51132
  icon: "i-lucide-pause",
51062
51133
  class: "channel-primary-button",
51063
51134
  loading: !!I(a),
51064
- onClick: Ne
51065
- }, null, 8, ["loading"])], 64)) : y.value.status === "paused" ? (U(), W(H, { key: 1 }, [we.value ? (U(), W(H, { key: 0 }, [
51066
- q(le, { label: "接入方式" }, {
51067
- default: L(() => [q(ie, {
51068
- "model-value": we.value.adapter,
51135
+ onClick: Be
51136
+ }, null, 8, ["loading"])], 64)) : y.value.status === "paused" ? (U(), W(H, { key: 1 }, [je.value ? (U(), W(H, { key: 0 }, [
51137
+ q(ue, { label: "接入方式" }, {
51138
+ default: L(() => [q(le, {
51139
+ "model-value": je.value.adapter,
51069
51140
  items: [{
51070
51141
  label: "Codex App",
51071
51142
  value: "codex"
@@ -51075,20 +51146,20 @@ var cq = /*#__PURE__*/ jH({
51075
51146
  }],
51076
51147
  class: "w-full",
51077
51148
  disabled: !!I(a),
51078
- "onUpdate:modelValue": c[6] ||= (e) => I(r).write_room_adapter(d.value.name, e)
51149
+ "onUpdate:modelValue": c[9] ||= (e) => I(r).write_room_adapter(d.value.name, e)
51079
51150
  }, null, 8, ["model-value", "disabled"])]),
51080
51151
  _: 1
51081
51152
  }),
51082
- K("p", vZ, P(we.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51153
+ K("p", SZ, P(je.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51083
51154
  q(f, {
51084
51155
  label: "保存接入方式",
51085
51156
  class: "channel-primary-button",
51086
51157
  loading: I(a) === "save_room_configuration",
51087
51158
  disabled: !!I(a),
51088
- onClick: c[7] ||= (e) => I(i)("save_room_configuration")
51159
+ onClick: c[10] ||= (e) => I(i)("save_room_configuration")
51089
51160
  }, null, 8, ["loading", "disabled"]),
51090
- I(n).launch.repair?.notice ? (U(), W("p", yZ, P(I(n).launch.repair.notice), 1)) : Y("", !0),
51091
- I(n).launch.repair?.applied && T.value ? (U(), G(f, {
51161
+ I(n).launch.repair?.notice ? (U(), W("p", CZ, P(I(n).launch.repair.notice), 1)) : Y("", !0),
51162
+ I(n).launch.repair?.applied && ne.value ? (U(), G(f, {
51092
51163
  key: 1,
51093
51164
  label: "重启讨论",
51094
51165
  icon: "i-lucide-rotate-ccw",
@@ -51096,8 +51167,8 @@ var cq = /*#__PURE__*/ jH({
51096
51167
  color: "neutral",
51097
51168
  loading: I(a) === "restart_discussion",
51098
51169
  disabled: !!I(a),
51099
- onClick: c[8] ||= (e) => {
51100
- I(i)("restart_discussion"), Ce.value = !1;
51170
+ onClick: c[11] ||= (e) => {
51171
+ I(i)("restart_discussion"), Ae.value = !1;
51101
51172
  }
51102
51173
  }, null, 8, ["loading", "disabled"])) : Y("", !0)
51103
51174
  ], 64)) : (U(), G(f, {
@@ -51106,13 +51177,13 @@ var cq = /*#__PURE__*/ jH({
51106
51177
  variant: "outline",
51107
51178
  color: "neutral",
51108
51179
  loading: !!I(a),
51109
- onClick: Ne
51110
- }, null, 8, ["loading"])), I(n).launch.repair_error ? (U(), W("p", bZ, P(I(n).launch.repair_error), 1)) : Y("", !0)], 64)) : (U(), W("p", xZ, "本场状态已变化,请关闭后重新核对。"))])]),
51180
+ onClick: Be
51181
+ }, null, 8, ["loading"])), I(n).launch.repair_error ? (U(), W("p", wZ, P(I(n).launch.repair_error), 1)) : Y("", !0)], 64)) : (U(), W("p", TZ, "本场状态已变化,请关闭后重新核对。"))])]),
51111
51182
  _: 1
51112
51183
  }, 8, ["open"]),
51113
- q(me, {
51114
- open: ue.value,
51115
- "onUpdate:open": c[12] ||= (e) => ue.value = e,
51184
+ q(ge, {
51185
+ open: N.value,
51186
+ "onUpdate:open": c[15] ||= (e) => N.value = e,
51116
51187
  title: "邀请专家",
51117
51188
  description: "新专家由程序按本机软件配置启动,或由你手动启动,加入本轮发言队列。",
51118
51189
  ui: {
@@ -51120,10 +51191,10 @@ var cq = /*#__PURE__*/ jH({
51120
51191
  body: "dialog-body"
51121
51192
  }
51122
51193
  }, {
51123
- body: L(() => [de.value.length && !ce.value.length ? (U(), W("div", SZ, [
51124
- K("p", CZ, P(de.value.length > 1 ? `${de.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51125
- I(n).access?.error ? (U(), W("p", wZ, P(I(n).access.error), 1)) : Y("", !0),
51126
- K("ul", TZ, [(U(!0), W(H, null, B(de.value, (e) => (U(), W("li", { key: e }, [
51194
+ body: L(() => [_e.value.length && !he.value.length ? (U(), W("div", EZ, [
51195
+ K("p", DZ, P(_e.value.length > 1 ? `${_e.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51196
+ I(n).access?.error ? (U(), W("p", OZ, P(I(n).access.error), 1)) : Y("", !0),
51197
+ K("ul", kZ, [(U(!0), W(H, null, B(_e.value, (e) => (U(), W("li", { key: e }, [
51127
51198
  q(m, {
51128
51199
  src: I(r).identities[I(r).platform_of(e)]?.icon,
51129
51200
  text: I(r).identities[I(r).platform_of(e)]?.initials,
@@ -51137,7 +51208,7 @@ var cq = /*#__PURE__*/ jH({
51137
51208
  "class"
51138
51209
  ]),
51139
51210
  K("strong", null, P(I(r).display_name(e)), 1),
51140
- K("small", { class: M({ "is-registered": oe(e)?.registered_at }) }, P(oe(e)?.registered_at ? "已注册" : "待注册"), 3),
51211
+ K("small", { class: M({ "is-registered": pe(e)?.registered_at }) }, P(pe(e)?.registered_at ? "已注册" : "待注册"), 3),
51141
51212
  q(f, {
51142
51213
  icon: s.value === e ? "i-lucide-check" : "i-lucide-rocket",
51143
51214
  label: s.value === e ? "已复制" : "复制启动指令",
@@ -51157,24 +51228,24 @@ var cq = /*#__PURE__*/ jH({
51157
51228
  "onClick"
51158
51229
  ])
51159
51230
  ]))), 128))]),
51160
- c[28] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51161
- K("div", EZ, [q(f, {
51231
+ c[38] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51232
+ K("div", AZ, [q(f, {
51162
51233
  label: "完成",
51163
51234
  class: "channel-primary-button",
51164
- onClick: c[10] ||= (e) => ue.value = !1
51235
+ onClick: c[13] ||= (e) => N.value = !1
51165
51236
  })])
51166
51237
  ])) : (U(), W("form", {
51167
51238
  key: 1,
51168
51239
  class: "pb-invite",
51169
51240
  "aria-label": "邀请专家",
51170
- onSubmit: uu(je, ["prevent"])
51241
+ onSubmit: uu(Re, ["prevent"])
51171
51242
  }, [
51172
- K("div", DZ, [(U(!0), W(H, null, B(pe.value, (e) => (U(), W("button", {
51243
+ K("div", jZ, [(U(!0), W(H, null, B(ye.value, (e) => (U(), W("button", {
51173
51244
  key: e,
51174
51245
  type: "button",
51175
- "aria-pressed": ce.value.some((t) => t.name === e),
51176
- title: he(e) ? `已在场 ${he(e)} 位 · 将添加新实例` : "",
51177
- onClick: (t) => Ae(e)
51246
+ "aria-pressed": he.value.some((t) => t.name === e),
51247
+ title: xe(e) ? `已在场 ${xe(e)} 位 · 将添加新实例` : "",
51248
+ onClick: (t) => Le(e)
51178
51249
  }, [q(m, {
51179
51250
  src: I(r).identities[e]?.icon,
51180
51251
  text: I(r).identities[e]?.initials,
@@ -51186,19 +51257,19 @@ var cq = /*#__PURE__*/ jH({
51186
51257
  "text",
51187
51258
  "alt",
51188
51259
  "class"
51189
- ]), J(P(e), 1)], 8, OZ))), 128))]),
51190
- ce.value.length ? (U(), W("div", kZ, [(U(!0), W(H, null, B(ce.value, (e) => (U(), W("div", {
51260
+ ]), J(P(e), 1)], 8, MZ))), 128))]),
51261
+ he.value.length ? (U(), W("div", NZ, [(U(!0), W(H, null, B(he.value, (e) => (U(), W("div", {
51191
51262
  key: e.id,
51192
51263
  class: "pb-invite-pick"
51193
51264
  }, [q(aJ, {
51194
51265
  name: e.name,
51195
51266
  mode: e.mode,
51196
51267
  choices: ["cli", "manual"],
51197
- status: ve(e),
51268
+ status: Te(e),
51198
51269
  session: e.session,
51199
51270
  onMode: (t) => e.mode = t,
51200
51271
  onSession: (t) => e.session = t,
51201
- onRemove: (t) => ce.value = ce.value.filter((t) => t !== e)
51272
+ onRemove: (t) => he.value = he.value.filter((t) => t !== e)
51202
51273
  }, null, 8, [
51203
51274
  "name",
51204
51275
  "mode",
@@ -51207,25 +51278,25 @@ var cq = /*#__PURE__*/ jH({
51207
51278
  "onMode",
51208
51279
  "onSession",
51209
51280
  "onRemove"
51210
- ]), N.value.get(e) === e.name ? Y("", !0) : (U(), W("p", AZ, "同一 AI 已有实例,将以 " + P(N.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
51211
- ce.value.length ? (U(), W("p", {
51281
+ ]), Ce.value.get(e) === e.name ? Y("", !0) : (U(), W("p", PZ, "同一 AI 已有实例,将以 " + P(Ce.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
51282
+ he.value.length ? (U(), W("p", {
51212
51283
  key: 1,
51213
- class: M(["fine-print", { "pb-invite-reserved": !(ce.value.some((e) => e.mode === "manual") && ce.value.some((e) => e.mode !== "manual")) }]),
51214
- "aria-hidden": !(ce.value.some((e) => e.mode === "manual") && ce.value.some((e) => e.mode !== "manual"))
51215
- }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, jZ)) : (U(), W("p", MZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
51216
- ce.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", NZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
51217
- fe.value && I(n).free_error ? (U(), W("p", PZ, P(I(n).free_error), 1)) : Y("", !0),
51218
- K("div", FZ, [q(f, {
51284
+ class: M(["fine-print", { "pb-invite-reserved": !(he.value.some((e) => e.mode === "manual") && he.value.some((e) => e.mode !== "manual")) }]),
51285
+ "aria-hidden": !(he.value.some((e) => e.mode === "manual") && he.value.some((e) => e.mode !== "manual"))
51286
+ }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, FZ)) : (U(), W("p", IZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
51287
+ he.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", LZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
51288
+ ve.value && I(n).free_error ? (U(), W("p", RZ, P(I(n).free_error), 1)) : Y("", !0),
51289
+ K("div", zZ, [q(f, {
51219
51290
  label: "取消",
51220
51291
  color: "neutral",
51221
51292
  variant: "ghost",
51222
- onClick: c[11] ||= (e) => ue.value = !1
51293
+ onClick: c[14] ||= (e) => N.value = !1
51223
51294
  }), q(f, {
51224
51295
  type: "submit",
51225
51296
  icon: "i-lucide-user-plus",
51226
- label: ce.value.length > 1 ? `邀请 ${ce.value.length} 位` : "邀请",
51297
+ label: he.value.length > 1 ? `邀请 ${he.value.length} 位` : "邀请",
51227
51298
  class: "channel-primary-button",
51228
- disabled: ye.value,
51299
+ disabled: Ee.value,
51229
51300
  loading: I(a) === "invite_member"
51230
51301
  }, null, 8, [
51231
51302
  "label",
@@ -51235,9 +51306,71 @@ var cq = /*#__PURE__*/ jH({
51235
51306
  ], 32))]),
51236
51307
  _: 1
51237
51308
  }, 8, ["open"]),
51238
- q(me, {
51309
+ q(ge, {
51310
+ open: E.value,
51311
+ "onUpdate:open": c[19] ||= (e) => E.value = e,
51312
+ title: "重新开始讨论",
51313
+ description: "保留全部记录和原结论,按新的上限继续。",
51314
+ ui: {
51315
+ content: "glass-panel studio-modal",
51316
+ body: "dialog-body"
51317
+ }
51318
+ }, {
51319
+ body: L(() => [K("form", {
51320
+ class: "pb-reopen",
51321
+ onSubmit: uu(We, ["prevent"])
51322
+ }, [
51323
+ K("label", null, [
51324
+ c[39] ||= J("轮次上限", -1),
51325
+ vr(K("input", {
51326
+ "onUpdate:modelValue": c[16] ||= (e) => D.value = e,
51327
+ type: "number",
51328
+ min: "0",
51329
+ max: "100",
51330
+ inputmode: "numeric"
51331
+ }, null, 512), [[
51332
+ Yl,
51333
+ D.value,
51334
+ void 0,
51335
+ { number: !0 }
51336
+ ]]),
51337
+ c[40] ||= K("small", null, "0 表示不限", -1)
51338
+ ]),
51339
+ K("label", null, [
51340
+ c[41] ||= J("总时长(分钟)", -1),
51341
+ vr(K("input", {
51342
+ "onUpdate:modelValue": c[17] ||= (e) => O.value = e,
51343
+ type: "number",
51344
+ min: "0",
51345
+ max: "1440",
51346
+ inputmode: "numeric"
51347
+ }, null, 512), [[
51348
+ Yl,
51349
+ O.value,
51350
+ void 0,
51351
+ { number: !0 }
51352
+ ]]),
51353
+ c[42] ||= K("small", null, "0 表示不限", -1)
51354
+ ]),
51355
+ K("div", BZ, [q(f, {
51356
+ label: "取消",
51357
+ color: "neutral",
51358
+ variant: "ghost",
51359
+ onClick: c[18] ||= (e) => E.value = !1
51360
+ }), q(f, {
51361
+ type: "submit",
51362
+ icon: "i-lucide-rotate-ccw",
51363
+ label: "重新开始",
51364
+ class: "channel-primary-button",
51365
+ loading: I(a) === "reopen_discussion",
51366
+ disabled: !!I(a)
51367
+ }, null, 8, ["loading", "disabled"])])
51368
+ ], 32)]),
51369
+ _: 1
51370
+ }, 8, ["open"]),
51371
+ q(ge, {
51239
51372
  open: o.value,
51240
- "onUpdate:open": c[15] ||= (e) => o.value = e,
51373
+ "onUpdate:open": c[22] ||= (e) => o.value = e,
51241
51374
  title: "提前结束讨论",
51242
51375
  description: "当前发言安排会被取消,已有消息全部保留。",
51243
51376
  ui: {
@@ -51245,27 +51378,27 @@ var cq = /*#__PURE__*/ jH({
51245
51378
  body: "dialog-body"
51246
51379
  }
51247
51380
  }, {
51248
- body: L(() => [K("div", IZ, [K("button", {
51381
+ body: L(() => [K("div", VZ, [K("button", {
51249
51382
  type: "button",
51250
51383
  class: "progress-ending-option",
51251
- disabled: !te.value || !!I(a),
51252
- onClick: c[13] ||= (e) => Ie("force_close")
51384
+ disabled: !se.value || !!I(a),
51385
+ onClick: c[20] ||= (e) => Ge("force_close")
51253
51386
  }, [
51254
- c[29] ||= K("strong", null, "请主持人收尾", -1),
51387
+ c[43] ||= K("strong", null, "请主持人收尾", -1),
51255
51388
  K("span", null, "立即进入收束,由 " + P(I(r).display_name(_.value.host)) + " 在 " + P(v.value.summary_minutes || 5) + " 分钟收束预留内根据已有材料总结。", 1),
51256
- te.value ? Y("", !0) : (U(), W("small", RZ, P(v.value.closing ? "已在收尾中。" : "仅进行中的讨论可以收尾;暂停后可先重启再收尾,或直接结束并保留记录。"), 1))
51257
- ], 8, LZ), K("button", {
51389
+ se.value ? Y("", !0) : (U(), W("small", UZ, P(v.value.closing ? "已在收尾中。" : "仅进行中的讨论可以收尾;暂停后可先重启再收尾,或直接结束并保留记录。"), 1))
51390
+ ], 8, HZ), K("button", {
51258
51391
  type: "button",
51259
51392
  class: "progress-ending-option",
51260
51393
  disabled: C.value || !!I(a),
51261
- onClick: c[14] ||= (e) => Ie("conclude_discussion")
51262
- }, [...c[30] ||= [K("strong", null, "直接结束(不总结)", -1), K("span", null, "保留全部记录,阶段设为“已收束”,自动运行随之停止。", -1)]], 8, zZ)])]),
51394
+ onClick: c[21] ||= (e) => Ge("conclude_discussion")
51395
+ }, [...c[44] ||= [K("strong", null, "直接结束(不总结)", -1), K("span", null, "保留全部记录,阶段设为“已收束”,自动运行随之停止。", -1)]], 8, WZ)])]),
51263
51396
  _: 1
51264
51397
  }, 8, ["open"])
51265
51398
  ], 2);
51266
51399
  };
51267
51400
  }
51268
- }, [["__scopeId", "data-v-27f0473d"]]), WZ = { class: "progress-panel-anchor" }, GZ = ["aria-expanded", "aria-label"], KZ = { class: "progress-chip-text" }, qZ = { class: "progress-chip-rounds" }, JZ = {
51401
+ }, [["__scopeId", "data-v-d65be0e7"]]), YZ = { class: "progress-panel-anchor" }, XZ = ["aria-expanded", "aria-label"], ZZ = { class: "progress-chip-text" }, QZ = { class: "progress-chip-rounds" }, $Z = {
51269
51402
  __name: "ProgressPanel",
51270
51403
  setup(e) {
51271
51404
  let { view: t, bridge: n } = xr("discussion"), r = /* @__PURE__ */ F(!1), i = Z(() => t.value.room), a = Z(() => i.value.limits || {}), o = Z(() => {
@@ -51292,10 +51425,10 @@ var cq = /*#__PURE__*/ jH({
51292
51425
  tone: "primary",
51293
51426
  title: "进行中"
51294
51427
  };
51295
- }), s = Z(() => a.value.max_rounds ? `${a.value.completed_rounds || 0}/${a.value.max_rounds} 轮` : n.progress_round(i.value)), c = Z(() => `${o.value.title} · ${s.value}`);
51428
+ }), 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}`);
51296
51429
  return (e, t) => {
51297
51430
  let n = $V, a = NV;
51298
- return U(), W("div", WZ, [q(n, { text: "查看讨论进度" }, {
51431
+ return U(), W("div", YZ, [q(n, { text: "查看讨论进度" }, {
51299
51432
  default: L(() => [K("button", {
51300
51433
  type: "button",
51301
51434
  class: M(["progress-chip", `is-${o.value.tone}`]),
@@ -51303,7 +51436,7 @@ var cq = /*#__PURE__*/ jH({
51303
51436
  "aria-expanded": r.value,
51304
51437
  "aria-label": `查看讨论进度:${c.value}`,
51305
51438
  onClick: t[0] ||= (e) => r.value = !0
51306
- }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", KZ, [J(P(o.value.title), 1), K("span", qZ, " · " + P(s.value), 1)])], 10, GZ)]),
51439
+ }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", ZZ, [J(P(o.value.title), 1), K("span", QZ, " · " + P(s.value), 1)])], 10, XZ)]),
51307
51440
  _: 1
51308
51441
  }), q(a, {
51309
51442
  open: r.value,
@@ -51316,60 +51449,60 @@ var cq = /*#__PURE__*/ jH({
51316
51449
  body: "progress-drawer-body"
51317
51450
  }
51318
51451
  }, {
51319
- body: L(() => [q(UZ)]),
51452
+ body: L(() => [q(JZ)]),
51320
51453
  _: 1
51321
51454
  }, 8, ["open", "description"])]);
51322
51455
  };
51323
51456
  }
51324
- }, YZ = { class: "progress-board is-docked" }, XZ = { class: "pb-header" }, ZZ = { class: "pb-mode" }, QZ = { class: "pb-status-line" }, $Z = { role: "status" }, eQ = {
51457
+ }, eQ = { class: "progress-board is-docked" }, tQ = { class: "pb-header" }, nQ = { class: "pb-mode" }, rQ = { class: "pb-status-line" }, iQ = { role: "status" }, aQ = {
51325
51458
  key: 0,
51326
51459
  class: "pb-status-detail"
51327
- }, tQ = { class: "pb-meters" }, nQ = { class: "pb-meter-label" }, rQ = {
51460
+ }, oQ = { class: "pb-meters" }, sQ = { class: "pb-meter-label" }, cQ = {
51328
51461
  key: 0,
51329
51462
  class: "pb-bar"
51330
- }, iQ = {
51463
+ }, lQ = {
51331
51464
  key: 0,
51332
51465
  class: "pb-section",
51333
51466
  "aria-label": "当前任务"
51334
- }, aQ = {
51467
+ }, uQ = {
51335
51468
  class: "pb-section",
51336
51469
  "aria-label": "成员"
51337
- }, oQ = { class: "pb-members" }, sQ = { class: "pb-member-body" }, cQ = { class: "pb-member-name" }, lQ = { class: "pb-member-model" }, uQ = {
51470
+ }, dQ = { class: "pb-members" }, fQ = { class: "pb-member-body" }, pQ = { class: "pb-member-name" }, mQ = { class: "pb-member-model" }, hQ = {
51338
51471
  key: 0,
51339
51472
  class: "pb-member-model",
51340
51473
  title: "它工作时请不要在原窗口继续操作"
51341
- }, dQ = {
51474
+ }, gQ = {
51342
51475
  key: 0,
51343
51476
  role: "alert",
51344
51477
  class: "pb-free-note is-error"
51345
- }, fQ = {
51478
+ }, _Q = {
51346
51479
  key: 1,
51347
51480
  role: "status",
51348
51481
  class: "pb-free-note"
51349
- }, pQ = {
51482
+ }, vQ = {
51350
51483
  key: 2,
51351
51484
  role: "alert",
51352
51485
  class: "pb-free-note is-error"
51353
- }, mQ = {
51486
+ }, yQ = {
51354
51487
  key: 3,
51355
51488
  role: "status",
51356
51489
  class: "pb-free-note"
51357
- }, hQ = {
51490
+ }, bQ = {
51358
51491
  key: 5,
51359
51492
  class: "pb-free-note"
51360
- }, gQ = {
51493
+ }, xQ = {
51361
51494
  key: 1,
51362
51495
  class: "pb-section",
51363
51496
  "aria-label": "头脑风暴"
51364
- }, _Q = ["onClick"], vQ = {
51497
+ }, SQ = ["onClick"], CQ = {
51365
51498
  key: 2,
51366
51499
  class: "pb-actions",
51367
51500
  "aria-label": "操作"
51368
- }, yQ = {
51501
+ }, wQ = {
51369
51502
  key: 3,
51370
51503
  class: "pb-section",
51371
51504
  "aria-label": "执行耗时"
51372
- }, bQ = { class: "pb-timing-heading" }, xQ = { class: "pb-timings" }, SQ = { class: "pb-timing-who" }, CQ = { class: "pb-timing-stages" }, wQ = 90, TQ = /*#__PURE__*/ jH({
51505
+ }, TQ = { class: "pb-timing-heading" }, EQ = { class: "pb-timings" }, DQ = { class: "pb-timing-who" }, OQ = { class: "pb-timing-stages" }, kQ = 90, AQ = /*#__PURE__*/ jH({
51373
51506
  __name: "FreeBoard",
51374
51507
  emits: ["brainstorm"],
51375
51508
  setup(e, { emit: t }) {
@@ -51535,32 +51668,32 @@ var cq = /*#__PURE__*/ jH({
51535
51668
  }
51536
51669
  return (e, t) => {
51537
51670
  let s = pA, m = sA, g = MA, ae = TH, A = bH, oe = YV;
51538
- return U(), W("div", YZ, [
51539
- K("header", XZ, [t[6] ||= K("strong", null, "自由协作", -1), K("span", ZZ, P(f.value ? `${I(i).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
51671
+ return U(), W("div", eQ, [
51672
+ K("header", tQ, [t[6] ||= K("strong", null, "自由协作", -1), K("span", nQ, P(f.value ? `${I(i).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
51540
51673
  K("section", {
51541
51674
  class: M(["pb-status", `is-${b.value.tone}`]),
51542
51675
  "aria-label": "房间状态"
51543
51676
  }, [
51544
- K("div", QZ, [t[7] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", $Z, P(b.value.title), 1)]),
51545
- b.value.detail ? (U(), W("p", eQ, P(b.value.detail), 1)) : Y("", !0),
51546
- K("div", tQ, [(U(!0), W(H, null, B(x.value, (e) => (U(), W("div", {
51677
+ K("div", rQ, [t[7] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", iQ, P(b.value.title), 1)]),
51678
+ b.value.detail ? (U(), W("p", aQ, P(b.value.detail), 1)) : Y("", !0),
51679
+ K("div", oQ, [(U(!0), W(H, null, B(x.value, (e) => (U(), W("div", {
51547
51680
  key: e.label,
51548
51681
  class: "pb-meter"
51549
- }, [K("div", nQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", rQ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51682
+ }, [K("div", sQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", cQ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51550
51683
  ], 2),
51551
- S.value ? (U(), W("section", iQ, [
51684
+ S.value ? (U(), W("section", lQ, [
51552
51685
  t[8] ||= K("h4", null, "当前任务", -1),
51553
51686
  K("p", { class: M(["pb-focus", { "is-expanded": C.value }]) }, P(S.value), 3),
51554
- S.value.length > wQ ? (U(), W("button", {
51687
+ S.value.length > kQ ? (U(), W("button", {
51555
51688
  key: 0,
51556
51689
  type: "button",
51557
51690
  class: "pb-link",
51558
51691
  onClick: t[0] ||= (e) => C.value = !C.value
51559
51692
  }, P(C.value ? "收起" : "展开"), 1)) : Y("", !0)
51560
51693
  ])) : Y("", !0),
51561
- K("section", aQ, [
51694
+ K("section", uQ, [
51562
51695
  t[10] ||= K("h4", null, "成员", -1),
51563
- K("ul", oQ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", {
51696
+ K("ul", dQ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", {
51564
51697
  key: e.id,
51565
51698
  class: M(["pb-member", { "is-away": e.status === "away" }])
51566
51699
  }, [
@@ -51576,8 +51709,8 @@ var cq = /*#__PURE__*/ jH({
51576
51709
  "alt",
51577
51710
  "class"
51578
51711
  ]),
51579
- K("div", sQ, [
51580
- K("div", cQ, [
51712
+ K("div", fQ, [
51713
+ K("div", pQ, [
51581
51714
  J(P(I(i).display_name(e.name)), 1),
51582
51715
  e.role === "host" ? (U(), G(m, {
51583
51716
  key: 0,
@@ -51586,8 +51719,8 @@ var cq = /*#__PURE__*/ jH({
51586
51719
  })) : Y("", !0),
51587
51720
  K("small", null, P(e.role === "host" ? `主持 · ${l[e.access]}` : l[e.access]), 1)
51588
51721
  ]),
51589
- K("div", lQ, P(y(e)), 1),
51590
- e.session_mode === "borrowed" ? (U(), W("div", uQ, "借用已有会话")) : Y("", !0),
51722
+ K("div", mQ, P(y(e)), 1),
51723
+ e.session_mode === "borrowed" ? (U(), W("div", hQ, "借用已有会话")) : Y("", !0),
51591
51724
  K("div", { class: M(["pb-member-status", `is-${_(e)}`]) }, [t[9] ||= K("span", { class: "pb-dot" }, null, -1), J(P(v(e)), 1)], 2)
51592
51725
  ]),
51593
51726
  q(ae, {
@@ -51610,8 +51743,8 @@ var cq = /*#__PURE__*/ jH({
51610
51743
  key: e.executions.join("-"),
51611
51744
  class: "pb-free-note is-warning"
51612
51745
  }, "可能冲突:" + P(e.members.map((e) => I(i).display_name(e)).join(" 与 ")) + " 的重叠执行观察到 " + P(e.files.join("、")) + " 变化;修改者未确认。", 1))), 128)),
51613
- I(r).free_error ? (U(), W("p", dQ, P(I(r).free_error), 1)) : I(r).free_notice ? (U(), W("p", fQ, P(I(r).free_notice), 1)) : Y("", !0),
51614
- I(r).access?.error ? (U(), W("p", pQ, P(I(r).access.error), 1)) : I(r).access?.notice ? (U(), W("p", mQ, P(I(r).access.notice), 1)) : Y("", !0),
51746
+ I(r).free_error ? (U(), W("p", gQ, P(I(r).free_error), 1)) : I(r).free_notice ? (U(), W("p", _Q, P(I(r).free_notice), 1)) : Y("", !0),
51747
+ I(r).access?.error ? (U(), W("p", vQ, P(I(r).access.error), 1)) : I(r).access?.notice ? (U(), W("p", yQ, P(I(r).access.notice), 1)) : Y("", !0),
51615
51748
  u.value.archived ? Y("", !0) : (U(), W("form", {
51616
51749
  key: 4,
51617
51750
  class: "pb-free-invite",
@@ -51673,15 +51806,15 @@ var cq = /*#__PURE__*/ jH({
51673
51806
  class: "w-full"
51674
51807
  }, null, 8, ["modelValue"])) : Y("", !0)
51675
51808
  ], 32)),
51676
- u.value.archived ? Y("", !0) : (U(), W("p", hQ, P(re.value), 1))
51809
+ u.value.archived ? Y("", !0) : (U(), W("p", bQ, P(re.value), 1))
51677
51810
  ]),
51678
- u.value.linked_rooms?.length ? (U(), W("section", gQ, [t[11] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(u.value.linked_rooms, (e) => (U(), W("button", {
51811
+ u.value.linked_rooms?.length ? (U(), W("section", xQ, [t[11] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(u.value.linked_rooms, (e) => (U(), W("button", {
51679
51812
  key: e.id,
51680
51813
  type: "button",
51681
51814
  class: "pb-link pb-free-linked",
51682
51815
  onClick: (t) => I(a)("room", e.id)
51683
- }, [J(P(e.title), 1), K("small", null, P(I(i).phases[e.phase] || e.phase), 1)], 8, _Q))), 128))])) : Y("", !0),
51684
- u.value.archived ? Y("", !0) : (U(), W("section", vQ, [q(g, {
51816
+ }, [J(P(e.title), 1), K("small", null, P(I(i).phases[e.phase] || e.phase), 1)], 8, SQ))), 128))])) : Y("", !0),
51817
+ u.value.archived ? Y("", !0) : (U(), W("section", CQ, [q(g, {
51685
51818
  icon: "i-lucide-messages-square",
51686
51819
  label: "发起头脑风暴",
51687
51820
  size: "sm",
@@ -51691,54 +51824,54 @@ var cq = /*#__PURE__*/ jH({
51691
51824
  title: "用当前成员新建一场讨论房间,收束后可把结论发回这里",
51692
51825
  onClick: t[5] ||= (e) => n("brainstorm")
51693
51826
  })])),
51694
- w.value.items.length ? (U(), W("section", yQ, [K("div", bQ, [t[12] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(w.value.items.length) + " 次执行 · " + P(T(w.value.total)), 1)]), K("details", xQ, [t[13] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(w.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", SQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(c[e.status] || e.status), 1)]), K("span", CQ, [K("span", null, "用时 " + P(T(e.seconds)), 1)])]))), 128))])])])) : Y("", !0)
51827
+ w.value.items.length ? (U(), W("section", wQ, [K("div", TQ, [t[12] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(w.value.items.length) + " 次执行 · " + P(T(w.value.total)), 1)]), K("details", EQ, [t[13] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(w.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", DQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(c[e.status] || e.status), 1)]), K("span", OQ, [K("span", null, "用时 " + P(T(e.seconds)), 1)])]))), 128))])])])) : Y("", !0)
51695
51828
  ]);
51696
51829
  };
51697
51830
  }
51698
- }, [["__scopeId", "data-v-e7e5af2a"]]), EQ = {
51831
+ }, [["__scopeId", "data-v-e7e5af2a"]]), jQ = {
51699
51832
  id: "channel-sidebar",
51700
51833
  class: "channel-sidebar",
51701
51834
  "aria-label": "房间导航"
51702
- }, DQ = { class: "channel-sidebar-content" }, OQ = { class: "channel-directory-heading channel-tools-heading" }, kQ = ["aria-expanded"], AQ = { class: "channel-sidebar-footer" }, jQ = ["aria-label"], MQ = { class: "channel-self" }, NQ = ["title"], PQ = [
51835
+ }, MQ = { class: "channel-sidebar-content" }, NQ = { class: "channel-directory-heading channel-tools-heading" }, PQ = ["aria-expanded"], FQ = { class: "channel-sidebar-footer" }, IQ = ["aria-label"], LQ = { class: "channel-self" }, RQ = ["title"], zQ = [
51703
51836
  "aria-valuemax",
51704
51837
  "aria-valuenow",
51705
51838
  "aria-valuetext"
51706
- ], FQ = { class: "channel-main" }, IQ = { class: "channel-header" }, LQ = { class: "channel-title-icon" }, RQ = { class: "channel-title" }, zQ = { class: "channel-title-copy" }, BQ = ["title"], VQ = ["title"], HQ = {
51839
+ ], BQ = { class: "channel-main" }, VQ = { class: "channel-header" }, HQ = { class: "channel-title-icon" }, UQ = { class: "channel-title" }, WQ = { class: "channel-title-copy" }, GQ = ["title"], KQ = ["title"], qQ = {
51707
51840
  key: 0,
51708
51841
  class: "channel-header-context"
51709
- }, UQ = { class: "channel-header-actions" }, WQ = {
51842
+ }, JQ = { class: "channel-header-actions" }, YQ = {
51710
51843
  key: 0,
51711
51844
  class: "channel-launch-recovery",
51712
51845
  "aria-label": "未完成的创建或启动请求"
51713
- }, GQ = { role: "status" }, KQ = { class: "button-row" }, qQ = {
51846
+ }, XQ = { role: "status" }, ZQ = { class: "button-row" }, QQ = {
51714
51847
  key: 1,
51715
51848
  class: "channel-tabbar"
51716
- }, JQ = { class: "channel-brief-inner" }, YQ = { class: "channel-brief-heading" }, XQ = ["aria-label", "aria-expanded"], ZQ = {
51849
+ }, $Q = { class: "channel-brief-inner" }, e$ = { class: "channel-brief-heading" }, t$ = ["aria-label", "aria-expanded"], n$ = {
51717
51850
  key: 0,
51718
51851
  class: "channel-brief-preview"
51719
- }, QQ = {
51852
+ }, r$ = {
51720
51853
  id: "channel-brief-content",
51721
51854
  class: "channel-brief-content"
51722
- }, $Q = ["innerHTML"], e$ = { class: "channel-brief-footer" }, t$ = { class: "channel-brief-status" }, n$ = { class: "channel-content" }, r$ = {
51855
+ }, i$ = ["innerHTML"], a$ = { class: "channel-brief-footer" }, o$ = { class: "channel-brief-status" }, s$ = { class: "channel-content" }, c$ = {
51723
51856
  key: 0,
51724
51857
  class: "content-page channel-summary",
51725
51858
  role: "tabpanel",
51726
51859
  "aria-label": "共识"
51727
- }, i$ = { class: "page-heading" }, a$ = {
51860
+ }, l$ = { class: "page-heading" }, u$ = {
51728
51861
  key: 0,
51729
51862
  class: "info-section"
51730
- }, o$ = { class: "button-row" }, s$ = { class: "form-footer" }, c$ = {
51863
+ }, d$ = { class: "button-row" }, f$ = { class: "form-footer" }, p$ = {
51731
51864
  key: 1,
51732
51865
  class: "channel-empty"
51733
- }, l$ = ["aria-valuenow", "aria-valuetext"], u$ = {
51866
+ }, m$ = ["aria-valuenow", "aria-valuetext"], h$ = {
51734
51867
  key: 2,
51735
51868
  id: "channel-member-rail",
51736
51869
  class: "channel-member-rail",
51737
51870
  "aria-label": "当前焦点与讨论进度"
51738
- }, d$ = { class: "channel-rail-board" }, f$ = {
51871
+ }, g$ = { class: "channel-rail-board" }, _$ = {
51739
51872
  key: 2,
51740
51873
  class: "progress-board is-docked"
51741
- }, p$ = { class: "channel-detail-title" }, m$ = { class: "info-section" }, h$ = "ai-codiscuss-channel-layout", g$ = 220, _$ = 440, v$ = 280, y$ = 16, b$ = 180, x$ = 400, S$ = 248, C$ = 16, w$ = 480, T$ = 1200, E$ = 0, D$ = {
51874
+ }, v$ = { class: "channel-detail-title" }, y$ = { class: "info-section" }, b$ = "ai-codiscuss-channel-layout", x$ = 220, S$ = 440, C$ = 280, w$ = 16, T$ = 180, E$ = 400, D$ = 248, O$ = 16, k$ = 480, A$ = 1200, j$ = 0, M$ = {
51742
51875
  __name: "ChannelWorkspace",
51743
51876
  setup(e) {
51744
51877
  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 = [{
@@ -51760,14 +51893,14 @@ var cq = /*#__PURE__*/ jH({
51760
51893
  label: "宽",
51761
51894
  width: 1240
51762
51895
  }
51763
- }, b = Ee(), 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 >= T$), k = Z(() => t.value.tab === "discussion" && !D.value), te = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ne = Z(() => {
51896
+ }, b = Ee(), 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 >= A$), k = Z(() => t.value.tab === "discussion" && !D.value), te = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ne = Z(() => {
51764
51897
  let e = document.createElement("template");
51765
51898
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
51766
- }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), ae = null, A = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(null), se = Z(() => Math.min(x$, Math.max(b$, T.value - w$ - E$))), ce = Z(() => Math.min(w.value, se.value)), le = Z(() => ({
51899
+ }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), ae = null, A = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(null), se = Z(() => Math.min(E$, Math.max(T$, T.value - k$ - j$))), ce = Z(() => Math.min(w.value, se.value)), le = Z(() => ({
51767
51900
  "--channel-reading-width": `${y[x.value].width}px`,
51768
51901
  "--channel-rail-width": `${C.value}px`,
51769
51902
  "--channel-topbar-height": `${ie.value}px`,
51770
- "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${ce.value}px ${E$}px minmax(0, 1fr)`
51903
+ "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${ce.value}px ${j$}px minmax(0, 1fr)`
51771
51904
  })), ue = Object.entries(y).map(([e, t]) => ({
51772
51905
  value: e,
51773
51906
  label: t.label
@@ -51853,12 +51986,12 @@ var cq = /*#__PURE__*/ jH({
51853
51986
  }
51854
51987
  function Ee() {
51855
51988
  try {
51856
- let e = JSON.parse(localStorage.getItem(h$)) || {};
51989
+ let e = JSON.parse(localStorage.getItem(b$)) || {};
51857
51990
  return {
51858
51991
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
51859
51992
  effects: e.effects === "reduced" ? "reduced" : "full",
51860
- rail: Number.isFinite(e.rail) ? Math.min(_$, Math.max(g$, e.rail)) : v$,
51861
- nav: Number.isFinite(e.nav) ? Math.min(x$, Math.max(b$, e.nav)) : De(),
51993
+ rail: Number.isFinite(e.rail) ? Math.min(S$, Math.max(x$, e.rail)) : C$,
51994
+ nav: Number.isFinite(e.nav) ? Math.min(E$, Math.max(T$, e.nav)) : De(),
51862
51995
  collapsed: e.collapsed === !0,
51863
51996
  brief_collapsed: e.brief_collapsed === !0,
51864
51997
  rail_collapsed: e.rail_collapsed === !0
@@ -51867,7 +52000,7 @@ var cq = /*#__PURE__*/ jH({
51867
52000
  return {
51868
52001
  reading: "default",
51869
52002
  effects: "full",
51870
- rail: v$,
52003
+ rail: C$,
51871
52004
  nav: De(),
51872
52005
  collapsed: !1,
51873
52006
  brief_collapsed: !1,
@@ -51876,11 +52009,11 @@ var cq = /*#__PURE__*/ jH({
51876
52009
  }
51877
52010
  }
51878
52011
  function De() {
51879
- return typeof window > "u" ? S$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : S$;
52012
+ return typeof window > "u" ? D$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : D$;
51880
52013
  }
51881
52014
  function Oe() {
51882
52015
  try {
51883
- localStorage.setItem(h$, JSON.stringify({
52016
+ localStorage.setItem(b$, JSON.stringify({
51884
52017
  reading: x.value,
51885
52018
  effects: S.value,
51886
52019
  rail: C.value,
@@ -51911,19 +52044,19 @@ var cq = /*#__PURE__*/ jH({
51911
52044
  }, e.currentTarget.setPointerCapture(e.pointerId));
51912
52045
  }
51913
52046
  function Pe(e) {
51914
- A.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(_$, Math.max(g$, A.value.width + A.value.x - e.clientX))));
52047
+ A.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(S$, Math.max(x$, A.value.width + A.value.x - e.clientX))));
51915
52048
  }
51916
52049
  function Fe(e) {
51917
52050
  A.value?.pointer === e.pointerId && (A.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Oe());
51918
52051
  }
51919
52052
  function Ie(e) {
51920
52053
  let t = {
51921
- ArrowLeft: C.value + y$,
51922
- ArrowRight: C.value - y$,
51923
- Home: g$,
51924
- End: _$
52054
+ ArrowLeft: C.value + w$,
52055
+ ArrowRight: C.value - w$,
52056
+ Home: x$,
52057
+ End: S$
51925
52058
  };
51926
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(_$, Math.max(g$, t[e.key])), Oe());
52059
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(S$, Math.max(x$, t[e.key])), Oe());
51927
52060
  }
51928
52061
  function Le(e) {
51929
52062
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), oe.value = {
@@ -51933,19 +52066,19 @@ var cq = /*#__PURE__*/ jH({
51933
52066
  }, e.currentTarget.setPointerCapture(e.pointerId));
51934
52067
  }
51935
52068
  function Re(e) {
51936
- oe.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(se.value, Math.max(b$, oe.value.width + e.clientX - oe.value.x))));
52069
+ oe.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(se.value, Math.max(T$, oe.value.width + e.clientX - oe.value.x))));
51937
52070
  }
51938
52071
  function ze(e) {
51939
52072
  oe.value?.pointer === e.pointerId && (oe.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Oe());
51940
52073
  }
51941
52074
  function Be(e) {
51942
52075
  let t = {
51943
- ArrowLeft: ce.value - C$,
51944
- ArrowRight: ce.value + C$,
51945
- Home: b$,
52076
+ ArrowLeft: ce.value - O$,
52077
+ ArrowRight: ce.value + O$,
52078
+ Home: T$,
51946
52079
  End: se.value
51947
52080
  };
51948
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(se.value, Math.max(b$, t[e.key])), Oe());
52081
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(se.value, Math.max(T$, t[e.key])), Oe());
51949
52082
  }
51950
52083
  return (e, r) => {
51951
52084
  let y = sA, b = lH, w = pA, T = MA, D = $V, ie = WV, ae = YV, fe = KV, Ee = HV, De = zV, Oe = NV, Ae = AV;
@@ -51957,10 +52090,10 @@ var cq = /*#__PURE__*/ jH({
51957
52090
  }]),
51958
52091
  style: j(le.value)
51959
52092
  }, [
51960
- K("aside", EQ, [
52093
+ K("aside", jQ, [
51961
52094
  r[25] ||= 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),
51962
- K("div", DQ, [
51963
- q(jX, {
52095
+ K("div", MQ, [
52096
+ q(MX, {
51964
52097
  onSelect: be,
51965
52098
  onManage: ve,
51966
52099
  onCreate: Se,
@@ -51969,12 +52102,12 @@ var cq = /*#__PURE__*/ jH({
51969
52102
  onDeleteFolder: Te,
51970
52103
  onArchives: ye
51971
52104
  }),
51972
- K("div", OQ, [K("button", {
52105
+ K("div", NQ, [K("button", {
51973
52106
  type: "button",
51974
52107
  class: "channel-section-toggle",
51975
52108
  "aria-expanded": f.value,
51976
52109
  onClick: r[0] ||= (e) => f.value = !f.value
51977
- }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, kQ)]),
52110
+ }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, PQ)]),
51978
52111
  f.value ? (U(), G(b, {
51979
52112
  key: 0,
51980
52113
  items: ge.value,
@@ -51990,7 +52123,7 @@ var cq = /*#__PURE__*/ jH({
51990
52123
  }
51991
52124
  }, null, 8, ["items"])) : Y("", !0)
51992
52125
  ]),
51993
- K("footer", AQ, [K("button", {
52126
+ K("footer", FQ, [K("button", {
51994
52127
  type: "button",
51995
52128
  class: "channel-self-button",
51996
52129
  "aria-label": `账号与设置:${I(n).display_name(I(_))}${N.value ? "," + N.value : ""}`,
@@ -52006,10 +52139,10 @@ var cq = /*#__PURE__*/ jH({
52006
52139
  "text",
52007
52140
  "alt",
52008
52141
  "class"
52009
- ]), K("span", MQ, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: M(["channel-connection", { "is-action": N.value }]) }, [K("span", {
52142
+ ]), K("span", LQ, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: M(["channel-connection", { "is-action": N.value }]) }, [K("span", {
52010
52143
  class: M({ connected: I(t).connected }),
52011
52144
  title: I(t).connected ? "网站已连接" : "网站未连接"
52012
- }, null, 10, NQ), J(P(N.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, jQ), q(D, { text: "设置" }, {
52145
+ }, null, 10, RQ), J(P(N.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, IQ), q(D, { text: "设置" }, {
52013
52146
  default: L(() => [q(T, {
52014
52147
  icon: "i-lucide-settings-2",
52015
52148
  color: "neutral",
@@ -52030,7 +52163,7 @@ var cq = /*#__PURE__*/ jH({
52030
52163
  "aria-label": "调整房间栏宽度",
52031
52164
  "aria-orientation": "vertical",
52032
52165
  "aria-controls": "channel-sidebar",
52033
- "aria-valuemin": b$,
52166
+ "aria-valuemin": T$,
52034
52167
  "aria-valuemax": se.value,
52035
52168
  "aria-valuenow": ce.value,
52036
52169
  "aria-valuetext": `${ce.value} 像素`,
@@ -52041,13 +52174,13 @@ var cq = /*#__PURE__*/ jH({
52041
52174
  onPointercancel: ze,
52042
52175
  onLostpointercapture: ze,
52043
52176
  onKeydown: Be
52044
- }, null, 40, PQ)),
52045
- K("main", FQ, [K("div", {
52177
+ }, null, 40, zQ)),
52178
+ K("main", BQ, [K("div", {
52046
52179
  ref_key: "topbar",
52047
52180
  ref: re,
52048
52181
  class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
52049
52182
  }, [
52050
- K("header", IQ, [
52183
+ K("header", VQ, [
52051
52184
  q(D, { text: ee.value ? "展开房间栏" : "收起房间栏" }, {
52052
52185
  default: L(() => [q(T, {
52053
52186
  icon: "i-lucide-panel-left",
@@ -52072,13 +52205,13 @@ var cq = /*#__PURE__*/ jH({
52072
52205
  "aria-expanded": d.value,
52073
52206
  onClick: r[4] ||= (e) => d.value = !0
52074
52207
  }, null, 8, ["aria-expanded"]),
52075
- K("span", LQ, [q(y, { name: "i-lucide-hash" })]),
52076
- K("div", RQ, [K("div", zQ, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, BQ), o.value?.floor && !pe.value ? (U(), W("div", {
52208
+ K("span", HQ, [q(y, { name: "i-lucide-hash" })]),
52209
+ K("div", UQ, [K("div", WQ, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, GQ), o.value?.floor && !pe.value ? (U(), W("div", {
52077
52210
  key: 0,
52078
52211
  class: M(["channel-floor-status", { "is-held": o.value.floor.holder }]),
52079
52212
  role: "status",
52080
52213
  title: `发言权:${I(n).floor_status(o.value)}`
52081
- }, [q(y, { name: "i-lucide-mic" }), K("span", null, "发言权:" + P(I(n).floor_status(o.value)), 1)], 10, VQ)) : Y("", !0)]), o.value?.archived ? (U(), G(ie, {
52214
+ }, [q(y, { name: "i-lucide-mic" }), K("span", null, "发言权:" + P(I(n).floor_status(o.value)), 1)], 10, KQ)) : Y("", !0)]), o.value?.archived ? (U(), G(ie, {
52082
52215
  key: 0,
52083
52216
  color: "neutral",
52084
52217
  variant: "subtle",
@@ -52087,12 +52220,12 @@ var cq = /*#__PURE__*/ jH({
52087
52220
  default: L(() => [...r[26] ||= [J("已存档", -1)]]),
52088
52221
  _: 1
52089
52222
  })) : Y("", !0)]),
52090
- o.value ? (U(), W("span", HQ, [
52223
+ o.value ? (U(), W("span", qQ, [
52091
52224
  J(P(me.value.find((e) => e.value === I(t).tab)?.label), 1),
52092
52225
  r[27] ||= K("span", null, "·", -1),
52093
52226
  J(P(o.value.message_count) + " 条记录", 1)
52094
52227
  ])) : Y("", !0),
52095
- K("div", UQ, [
52228
+ K("div", JQ, [
52096
52229
  I(t).tab === "discussion" ? (U(), W("form", {
52097
52230
  key: 0,
52098
52231
  class: "channel-search",
@@ -52150,7 +52283,7 @@ var cq = /*#__PURE__*/ jH({
52150
52283
  ])]),
52151
52284
  _: 1
52152
52285
  })) : Y("", !0),
52153
- o.value && !(k.value && O.value) ? (U(), G(JZ, { key: 2 })) : Y("", !0)
52286
+ o.value && !(k.value && O.value) ? (U(), G($Z, { key: 2 })) : Y("", !0)
52154
52287
  ]),
52155
52288
  q(D, { text: te.value }, {
52156
52289
  default: L(() => [q(T, {
@@ -52171,12 +52304,12 @@ var cq = /*#__PURE__*/ jH({
52171
52304
  _: 1
52172
52305
  }, 8, ["text"])
52173
52306
  ]),
52174
- I(t).launch.recoveries.length ? (U(), W("section", WQ, [
52307
+ I(t).launch.recoveries.length ? (U(), W("section", YQ, [
52175
52308
  r[28] ||= K("h2", null, "继续未完成的请求", -1),
52176
52309
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
52177
52310
  K("strong", null, P(e.title), 1),
52178
- K("p", GQ, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52179
- K("div", KQ, [
52311
+ K("p", XQ, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52312
+ K("div", ZQ, [
52180
52313
  q(T, {
52181
52314
  label: e.direct ? "继续创建房间" : "继续本次启动",
52182
52315
  size: "sm",
@@ -52209,7 +52342,7 @@ var cq = /*#__PURE__*/ jH({
52209
52342
  ]))), 128)),
52210
52343
  r[29] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
52211
52344
  ])) : Y("", !0),
52212
- o.value ? (U(), W("div", qQ, [q(fe, {
52345
+ o.value ? (U(), W("div", QQ, [q(fe, {
52213
52346
  modelValue: de.value,
52214
52347
  "onUpdate:modelValue": r[9] ||= (e) => de.value = e,
52215
52348
  items: me.value,
@@ -52224,7 +52357,7 @@ var cq = /*#__PURE__*/ jH({
52224
52357
  key: 2,
52225
52358
  class: M(["channel-host-brief", { "is-collapsed": E.value }]),
52226
52359
  "aria-label": "主持简报"
52227
- }, [K("div", JQ, [K("div", YQ, [K("button", {
52360
+ }, [K("div", $Q, [K("div", e$, [K("button", {
52228
52361
  type: "button",
52229
52362
  class: "channel-brief-toggle",
52230
52363
  "aria-label": E.value ? "展开主持简报" : "收起主持简报",
@@ -52234,8 +52367,8 @@ var cq = /*#__PURE__*/ jH({
52234
52367
  }, [
52235
52368
  q(y, { name: E.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
52236
52369
  K("strong", null, "主持简报" + P(E.value ? ":" : ""), 1),
52237
- E.value ? (U(), W("span", ZQ, P(ne.value), 1)) : Y("", !0)
52238
- ], 8, XQ), E.value ? Y("", !0) : (U(), G(T, {
52370
+ E.value ? (U(), W("span", n$, P(ne.value), 1)) : Y("", !0)
52371
+ ], 8, t$), E.value ? Y("", !0) : (U(), G(T, {
52239
52372
  key: 0,
52240
52373
  label: "更新简报",
52241
52374
  color: "neutral",
@@ -52243,30 +52376,30 @@ var cq = /*#__PURE__*/ jH({
52243
52376
  size: "xs",
52244
52377
  class: "channel-brief-update",
52245
52378
  onClick: r[10] ||= (e) => I(i)("tab", "context")
52246
- }))]), vr(K("div", QQ, [K("div", {
52379
+ }))]), vr(K("div", r$, [K("div", {
52247
52380
  class: "channel-brief-text markdown-body",
52248
52381
  innerHTML: o.value.rendered_brief
52249
- }, null, 8, $Q), K("div", e$, [K("span", t$, 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)
52382
+ }, null, 8, i$), K("div", a$, [K("span", o$, 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)
52250
52383
  ], 2), o.value ? (U(), W("div", {
52251
52384
  key: 0,
52252
52385
  class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
52253
- }, [K("div", n$, [
52386
+ }, [K("div", s$, [
52254
52387
  vr(q(lG, {
52255
52388
  onDetail: xe,
52256
52389
  onEdit: r[11] ||= (e) => s.value = "edit"
52257
52390
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
52258
- I(t).tab === "context" ? (U(), W("section", r$, [
52259
- K("div", i$, [r[30] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ie, {
52391
+ I(t).tab === "context" ? (U(), W("section", c$, [
52392
+ K("div", l$, [r[30] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ie, {
52260
52393
  color: "neutral",
52261
52394
  variant: "outline"
52262
52395
  }, {
52263
52396
  default: L(() => [J("截止 #" + P(o.value.state_until), 1)]),
52264
52397
  _: 1
52265
52398
  })]),
52266
- Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", a$, [
52399
+ Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", u$, [
52267
52400
  r[31] ||= K("h3", null, "最新运行回执", -1),
52268
52401
  r[32] ||= K("p", { class: "fine-print" }, "以下回执独立于摘要更新;晚于摘要的回执可能尚未整理,实际运行结果请查看原文。", -1),
52269
- K("div", o$, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
52402
+ K("div", d$, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
52270
52403
  key: e.id,
52271
52404
  label: `${I(n).display_name(e.author)} #${e.id} · ${new Date(e.created_at).toLocaleString("zh-CN")}${e.id > o.value.state_until ? " · 晚于摘要" : ""}`,
52272
52405
  variant: "link",
@@ -52309,7 +52442,7 @@ var cq = /*#__PURE__*/ jH({
52309
52442
  }, null, 8, ["modelValue"])]),
52310
52443
  _: 1
52311
52444
  }),
52312
- K("div", s$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52445
+ K("div", f$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52313
52446
  type: "submit",
52314
52447
  color: "neutral",
52315
52448
  icon: "i-lucide-check",
@@ -52324,7 +52457,7 @@ var cq = /*#__PURE__*/ jH({
52324
52457
  onOpen: r[15] ||= (e) => s.value = e,
52325
52458
  onDetail: xe
52326
52459
  })) : Y("", !0)
52327
- ])], 2)) : (U(), W("div", c$, [
52460
+ ])], 2)) : (U(), W("div", p$, [
52328
52461
  q(y, { name: "i-lucide-hash" }),
52329
52462
  r[33] ||= K("h2", null, "新建一个讨论房间", -1),
52330
52463
  r[34] ||= K("p", null, "每个房间围绕一个议题,保留所有人的观点。", -1),
@@ -52343,8 +52476,8 @@ var cq = /*#__PURE__*/ jH({
52343
52476
  "aria-label": "调整右侧栏宽度",
52344
52477
  "aria-orientation": "vertical",
52345
52478
  "aria-controls": "channel-member-rail",
52346
- "aria-valuemin": g$,
52347
- "aria-valuemax": _$,
52479
+ "aria-valuemin": x$,
52480
+ "aria-valuemax": S$,
52348
52481
  "aria-valuenow": C.value,
52349
52482
  "aria-valuetext": `${C.value} 像素`,
52350
52483
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -52354,14 +52487,14 @@ var cq = /*#__PURE__*/ jH({
52354
52487
  onPointercancel: Fe,
52355
52488
  onLostpointercapture: Fe,
52356
52489
  onKeydown: Ie
52357
- }, null, 40, l$)) : Y("", !0),
52358
- k.value ? (U(), W("aside", u$, [K("section", d$, [o.value && pe.value ? (U(), G(TQ, {
52490
+ }, null, 40, m$)) : Y("", !0),
52491
+ k.value ? (U(), W("aside", h$, [K("section", g$, [o.value && pe.value ? (U(), G(AQ, {
52359
52492
  key: 0,
52360
52493
  onBrainstorm: he
52361
- })) : o.value ? (U(), G(UZ, {
52494
+ })) : o.value ? (U(), G(JZ, {
52362
52495
  key: 1,
52363
52496
  docked: ""
52364
- })) : (U(), W("div", f$, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52497
+ })) : (U(), W("div", _$, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52365
52498
  q(Oe, {
52366
52499
  open: d.value,
52367
52500
  "onUpdate:open": r[18] ||= (e) => d.value = e,
@@ -52373,7 +52506,7 @@ var cq = /*#__PURE__*/ jH({
52373
52506
  body: "channel-drawer-body"
52374
52507
  }
52375
52508
  }, {
52376
- body: L(() => [q(jX, {
52509
+ body: L(() => [q(MX, {
52377
52510
  onSelect: be,
52378
52511
  onManage: ve,
52379
52512
  onCreate: Se,
@@ -52404,7 +52537,7 @@ var cq = /*#__PURE__*/ jH({
52404
52537
  }
52405
52538
  }, {
52406
52539
  body: L(() => [o.value ? (U(), W(H, { key: 0 }, [
52407
- K("div", p$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52540
+ K("div", v$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52408
52541
  (U(), W(H, null, B([
52409
52542
  {
52410
52543
  key: "goal",
@@ -52431,7 +52564,7 @@ var cq = /*#__PURE__*/ jH({
52431
52564
  class: "info-section"
52432
52565
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
52433
52566
  q(Ae),
52434
- K("section", m$, [r[36] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(_e.value, (e) => (U(), W("div", {
52567
+ K("section", y$, [r[36] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(_e.value, (e) => (U(), W("div", {
52435
52568
  key: e.name,
52436
52569
  class: "expert-row"
52437
52570
  }, [
@@ -52464,7 +52597,7 @@ var cq = /*#__PURE__*/ jH({
52464
52597
  ], 64)) : Y("", !0)]),
52465
52598
  _: 1
52466
52599
  }, 8, ["open"]),
52467
- q(oX, {
52600
+ q(sX, {
52468
52601
  modelValue: s.value,
52469
52602
  "onUpdate:modelValue": r[21] ||= (e) => s.value = e,
52470
52603
  "reading-width": x.value,
@@ -52488,7 +52621,7 @@ var cq = /*#__PURE__*/ jH({
52488
52621
  ], 6);
52489
52622
  };
52490
52623
  }
52491
- }, O$ = {
52624
+ }, N$ = {
52492
52625
  __name: "App",
52493
52626
  setup(e) {
52494
52627
  return br("discussion", OV()), (e, t) => {
@@ -52499,7 +52632,7 @@ var cq = /*#__PURE__*/ jH({
52499
52632
  toaster: null
52500
52633
  }, {
52501
52634
  default: L(() => [q(I(Qz), { "reduced-motion": "user" }, {
52502
- default: L(() => [q(D$)]),
52635
+ default: L(() => [q(M$)]),
52503
52636
  _: 1
52504
52637
  })]),
52505
52638
  _: 1
@@ -52509,8 +52642,8 @@ var cq = /*#__PURE__*/ jH({
52509
52642
  };
52510
52643
  //#endregion
52511
52644
  //#region frontend/main.js
52512
- function k$() {
52513
- bu(O$).use(ph).mount("#modern-root");
52645
+ function P$() {
52646
+ bu(N$).use(ph).mount("#modern-root");
52514
52647
  }
52515
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", k$) : k$();
52648
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", P$) : P$();
52516
52649
  //#endregion