ai_co_discuss 0.2.44 → 0.2.46

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
@@ -41734,59 +41734,59 @@ var _H = {
41734
41734
  }, zU = { key: 0 }, BU = { key: 1 }, VU = ["aria-label"], HU = { key: 0 }, UU = { class: "channel-message-actions" }, WU = { class: "channel-message-toolbar" }, GU = { key: 0 }, KU = { key: 1 }, qU = { key: 0 }, JU = {
41735
41735
  key: 1,
41736
41736
  class: "channel-message-group"
41737
- }, YU = ["id", "aria-label"], XU = { class: "channel-host-work-heading" }, ZU = { class: "channel-host-work-elapsed" }, QU = ["aria-label"], $U = { class: "channel-message-byline" }, eW = { class: "channel-message-meta" }, tW = { class: "channel-message-author" }, nW = {
41737
+ }, YU = ["aria-label"], XU = { class: "channel-message-byline" }, ZU = { class: "channel-message-meta" }, QU = { class: "channel-message-author" }, $U = {
41738
41738
  key: 0,
41739
41739
  class: "channel-message-round"
41740
- }, rW = { class: "channel-message-provenance channel-message-elapsed" }, iW = ["aria-label"], aW = { key: 0 }, oW = {
41740
+ }, eW = { class: "channel-message-provenance channel-message-elapsed" }, tW = ["aria-label"], nW = { key: 0 }, rW = {
41741
41741
  key: 2,
41742
41742
  class: "channel-empty"
41743
- }, sW = {
41743
+ }, iW = {
41744
41744
  key: 2,
41745
41745
  class: "channel-latest-dock"
41746
- }, cW = { class: "channel-composer-dock" }, lW = [
41746
+ }, aW = { class: "channel-composer-dock" }, oW = [
41747
41747
  "id",
41748
41748
  "aria-selected",
41749
41749
  "onClick",
41750
41750
  "onPointermove"
41751
- ], uW = {
41751
+ ], sW = {
41752
41752
  key: 0,
41753
41753
  class: "channel-mention-empty"
41754
- }, dW = {
41754
+ }, cW = {
41755
41755
  key: 0,
41756
41756
  class: "attachment-drafts"
41757
- }, fW = [
41757
+ }, lW = [
41758
41758
  "src",
41759
41759
  "alt",
41760
41760
  "title"
41761
- ], pW = ["innerHTML"], mW = { class: "attachment-name" }, hW = ["title"], gW = [
41761
+ ], uW = ["innerHTML"], dW = { class: "attachment-name" }, fW = ["title"], pW = [
41762
41762
  "aria-label",
41763
41763
  "disabled",
41764
41764
  "onClick"
41765
- ], _W = ["role"], vW = {
41765
+ ], mW = ["role"], hW = {
41766
41766
  key: 2,
41767
41767
  class: "channel-reply-draft channel-queue-hint"
41768
- }, yW = {
41768
+ }, gW = {
41769
41769
  key: 3,
41770
41770
  class: "channel-reply-draft channel-queue-hint"
41771
- }, bW = {
41771
+ }, _W = {
41772
41772
  key: 4,
41773
41773
  class: "channel-reply-draft"
41774
- }, xW = {
41774
+ }, vW = {
41775
41775
  key: 5,
41776
41776
  class: "channel-answer-editor"
41777
- }, SW = ["innerHTML"], CW = {
41777
+ }, yW = ["innerHTML"], bW = {
41778
41778
  key: 0,
41779
41779
  class: "channel-free-recipients",
41780
41780
  role: "group",
41781
41781
  "aria-label": "代发在线成员的回答"
41782
- }, wW = ["aria-pressed", "onClick"], TW = {
41782
+ }, xW = ["aria-pressed", "onClick"], SW = {
41783
41783
  key: 1,
41784
41784
  class: "channel-composer-identity"
41785
- }, EW = { class: "channel-composer-note" }, DW = { key: 0 }, OW = { key: 1 }, kW = { class: "channel-draft-length" }, AW = 240, jW = 6, MW = .9, NW = 160, PW = 100, FW = 4, IW = 3, LW = 320, RW = 34, zW = 12, BW = 16, VW = 14, HW = 8, UW = 28, WW = 18, GW = 1, KW = 1.5, qW = 3, JW = 6, YW = .62, XW = .72, ZW = .88, QW = .16, $W = 12, eG = 450, tG = 8, nG = 70, rG = 20, iG = 1, aG = 18.566573373612275, oG = 78.16726685662772 / 8, sG = 1e3, cG = 2e3, lG = /*#__PURE__*/ jH({
41785
+ }, CW = { class: "channel-composer-note" }, wW = { key: 0 }, TW = { key: 1 }, EW = { class: "channel-draft-length" }, DW = 240, OW = 6, kW = .9, AW = 160, jW = 100, MW = 4, NW = 3, PW = 320, FW = 34, IW = 12, LW = 16, RW = 14, zW = 8, BW = 28, VW = 18, HW = 1, UW = 1.5, WW = 3, GW = 6, KW = .62, qW = .72, JW = .88, YW = .16, XW = 12, ZW = 450, QW = 8, $W = 70, eG = 20, tG = 1, nG = 18.566573373612275, rG = 78.16726685662772 / 8, iG = 1e3, aG = 2e3, oG = /*#__PURE__*/ jH({
41786
41786
  __name: "ChannelDiscussion",
41787
41787
  emits: ["detail", "edit"],
41788
41788
  setup(e, { emit: t }) {
41789
- let n = t, r = /* @__PURE__ */ F(!1), i = /* @__PURE__ */ F(null), a = /* @__PURE__ */ F(!1), { view: o, bridge: s, field: c, act: l, pending: u } = xr("discussion"), d = c("message-input"), f = Z(() => [...d.value].length), p = Z(() => f.value >= s.max_message_length * MW), m = c("author-select"), h = c("message-kind"), g = c("message-summary"), _ = c("message-summary-source"), v = Z(() => ["opinion", "forward"].includes(h.value) && m.value !== "用户"), y = [{
41789
+ let n = t, r = /* @__PURE__ */ F(!1), i = /* @__PURE__ */ F(null), a = /* @__PURE__ */ F(!1), { view: o, bridge: s, field: c, act: l, pending: u } = xr("discussion"), d = c("message-input"), f = Z(() => [...d.value].length), p = Z(() => f.value >= s.max_message_length * kW), m = c("author-select"), h = c("message-kind"), g = c("message-summary"), _ = c("message-summary-source"), v = Z(() => ["opinion", "forward"].includes(h.value) && m.value !== "用户"), y = [{
41790
41790
  value: "author",
41791
41791
  label: "原作者摘要"
41792
41792
  }, {
@@ -41822,13 +41822,13 @@ var _H = {
41822
41822
  damping: 44.729801589453814
41823
41823
  }, ue = null, de = !1, fe = TV(0, le), pe = TV(0, le), me = TV(0, le), he = CV(me, [0, 1], [.96, 1]), ge = CV(me, [0, 1], [-8, 0]), N = CV(me, [0, 1], [0, 1]), _e = Z(() => o.value.messages.find((e) => e.id === te.value)), ve = Z(() => Lt.value.find((e) => e.messages.some((e) => e.id === te.value))), ye = Z(() => ve.value?.label), be = Z(() => ie.value ? Vt.value.findIndex((e) => e.key === ne.value) : -1), xe = /* @__PURE__ */ F(null), Se = /* @__PURE__ */ F(!0), Ce = Z(() => o.value.room);
41824
41824
  async function we() {
41825
- await Qn(), a.value = (i.value?.scrollHeight || 0) > AW;
41825
+ await Qn(), a.value = (i.value?.scrollHeight || 0) > DW;
41826
41826
  }
41827
41827
  R(ee, we, { immediate: !0 }), R(() => o.value.tab, we);
41828
41828
  let Te = /* @__PURE__ */ F(null);
41829
41829
  R([Te, ce], ([e, t], n, r) => {
41830
41830
  if (!e || t) return;
41831
- let i = iG / aG, a = oG / aG, o = 0, s = 0, c = performance.now(), l = 0;
41831
+ let i = tG / nG, a = rG / nG, o = 0, s = 0, c = performance.now(), l = 0;
41832
41832
  e.classList.add("is-glowing");
41833
41833
  function u(t) {
41834
41834
  let n = (t - c) / 1e3, r = Math.exp(-n / i);
@@ -41984,7 +41984,7 @@ var _H = {
41984
41984
  let $e = Z(() => {
41985
41985
  let e = /* @__PURE__ */ new Map();
41986
41986
  if (je.value) return e;
41987
- for (let t of Ce.value.scheduler_decisions || []) e.set(t.after_message_id, [...e.get(t.after_message_id) || [], {
41987
+ for (let t of Ce.value.scheduler_decisions || []) (t.confidence !== null || t.applied || t.detail?.length) && e.set(t.after_message_id, [...e.get(t.after_message_id) || [], {
41988
41988
  ...t,
41989
41989
  title: `${He[t.provider] || t.provider}${t.confidence === null ? "" : `,置信度 ${Number(t.confidence).toFixed(2)}`}`
41990
41990
  }]);
@@ -42012,8 +42012,8 @@ var _H = {
42012
42012
  R([() => Ke.value?.id, () => Ke.value?.seconds], ([e, t], n, r) => {
42013
42013
  if (it.value = t ?? null, it.value === null) return;
42014
42014
  let i = performance.now(), a = setInterval(() => {
42015
- it.value = t + Math.floor((performance.now() - i) / sG);
42016
- }, sG);
42015
+ it.value = t + Math.floor((performance.now() - i) / iG);
42016
+ }, iG);
42017
42017
  r(() => clearInterval(a));
42018
42018
  }, { immediate: !0 });
42019
42019
  function at(e) {
@@ -42144,12 +42144,12 @@ var _H = {
42144
42144
  for (let t of e.querySelectorAll("pre code, tbody")) {
42145
42145
  let n = e.ownerDocument.createRange();
42146
42146
  if (t.tagName === "TBODY") {
42147
- if (t.children.length <= IW) continue;
42147
+ if (t.children.length <= NW) continue;
42148
42148
  n.setStartAfter(t.children[2]);
42149
42149
  } else {
42150
42150
  let e = t.textContent.trimEnd().split("\n");
42151
- if (e.length <= FW) continue;
42152
- n.setStart(t.firstChild, e.slice(0, FW).join("\n").length);
42151
+ if (e.length <= MW) continue;
42152
+ n.setStart(t.firstChild, e.slice(0, MW).join("\n").length);
42153
42153
  }
42154
42154
  return n.setEnd(e, e.childNodes.length), n.deleteContents(), !0;
42155
42155
  }
@@ -42166,11 +42166,11 @@ var _H = {
42166
42166
  let r = Mt(n.content), i = document.createTreeWalker(n.content, NodeFilter.SHOW_TEXT, { acceptNode: (e) => e.parentElement?.closest(".katex-mathml") ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT }), a = [];
42167
42167
  for (; i.nextNode();) a.push(i.currentNode);
42168
42168
  let o = [...a.map((e) => e.textContent).join("").trimEnd()];
42169
- if (o.length <= NW) return {
42169
+ if (o.length <= AW) return {
42170
42170
  truncated: r,
42171
42171
  html: n.innerHTML
42172
42172
  };
42173
- let s = o.slice(0, NW).join(""), c = [...s.matchAll(/[。!?;]\s*|[.!?;](?:\s|$)|\n/gu)].at(-1), l = c ? c.index + c[0].length : 0, u = [...s.slice(0, l)].length >= PW, d = u ? l : s.length;
42173
+ let s = o.slice(0, AW).join(""), c = [...s.matchAll(/[。!?;]\s*|[.!?;](?:\s|$)|\n/gu)].at(-1), l = c ? c.index + c[0].length : 0, u = [...s.slice(0, l)].length >= jW, d = u ? l : s.length;
42174
42174
  for (let e of a) {
42175
42175
  if (d > e.textContent.length) {
42176
42176
  d -= e.textContent.length;
@@ -42252,14 +42252,14 @@ var _H = {
42252
42252
  function Ut() {
42253
42253
  let e = x.value;
42254
42254
  if (!e || !e.clientHeight) return;
42255
- Se.value = e.scrollHeight - e.scrollTop - e.clientHeight < nG;
42255
+ Se.value = e.scrollHeight - e.scrollTop - e.clientHeight < $W;
42256
42256
  let t = e.getBoundingClientRect(), n = Ht(e), r = [...e.querySelectorAll("[data-message-id]")], i = r.find((e) => Number(e.dataset.messageId) === k.value);
42257
42257
  if (i && i.getBoundingClientRect().bottom > n && i.getBoundingClientRect().top < t.bottom) {
42258
42258
  O.value = k.value;
42259
42259
  return;
42260
42260
  }
42261
42261
  k.value = null;
42262
- let a = r.find((e) => e.getBoundingClientRect().bottom > n + rG);
42262
+ let a = r.find((e) => e.getBoundingClientRect().bottom > n + eG);
42263
42263
  O.value = a ? Number(a.dataset.messageId) : null;
42264
42264
  }
42265
42265
  async function Wt() {
@@ -42280,11 +42280,11 @@ var _H = {
42280
42280
  }), R(() => o.value.room?.id, () => S.value.clear());
42281
42281
  async function Gt(e, t) {
42282
42282
  let n = t.currentTarget.closest("[data-message-id]"), r = S.value.has(e.id), i = x.value.scrollTop;
42283
- Se.value = !1, r ? S.value.delete(e.id) : S.value.add(e.id), un(), await Qn(), r || (x.value.scrollTop = i), r && n.getBoundingClientRect().top < Ht(x.value) && (x.value.scrollTop += n.getBoundingClientRect().top - Ht(x.value) - rG), Ut();
42283
+ Se.value = !1, r ? S.value.delete(e.id) : S.value.add(e.id), un(), await Qn(), r || (x.value.scrollTop = i), r && n.getBoundingClientRect().top < Ht(x.value) && (x.value.scrollTop += n.getBoundingClientRect().top - Ht(x.value) - eG), Ut();
42284
42284
  }
42285
42285
  function Kt(e) {
42286
42286
  let t = x.value, n = t?.querySelector(`[data-message-id="${e}"]`);
42287
- n && (cn(), k.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - Ht(t) - rG, n.focus({ preventScroll: !0 }), Ut());
42287
+ n && (cn(), k.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - Ht(t) - eG, n.focus({ preventScroll: !0 }), Ut());
42288
42288
  }
42289
42289
  function qt(e) {
42290
42290
  (e.type !== "keydown" || [
@@ -42313,7 +42313,7 @@ var _H = {
42313
42313
  let t = E.value;
42314
42314
  if (!t?.clientHeight || !e) return;
42315
42315
  let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
42316
- r.top < n.top + $W ? t.scrollTop += r.top - n.top - $W : r.bottom > n.bottom - $W && (t.scrollTop += r.bottom - n.bottom + $W);
42316
+ r.top < n.top + XW ? t.scrollTop += r.top - n.top - XW : r.bottom > n.bottom - XW && (t.scrollTop += r.bottom - n.bottom + XW);
42317
42317
  }
42318
42318
  async function Xt() {
42319
42319
  await Qn(), Yt(E.value?.querySelector(`[data-jump-id="${O.value}"]`));
@@ -42333,7 +42333,7 @@ var _H = {
42333
42333
  };
42334
42334
  ue = n, n.timer = setTimeout(() => {
42335
42335
  ue === n && (de = !0, sn(e, { currentTarget: n.target }));
42336
- }, eG);
42336
+ }, ZW);
42337
42337
  }
42338
42338
  function $t() {
42339
42339
  ue && clearTimeout(ue.timer), ue = null;
@@ -42342,7 +42342,7 @@ var _H = {
42342
42342
  ue?.pointer === e.pointerId && (e.type === "pointercancel" && (de = !0), cn());
42343
42343
  }
42344
42344
  function tn(e, t) {
42345
- ["touch", "pen"].includes(t.pointerType) ? ue?.pointer === t.pointerId && Math.hypot(t.clientX - ue.x, t.clientY - ue.y) > tG && (de = !0, cn()) : t.type === "pointerenter" && D.value || (D.value = !1, (ne.value !== e.key || !ie.value) && sn(e, t));
42345
+ ["touch", "pen"].includes(t.pointerType) ? ue?.pointer === t.pointerId && Math.hypot(t.clientX - ue.x, t.clientY - ue.y) > QW && (de = !0, cn()) : t.type === "pointerenter" && D.value || (D.value = !1, (ne.value !== e.key || !ie.value) && sn(e, t));
42346
42346
  }
42347
42347
  function nn(e, t) {
42348
42348
  de && t.detail !== 0 ? (de = !1, t.preventDefault()) : Kt(e.message.id);
@@ -42357,11 +42357,11 @@ var _H = {
42357
42357
  cn(), k.value = null, Se.value = !0, Wt();
42358
42358
  }
42359
42359
  async function sn(e, t) {
42360
- let n = e.message, r = t.currentTarget.getBoundingClientRect(), i = E.value.getBoundingClientRect(), a = Math.min(LW, innerWidth - 24), o = i.right + BW;
42361
- if (A.value = Math.max(zW, Math.min(o, innerWidth - a - zW)), te.value = n.id, ne.value = e.key, re.value = e.round, ie.value = !0, await Qn(), !ie.value || ne.value !== e.key) return;
42362
- se.value = ae.value.scrollHeight + RW;
42363
- let s = (Math.max(r.top, i.top + $W) + Math.min(r.bottom, i.bottom - $W)) / 2 - se.value / 2;
42364
- oe.value = Math.max(zW, Math.min(s, innerHeight - se.value - zW));
42360
+ let n = e.message, r = t.currentTarget.getBoundingClientRect(), i = E.value.getBoundingClientRect(), a = Math.min(PW, innerWidth - 24), o = i.right + LW;
42361
+ if (A.value = Math.max(IW, Math.min(o, innerWidth - a - IW)), te.value = n.id, ne.value = e.key, re.value = e.round, ie.value = !0, await Qn(), !ie.value || ne.value !== e.key) return;
42362
+ se.value = ae.value.scrollHeight + FW;
42363
+ let s = (Math.max(r.top, i.top + XW) + Math.min(r.bottom, i.bottom - XW)) / 2 - se.value / 2;
42364
+ oe.value = Math.max(IW, Math.min(s, innerHeight - se.value - IW));
42365
42365
  let c = ce.value || me.get() === 0;
42366
42366
  fe[c ? "jump" : "set"](oe.value), pe[c ? "jump" : "set"](se.value);
42367
42367
  }
@@ -42376,14 +42376,14 @@ var _H = {
42376
42376
  }
42377
42377
  function fn(e) {
42378
42378
  let t = e.entries.length - 1;
42379
- return Math.max(-3, Math.min(t + qW, be.value - e.entries[0].index));
42379
+ return Math.max(-3, Math.min(t + WW, be.value - e.entries[0].index));
42380
42380
  }
42381
42381
  function pn(e, t) {
42382
- let n = be.value < 0 ? Infinity : Math.abs(t - be.value), r = Math.max(0, 1 - n / qW), i = O.value === e.message.id, a = n === 0 || i && be.value < 0, o = HW;
42382
+ let n = be.value < 0 ? Infinity : Math.abs(t - be.value), r = Math.max(0, 1 - n / WW), i = O.value === e.message.id, a = n === 0 || i && be.value < 0, o = zW;
42383
42383
  return {
42384
- scaleX: a ? UW / o : i ? WW / o : 1 + r * JW / o,
42385
- height: a ? KW : GW,
42386
- opacity: a ? ZW : i ? XW : YW + r * QW
42384
+ scaleX: a ? BW / o : i ? VW / o : 1 + r * GW / o,
42385
+ height: a ? UW : HW,
42386
+ opacity: a ? JW : i ? qW : KW + r * YW
42387
42387
  };
42388
42388
  }
42389
42389
  R([ie, ce], () => {
@@ -42395,7 +42395,7 @@ var _H = {
42395
42395
  if (!e) return;
42396
42396
  e.rows = 1;
42397
42397
  let t = getComputedStyle(e), n = (e.scrollHeight - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom)) / parseFloat(t.lineHeight);
42398
- e.rows = Math.min(Math.max(Math.floor(n), 1), jW);
42398
+ e.rows = Math.min(Math.max(Math.floor(n), 1), OW);
42399
42399
  }
42400
42400
  let hn = 0, gn = new ResizeObserver(([e]) => {
42401
42401
  Math.round(e.contentRect.width) !== hn && (hn = Math.round(e.contentRect.width), mn());
@@ -42407,7 +42407,7 @@ var _H = {
42407
42407
  }
42408
42408
  async function bn(e) {
42409
42409
  let t = Ce.value.id;
42410
- yn(), await l("copy_member_launch", e) && Ce.value?.id === t && (_n.value = e, vn = setTimeout(yn, cG));
42410
+ yn(), await l("copy_member_launch", e) && Ce.value?.id === t && (_n.value = e, vn = setTimeout(yn, aG));
42411
42411
  }
42412
42412
  R([() => Ce.value?.id, () => Ee.value?.id], yn), ta(yn);
42413
42413
  function xn(e) {
@@ -42457,7 +42457,7 @@ var _H = {
42457
42457
  ref_key: "message_map",
42458
42458
  ref: E,
42459
42459
  class: "channel-message-map",
42460
- style: j({ "--nav-entry-height": `${VW}px` }),
42460
+ style: j({ "--nav-entry-height": `${RW}px` }),
42461
42461
  "aria-label": "发言快速导航",
42462
42462
  onWheelPassive: uu(an, ["stop"]),
42463
42463
  onPointerleave: cn,
@@ -42522,7 +42522,7 @@ var _H = {
42522
42522
  opacity: I(N),
42523
42523
  scale: I(he),
42524
42524
  height: I(pe),
42525
- "--preview-gap": `${BW}px`
42525
+ "--preview-gap": `${LW}px`
42526
42526
  }),
42527
42527
  onPointerleave: cn,
42528
42528
  onFocusout: cn,
@@ -42668,6 +42668,18 @@ var _H = {
42668
42668
  K("small", rU, P(T.value.bounds), 1)
42669
42669
  ])
42670
42670
  ], 2)])) : Y("", !0),
42671
+ (U(!0), W(H, null, B(nt.value.get(0) || [], (e) => (U(), G(AH, {
42672
+ key: `arrangement-${e.id}`,
42673
+ icon: "i-lucide-list-ordered",
42674
+ plain: "",
42675
+ title: `${I(s).display_name(Ce.value.host)} 创建的发言安排`,
42676
+ label: "主持人安排",
42677
+ "toggle-label": "展开或收起各专家的任务"
42678
+ }, {
42679
+ text: L(() => [J("主持人安排:" + P(e.label), 1)]),
42680
+ default: L(() => [(U(!0), W(H, null, B(e.turns, (t) => (U(), W("p", { key: `${e.id}-${t.expert}-${t.question}` }, [K("span", null, P(I(s).display_name(t.expert)) + ":" + P(t.question), 1)]))), 128))]),
42681
+ _: 2
42682
+ }, 1032, ["title"]))), 128)),
42671
42683
  (U(!0), W(H, null, B(It.value, (e) => (U(), W("div", {
42672
42684
  key: e.key,
42673
42685
  class: "channel-message-group"
@@ -43043,36 +43055,24 @@ var _H = {
43043
43055
  _: 2
43044
43056
  }, 1032, ["title"]))), 128))
43045
43057
  ], 64))], 64))), 128))]))), 128)),
43046
- Ke.value ? (U(), W("div", JU, [Ke.value.is_host ? (U(), W("section", {
43058
+ Ke.value ? (U(), W("div", JU, [Ke.value.is_host ? (U(), G(AH, {
43047
43059
  key: 0,
43048
43060
  id: `execution-${Ke.value.id}`,
43049
- class: "channel-host-work",
43050
- "aria-label": `${I(s).display_name(Ke.value.author)} 主持工作`
43051
- }, [
43052
- q(C, {
43053
- src: I(s).identities[Ke.value.author]?.icon,
43054
- text: I(s).identities[Ke.value.author]?.initials || "?",
43055
- alt: I(s).display_name(Ke.value.author),
43056
- size: "md",
43057
- class: M(["channel-avatar", I(s).identities[Ke.value.author]?.style])
43058
- }, null, 8, [
43059
- "src",
43060
- "text",
43061
- "alt",
43062
- "class"
43063
- ]),
43064
- K("div", XU, [K("strong", null, P(I(s).display_name(Ke.value.author)), 1), t[39] ||= K("span", null, "主持工作", -1)]),
43065
- K("span", ZU, "已用 " + P(ot.value), 1),
43066
- K("p", {
43067
- class: "channel-host-work-status",
43061
+ icon: "i-lucide-list-ordered",
43062
+ plain: "",
43063
+ expandable: !1,
43064
+ label: `${I(s).display_name(Ke.value.author)} 主持工作`
43065
+ }, {
43066
+ text: L(() => [K("span", {
43068
43067
  role: "status",
43069
43068
  "aria-label": `${I(s).display_name(Ke.value.author)} ${Ke.value.text}`
43070
- }, [K("span", {
43069
+ }, [J(P(I(s).display_name(Ke.value.author)) + " 主持工作:", 1), K("span", {
43071
43070
  ref_key: "reply_glow",
43072
43071
  ref: Te,
43073
43072
  class: "channel-reply-glow"
43074
- }, P(Ke.value.text), 513)], 8, QU)
43075
- ], 8, YU)) : (U(), G(ue, {
43073
+ }, P(Ke.value.text), 513)], 8, YU), K("small", null, "已用 " + P(ot.value), 1)]),
43074
+ _: 1
43075
+ }, 8, ["id", "label"])) : (U(), G(ue, {
43076
43076
  key: 1,
43077
43077
  id: `execution-${Ke.value.id}`,
43078
43078
  "data-author": I(s).identities[Ke.value.author]?.style,
@@ -43088,7 +43088,7 @@ var _H = {
43088
43088
  body: "channel-message-body"
43089
43089
  }
43090
43090
  }, {
43091
- body: L(() => [K("div", $U, [
43091
+ body: L(() => [K("div", XU, [
43092
43092
  q(C, {
43093
43093
  src: I(s).identities[Ke.value.author]?.icon,
43094
43094
  text: I(s).identities[Ke.value.author]?.initials || "?",
@@ -43101,27 +43101,27 @@ var _H = {
43101
43101
  "alt",
43102
43102
  "class"
43103
43103
  ]),
43104
- K("div", eW, [K("div", tW, [K("strong", null, P(I(s).display_name(Ke.value.author)), 1), Ke.value.round ? (U(), W("span", nW, P(Ke.value.round), 1)) : Y("", !0)])]),
43105
- K("span", rW, P(Ke.value.manual ? "手动启动" : `已用 ${ot.value}`), 1)
43104
+ K("div", ZU, [K("div", QU, [K("strong", null, P(I(s).display_name(Ke.value.author)), 1), Ke.value.round ? (U(), W("span", $U, P(Ke.value.round), 1)) : Y("", !0)])]),
43105
+ K("span", eW, P(Ke.value.manual ? "手动启动" : `已用 ${ot.value}`), 1)
43106
43106
  ]), K("div", {
43107
43107
  class: "channel-message-text",
43108
43108
  role: "status",
43109
43109
  "aria-label": `${I(s).display_name(Ke.value.author)} ${Ke.value.text}`
43110
- }, [Ke.value.manual ? (U(), W("span", aW, P(Ke.value.text), 1)) : (U(), W("span", {
43110
+ }, [Ke.value.manual ? (U(), W("span", nW, P(Ke.value.text), 1)) : (U(), W("span", {
43111
43111
  key: 1,
43112
43112
  ref_key: "reply_glow",
43113
43113
  ref: Te,
43114
43114
  class: "channel-reply-glow"
43115
- }, P(Ke.value.text), 513))], 8, iW)]),
43115
+ }, P(Ke.value.text), 513))], 8, tW)]),
43116
43116
  _: 1
43117
43117
  }, 8, ["id", "data-author"]))])) : Y("", !0),
43118
- !Ft.value.length && !Ke.value ? (U(), W("div", oW, [
43118
+ !Ft.value.length && !Ke.value ? (U(), W("div", rW, [
43119
43119
  q(D, { name: I(o).query || I(o).mention_only ? "i-lucide-search" : "i-lucide-hash" }, null, 8, ["name"]),
43120
43120
  K("h2", null, P(I(o).query || I(o).mention_only ? "没有找到消息" : Ce.value.title), 1),
43121
43121
  K("p", null, P(I(o).query || I(o).mention_only ? "试试其他关键词,或清除筛选。" : I(s).empty_discussion_message(Ce.value)), 1)
43122
43122
  ])) : Y("", !0)
43123
43123
  ], 544)), t, 9),
43124
- (Ft.value.length || Ke.value) && !Se.value ? (U(), W("div", sW, [q(c, {
43124
+ (Ft.value.length || Ke.value) && !Se.value ? (U(), W("div", iW, [q(c, {
43125
43125
  icon: "i-lucide-arrow-down",
43126
43126
  color: "neutral",
43127
43127
  variant: "outline",
@@ -43129,7 +43129,7 @@ var _H = {
43129
43129
  class: "channel-latest-button",
43130
43130
  onClick: on
43131
43131
  })])) : Y("", !0),
43132
- K("div", cW, [K("div", {
43132
+ K("div", aW, [K("div", {
43133
43133
  class: "channel-composer-column",
43134
43134
  onDragover: t[21] ||= (...e) => I(s).drop_attachments && I(s).drop_attachments(...e),
43135
43135
  onDrop: t[22] ||= (...e) => I(s).drop_attachments && I(s).drop_attachments(...e),
@@ -43158,7 +43158,7 @@ var _H = {
43158
43158
  ui: { content: "channel-select-menu channel-mention-menu" },
43159
43159
  "onUpdate:open": t[11] ||= (e) => !e && (bt.value = null)
43160
43160
  }, {
43161
- content: L(() => [t[40] ||= K("div", { class: "channel-mention-heading" }, [K("span", null, "选择成员"), K("small", null, "↑↓ 选择 · Enter 确认")], -1), K("div", {
43161
+ content: L(() => [t[39] ||= K("div", { class: "channel-mention-heading" }, [K("span", null, "选择成员"), K("small", null, "↑↓ 选择 · Enter 确认")], -1), K("div", {
43162
43162
  id: "channel-mention-list",
43163
43163
  ref_key: "mention_list",
43164
43164
  ref: St,
@@ -43191,7 +43191,7 @@ var _H = {
43191
43191
  ]),
43192
43192
  K("span", null, P(I(s).display_name(e)), 1),
43193
43193
  K("small", null, "@" + P(e), 1)
43194
- ], 40, lW))), 128)), wt.value.length ? Y("", !0) : (U(), W("p", uW, "没有匹配的成员"))], 512)]),
43194
+ ], 40, oW))), 128)), wt.value.length ? Y("", !0) : (U(), W("p", sW, "没有匹配的成员"))], 512)]),
43195
43195
  _: 1
43196
43196
  }, 8, [
43197
43197
  "open",
@@ -43207,7 +43207,7 @@ var _H = {
43207
43207
  "submit-on-enter": !0,
43208
43208
  autofocus: !1,
43209
43209
  rows: 1,
43210
- maxrows: jW,
43210
+ maxrows: OW,
43211
43211
  placeholder: `发消息到 # ${Ce.value.title}`,
43212
43212
  "aria-label": "留言正文",
43213
43213
  role: "combobox",
@@ -43227,7 +43227,7 @@ var _H = {
43227
43227
  onSubmit: Cn
43228
43228
  }, {
43229
43229
  header: L(() => [
43230
- I(o).attachment_drafts.length ? (U(), W("div", dW, [(U(!0), W(H, null, B(I(o).attachment_drafts, (e) => (U(), W("div", {
43230
+ I(o).attachment_drafts.length ? (U(), W("div", cW, [(U(!0), W(H, null, B(I(o).attachment_drafts, (e) => (U(), W("div", {
43231
43231
  key: e.id,
43232
43232
  class: M(e.preview_url ? "attachment-draft-image" : "attachment-draft-file")
43233
43233
  }, [e.preview_url ? (U(), W("img", {
@@ -43235,19 +43235,19 @@ var _H = {
43235
43235
  src: e.preview_url,
43236
43236
  alt: e.file_name,
43237
43237
  title: e.file_name
43238
- }, null, 8, fW)) : (U(), W(H, { key: 1 }, [K("span", { innerHTML: I(s).attachment_file_icon(e.file_name) }, null, 8, pW), K("span", mW, [K("span", { title: e.file_name }, P(e.file_name), 9, hW), K("small", null, P(I(s).attachment_size(e.size)), 1)])], 64)), K("button", {
43238
+ }, null, 8, lW)) : (U(), W(H, { key: 1 }, [K("span", { innerHTML: I(s).attachment_file_icon(e.file_name) }, null, 8, uW), K("span", dW, [K("span", { title: e.file_name }, P(e.file_name), 9, fW), K("small", null, P(I(s).attachment_size(e.size)), 1)])], 64)), K("button", {
43239
43239
  type: "button",
43240
43240
  class: "attachment-remove",
43241
43241
  "aria-label": `移除 ${e.file_name}`,
43242
43242
  disabled: I(o).sending_message,
43243
43243
  onClick: (t) => I(l)("remove_attachment", e.id)
43244
- }, [q(D, { name: "i-lucide-x" })], 8, gW)], 2))), 128))])) : Y("", !0),
43244
+ }, [q(D, { name: "i-lucide-x" })], 8, pW)], 2))), 128))])) : Y("", !0),
43245
43245
  I(o).composer_error || I(o).upload_status ? (U(), W("p", {
43246
43246
  key: 1,
43247
43247
  class: "attachment-status",
43248
43248
  role: I(o).composer_error ? "alert" : "status"
43249
- }, P(I(o).composer_error || I(o).upload_status), 9, _W)) : Y("", !0),
43250
- ke.value ? (U(), W("div", vW, [
43249
+ }, P(I(o).composer_error || I(o).upload_status), 9, mW)) : Y("", !0),
43250
+ ke.value ? (U(), W("div", hW, [
43251
43251
  q(D, { name: "i-lucide-user-round-x" }),
43252
43252
  K("span", null, P(I(s).display_name(ke.value.name)) + " 尚未注册:需把启动指令粘贴到其 AI 会话,由它自己注册后才算到场", 1),
43253
43253
  I(o).access?.can_manage ? (U(), G(c, {
@@ -43262,7 +43262,7 @@ var _H = {
43262
43262
  onClick: t[12] ||= (e) => bn(ke.value.name)
43263
43263
  }, null, 8, ["icon", "label"])) : Y("", !0)
43264
43264
  ])) : Y("", !0),
43265
- Ae.value ? (U(), W("div", yW, [
43265
+ Ae.value ? (U(), W("div", gW, [
43266
43266
  q(D, { name: "i-lucide-clock" }),
43267
43267
  K("span", null, P(Ae.value), 1),
43268
43268
  De(Oe.value) && I(o).access?.can_manage ? (U(), G(c, {
@@ -43277,7 +43277,7 @@ var _H = {
43277
43277
  onClick: t[13] ||= (e) => bn(Oe.value.name)
43278
43278
  }, null, 8, ["icon", "label"])) : Y("", !0)
43279
43279
  ])) : Y("", !0),
43280
- I(o).reply_to || I(o).turn_reply_to ? (U(), W("div", bW, [
43280
+ I(o).reply_to || I(o).turn_reply_to ? (U(), W("div", _W, [
43281
43281
  q(D, { name: "i-lucide-corner-up-left" }),
43282
43282
  K("span", null, P(I(o).turn_reply_to ? `回答安排 #${I(o).turn_reply_to} · ${I(s).display_name(Ce.value.host)} 代发` : `回复 #${I(o).reply_to}`), 1),
43283
43283
  q(c, {
@@ -43289,7 +43289,7 @@ var _H = {
43289
43289
  onClick: t[14] ||= (e) => I(l)(I(o).turn_reply_to ? "cancel_answer" : "cancel_reply")
43290
43290
  }, null, 8, ["aria-label"])
43291
43291
  ])) : Y("", !0),
43292
- v.value ? (U(), W("div", xW, [q(me, {
43292
+ v.value ? (U(), W("div", vW, [q(me, {
43293
43293
  modelValue: I(g),
43294
43294
  "onUpdate:modelValue": t[15] ||= (e) => /* @__PURE__ */ ln(g) ? g.value = e : null,
43295
43295
  rows: 2,
@@ -43316,14 +43316,14 @@ var _H = {
43316
43316
  disabled: I(o).sending_message,
43317
43317
  onClick: t[17] ||= (e) => I(l)("choose_attachments")
43318
43318
  }, null, 8, ["disabled"]),
43319
- Re.value.length ? (U(), W("div", CW, [t[41] ||= K("span", null, "代发", -1), (U(!0), W(H, null, B(Re.value, (e) => (U(), W("button", {
43319
+ Re.value.length ? (U(), W("div", bW, [t[40] ||= K("span", null, "代发", -1), (U(!0), W(H, null, B(Re.value, (e) => (U(), W("button", {
43320
43320
  key: e.id,
43321
43321
  type: "button",
43322
43322
  "aria-pressed": I(o).free_proxy === e.name,
43323
43323
  class: M({ "is-on": I(o).free_proxy === e.name }),
43324
43324
  onClick: (t) => I(l)("set_proxy", e.name)
43325
- }, P(I(s).display_name(e.name)), 11, wW))), 128))])) : Y("", !0),
43326
- je.value ? Y("", !0) : (U(), W("div", TW, [q(be, {
43325
+ }, P(I(s).display_name(e.name)), 11, xW))), 128))])) : Y("", !0),
43326
+ je.value ? Y("", !0) : (U(), W("div", SW, [q(be, {
43327
43327
  modelValue: I(m),
43328
43328
  "onUpdate:modelValue": t[18] ||= (e) => /* @__PURE__ */ ln(m) ? m.value = e : null,
43329
43329
  items: ut.value,
@@ -43388,7 +43388,7 @@ var _H = {
43388
43388
  class: "channel-editor channel-editor-mirror",
43389
43389
  "aria-hidden": "true",
43390
43390
  innerHTML: _t.value
43391
- }, null, 8, SW)) : Y("", !0)]),
43391
+ }, null, 8, yW)) : Y("", !0)]),
43392
43392
  _: 1
43393
43393
  }, 8, [
43394
43394
  "modelValue",
@@ -43399,18 +43399,18 @@ var _H = {
43399
43399
  "aria-activedescendant",
43400
43400
  "class"
43401
43401
  ]),
43402
- K("div", EW, [je.value ? (U(), W("span", DW, [
43402
+ K("div", CW, [je.value ? (U(), W("span", wW, [
43403
43403
  J(P(Pe.value), 1),
43404
- t[42] ||= K("span", { class: "channel-note-divider" }, "·", -1),
43405
- t[43] ||= J("手动成员需在原会话触发", -1)
43406
- ])) : (U(), W("span", OW, [
43404
+ t[41] ||= K("span", { class: "channel-note-divider" }, "·", -1),
43405
+ t[42] ||= J("手动成员需在原会话触发", -1)
43406
+ ])) : (U(), W("span", TW, [
43407
43407
  J(P(mt.value), 1),
43408
- t[44] ||= K("span", { class: "channel-note-divider" }, "·", -1),
43409
- t[45] ||= J("在线 AI 的观点需代发", -1)
43410
- ])), K("span", kW, [f.value ? (U(), W("span", {
43408
+ t[43] ||= K("span", { class: "channel-note-divider" }, "·", -1),
43409
+ t[44] ||= J("在线 AI 的观点需代发", -1)
43410
+ ])), K("span", EW, [f.value ? (U(), W("span", {
43411
43411
  key: 0,
43412
43412
  class: M({ "is-near-limit": p.value })
43413
- }, [J(P(f.value) + " / " + P(I(s).max_message_length), 1), t[46] ||= K("span", { class: "channel-note-divider" }, "·", -1)], 2)) : Y("", !0), t[47] ||= K("span", { class: "channel-key-hint" }, [
43413
+ }, [J(P(f.value) + " / " + P(I(s).max_message_length), 1), t[45] ||= K("span", { class: "channel-note-divider" }, "·", -1)], 2)) : Y("", !0), t[46] ||= K("span", { class: "channel-key-hint" }, [
43414
43414
  K("kbd", null, "Enter"),
43415
43415
  J(" 发送"),
43416
43416
  K("span", { class: "channel-note-divider" }, "·"),
@@ -43423,7 +43423,7 @@ var _H = {
43423
43423
  ], 2);
43424
43424
  };
43425
43425
  }
43426
- }, [["__scopeId", "data-v-45aa5e6a"]]), uG = {
43426
+ }, [["__scopeId", "data-v-70453173"]]), sG = {
43427
43427
  slots: {
43428
43428
  root: "relative inline-flex items-center",
43429
43429
  base: ["rounded-md", "transition-colors"],
@@ -43851,7 +43851,7 @@ var _H = {
43851
43851
  color: "primary",
43852
43852
  variant: "outline"
43853
43853
  }
43854
- }, dG = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
43854
+ }, cG = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
43855
43855
  __name: "InputMenu",
43856
43856
  props: /*@__PURE__*/ Fa({
43857
43857
  as: {
@@ -44131,7 +44131,7 @@ var _H = {
44131
44131
  required: !1
44132
44132
  }
44133
44133
  } }), _e = Z(() => oA({
44134
- extend: uG,
44134
+ extend: sG,
44135
44135
  ...l.ui?.inputMenu || {}
44136
44136
  })({
44137
44137
  color: ue.value,
@@ -44625,16 +44625,16 @@ var _H = {
44625
44625
  ])
44626
44626
  ], 64));
44627
44627
  }
44628
- }), fG = { class: "api-settings" }, pG = {
44628
+ }), lG = { class: "api-settings" }, uG = {
44629
44629
  class: "api-field",
44630
44630
  title: "Base URL"
44631
- }, mG = {
44631
+ }, dG = {
44632
44632
  class: "api-field",
44633
44633
  title: "OpenRouter 等兼容服务可选 Chat Completions,并填写该服务的完整模型 ID。"
44634
- }, hG = { class: "api-field" }, gG = { class: "api-field" }, _G = { class: "api-inline" }, vG = {
44634
+ }, fG = { class: "api-field" }, pG = { class: "api-field" }, mG = { class: "api-inline" }, hG = {
44635
44635
  key: 0,
44636
44636
  role: "alert"
44637
- }, yG = "••••••••••••", bG = /*#__PURE__*/ jH({
44637
+ }, gG = "••••••••••••", _G = /*#__PURE__*/ jH({
44638
44638
  __name: "ApiSettings",
44639
44639
  props: { name: {
44640
44640
  type: String,
@@ -44676,9 +44676,9 @@ var _H = {
44676
44676
  }
44677
44677
  }
44678
44678
  return (t, n) => {
44679
- let u = YV, m = bH, h = MA, g = dG;
44680
- return U(), W("div", fG, [
44681
- K("label", pG, [n[6] ||= K("span", null, "地址", -1), q(u, {
44679
+ let u = YV, m = bH, h = MA, g = cG;
44680
+ return U(), W("div", lG, [
44681
+ K("label", uG, [n[6] ||= K("span", null, "地址", -1), q(u, {
44682
44682
  "model-value": i.value.base_url || "",
44683
44683
  "aria-label": `${e.name} Base URL`,
44684
44684
  placeholder: "Base URL",
@@ -44686,7 +44686,7 @@ var _H = {
44686
44686
  size: "xs",
44687
44687
  "onUpdate:modelValue": n[0] ||= (e) => f("base_url", e)
44688
44688
  }, null, 8, ["model-value", "aria-label"])]),
44689
- K("div", mG, [n[7] ||= K("span", null, "协议", -1), q(m, {
44689
+ K("div", dG, [n[7] ||= K("span", null, "协议", -1), q(m, {
44690
44690
  "model-value": i.value.api_protocol || "",
44691
44691
  items: d,
44692
44692
  "aria-label": `${e.name} API 请求协议`,
@@ -44694,7 +44694,7 @@ var _H = {
44694
44694
  size: "xs",
44695
44695
  "onUpdate:modelValue": n[1] ||= (e) => f("api_protocol", e)
44696
44696
  }, null, 8, ["model-value", "aria-label"])]),
44697
- K("div", hG, [n[8] ||= K("span", null, "密钥", -1), q(u, {
44697
+ K("div", fG, [n[8] ||= K("span", null, "密钥", -1), q(u, {
44698
44698
  modelValue: o.value,
44699
44699
  "onUpdate:modelValue": n[3] ||= (e) => o.value = e,
44700
44700
  type: "text",
@@ -44702,7 +44702,7 @@ var _H = {
44702
44702
  spellcheck: "false",
44703
44703
  "data-1p-ignore": "",
44704
44704
  "data-lpignore": "true",
44705
- placeholder: i.value.api_key_ref ? yG : "填写 API Key",
44705
+ placeholder: i.value.api_key_ref ? gG : "填写 API Key",
44706
44706
  title: i.value.api_key_ref && !o.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
44707
44707
  "aria-label": `${e.name} API Key`,
44708
44708
  size: "xs",
@@ -44738,7 +44738,7 @@ var _H = {
44738
44738
  "loading",
44739
44739
  "ui"
44740
44740
  ])]),
44741
- K("div", gG, [n[9] ||= K("span", null, "模型", -1), K("div", _G, [q(g, {
44741
+ K("div", pG, [n[9] ||= K("span", null, "模型", -1), K("div", mG, [q(g, {
44742
44742
  mode: "autocomplete",
44743
44743
  "ignore-filter": "",
44744
44744
  "model-value": i.value.model || "",
@@ -44768,26 +44768,26 @@ var _H = {
44768
44768
  "loading",
44769
44769
  "disabled"
44770
44770
  ])])]),
44771
- l.value || a.value.error ? (U(), W("p", vG, P(l.value || a.value.error), 1)) : Y("", !0)
44771
+ l.value || a.value.error ? (U(), W("p", hG, P(l.value || a.value.error), 1)) : Y("", !0)
44772
44772
  ]);
44773
44773
  };
44774
44774
  }
44775
- }, [["__scopeId", "data-v-9bf1d860"]]), xG = {
44775
+ }, [["__scopeId", "data-v-9bf1d860"]]), vG = {
44776
44776
  class: "launch-settings",
44777
44777
  "aria-label": "启动配置"
44778
- }, SG = { class: "launch-connect-command" }, CG = {
44778
+ }, yG = { class: "launch-connect-command" }, bG = {
44779
44779
  key: 0,
44780
44780
  role: "alert",
44781
44781
  class: "fine-print"
44782
- }, wG = { class: "launch-effective" }, TG = { class: "launch-client-fields" }, EG = ["onClick"], DG = { key: 7 }, OG = { class: "launch-client-fields" }, kG = { class: "form-two-columns" }, AG = {
44782
+ }, xG = { class: "launch-effective" }, SG = { class: "launch-client-fields" }, CG = ["onClick"], wG = { key: 7 }, TG = { class: "launch-client-fields" }, EG = { class: "form-two-columns" }, DG = {
44783
44783
  key: 0,
44784
44784
  role: "alert",
44785
44785
  class: "fine-print"
44786
- }, jG = {
44786
+ }, OG = {
44787
44787
  key: 1,
44788
44788
  role: "status",
44789
44789
  class: "fine-print"
44790
- }, MG = /*#__PURE__*/ jH({
44790
+ }, kG = /*#__PURE__*/ jH({
44791
44791
  __name: "LaunchSettings",
44792
44792
  props: {
44793
44793
  participants: {
@@ -44828,7 +44828,7 @@ var _H = {
44828
44828
  e && t && o.value.forEach((e) => r.load_launch_models(e));
44829
44829
  }, { immediate: !0 }), (e, m) => {
44830
44830
  let h = MA, g = bH, _ = zV, v = YV, y = HV;
44831
- return U(), W("section", xG, [I(n).launch.available ? (U(), W(H, { key: 1 }, [
44831
+ return U(), W("section", vG, [I(n).launch.available ? (U(), W(H, { key: 1 }, [
44832
44832
  m[10] ||= K("h3", null, "启动配置", -1),
44833
44833
  m[11] ||= K("p", { class: "fine-print" }, "接入配置可保存供后续讨论复用。API 不需要安装 AI 软件;App 需要保持运行;CLI 按需启动。", -1),
44834
44834
  (U(!0), W(H, null, B(o.value, (e) => (U(), W("details", {
@@ -44837,12 +44837,12 @@ var _H = {
44837
44837
  class: "launch-client"
44838
44838
  }, [
44839
44839
  K("summary", null, P(e) + " · " + P(I(r).launch_summary(e).client) + " · " + P(I(r).launch_summary(e).session), 1),
44840
- K("p", wG, [
44840
+ K("p", xG, [
44841
44841
  J("工作目录:" + P(I(r).launch_summary(e).cwd) + "(" + P(I(r).launch_summary(e).access) + ")", 1),
44842
44842
  m[8] ||= K("br", null, null, -1),
44843
44843
  J("项目:" + P(I(r).launch_summary(e).project), 1)
44844
44844
  ]),
44845
- K("div", TG, [
44845
+ K("div", SG, [
44846
44846
  q(_, { label: `${e} 执行客户端` }, {
44847
44847
  default: L(() => [q(g, {
44848
44848
  "model-value": s(e).adapter || "",
@@ -44885,7 +44885,7 @@ var _H = {
44885
44885
  ])]),
44886
44886
  _: 2
44887
44887
  }, 1024)),
44888
- s(e).adapter === "api" ? (U(), G(bG, {
44888
+ s(e).adapter === "api" ? (U(), G(_G, {
44889
44889
  key: 2,
44890
44890
  name: e
44891
44891
  }, null, 8, ["name"])) : t.modelSelection && f(e).supported ? (U(), G(_, {
@@ -44909,7 +44909,7 @@ var _H = {
44909
44909
  type: "button",
44910
44910
  class: "model-retry",
44911
44911
  onClick: (t) => I(r).load_launch_models(e, !0)
44912
- }, "重新读取模型列表", 8, EG)) : Y("", !0)]),
44912
+ }, "重新读取模型列表", 8, CG)) : Y("", !0)]),
44913
44913
  _: 2
44914
44914
  }, 1032, ["help"])) : Y("", !0),
44915
44915
  t.modelSelection && f(e).efforts?.length ? (U(), G(_, {
@@ -44953,7 +44953,7 @@ var _H = {
44953
44953
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
44954
44954
  _: 2
44955
44955
  }, 1024)) : Y("", !0),
44956
- s(e).adapter === "api" ? Y("", !0) : (U(), W("details", DG, [m[9] ||= K("summary", null, "会话与目录覆盖(可选)", -1), K("div", OG, [
44956
+ s(e).adapter === "api" ? Y("", !0) : (U(), W("details", wG, [m[9] ||= K("summary", null, "会话与目录覆盖(可选)", -1), K("div", TG, [
44957
44957
  q(_, { label: "复用会话 ID(仅本次)" }, {
44958
44958
  default: L(() => [q(v, {
44959
44959
  "model-value": s(e).session_id || "",
@@ -45012,7 +45012,7 @@ var _H = {
45012
45012
  ])]))
45013
45013
  ])
45014
45014
  ]))), 128)),
45015
- K("div", kG, [
45015
+ K("div", EG, [
45016
45016
  t.workspace ? (U(), G(_, {
45017
45017
  key: 0,
45018
45018
  label: "本次工作目录(可选)",
@@ -45056,11 +45056,11 @@ var _H = {
45056
45056
  loading: I(a) === "save_launch_defaults",
45057
45057
  onClick: m[5] ||= (e) => I(i)("save_launch_defaults")
45058
45058
  }, null, 8, ["loading"]),
45059
- I(n).launch.error ? (U(), W("p", AG, P(I(n).launch.error), 1)) : I(n).launch.notice ? (U(), W("p", jG, P(I(n).launch.notice), 1)) : Y("", !0)
45059
+ I(n).launch.error ? (U(), W("p", DG, P(I(n).launch.error), 1)) : I(n).launch.notice ? (U(), W("p", OG, P(I(n).launch.notice), 1)) : Y("", !0)
45060
45060
  ], 64)) : (U(), W(H, { key: 0 }, [
45061
45061
  m[6] ||= K("h3", null, "连接这台电脑", -1),
45062
45062
  m[7] ||= K("p", { class: "fine-print" }, "先安装并配置 codiscuss,在运行 AI 的这台电脑上执行以下命令,使用命令打开的网页完成连接。浏览器询问时允许访问本机网络。", -1),
45063
- K("div", SG, [K("code", null, P(I(n).launch.connect_command), 1), q(h, {
45063
+ K("div", yG, [K("code", null, P(I(n).launch.connect_command), 1), q(h, {
45064
45064
  icon: "i-lucide-copy",
45065
45065
  "aria-label": "复制本机连接命令",
45066
45066
  variant: "ghost",
@@ -45074,102 +45074,102 @@ var _H = {
45074
45074
  loading: I(a) === "retry_launch_connection",
45075
45075
  onClick: m[1] ||= (e) => I(i)("retry_launch_connection")
45076
45076
  }, null, 8, ["loading"]),
45077
- I(n).launch.error ? (U(), W("p", CG, P(I(n).launch.error), 1)) : Y("", !0)
45077
+ I(n).launch.error ? (U(), W("p", bG, P(I(n).launch.error), 1)) : Y("", !0)
45078
45078
  ], 64))]);
45079
45079
  };
45080
45080
  }
45081
- }, [["__scopeId", "data-v-b8f8fe3c"]]), NG = { class: "page-heading" }, PG = { class: "topic-brief" }, FG = { class: "host-status" }, IG = {
45081
+ }, [["__scopeId", "data-v-b8f8fe3c"]]), AG = { class: "page-heading" }, jG = { class: "topic-brief" }, MG = { class: "host-status" }, NG = {
45082
45082
  key: 0,
45083
45083
  class: "turn-panel"
45084
- }, LG = { class: "turn-header" }, RG = {
45084
+ }, PG = { class: "turn-header" }, FG = {
45085
45085
  key: 1,
45086
45086
  class: "turn-panel"
45087
- }, zG = { class: "turn-header" }, BG = { class: "button-row" }, VG = { class: "turn-panel host-turn" }, HG = { class: "turn-header" }, UG = { class: "turn-expert" }, WG = { class: "turn-question" }, GG = {
45087
+ }, IG = { class: "turn-header" }, LG = { class: "button-row" }, RG = { class: "turn-panel host-turn" }, zG = { class: "turn-header" }, BG = { class: "turn-expert" }, VG = { class: "turn-question" }, HG = {
45088
45088
  key: 0,
45089
45089
  class: "button-row turn-actions"
45090
- }, KG = {
45090
+ }, UG = {
45091
45091
  key: 1,
45092
45092
  class: "turn-empty"
45093
- }, qG = {
45093
+ }, WG = {
45094
45094
  key: 2,
45095
45095
  class: "fine-print"
45096
- }, JG = {
45096
+ }, GG = {
45097
45097
  key: 0,
45098
45098
  class: "info-section host-receipts"
45099
- }, YG = { class: "button-row" }, XG = {
45099
+ }, KG = { class: "button-row" }, qG = {
45100
45100
  key: 0,
45101
45101
  class: "fine-print"
45102
- }, ZG = { class: "form-footer" }, QG = ["href"], $G = {
45102
+ }, JG = { class: "form-footer" }, YG = ["href"], XG = {
45103
45103
  key: 1,
45104
45104
  class: "fine-print host-schedule-hint"
45105
- }, eK = { class: "page-heading access-heading" }, tK = {
45105
+ }, ZG = { class: "page-heading access-heading" }, QG = {
45106
45106
  key: 0,
45107
45107
  class: "access-evidence",
45108
45108
  "aria-label": "实际执行进展",
45109
45109
  role: "status"
45110
- }, nK = {
45110
+ }, $G = {
45111
45111
  key: 0,
45112
45112
  class: "fine-print"
45113
- }, rK = {
45113
+ }, eK = {
45114
45114
  key: 1,
45115
45115
  class: "access-setup",
45116
45116
  "aria-label": "网页启动入口"
45117
- }, iK = {
45117
+ }, tK = {
45118
45118
  key: 1,
45119
45119
  class: "access-repair"
45120
- }, aK = { class: "access-repair-heading" }, oK = {
45120
+ }, nK = { class: "access-repair-heading" }, rK = {
45121
45121
  key: 0,
45122
45122
  class: "access-repair-fields"
45123
- }, sK = {
45123
+ }, iK = {
45124
45124
  key: 0,
45125
45125
  role: "status",
45126
45126
  class: "fine-print"
45127
- }, cK = {
45127
+ }, aK = {
45128
45128
  key: 1,
45129
45129
  role: "alert",
45130
45130
  class: "fine-print"
45131
- }, lK = {
45131
+ }, oK = {
45132
45132
  key: 2,
45133
45133
  class: "fine-print"
45134
- }, uK = {
45134
+ }, sK = {
45135
45135
  key: 3,
45136
45136
  class: "fine-print"
45137
- }, dK = {
45137
+ }, cK = {
45138
45138
  key: 4,
45139
45139
  class: "fine-print"
45140
- }, fK = {
45140
+ }, lK = {
45141
45141
  key: 2,
45142
45142
  class: "access-setup",
45143
45143
  "aria-label": "全自动接入步骤"
45144
- }, pK = { class: "access-section-title" }, mK = {
45144
+ }, uK = { class: "access-section-title" }, dK = {
45145
45145
  href: "https://github.com/huyan1458/ai_co_discuss/blob/main/docs/runner.md#常驻讨论服务",
45146
45146
  target: "_blank",
45147
45147
  rel: "noopener",
45148
45148
  class: "subtle-link"
45149
- }, hK = { class: "access-steps" }, gK = { class: "access-command" }, _K = { class: "access-command" }, vK = {
45149
+ }, fK = { class: "access-steps" }, pK = { class: "access-command" }, mK = { class: "access-command" }, hK = {
45150
45150
  key: 3,
45151
45151
  class: "access-disclosure access-workspace"
45152
- }, yK = { class: "access-disclosure-body" }, bK = { class: "form-two-columns" }, xK = ["open"], SK = { class: "access-disclosure-body" }, CK = {
45152
+ }, gK = { class: "access-disclosure-body" }, _K = { class: "form-two-columns" }, vK = ["open"], yK = { class: "access-disclosure-body" }, bK = {
45153
45153
  key: 0,
45154
45154
  class: "fine-print"
45155
- }, wK = {
45155
+ }, xK = {
45156
45156
  class: "access-member-list",
45157
45157
  "aria-label": "成员接入"
45158
- }, TK = { class: "access-member-copy" }, EK = { key: 1 }, DK = { class: "button-row" }, OK = {
45158
+ }, SK = { class: "access-member-copy" }, CK = { key: 1 }, wK = { class: "button-row" }, TK = {
45159
45159
  key: 1,
45160
45160
  role: "alert",
45161
45161
  class: "access-member-error"
45162
- }, kK = {
45162
+ }, EK = {
45163
45163
  key: 2,
45164
45164
  role: "status",
45165
45165
  class: "fine-print"
45166
- }, AK = { class: "access-reading" }, jK = { class: "access-address" }, MK = {
45166
+ }, DK = { class: "access-reading" }, OK = { class: "access-address" }, kK = {
45167
45167
  key: 3,
45168
45168
  class: "fine-print"
45169
- }, NK = {
45169
+ }, AK = {
45170
45170
  key: 4,
45171
45171
  class: "access-disclosure access-limits"
45172
- }, PK = { class: "access-limit-summary" }, FK = { class: "access-disclosure-body" }, IK = { class: "button-row" }, LK = /*#__PURE__*/ jH({
45172
+ }, jK = { class: "access-limit-summary" }, MK = { class: "access-disclosure-body" }, NK = { class: "button-row" }, PK = /*#__PURE__*/ jH({
45173
45173
  __name: "TopicPanel",
45174
45174
  emits: ["open", "detail"],
45175
45175
  setup(e) {
@@ -45221,7 +45221,7 @@ var _H = {
45221
45221
  transition: { duration: .16 }
45222
45222
  }, {
45223
45223
  default: L(() => [I(t).tab === "topic" ? (U(), W(H, { key: 0 }, [
45224
- K("div", NG, [K("div", null, [
45224
+ K("div", AG, [K("div", null, [
45225
45225
  C[21] ||= K("span", { class: "eyebrow" }, "讨论进程", -1),
45226
45226
  C[22] ||= K("h2", null, "主持与安排", -1),
45227
45227
  K("p", null, "当前由 " + P(I(n).display_name(o.value.host)) + " 主持,围绕具体问题组织下一轮发言。", 1)
@@ -45233,9 +45233,9 @@ var _H = {
45233
45233
  class: "channel-surface-button",
45234
45234
  onClick: C[0] ||= (t) => e.$emit("open", "edit")
45235
45235
  })]),
45236
- K("div", PG, [K("div", null, [C[23] ||= K("h3", null, "讨论目标", -1), K("p", null, P(o.value.goal || "待主持人根据用户原文补全"), 1)]), K("div", null, [C[24] ||= K("h3", null, "当前焦点", -1), K("p", null, P(o.value.focus || "尚未设置当前焦点"), 1)])]),
45237
- K("div", FG, [o.value.limits ? (U(), W("section", IG, [
45238
- K("div", LG, [C[25] ||= K("h3", null, "讨论上限与进度", -1), q(T, {
45236
+ K("div", jG, [K("div", null, [C[23] ||= K("h3", null, "讨论目标", -1), K("p", null, P(o.value.goal || "待主持人根据用户原文补全"), 1)]), K("div", null, [C[24] ||= K("h3", null, "当前焦点", -1), K("p", null, P(o.value.focus || "尚未设置当前焦点"), 1)])]),
45237
+ K("div", MG, [o.value.limits ? (U(), W("section", NG, [
45238
+ K("div", PG, [C[25] ||= K("h3", null, "讨论上限与进度", -1), q(T, {
45239
45239
  color: o.value.limits.reached && o.value.phase !== "concluded" ? "warning" : "neutral",
45240
45240
  variant: "subtle"
45241
45241
  }, {
@@ -45252,15 +45252,15 @@ var _H = {
45252
45252
  onClick: C[1] ||= (e) => I(r)("check_limits")
45253
45253
  }, null, 8, ["loading"])) : Y("", !0),
45254
45254
  C[26] ||= K("p", { class: "fine-print" }, "在“编辑议题”中调整参数。自动模式由接入程序检查;手动模式由主持人或此按钮执行到限处理。", -1)
45255
- ])) : Y("", !0), o.value.floor ? (U(), W("section", RG, [
45256
- K("div", zG, [C[27] ||= K("h3", null, "发言权", -1), q(T, {
45255
+ ])) : Y("", !0), o.value.floor ? (U(), W("section", FG, [
45256
+ K("div", IG, [C[27] ||= K("h3", null, "发言权", -1), q(T, {
45257
45257
  color: "neutral",
45258
45258
  variant: "subtle"
45259
45259
  }, {
45260
45260
  default: L(() => [J(P(I(n).floor_status(o.value)), 1)]),
45261
45261
  _: 1
45262
45262
  })]),
45263
- K("div", BG, [o.value.floor.holder ? (U(), G(w, {
45263
+ K("div", LG, [o.value.floor.holder ? (U(), G(w, {
45264
45264
  key: 1,
45265
45265
  label: "归还发言权",
45266
45266
  loading: I(i) === "return_floor",
@@ -45277,8 +45277,8 @@ var _H = {
45277
45277
  }, null, 8, ["label", "loading"]))]),
45278
45278
  C[28] ||= K("p", { class: "fine-print" }, "发言或安排保存后自动归还;用户本人可随时留言。", -1)
45279
45279
  ])) : Y("", !0)]),
45280
- K("section", VG, [
45281
- K("div", HG, [C[29] ||= K("h3", null, "当前发言安排", -1), q(T, {
45280
+ K("section", RG, [
45281
+ K("div", zG, [C[29] ||= K("h3", null, "当前发言安排", -1), q(T, {
45282
45282
  color: c.value ? "primary" : "neutral",
45283
45283
  variant: "subtle"
45284
45284
  }, {
@@ -45286,7 +45286,7 @@ var _H = {
45286
45286
  _: 1
45287
45287
  }, 8, ["color"])]),
45288
45288
  s.value ? (U(), W(H, { key: 0 }, [
45289
- K("div", UG, [q(ee, {
45289
+ K("div", BG, [q(ee, {
45290
45290
  src: I(n).identities[s.value.expert]?.icon,
45291
45291
  text: I(n).identities[s.value.expert]?.initials,
45292
45292
  alt: s.value.expert,
@@ -45297,8 +45297,8 @@ var _H = {
45297
45297
  "alt",
45298
45298
  "class"
45299
45299
  ]), K("div", null, [K("strong", null, P(s.value.expert), 1), K("small", null, "发言安排 #" + P(s.value.id), 1)])]),
45300
- K("p", WG, P(s.value.question), 1),
45301
- c.value ? (U(), W("div", GG, [
45300
+ K("p", VG, P(s.value.question), 1),
45301
+ c.value ? (U(), W("div", HG, [
45302
45302
  q(w, {
45303
45303
  icon: "i-lucide-copy",
45304
45304
  label: "复制通知",
@@ -45342,35 +45342,35 @@ var _H = {
45342
45342
  class: "channel-surface-button",
45343
45343
  onClick: C[8] ||= (t) => e.$emit("detail", s.value.answer_id)
45344
45344
  })) : Y("", !0)
45345
- ], 64)) : (U(), W("p", KG, "把下一轮需要回答的问题,交给一位参与者。")),
45346
- c.value ? (U(), W("p", qG, P(I(n).turn_guidance(s.value, o.value)), 1)) : Y("", !0)
45345
+ ], 64)) : (U(), W("p", UG, "把下一轮需要回答的问题,交给一位参与者。")),
45346
+ c.value ? (U(), W("p", WG, P(I(n).turn_guidance(s.value, o.value)), 1)) : Y("", !0)
45347
45347
  ]),
45348
- Array.isArray(o.value.latest_receipts) ? (U(), W("section", JG, [
45348
+ Array.isArray(o.value.latest_receipts) ? (U(), W("section", GG, [
45349
45349
  C[30] ||= K("h3", null, "最新运行回执", -1),
45350
45350
  C[31] ||= K("p", { class: "fine-print" }, "每位参与者最近一条;实际运行结果请查看原文。晚于摘要的回执可能尚未整理。", -1),
45351
- K("div", YG, [(U(!0), W(H, null, B(o.value.latest_receipts, (t) => (U(), G(w, {
45351
+ K("div", KG, [(U(!0), W(H, null, B(o.value.latest_receipts, (t) => (U(), G(w, {
45352
45352
  key: t.id,
45353
45353
  label: `${I(n).display_name(t.author)} #${t.id} · ${new Date(t.created_at).toLocaleString("zh-CN")}${t.id > o.value.state_until ? " · 晚于摘要" : ""}`,
45354
45354
  variant: "link",
45355
45355
  color: "neutral",
45356
45356
  onClick: (n) => e.$emit("detail", t.id)
45357
- }, null, 8, ["label", "onClick"]))), 128)), o.value.latest_receipts.length ? Y("", !0) : (U(), W("span", XG, "尚无运行回执。"))])
45357
+ }, null, 8, ["label", "onClick"]))), 128)), o.value.latest_receipts.length ? Y("", !0) : (U(), W("span", qG, "尚无运行回执。"))])
45358
45358
  ])) : Y("", !0),
45359
- K("div", ZG, [K("a", {
45359
+ K("div", JG, [K("a", {
45360
45360
  href: `${d.value}/turns`,
45361
45361
  target: "_blank",
45362
45362
  rel: "noopener",
45363
45363
  class: "subtle-link"
45364
- }, [C[32] ||= J("发言安排历史 ", -1), q(E, { name: "i-lucide-arrow-up-right" })], 8, QG), q(w, {
45364
+ }, [C[32] ||= J("发言安排历史 ", -1), q(E, { name: "i-lucide-arrow-up-right" })], 8, YG), q(w, {
45365
45365
  icon: "i-lucide-plus",
45366
45366
  label: "安排下一位专家",
45367
45367
  class: "channel-primary-button",
45368
45368
  disabled: !u.value,
45369
45369
  onClick: C[9] ||= (t) => e.$emit("open", "schedule")
45370
45370
  }, null, 8, ["disabled"])]),
45371
- u.value ? Y("", !0) : (U(), W("p", $G, P(l.value ? "话题已暂停或收束,修改阶段后可以继续安排。" : c.value ? "先完成或取消当前安排,再安排下一位。" : o.value.limits?.reached ? "已达到讨论上限,请检查到限处理;需要继续时先暂停并调整参数。" : o.value.floor?.holder === o.value.host ? "请先在议题资料中配置参与专家。" : "主持人领取发言权后可安排下一位。"), 1))
45371
+ u.value ? Y("", !0) : (U(), W("p", XG, P(l.value ? "话题已暂停或收束,修改阶段后可以继续安排。" : c.value ? "先完成或取消当前安排,再安排下一位。" : o.value.limits?.reached ? "已达到讨论上限,请检查到限处理;需要继续时先暂停并调整参数。" : o.value.floor?.holder === o.value.host ? "请先在议题资料中配置参与专家。" : "主持人领取发言权后可安排下一位。"), 1))
45372
45372
  ], 64)) : (U(), W(H, { key: 1 }, [
45373
- K("div", eK, [C[33] ||= K("div", null, [K("h2", null, "接入 AI"), K("p", null, "讨论由本机服务唤醒 AI:在这里启动、修正软件连接或查看参与说明;成员进出在进度看板操作。")], -1), f.value ? (U(), G(T, {
45373
+ K("div", ZG, [C[33] ||= K("div", null, [K("h2", null, "接入 AI"), K("p", null, "讨论由本机服务唤醒 AI:在这里启动、修正软件连接或查看参与说明;成员进出在进度看板操作。")], -1), f.value ? (U(), G(T, {
45374
45374
  key: 0,
45375
45375
  color: o.value.runtime?.status === "running" ? "primary" : "neutral",
45376
45376
  variant: "subtle"
@@ -45378,21 +45378,21 @@ var _H = {
45378
45378
  default: L(() => [J(P(g.value), 1)]),
45379
45379
  _: 1
45380
45380
  }, 8, ["color"])) : Y("", !0)]),
45381
- f.value ? (U(), W("section", tK, [
45381
+ f.value ? (U(), W("section", QG, [
45382
45382
  C[34] ||= K("strong", null, "实际执行进展", -1),
45383
45383
  K("p", null, P(I(n).execution_label(m.value)), 1),
45384
- o.value.runtime?.status === "running" && (!m.value || ["pending", "dispatched"].includes(m.value.status)) ? (U(), W("p", nK, "尚无 AI 进入记录。请核对本机服务及对应软件的登录和工具权限。")) : Y("", !0)
45384
+ o.value.runtime?.status === "running" && (!m.value || ["pending", "dispatched"].includes(m.value.status)) ? (U(), W("p", $G, "尚无 AI 进入记录。请核对本机服务及对应软件的登录和工具权限。")) : Y("", !0)
45385
45385
  ])) : Y("", !0),
45386
- f.value && I(t).launch.available ? (U(), W("section", rK, [
45386
+ f.value && I(t).launch.available ? (U(), W("section", eK, [
45387
45387
  C[37] ||= K("div", { class: "access-section-title" }, [K("h3", null, "从网页启动"), K("span", { class: "fine-print" }, "本机执行")], -1),
45388
- o.value.runtime?.status === "ready" ? (U(), W(H, { key: 0 }, [q(MG, { participants: v.value }, null, 8, ["participants"]), q(w, {
45388
+ o.value.runtime?.status === "ready" ? (U(), W(H, { key: 0 }, [q(kG, { participants: v.value }, null, 8, ["participants"]), q(w, {
45389
45389
  label: "启动讨论",
45390
45390
  icon: "i-lucide-play",
45391
45391
  class: "channel-primary-button",
45392
45392
  loading: I(i) === "launch_current_room",
45393
45393
  onClick: C[10] ||= (e) => I(r)("launch_current_room")
45394
- }, null, 8, ["loading"])], 64)) : o.value.runtime?.status === "paused" && !o.value.archived && !I(t).launch.remote ? (U(), W("div", iK, [
45395
- K("div", aK, [C[35] ||= K("h3", null, "修正本场软件连接", -1), q(w, {
45394
+ }, null, 8, ["loading"])], 64)) : o.value.runtime?.status === "paused" && !o.value.archived && !I(t).launch.remote ? (U(), W("div", tK, [
45395
+ K("div", nK, [C[35] ||= K("h3", null, "修正本场软件连接", -1), q(w, {
45396
45396
  label: "读取本场配置",
45397
45397
  variant: "outline",
45398
45398
  color: "neutral",
@@ -45401,7 +45401,7 @@ var _H = {
45401
45401
  onClick: C[11] ||= (e) => I(r)("load_room_configuration")
45402
45402
  }, null, 8, ["loading"])]),
45403
45403
  C[36] ||= K("div", { class: "access-repair-description" }, [K("p", null, "修正软件路径,或切换 Codex 的 App / CLI 接入。保留原房间、发言进度和会话,保存后到进度看板重启。"), K("p", { class: "fine-print" }, "App 需保持运行,模型与文件权限在 App 内设置。切回 CLI 前须让 App 释放原聊天;未释放时执行仍会暂停。")], -1),
45404
- h.value ? (U(), W("div", oK, [
45404
+ h.value ? (U(), W("div", rK, [
45405
45405
  (U(!0), W(H, null, B(h.value.participants, (e, t) => (U(), W("div", {
45406
45406
  key: t,
45407
45407
  class: "form-two-columns"
@@ -45436,19 +45436,19 @@ var _H = {
45436
45436
  loading: I(i) === "save_room_configuration",
45437
45437
  onClick: C[12] ||= (e) => I(r)("save_room_configuration")
45438
45438
  }, null, 8, ["loading"]),
45439
- h.value.notice ? (U(), W("p", sK, P(h.value.notice), 1)) : Y("", !0)
45439
+ h.value.notice ? (U(), W("p", iK, P(h.value.notice), 1)) : Y("", !0)
45440
45440
  ])) : Y("", !0),
45441
- I(t).launch.repair_error ? (U(), W("p", cK, P(I(t).launch.repair_error), 1)) : Y("", !0)
45442
- ])) : o.value.runtime?.status === "paused" && I(t).launch.remote ? (U(), W("p", lK, "讨论已暂停,可在进度看板重启。线上连接暂不提供已登记房间的软件路径修正。")) : o.value.runtime?.status === "running" ? (U(), W("p", uK, "讨论正在运行。")) : (U(), W("p", dK, "本场讨论已停止或结束,已有记录保留。")),
45441
+ I(t).launch.repair_error ? (U(), W("p", aK, P(I(t).launch.repair_error), 1)) : Y("", !0)
45442
+ ])) : o.value.runtime?.status === "paused" && I(t).launch.remote ? (U(), W("p", oK, "讨论已暂停,可在进度看板重启。线上连接暂不提供已登记房间的软件路径修正。")) : o.value.runtime?.status === "running" ? (U(), W("p", sK, "讨论正在运行。")) : (U(), W("p", cK, "本场讨论已停止或结束,已有记录保留。")),
45443
45443
  C[38] ||= K("p", { class: "access-host-entry" }, [
45444
45444
  J("另一种入口:在 AI 工具对话中调用 "),
45445
45445
  K("code", null, "discuss-host"),
45446
45446
  J(",由当前会话主持。")
45447
45447
  ], -1)
45448
- ])) : f.value ? (U(), W("section", fK, [q(MG, { participants: v.value }, null, 8, ["participants"]), K("details", null, [
45448
+ ])) : f.value ? (U(), W("section", lK, [q(kG, { participants: v.value }, null, 8, ["participants"]), K("details", null, [
45449
45449
  C[50] ||= K("summary", null, "手动下载与登记配置", -1),
45450
- K("div", pK, [C[40] ||= K("h3", null, "首次接入", -1), K("a", mK, [C[39] ||= J("配置说明 ", -1), q(E, { name: "i-lucide-arrow-up-right" })])]),
45451
- K("ol", hK, [
45450
+ K("div", uK, [C[40] ||= K("h3", null, "首次接入", -1), K("a", dK, [C[39] ||= J("配置说明 ", -1), q(E, { name: "i-lucide-arrow-up-right" })])]),
45451
+ K("ol", fK, [
45452
45452
  K("li", null, [
45453
45453
  C[41] ||= K("span", { class: "access-step-number" }, "1", -1),
45454
45454
  C[42] ||= K("div", null, [K("h4", null, "下载接入配置"), K("p", null, "包含当前房间信息。下载后,补齐本机软件路径与会话配置。")], -1),
@@ -45464,7 +45464,7 @@ var _H = {
45464
45464
  K("li", null, [C[45] ||= K("span", { class: "access-step-number" }, "2", -1), K("div", null, [
45465
45465
  C[43] ||= K("h4", null, "登记到本机服务", -1),
45466
45466
  C[44] ||= K("p", null, "在下载文件所在目录执行;也可以将文件名换成完整路径。", -1),
45467
- K("div", gK, [K("code", null, P(_.value), 1), q(w, {
45467
+ K("div", pK, [K("code", null, P(_.value), 1), q(w, {
45468
45468
  icon: "i-lucide-copy",
45469
45469
  color: "neutral",
45470
45470
  variant: "ghost",
@@ -45475,7 +45475,7 @@ var _H = {
45475
45475
  K("li", null, [C[49] ||= K("span", { class: "access-step-number" }, "3", -1), K("div", null, [
45476
45476
  C[47] ||= K("h4", null, "启动服务,保持终端打开", -1),
45477
45477
  C[48] ||= K("p", null, "启动服务不会自动开始讨论。已暂停的讨论可在进度看板点“重启”。", -1),
45478
- K("div", _K, [C[46] ||= K("code", null, "codiscuss", -1), q(w, {
45478
+ K("div", mK, [C[46] ||= K("code", null, "codiscuss", -1), q(w, {
45479
45479
  icon: "i-lucide-copy",
45480
45480
  color: "neutral",
45481
45481
  variant: "ghost",
@@ -45485,10 +45485,10 @@ var _H = {
45485
45485
  ])])
45486
45486
  ])
45487
45487
  ])])) : Y("", !0),
45488
- !f.value || !I(t).launch.available ? (U(), W("details", vK, [K("summary", null, [C[51] ||= K("span", null, [J("项目与工作目录 "), K("small", null, "可选")], -1), q(E, {
45488
+ !f.value || !I(t).launch.available ? (U(), W("details", hK, [K("summary", null, [C[51] ||= K("span", null, [J("项目与工作目录 "), K("small", null, "可选")], -1), q(E, {
45489
45489
  name: "i-lucide-chevron-down",
45490
45490
  class: "disclosure-icon"
45491
- })]), K("div", yK, [C[52] ||= K("p", null, "指定 AI 使用的本机项目和目录,留空使用默认位置。仅保存在本机配置中。", -1), K("div", bK, [q(O, { label: "AI 软件中的项目" }, {
45491
+ })]), K("div", gK, [C[52] ||= K("p", null, "指定 AI 使用的本机项目和目录,留空使用默认位置。仅保存在本机配置中。", -1), K("div", _K, [q(O, { label: "AI 软件中的项目" }, {
45492
45492
  default: L(() => [q(k, {
45493
45493
  "model-value": I(t).fields["runtime-project"],
45494
45494
  placeholder: "项目名称",
@@ -45511,9 +45511,9 @@ var _H = {
45511
45511
  }, [K("summary", null, [K("span", null, P(f.value ? "成员参与说明与阅读地址" : "复制指令,交给对应的 AI"), 1), q(E, {
45512
45512
  name: "i-lucide-chevron-down",
45513
45513
  class: "disclosure-icon"
45514
- })]), K("div", SK, [
45515
- y.value || b.value ? (U(), W("p", CK, P([y.value && "手动成员:复制启动指令,交给你自己的 AI 会话。", b.value && "网页成员只读,回答由你或授权主持人代发。"].filter(Boolean).join("")), 1)) : Y("", !0),
45516
- K("ul", wK, [(U(!0), W(H, null, B(p.value.members || [], (e) => (U(), W("li", { key: e.name }, [
45514
+ })]), K("div", yK, [
45515
+ y.value || b.value ? (U(), W("p", bK, P([y.value && "手动成员:复制启动指令,交给你自己的 AI 会话。", b.value && "网页成员只读,回答由你或授权主持人代发。"].filter(Boolean).join("")), 1)) : Y("", !0),
45516
+ K("ul", xK, [(U(!0), W(H, null, B(p.value.members || [], (e) => (U(), W("li", { key: e.name }, [
45517
45517
  q(ee, {
45518
45518
  src: I(n).identities[e.name]?.icon,
45519
45519
  text: I(n).identities[e.name]?.initials,
@@ -45526,16 +45526,16 @@ var _H = {
45526
45526
  "alt",
45527
45527
  "class"
45528
45528
  ]),
45529
- K("div", TK, [
45529
+ K("div", SK, [
45530
45530
  K("strong", null, P(e.name), 1),
45531
45531
  K("span", null, P(e.access === "online" ? "网页代发" : e.access === "runner" ? "本机唤醒 · 自行发言" : "手动接入 · 自行发言"), 1),
45532
45532
  e.access === "manual" ? (U(), W("small", {
45533
45533
  key: 0,
45534
45534
  class: M({ "is-registered": (o.value.members || []).find((t) => t.name === e.name)?.registered_at })
45535
45535
  }, P((o.value.members || []).find((t) => t.name === e.name)?.registered_at ? "已注册" : "待注册"), 3)) : Y("", !0),
45536
- e.access !== "online" && !e.available ? (U(), W("small", EK, "当前浏览器没有此成员的私有配置")) : Y("", !0)
45536
+ e.access !== "online" && !e.available ? (U(), W("small", CK, "当前浏览器没有此成员的私有配置")) : Y("", !0)
45537
45537
  ]),
45538
- K("div", DK, [e.access === "manual" ? (U(), W(H, { key: 0 }, [q(w, {
45538
+ K("div", wK, [e.access === "manual" ? (U(), W(H, { key: 0 }, [q(w, {
45539
45539
  icon: "i-lucide-rocket",
45540
45540
  label: "复制启动指令",
45541
45541
  "aria-label": `复制 ${e.name} 含凭证的启动指令`,
@@ -45589,25 +45589,25 @@ var _H = {
45589
45589
  "onClick"
45590
45590
  ])], 64))])
45591
45591
  ]))), 128))]),
45592
- p.value.error ? (U(), W("p", OK, P(p.value.error), 1)) : p.value.notice ? (U(), W("p", kK, P(p.value.notice), 1)) : Y("", !0),
45592
+ p.value.error ? (U(), W("p", TK, P(p.value.error), 1)) : p.value.notice ? (U(), W("p", EK, P(p.value.notice), 1)) : Y("", !0),
45593
45593
  C[54] ||= K("p", { class: "fine-print" }, "复制说明或下载配置不代表 AI 已接入,请以实际回答和运行记录为准。", -1),
45594
- K("details", AK, [C[53] ||= K("summary", null, "查看房间阅读地址", -1), K("div", jK, [K("code", null, P(d.value), 1), q(w, {
45594
+ K("details", DK, [C[53] ||= K("summary", null, "查看房间阅读地址", -1), K("div", OK, [K("code", null, P(d.value), 1), q(w, {
45595
45595
  icon: "i-lucide-copy",
45596
45596
  color: "neutral",
45597
45597
  variant: "ghost",
45598
45598
  "aria-label": "复制阅读地址",
45599
45599
  onClick: C[18] ||= (e) => I(r)("copy", d.value)
45600
45600
  })])]),
45601
- d.value.includes("127.0.0.1") || d.value.includes("localhost") ? (U(), W("p", MK, "本机地址仅本机可访问。在线 AI 需要公网阅读地址,或由用户提供材料。")) : Y("", !0)
45602
- ])], 8, xK),
45603
- o.value.limits ? (U(), W("details", NK, [K("summary", null, [
45601
+ d.value.includes("127.0.0.1") || d.value.includes("localhost") ? (U(), W("p", kK, "本机地址仅本机可访问。在线 AI 需要公网阅读地址,或由用户提供材料。")) : Y("", !0)
45602
+ ])], 8, vK),
45603
+ o.value.limits ? (U(), W("details", AK, [K("summary", null, [
45604
45604
  C[55] ||= K("span", null, "讨论上限与进度", -1),
45605
- K("span", PK, P(S.value), 1),
45605
+ K("span", jK, P(S.value), 1),
45606
45606
  q(E, {
45607
45607
  name: "i-lucide-chevron-down",
45608
45608
  class: "disclosure-icon"
45609
45609
  })
45610
- ]), K("div", FK, [K("p", null, P(I(n).limits_label(o.value.limits)), 1), K("div", IK, [q(w, {
45610
+ ]), K("div", MK, [K("p", null, P(I(n).limits_label(o.value.limits)), 1), K("div", NK, [q(w, {
45611
45611
  icon: "i-lucide-pencil",
45612
45612
  label: "编辑讨论上限",
45613
45613
  variant: "outline",
@@ -45632,7 +45632,7 @@ var _H = {
45632
45632
  ]);
45633
45633
  };
45634
45634
  }
45635
- }, [["__scopeId", "data-v-ff9406dc"]]), RK = {
45635
+ }, [["__scopeId", "data-v-ff9406dc"]]), FK = {
45636
45636
  slots: {
45637
45637
  overlay: "fixed inset-0",
45638
45638
  content: "bg-default divide-y divide-default flex flex-col focus:outline-none",
@@ -45674,7 +45674,7 @@ var _H = {
45674
45674
  fullscreen: !1,
45675
45675
  class: { content: "top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 max-h-[calc(100dvh-2rem)] sm:max-h-[calc(100dvh-4rem)] overflow-hidden" }
45676
45676
  }]
45677
- }, zK = {
45677
+ }, IK = {
45678
45678
  __name: "Modal",
45679
45679
  props: {
45680
45680
  title: {
@@ -45765,7 +45765,7 @@ var _H = {
45765
45765
  let n = e, r = t, i = Aa(), a = AE("modal", n), { t: o } = th(), s = Cm(), c = jE(om(a, "open", "defaultOpen", "modal", "unmountOnHide"), r), l = SE(/* @__PURE__ */ Sn(() => a.portal)), u = /* @__PURE__ */ Sn(() => a.content), d = Z(() => a.dismissible ? { pointerDownOutside: (e) => jV(e, { scrollable: a.scrollable }) } : ["interactOutside", "escapeKeyDown"].reduce((e, t) => (e[t] = (e) => {
45766
45766
  e.preventDefault(), r("close:prevent");
45767
45767
  }, e), {})), [f, p] = _m(), m = Z(() => oA({
45768
- extend: RK,
45768
+ extend: FK,
45769
45769
  ...s.ui?.modal || {}
45770
45770
  })({
45771
45771
  transition: a.transition,
@@ -45890,10 +45890,10 @@ var _H = {
45890
45890
  _: 3
45891
45891
  }, 16));
45892
45892
  }
45893
- }, BK = { slots: {
45893
+ }, LK = { slots: {
45894
45894
  root: "",
45895
45895
  content: "data-[state=open]:animate-[collapsible-down_200ms_var(--ease-out)] data-[state=closed]:animate-[collapsible-up_200ms_var(--ease-out)] data-[state=closed]:overflow-hidden"
45896
- } }, VK = {
45896
+ } }, RK = {
45897
45897
  __name: "Collapsible",
45898
45898
  props: {
45899
45899
  as: {
@@ -45929,7 +45929,7 @@ var _H = {
45929
45929
  emits: ["update:open"],
45930
45930
  setup(e, { emit: t }) {
45931
45931
  let n = e, r = t, i = Aa(), a = AE("collapsible", n), o = Cm(), s = jE(om(a, "as", "defaultOpen", "open", "disabled", "unmountOnHide"), r), c = Z(() => oA({
45932
- extend: BK,
45932
+ extend: LK,
45933
45933
  ...o.ui?.collapsible || {}
45934
45934
  })());
45935
45935
  return (e, t) => (U(), G(I(Kg), X(I(s), {
@@ -45952,7 +45952,7 @@ var _H = {
45952
45952
  _: 3
45953
45953
  }, 16, ["class"]));
45954
45954
  }
45955
- }, HK = {
45955
+ }, zK = {
45956
45956
  slots: {
45957
45957
  root: "relative flex items-start",
45958
45958
  container: "flex items-center",
@@ -46340,7 +46340,7 @@ var _H = {
46340
46340
  variant: "list",
46341
46341
  indicator: "start"
46342
46342
  }
46343
- }, UK = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
46343
+ }, BK = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
46344
46344
  __name: "Checkbox",
46345
46345
  props: {
46346
46346
  as: {
@@ -46434,7 +46434,7 @@ var _H = {
46434
46434
  let { "data-state": e, ...t } = C;
46435
46435
  return t;
46436
46436
  }), T = Z(() => oA({
46437
- extend: HK,
46437
+ extend: zK,
46438
46438
  ...o.ui?.checkbox || {}
46439
46439
  })({
46440
46440
  size: b.value,
@@ -46525,22 +46525,22 @@ var _H = {
46525
46525
  "class"
46526
46526
  ]));
46527
46527
  }
46528
- }), WK = {
46528
+ }), VK = {
46529
46529
  class: "limit-picker",
46530
46530
  role: "group",
46531
46531
  "aria-label": "讨论轮次和时长"
46532
- }, GK = { class: "limit-field-heading" }, KK = ["for"], qK = [
46532
+ }, HK = { class: "limit-field-heading" }, UK = ["for"], WK = [
46533
46533
  "aria-pressed",
46534
46534
  "aria-label",
46535
46535
  "onClick"
46536
- ], JK = [
46536
+ ], GK = [
46537
46537
  "id",
46538
46538
  "disabled",
46539
46539
  "aria-label"
46540
- ], YK = { key: 0 }, XK = {
46540
+ ], KK = { key: 0 }, qK = {
46541
46541
  key: 1,
46542
46542
  class: "limit-trigger-value"
46543
- }, ZK = { class: "limit-editor" }, QK = { class: "limit-editor-heading" }, $K = ["aria-label", "onClick"], eq = { class: "limit-columns" }, tq = [
46543
+ }, JK = { class: "limit-editor" }, YK = { class: "limit-editor-heading" }, XK = ["aria-label", "onClick"], ZK = { class: "limit-columns" }, QK = [
46544
46544
  "onKeydown",
46545
46545
  "onWheel",
46546
46546
  "onPointerdown",
@@ -46548,16 +46548,16 @@ var _H = {
46548
46548
  "onPointerup",
46549
46549
  "onPointercancel",
46550
46550
  "onLostpointercapture"
46551
- ], nq = [
46551
+ ], $K = [
46552
46552
  "aria-label",
46553
46553
  "aria-valuemin",
46554
46554
  "aria-valuemax",
46555
46555
  "aria-valuenow",
46556
46556
  "aria-valuetext"
46557
- ], rq = {
46557
+ ], eq = {
46558
46558
  class: "limit-wheel-rows",
46559
46559
  "aria-hidden": "true"
46560
- }, iq = { class: "limit-exact-value" }, aq = [
46560
+ }, tq = { class: "limit-exact-value" }, nq = [
46561
46561
  "min",
46562
46562
  "max",
46563
46563
  "value",
@@ -46566,12 +46566,12 @@ var _H = {
46566
46566
  "onInput",
46567
46567
  "onBlur",
46568
46568
  "onKeydown"
46569
- ], oq = { "aria-hidden": "true" };
46570
- function sq(e) {
46569
+ ], rq = { "aria-hidden": "true" };
46570
+ function iq(e) {
46571
46571
  let t = Math.floor(e / 60), n = e % 60;
46572
46572
  return [t && `${t} 小时`, n && `${n} 分钟`].filter(Boolean).join(" ") || "0 分钟";
46573
46573
  }
46574
- var cq = /*#__PURE__*/ jH({
46574
+ var aq = /*#__PURE__*/ jH({
46575
46575
  __name: "LimitPicker",
46576
46576
  props: {
46577
46577
  rounds: {
@@ -46635,7 +46635,7 @@ var cq = /*#__PURE__*/ jH({
46635
46635
  target: null,
46636
46636
  hand: null,
46637
46637
  pointer: null
46638
- }))), u = 0, d = 0, f = (e, t, n = 0) => Math.min(t, Math.max(n, e)), p = (e) => f(Math.round(e.x), e.max, e.min), m = (e) => l.filter((t) => t.field === e.key), h = (e) => c.find((t) => t.key === e.field), g = (e) => e.key === "rounds" ? `${e.selected} 轮` : sq(e.selected), _ = (e, t, n) => -((2 * Math.PI * n) ** 2) * e - 4 * Math.PI * n * t;
46638
+ }))), u = 0, d = 0, f = (e, t, n = 0) => Math.min(t, Math.max(n, e)), p = (e) => f(Math.round(e.x), e.max, e.min), m = (e) => l.filter((t) => t.field === e.key), h = (e) => c.find((t) => t.key === e.field), g = (e) => e.key === "rounds" ? `${e.selected} 轮` : iq(e.selected), _ = (e, t, n) => -((2 * Math.PI * n) ** 2) * e - 4 * Math.PI * n * t;
46639
46639
  function v(e, t) {
46640
46640
  E(e, t), e.selected = e.x, e.draft = String(e.selected);
46641
46641
  }
@@ -46772,10 +46772,10 @@ var cq = /*#__PURE__*/ jH({
46772
46772
  });
46773
46773
  }, { immediate: !0 }), ta(() => cancelAnimationFrame(u)), t({ settle: oe }), (e, t) => {
46774
46774
  let n = sA, r = sH;
46775
- return U(), W("div", WK, [(U(!0), W(H, null, B(c, (e) => (U(), W("div", {
46775
+ return U(), W("div", VK, [(U(!0), W(H, null, B(c, (e) => (U(), W("div", {
46776
46776
  key: e.key,
46777
46777
  class: "limit-field"
46778
- }, [K("div", GK, [K("label", { for: `limit-trigger-${e.key}` }, P(e.label), 9, KK), K("button", {
46778
+ }, [K("div", HK, [K("label", { for: `limit-trigger-${e.key}` }, P(e.label), 9, UK), K("button", {
46779
46779
  type: "button",
46780
46780
  class: "limit-unlimited",
46781
46781
  "aria-pressed": e.unlimited,
@@ -46784,7 +46784,7 @@ var cq = /*#__PURE__*/ jH({
46784
46784
  }, [q(n, {
46785
46785
  name: "i-lucide-infinity",
46786
46786
  "aria-hidden": "true"
46787
- }), t[0] ||= K("span", null, "不限", -1)], 8, qK)]), q(r, {
46787
+ }), t[0] ||= K("span", null, "不限", -1)], 8, WK)]), q(r, {
46788
46788
  open: e.open,
46789
46789
  content: {
46790
46790
  align: e.key === "rounds" ? "start" : "end",
@@ -46794,12 +46794,12 @@ var cq = /*#__PURE__*/ jH({
46794
46794
  ui: { content: `limit-popover-content ${e.key === "minutes" ? "limit-duration-content" : ""}` },
46795
46795
  "onUpdate:open": (t) => x(e, t)
46796
46796
  }, {
46797
- content: L(() => [K("div", ZK, [K("div", QK, [K("span", null, P(e.label), 1), K("button", {
46797
+ content: L(() => [K("div", JK, [K("div", YK, [K("span", null, P(e.label), 1), K("button", {
46798
46798
  type: "button",
46799
46799
  class: "limit-close",
46800
46800
  "aria-label": `关闭${e.label}选择`,
46801
46801
  onClick: (t) => x(e, !1)
46802
- }, [q(n, { name: "i-lucide-x" })], 8, $K)]), K("div", eq, [(U(!0), W(H, null, B(m(e), (n) => (U(), W("div", {
46802
+ }, [q(n, { name: "i-lucide-x" })], 8, XK)]), K("div", ZK, [(U(!0), W(H, null, B(m(e), (n) => (U(), W("div", {
46803
46803
  key: n.key,
46804
46804
  class: M(["limit-track", { "is-editing": n.editing }]),
46805
46805
  onKeydown: (e) => te(n, e),
@@ -46821,11 +46821,11 @@ var cq = /*#__PURE__*/ jH({
46821
46821
  }, [t[1] ||= K("div", {
46822
46822
  class: "limit-selection",
46823
46823
  "aria-hidden": "true"
46824
- }, null, -1), K("div", rq, [(U(!0), W(H, null, B(A(n), (e) => (U(), W("span", {
46824
+ }, null, -1), K("div", eq, [(U(!0), W(H, null, B(A(n), (e) => (U(), W("span", {
46825
46825
  key: e.index,
46826
46826
  class: M(["limit-wheel-row", { "is-current": e.index === p(n) }]),
46827
46827
  style: j(e.style)
46828
- }, P(e.text), 7))), 128))])], 8, nq), K("div", iq, [K("input", {
46828
+ }, P(e.text), 7))), 128))])], 8, $K), K("div", tq, [K("input", {
46829
46829
  type: "number",
46830
46830
  inputmode: "numeric",
46831
46831
  min: n.min,
@@ -46839,14 +46839,14 @@ var cq = /*#__PURE__*/ jH({
46839
46839
  onKeydown: fu(uu((t) => {
46840
46840
  C(n), x(e, !1);
46841
46841
  }, ["stop", "prevent"]), ["enter"])
46842
- }, null, 40, aq), K("span", oq, P(n.unit), 1)])], 42, tq))), 128))])])]),
46842
+ }, null, 40, nq), K("span", rq, P(n.unit), 1)])], 42, QK))), 128))])])]),
46843
46843
  default: L(() => [K("button", {
46844
46844
  id: `limit-trigger-${e.key}`,
46845
46845
  type: "button",
46846
46846
  class: "limit-trigger",
46847
46847
  disabled: e.unlimited,
46848
46848
  "aria-label": `${e.label}:${e.unlimited ? "不限" : g(e)}`
46849
- }, [e.unlimited ? (U(), W("span", YK, "不限" + P(e.key === "rounds" ? "轮次" : "时长"), 1)) : (U(), W("span", XK, [(U(!0), W(H, null, B(g(e).match(/\d+ \S+/g), (e) => (U(), W("span", { key: e }, P(e), 1))), 128))])), q(n, { name: "i-lucide-chevrons-up-down" })], 8, JK)]),
46849
+ }, [e.unlimited ? (U(), W("span", KK, "不限" + P(e.key === "rounds" ? "轮次" : "时长"), 1)) : (U(), W("span", qK, [(U(!0), W(H, null, B(g(e).match(/\d+ \S+/g), (e) => (U(), W("span", { key: e }, P(e), 1))), 128))])), q(n, { name: "i-lucide-chevrons-up-down" })], 8, GK)]),
46850
46850
  _: 2
46851
46851
  }, 1032, [
46852
46852
  "open",
@@ -46856,16 +46856,16 @@ var cq = /*#__PURE__*/ jH({
46856
46856
  ])]))), 128))]);
46857
46857
  };
46858
46858
  }
46859
- }, [["__scopeId", "data-v-859a6440"]]), lq = { class: "effort-field" }, uq = {
46859
+ }, [["__scopeId", "data-v-859a6440"]]), oq = { class: "effort-field" }, sq = {
46860
46860
  key: 0,
46861
46861
  class: "effort-caption",
46862
46862
  "aria-hidden": "true"
46863
- }, dq = [
46863
+ }, cq = [
46864
46864
  "aria-label",
46865
46865
  "aria-valuemax",
46866
46866
  "aria-valuenow",
46867
46867
  "aria-valuetext"
46868
- ], fq = ["title"], pq = 4.5, mq = 6, hq = 8, gq = 1 / 240, _q = .001, vq = .01, yq = .05, bq = 10, xq = 4, Sq = /*#__PURE__*/ jH({
46868
+ ], lq = ["title"], uq = 4.5, dq = 6, fq = 8, pq = 1 / 240, mq = .001, hq = .01, gq = .05, _q = 10, vq = 4, yq = /*#__PURE__*/ jH({
46869
46869
  __name: "EffortSlider",
46870
46870
  props: {
46871
46871
  items: {
@@ -46895,18 +46895,18 @@ var cq = /*#__PURE__*/ jH({
46895
46895
  pointer: null
46896
46896
  }), l = Z(() => Math.min(o.value, Math.max(0, c.x)) / o.value), u = Z(() => Math.round(Math.min(o.value, Math.max(0, c.x)))), d = 0, f = 0, p = 0, m = 0, h = !1, g = (e) => Math.min(o.value, Math.max(0, e)), _ = (e, t, n) => -((2 * Math.PI * n) ** 2) * e - 4 * Math.PI * n * t;
46897
46897
  function v(e) {
46898
- let t = c.hand ?? c.target, n = c.hand === null ? pq : mq, r = (e, r) => _(e - t, r, n) + (e < 0 || e > o.value ? _(e - g(e), r, hq) : 0), i = c.x, a = c.v, s = r(i, a), l = a + s * e / 2, u = r(i + a * e / 2, l), d = a + u * e / 2, f = r(i + l * e / 2, d), p = a + f * e, m = r(i + d * e, p);
46898
+ let t = c.hand ?? c.target, n = c.hand === null ? uq : dq, r = (e, r) => _(e - t, r, n) + (e < 0 || e > o.value ? _(e - g(e), r, fq) : 0), i = c.x, a = c.v, s = r(i, a), l = a + s * e / 2, u = r(i + a * e / 2, l), d = a + u * e / 2, f = r(i + l * e / 2, d), p = a + f * e, m = r(i + d * e, p);
46899
46899
  c.x += e * (a + 2 * l + 2 * d + p) / 6, c.v += e * (s + 2 * u + 2 * f + m) / 6;
46900
46900
  }
46901
46901
  function y(e) {
46902
46902
  d = 0;
46903
- let t = Math.min(yq, (e - f) / 1e3);
46903
+ let t = Math.min(gq, (e - f) / 1e3);
46904
46904
  for (f = e; t > 0;) {
46905
- let e = Math.min(gq, t);
46905
+ let e = Math.min(pq, t);
46906
46906
  v(e), t -= e;
46907
46907
  }
46908
46908
  let n = c.hand ?? c.target;
46909
- Math.abs(c.x - n) < _q && Math.abs(c.v) < vq ? (c.x = n, c.v = 0) : d = requestAnimationFrame(y);
46909
+ Math.abs(c.x - n) < mq && Math.abs(c.v) < hq ? (c.x = n, c.v = 0) : d = requestAnimationFrame(y);
46910
46910
  }
46911
46911
  function b() {
46912
46912
  i.value ? (cancelAnimationFrame(d), d = 0, c.x = c.hand ?? c.target, c.v = 0) : d ||= (f = performance.now(), requestAnimationFrame(y));
@@ -46916,17 +46916,17 @@ var cq = /*#__PURE__*/ jH({
46916
46916
  }
46917
46917
  function S(e) {
46918
46918
  let t = a.value.getBoundingClientRect();
46919
- return g((e.clientX - t.left - bq) / Math.max(1, t.width - 20) * o.value);
46919
+ return g((e.clientX - t.left - _q) / Math.max(1, t.width - 20) * o.value);
46920
46920
  }
46921
46921
  function C(e) {
46922
46922
  e.isPrimary && e.button === 0 && c.pointer === null && (e.preventDefault(), a.value.focus(), a.value.setPointerCapture(e.pointerId), c.pointer = e.pointerId, p = e.clientX, h = !1, m = e.target.closest(".effort-slider-thumb") ? c.x - S(e) : 0, c.hand = g(S(e) + m), b());
46923
46923
  }
46924
46924
  function w(e) {
46925
- c.pointer === e.pointerId && (h ||= Math.abs(e.clientX - p) > xq, c.hand = g(S(e) + m), b());
46925
+ c.pointer === e.pointerId && (h ||= Math.abs(e.clientX - p) > vq, c.hand = g(S(e) + m), b());
46926
46926
  }
46927
46927
  function T(e) {
46928
46928
  if (c.pointer !== e.pointerId) return;
46929
- let t = h ? c.x + c.v / (4 * Math.PI * pq) : c.hand;
46929
+ let t = h ? c.x + c.v / (4 * Math.PI * uq) : c.hand;
46930
46930
  c.hand = null, c.pointer = null, x(t);
46931
46931
  }
46932
46932
  function ee(e) {
@@ -46949,7 +46949,7 @@ var cq = /*#__PURE__*/ jH({
46949
46949
  i
46950
46950
  ], () => {
46951
46951
  c.target = s.value, b();
46952
- }), ta(() => cancelAnimationFrame(d)), (t, n) => (U(), W("div", lq, [e.caption ? (U(), W("div", uq, [K("span", null, P(e.caption), 1), q(Cc, {
46952
+ }), ta(() => cancelAnimationFrame(d)), (t, n) => (U(), W("div", oq, [e.caption ? (U(), W("div", sq, [K("span", null, P(e.caption), 1), q(Cc, {
46953
46953
  name: I(i) ? "" : "effort-value",
46954
46954
  mode: "out-in"
46955
46955
  }, {
@@ -46987,59 +46987,59 @@ var cq = /*#__PURE__*/ jH({
46987
46987
  "aria-hidden": "true",
46988
46988
  style: j({ "--at": t / o.value }),
46989
46989
  title: e.label
46990
- }, null, 14, fq))), 128)),
46990
+ }, null, 14, lq))), 128)),
46991
46991
  n[1] ||= K("span", {
46992
46992
  class: "effort-slider-thumb",
46993
46993
  "aria-hidden": "true"
46994
46994
  }, null, -1)
46995
- ], 46, dq)]));
46995
+ ], 46, cq)]));
46996
46996
  }
46997
- }, [["__scopeId", "data-v-f27db748"]]), Cq = ["data-identity", "data-face"], wq = ["inert", "aria-hidden"], Tq = { class: "expert-card-identity" }, Eq = {
46997
+ }, [["__scopeId", "data-v-f27db748"]]), bq = ["data-identity", "data-face"], xq = ["inert", "aria-hidden"], Sq = { class: "expert-card-identity" }, Cq = {
46998
46998
  key: 0,
46999
46999
  class: "expert-card-badge"
47000
- }, Dq = { class: "expert-card-facts" }, Oq = ["title"], kq = {
47000
+ }, wq = { class: "expert-card-facts" }, Tq = ["title"], Eq = {
47001
47001
  key: 0,
47002
47002
  "aria-hidden": "true"
47003
- }, Aq = {
47003
+ }, Dq = {
47004
47004
  key: 0,
47005
47005
  class: "expert-card-manual"
47006
- }, jq = { key: 0 }, Mq = {
47006
+ }, Oq = { key: 0 }, kq = {
47007
47007
  key: 1,
47008
47008
  class: "expert-card-flip"
47009
- }, Nq = ["aria-label"], Pq = [
47009
+ }, Aq = ["aria-label"], jq = [
47010
47010
  "aria-checked",
47011
47011
  "tabindex",
47012
47012
  "data-mode",
47013
47013
  "onClick"
47014
- ], Fq = { class: "expert-card-tools" }, Iq = [
47014
+ ], Mq = { class: "expert-card-tools" }, Nq = [
47015
47015
  "aria-pressed",
47016
47016
  "aria-label",
47017
47017
  "title"
47018
- ], Lq = ["aria-label"], Rq = ["inert", "aria-hidden"], zq = { class: "expert-card-back-body" }, Bq = { class: "expert-card-heading" }, Vq = ["role"], Hq = {
47018
+ ], Pq = ["aria-label"], Fq = ["inert", "aria-hidden"], Iq = { class: "expert-card-back-body" }, Lq = { class: "expert-card-heading" }, Rq = ["role"], zq = {
47019
47019
  key: 1,
47020
47020
  class: "expert-card-field"
47021
- }, Uq = {
47021
+ }, Bq = {
47022
47022
  key: 2,
47023
47023
  class: "expert-card-field"
47024
- }, Wq = {
47024
+ }, Vq = {
47025
47025
  key: 3,
47026
47026
  class: "expert-card-check"
47027
- }, Gq = {
47027
+ }, Hq = {
47028
47028
  key: 4,
47029
47029
  class: "expert-card-field"
47030
- }, Kq = ["aria-label"], qq = ["aria-checked", "onClick"], Jq = { class: "expert-card-field" }, Yq = {
47030
+ }, Uq = ["aria-label"], Wq = ["aria-checked", "onClick"], Gq = { class: "expert-card-field" }, Kq = {
47031
47031
  key: 0,
47032
47032
  class: "expert-card-catalog"
47033
- }, Xq = {
47033
+ }, qq = {
47034
47034
  key: 1,
47035
47035
  class: "expert-card-effort"
47036
- }, Zq = {
47036
+ }, Jq = {
47037
47037
  key: 2,
47038
47038
  class: "expert-card-note"
47039
- }, Qq = ["aria-label", "disabled"], $q = {
47039
+ }, Yq = ["aria-label", "disabled"], Xq = {
47040
47040
  key: 7,
47041
47041
  class: "expert-card-note"
47042
- }, eJ = { class: "expert-card-flip-actions" }, tJ = ["aria-label"], nJ = ["aria-label"], rJ = 180, iJ = "[role='listbox'], [role='menu'], [data-reka-popper-content-wrapper]", aJ = /*#__PURE__*/ jH({
47042
+ }, Zq = { class: "expert-card-flip-actions" }, Qq = ["aria-label"], $q = ["aria-label"], eJ = 180, tJ = "[role='listbox'], [role='menu'], [data-reka-popper-content-wrapper]", nJ = /*#__PURE__*/ jH({
47043
47043
  __name: "ExpertCard",
47044
47044
  props: {
47045
47045
  name: {
@@ -47192,7 +47192,7 @@ var cq = /*#__PURE__*/ jH({
47192
47192
  });
47193
47193
  }
47194
47194
  function he(e) {
47195
- let t = e >= rJ / 2;
47195
+ let t = e >= eJ / 2;
47196
47196
  f.value !== t && (f.value = t, me());
47197
47197
  }
47198
47198
  let ge = o.on("change", he), N = o.on("animationComplete", me), _e = null, ve = "";
@@ -47224,12 +47224,12 @@ var cq = /*#__PURE__*/ jH({
47224
47224
  d.value && (e.stopPropagation(), e.preventDefault(), be());
47225
47225
  }
47226
47226
  function we(e) {
47227
- c.value?.contains(e.target) || e.target.closest?.(iJ) || ye(!1);
47227
+ c.value?.contains(e.target) || e.target.closest?.(tJ) || ye(!1);
47228
47228
  }
47229
47229
  return R(d, (e) => {
47230
47230
  e ? document.addEventListener("pointerdown", we, !0) : document.removeEventListener("pointerdown", we, !0);
47231
47231
  }), R([d, s], ([e, t]) => {
47232
- let n = e ? rJ : 0;
47232
+ let n = e ? eJ : 0;
47233
47233
  t ? (o.jump(n), me()) : o.set(n);
47234
47234
  }), R(() => [
47235
47235
  k.value,
@@ -47275,7 +47275,7 @@ var cq = /*#__PURE__*/ jH({
47275
47275
  onClick: n[0] ||= (e) => ye(!0)
47276
47276
  }, {
47277
47277
  default: L(() => [
47278
- K("span", Tq, [
47278
+ K("span", Sq, [
47279
47279
  q(s, {
47280
47280
  src: I(a).identities[e.name]?.icon,
47281
47281
  text: I(a).identities[e.name]?.initials,
@@ -47289,14 +47289,14 @@ var cq = /*#__PURE__*/ jH({
47289
47289
  "class"
47290
47290
  ]),
47291
47291
  K("strong", null, P(e.name), 1),
47292
- e.host ? (U(), W("span", Eq, "主持")) : Y("", !0)
47292
+ e.host ? (U(), W("span", Cq, "主持")) : Y("", !0)
47293
47293
  ]),
47294
- K("dl", Dq, [(U(!0), W(H, null, B(le.value, (e) => (U(), W("div", { key: e.label }, [K("dt", null, P(e.label), 1), K("dd", {
47294
+ K("dl", wq, [(U(!0), W(H, null, B(le.value, (e) => (U(), W("div", { key: e.label }, [K("dt", null, P(e.label), 1), K("dd", {
47295
47295
  class: M(e.tone ? ["expert-card-status", `is-${e.tone}`] : ""),
47296
47296
  title: e.value
47297
- }, [e.tone ? (U(), W("i", kq)) : Y("", !0), J(P(e.value), 1)], 10, Oq)]))), 128))]),
47298
- S.value ? (U(), W("div", Aq, [n[9] ||= K("p", null, "会话自行注册后才算到场。", -1), w.value ? (U(), W("p", jq, P(w.value), 1)) : Y("", !0)])) : Y("", !0),
47299
- E.value ? (U(), W("span", Mq, [q(d, { name: "i-lucide-settings-2" }), n[10] ||= J("设置", -1)])) : Y("", !0)
47297
+ }, [e.tone ? (U(), W("i", Eq)) : Y("", !0), J(P(e.value), 1)], 10, Tq)]))), 128))]),
47298
+ S.value ? (U(), W("div", Dq, [n[9] ||= K("p", null, "会话自行注册后才算到场。", -1), w.value ? (U(), W("p", Oq, P(w.value), 1)) : Y("", !0)])) : Y("", !0),
47299
+ E.value ? (U(), W("span", kq, [q(d, { name: "i-lucide-settings-2" }), n[10] ||= J("设置", -1)])) : Y("", !0)
47300
47300
  ]),
47301
47301
  _: 1
47302
47302
  }, 8, [
@@ -47319,8 +47319,8 @@ var cq = /*#__PURE__*/ jH({
47319
47319
  tabindex: e.mode === t ? 0 : -1,
47320
47320
  "data-mode": t,
47321
47321
  onClick: (e) => r("mode", t)
47322
- }, P(_[t]), 9, Pq))), 128))], 40, Nq)) : Y("", !0),
47323
- K("span", Fq, [e.hostable ? (U(), W("button", {
47322
+ }, P(_[t]), 9, jq))), 128))], 40, Aq)) : Y("", !0),
47323
+ K("span", Mq, [e.hostable ? (U(), W("button", {
47324
47324
  key: 0,
47325
47325
  type: "button",
47326
47326
  class: "expert-card-host",
@@ -47328,19 +47328,19 @@ var cq = /*#__PURE__*/ jH({
47328
47328
  "aria-label": e.host ? `${e.name} 是主持人` : `设 ${e.name} 为主持人`,
47329
47329
  title: e.host ? "主持人" : "设为主持人",
47330
47330
  onClick: n[1] ||= (e) => r("host")
47331
- }, [q(d, { name: "i-lucide-crown" })], 8, Iq)) : Y("", !0), K("button", {
47331
+ }, [q(d, { name: "i-lucide-crown" })], 8, Nq)) : Y("", !0), K("button", {
47332
47332
  type: "button",
47333
47333
  "aria-label": `移出 ${e.name}`,
47334
47334
  title: "移出",
47335
47335
  onClick: n[2] ||= (e) => r("remove")
47336
- }, [q(d, { name: "i-lucide-x" })], 8, Lq)])
47337
- ], 8, wq), E.value ? (U(), W("div", {
47336
+ }, [q(d, { name: "i-lucide-x" })], 8, Pq)])
47337
+ ], 8, xq), E.value ? (U(), W("div", {
47338
47338
  key: 0,
47339
47339
  class: "expert-card-face expert-card-back",
47340
47340
  inert: !f.value,
47341
47341
  "aria-hidden": !f.value
47342
- }, [K("div", zq, [
47343
- K("div", Bq, [K("strong", null, [J(P(e.name), 1), K("span", null, "设置" + P(ae.value ? " · 不访问项目" : ""), 1)]), v.value ? (U(), G(x, {
47342
+ }, [K("div", Iq, [
47343
+ K("div", Lq, [K("strong", null, [J(P(e.name), 1), K("span", null, "设置" + P(ae.value ? " · 不访问项目" : ""), 1)]), v.value ? (U(), G(x, {
47344
47344
  key: 0,
47345
47345
  icon: "i-lucide-zap",
47346
47346
  "aria-label": `检查 ${e.name} 的 API 配置`,
@@ -47361,8 +47361,8 @@ var cq = /*#__PURE__*/ jH({
47361
47361
  key: 0,
47362
47362
  role: y.value.state === "error" ? "alert" : "status",
47363
47363
  class: "expert-card-check"
47364
- }, P(y.value.message), 9, Vq)) : Y("", !0),
47365
- g.value && m.value.length > 1 ? (U(), W("div", Hq, [n[11] ||= K("span", null, "接入", -1), q(C, {
47364
+ }, P(y.value.message), 9, Rq)) : Y("", !0),
47365
+ g.value && m.value.length > 1 ? (U(), W("div", zq, [n[11] ||= K("span", null, "接入", -1), q(C, {
47366
47366
  "model-value": p.value.adapter || "",
47367
47367
  items: m.value,
47368
47368
  placeholder: "选择 API / App / CLI",
@@ -47391,7 +47391,7 @@ var cq = /*#__PURE__*/ jH({
47391
47391
  "aria-label",
47392
47392
  "onUpdate:modelValue"
47393
47393
  ])]))), 128)),
47394
- T.value ? (U(), W("div", Uq, [n[12] ||= K("span", null, "会话", -1), q(ee, {
47394
+ T.value ? (U(), W("div", Bq, [n[12] ||= K("span", null, "会话", -1), q(ee, {
47395
47395
  "model-value": e.session,
47396
47396
  placeholder: "续接已有会话 ID,留空则新建",
47397
47397
  "aria-label": `${e.name} 要续接的已有会话 ID`,
@@ -47399,8 +47399,8 @@ var cq = /*#__PURE__*/ jH({
47399
47399
  class: "w-full",
47400
47400
  "onUpdate:modelValue": n[4] ||= (e) => r("session", e)
47401
47401
  }, null, 8, ["model-value", "aria-label"])])) : Y("", !0),
47402
- T.value && e.session.trim() && w.value ? (U(), W("p", Wq, P(w.value), 1)) : Y("", !0),
47403
- ie.value ? (U(), W("div", Gq, [n[13] ||= K("span", null, "项目", -1), K("div", {
47402
+ T.value && e.session.trim() && w.value ? (U(), W("p", Vq, P(w.value), 1)) : Y("", !0),
47403
+ ie.value ? (U(), W("div", Hq, [n[13] ||= K("span", null, "项目", -1), K("div", {
47404
47404
  class: "expert-card-modes",
47405
47405
  role: "radiogroup",
47406
47406
  "aria-label": `${e.name} 的项目文件权限`
@@ -47416,12 +47416,12 @@ var cq = /*#__PURE__*/ jH({
47416
47416
  role: "radio",
47417
47417
  "aria-checked": oe.value === t.value,
47418
47418
  onClick: (n) => I(a).write_launch(e.name, "project_access", t.value)
47419
- }, P(t.label), 9, qq)), 64))], 8, Kq)])) : Y("", !0),
47420
- v.value ? (U(), G(bG, {
47419
+ }, P(t.label), 9, Wq)), 64))], 8, Uq)])) : Y("", !0),
47420
+ v.value ? (U(), G(_G, {
47421
47421
  key: 5,
47422
47422
  name: e.name
47423
47423
  }, null, 8, ["name"])) : k.value && !pe.value.length ? (U(), W(H, { key: 6 }, [
47424
- K("div", Jq, [n[14] ||= K("span", null, "模型", -1), q(C, {
47424
+ K("div", Gq, [n[14] ||= K("span", null, "模型", -1), q(C, {
47425
47425
  "model-value": p.value.model || "__default__",
47426
47426
  items: O.value.items,
47427
47427
  title: O.value.source,
@@ -47435,12 +47435,12 @@ var cq = /*#__PURE__*/ jH({
47435
47435
  "title",
47436
47436
  "aria-label"
47437
47437
  ])]),
47438
- O.value.loading || O.value.error ? (U(), W("div", Yq, [K("span", null, P(O.value.loading ? "正在读取软件模型列表…" : O.value.error), 1), !O.value.loading && O.value.error && I(i).launch.available ? (U(), W("button", {
47438
+ O.value.loading || O.value.error ? (U(), W("div", Kq, [K("span", null, P(O.value.loading ? "正在读取软件模型列表…" : O.value.error), 1), !O.value.loading && O.value.error && I(i).launch.available ? (U(), W("button", {
47439
47439
  key: 0,
47440
47440
  type: "button",
47441
47441
  onClick: n[6] ||= (t) => I(a).load_launch_models(e.name, !0)
47442
47442
  }, "重试")) : Y("", !0)])) : Y("", !0),
47443
- ne.value ? (U(), W("div", Xq, [q(Sq, {
47443
+ ne.value ? (U(), W("div", qq, [q(yq, {
47444
47444
  caption: "强度",
47445
47445
  items: ne.value,
47446
47446
  "model-value": p.value.effort || "",
@@ -47450,7 +47450,7 @@ var cq = /*#__PURE__*/ jH({
47450
47450
  "items",
47451
47451
  "model-value",
47452
47452
  "label"
47453
- ])])) : (U(), W("p", Zq, P(O.value.effort_note), 1)),
47453
+ ])])) : (U(), W("p", Jq, P(O.value.effort_note), 1)),
47454
47454
  K("button", {
47455
47455
  type: "button",
47456
47456
  class: "expert-card-defaults",
@@ -47458,33 +47458,33 @@ var cq = /*#__PURE__*/ jH({
47458
47458
  "aria-label": `恢复 ${e.name} 的默认模型与强度`,
47459
47459
  disabled: !p.value.model && !p.value.effort,
47460
47460
  onClick: xe
47461
- }, "恢复默认", 8, Qq)
47462
- ], 64)) : (U(), W("p", $q, [q(d, { name: e.mode === "online" ? "i-lucide-globe" : "i-lucide-monitor" }, null, 8, ["name"]), J(P(te.value), 1)]))
47463
- ]), K("span", eJ, [K("button", {
47461
+ }, "恢复默认", 8, Yq)
47462
+ ], 64)) : (U(), W("p", Xq, [q(d, { name: e.mode === "online" ? "i-lucide-globe" : "i-lucide-monitor" }, null, 8, ["name"]), J(P(te.value), 1)]))
47463
+ ]), K("span", Zq, [K("button", {
47464
47464
  type: "button",
47465
47465
  class: "expert-card-flip is-cancel",
47466
47466
  "aria-label": `放弃 ${e.name} 的修改`,
47467
47467
  onClick: be
47468
- }, "取消", 8, tJ), K("button", {
47468
+ }, "取消", 8, Qq), K("button", {
47469
47469
  ref_key: "back_button",
47470
47470
  ref: u,
47471
47471
  type: "button",
47472
47472
  class: "expert-card-flip is-done",
47473
47473
  "aria-label": `保存并返回 ${e.name} 角色卡片`,
47474
47474
  onClick: n[8] ||= (e) => ye(!1)
47475
- }, [q(d, { name: "i-lucide-check" }), n[15] ||= J("完成", -1)], 8, nJ)])], 8, Rq)) : Y("", !0)]),
47475
+ }, [q(d, { name: "i-lucide-check" }), n[15] ||= J("完成", -1)], 8, $q)])], 8, Fq)) : Y("", !0)]),
47476
47476
  _: 1
47477
- }, 8, ["style"])], 42, Cq);
47477
+ }, 8, ["style"])], 42, bq);
47478
47478
  };
47479
47479
  }
47480
- }, [["__scopeId", "data-v-22c260cb"]]), oJ = { class: "scheduler-settings" }, sJ = { class: "scheduler-title" }, cJ = {
47480
+ }, [["__scopeId", "data-v-22c260cb"]]), rJ = { class: "scheduler-settings" }, iJ = { class: "scheduler-title" }, aJ = {
47481
47481
  key: 0,
47482
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 = {
47483
+ }, oJ = { class: "scheduler-facts" }, sJ = ["title"], cJ = { class: "scheduler-flip" }, lJ = { class: "scheduler-back" }, uJ = { class: "scheduler-heading" }, dJ = { class: "scheduler-field" }, fJ = { class: "scheduler-field" }, pJ = { class: "scheduler-field" }, mJ = {
47484
47484
  key: 0,
47485
47485
  role: "alert",
47486
47486
  class: "scheduler-error"
47487
- }, vJ = ["role"], yJ = "••••••••••••", bJ = /*#__PURE__*/ jH({
47487
+ }, hJ = ["role"], gJ = { class: "scheduler-flip-actions" }, _J = "••••••••••••", vJ = /*#__PURE__*/ jH({
47488
47488
  __name: "SchedulerSettings",
47489
47489
  props: {
47490
47490
  free: {
@@ -47503,7 +47503,24 @@ var cq = /*#__PURE__*/ jH({
47503
47503
  }))), o = Z(() => (n.value.launch.scheduler_providers?.[i.value.provider]?.models || []).map((e) => ({
47504
47504
  label: e,
47505
47505
  value: e
47506
- }))), s = /* @__PURE__ */ F(""), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(""), d = /* @__PURE__ */ F(!1), f = Z(() => a.value.find((e) => e.value === i.value.provider)?.label || "未选择"), p = Z(() => i.value.model ? i.value.api_key_ref ? {
47506
+ }))), s = /* @__PURE__ */ F(""), c = /* @__PURE__ */ F(!1), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(""), d = /* @__PURE__ */ F(!1), f = null;
47507
+ function p() {
47508
+ let { provider: e, model: t, api_key_ref: n } = i.value;
47509
+ f = {
47510
+ provider: e,
47511
+ model: t,
47512
+ api_key_ref: n
47513
+ }, d.value = !0;
47514
+ }
47515
+ function m() {
47516
+ if (f) for (let e of [
47517
+ "provider",
47518
+ "model",
47519
+ "api_key_ref"
47520
+ ]) r.write_scheduler(e, f[e]);
47521
+ f = null, s.value = "", u.value = "", d.value = !1;
47522
+ }
47523
+ let h = Z(() => a.value.find((e) => e.value === i.value.provider)?.label || "未选择"), g = Z(() => i.value.model ? i.value.api_key_ref ? {
47507
47524
  tone: "ready",
47508
47525
  text: "已配置"
47509
47526
  } : {
@@ -47516,7 +47533,7 @@ var cq = /*#__PURE__*/ jH({
47516
47533
  R(() => i.value.provider, () => {
47517
47534
  s.value = "", u.value = "";
47518
47535
  });
47519
- let m = /* @__PURE__ */ F({
47536
+ let _ = /* @__PURE__ */ F({
47520
47537
  state: "",
47521
47538
  message: ""
47522
47539
  });
@@ -47525,32 +47542,32 @@ var cq = /*#__PURE__*/ jH({
47525
47542
  i.value.model,
47526
47543
  i.value.api_key_ref
47527
47544
  ], () => {
47528
- m.value = {
47545
+ _.value = {
47529
47546
  state: "",
47530
47547
  message: ""
47531
47548
  };
47532
47549
  }), R(() => i.value.enabled, (e) => {
47533
47550
  e || (d.value = !1);
47534
47551
  });
47535
- async function h() {
47536
- m.value = {
47552
+ async function v() {
47553
+ _.value = {
47537
47554
  state: "loading",
47538
47555
  message: ""
47539
47556
  };
47540
47557
  try {
47541
- await r.check_scheduler(), m.value = {
47558
+ await r.check_scheduler(), _.value = {
47542
47559
  state: "ok",
47543
47560
  message: "检查通过:决策模型已响应"
47544
47561
  };
47545
47562
  } catch (e) {
47546
- m.value = {
47563
+ _.value = {
47547
47564
  state: "error",
47548
47565
  message: e.message
47549
47566
  };
47550
47567
  }
47551
47568
  }
47552
- let g = Z(() => t.free ? "接入决策模型,推荐更适合回答的成员,由你一键采纳。" : "接入决策模型,自动安排插话回应与下一轮发言。");
47553
- async function _() {
47569
+ let y = Z(() => t.free ? "接入决策模型,推荐更适合回答的成员,由你一键采纳。" : "接入决策模型,自动安排插话回应与下一轮发言。");
47570
+ async function b() {
47554
47571
  if (s.value.trim() && !l.value) {
47555
47572
  l.value = !0, u.value = "";
47556
47573
  try {
@@ -47562,56 +47579,56 @@ var cq = /*#__PURE__*/ jH({
47562
47579
  }
47563
47580
  }
47564
47581
  }
47565
- return (t, v) => {
47566
- let y = WV, b = UK, x = sA, S = MA, C = bH, w = dG, T = YV;
47567
- return U(), W("div", oJ, [q(b, {
47582
+ return (t, f) => {
47583
+ let x = WV, S = BK, C = sA, w = MA, T = bH, ee = cG, E = YV;
47584
+ return U(), W("div", rJ, [q(S, {
47568
47585
  "model-value": !!i.value.enabled && !e.blocker,
47569
47586
  disabled: !!e.blocker,
47570
- description: e.blocker ? `${g.value}(${e.blocker})` : g.value,
47571
- "onUpdate:modelValue": v[0] ||= (e) => I(r).write_scheduler("enabled", e)
47587
+ description: e.blocker ? `${y.value}(${e.blocker})` : y.value,
47588
+ "onUpdate:modelValue": f[0] ||= (e) => I(r).write_scheduler("enabled", e)
47572
47589
  }, {
47573
- label: L(() => [K("span", sJ, [
47574
- v[8] ||= J("智能调度", -1),
47575
- q(y, {
47590
+ label: L(() => [K("span", iJ, [
47591
+ f[7] ||= J("智能调度", -1),
47592
+ q(x, {
47576
47593
  size: "xs",
47577
47594
  variant: "soft",
47578
47595
  class: "scheduler-badge"
47579
47596
  }, {
47580
- default: L(() => [...v[7] ||= [J("决策模型", -1)]]),
47597
+ default: L(() => [...f[6] ||= [J("决策模型", -1)]]),
47581
47598
  _: 1
47582
47599
  }),
47583
- v[9] ||= K("small", null, "可选", -1)
47600
+ f[8] ||= K("small", null, "可选", -1)
47584
47601
  ])]),
47585
47602
  _: 1
47586
47603
  }, 8, [
47587
47604
  "model-value",
47588
47605
  "disabled",
47589
47606
  "description"
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, {
47607
+ ]), i.value.enabled && !e.blocker ? (U(), W("div", aJ, [K("div", { class: M(["scheduler-card", { "is-editing": d.value }]) }, [d.value ? (U(), W(H, { key: 1 }, [K("div", lJ, [
47608
+ K("div", uJ, [f[15] ||= K("strong", null, [J("决策模型"), K("span", null, "设置")], -1), q(w, {
47592
47609
  icon: "i-lucide-zap",
47593
47610
  "aria-label": "检查智能调度配置",
47594
47611
  title: "检查配置:向决策模型发送一道极短的是非题,核对供应商、模型与密钥",
47595
47612
  size: "xs",
47596
47613
  variant: "ghost",
47597
- color: m.value.state === "ok" ? "success" : m.value.state === "error" ? "error" : "neutral",
47598
- loading: m.value.state === "loading",
47614
+ color: _.value.state === "ok" ? "success" : _.value.state === "error" ? "error" : "neutral",
47615
+ loading: _.value.state === "loading",
47599
47616
  disabled: !i.value.api_key_ref || !i.value.model || !I(n).launch.available,
47600
- onClick: h
47617
+ onClick: v
47601
47618
  }, null, 8, [
47602
47619
  "color",
47603
47620
  "loading",
47604
47621
  "disabled"
47605
47622
  ])]),
47606
- K("div", mJ, [v[17] ||= K("span", null, "供应商", -1), q(C, {
47623
+ K("div", dJ, [f[16] ||= K("span", null, "供应商", -1), q(T, {
47607
47624
  "model-value": i.value.provider || "",
47608
47625
  items: a.value,
47609
47626
  "aria-label": "智能调度供应商",
47610
47627
  size: "xs",
47611
47628
  class: "w-full",
47612
- "onUpdate:modelValue": v[2] ||= (e) => I(r).write_scheduler("provider", e)
47629
+ "onUpdate:modelValue": f[1] ||= (e) => I(r).write_scheduler("provider", e)
47613
47630
  }, null, 8, ["model-value", "items"])]),
47614
- K("div", hJ, [v[18] ||= K("span", null, "模型", -1), q(w, {
47631
+ K("div", fJ, [f[17] ||= K("span", null, "模型", -1), q(ee, {
47615
47632
  mode: "autocomplete",
47616
47633
  "ignore-filter": "",
47617
47634
  "model-value": i.value.model || "",
@@ -47621,17 +47638,17 @@ var cq = /*#__PURE__*/ jH({
47621
47638
  placeholder: "模型 ID",
47622
47639
  size: "xs",
47623
47640
  class: "w-full",
47624
- "onUpdate:modelValue": v[3] ||= (e) => I(r).write_scheduler("model", e)
47641
+ "onUpdate:modelValue": f[2] ||= (e) => I(r).write_scheduler("model", e)
47625
47642
  }, null, 8, ["model-value", "items"])]),
47626
- K("div", gJ, [v[19] ||= K("span", null, "密钥", -1), q(T, {
47643
+ K("div", pJ, [f[18] ||= K("span", null, "密钥", -1), q(E, {
47627
47644
  modelValue: s.value,
47628
- "onUpdate:modelValue": v[5] ||= (e) => s.value = e,
47645
+ "onUpdate:modelValue": f[4] ||= (e) => s.value = e,
47629
47646
  type: "text",
47630
47647
  autocomplete: "off",
47631
47648
  spellcheck: "false",
47632
47649
  "data-1p-ignore": "",
47633
47650
  "data-lpignore": "true",
47634
- placeholder: i.value.api_key_ref ? yJ : "填写所选供应商的 API Key",
47651
+ placeholder: i.value.api_key_ref ? _J : "填写所选供应商的 API Key",
47635
47652
  title: i.value.api_key_ref && !s.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
47636
47653
  "aria-label": "智能调度 API Key",
47637
47654
  size: "xs",
@@ -47641,9 +47658,9 @@ var cq = /*#__PURE__*/ jH({
47641
47658
  base: c.value ? "" : "scheduler-key-masked",
47642
47659
  trailing: "pe-0.5"
47643
47660
  },
47644
- onChange: _
47661
+ onChange: b
47645
47662
  }, {
47646
- trailing: L(() => [q(S, {
47663
+ trailing: L(() => [q(w, {
47647
47664
  icon: c.value ? "i-lucide-eye" : "i-lucide-eye-off",
47648
47665
  disabled: !s.value,
47649
47666
  "aria-label": c.value ? "隐藏密钥" : "显示密钥",
@@ -47651,7 +47668,7 @@ var cq = /*#__PURE__*/ jH({
47651
47668
  size: "xs",
47652
47669
  color: "neutral",
47653
47670
  variant: "link",
47654
- onClick: v[4] ||= (e) => c.value = !c.value
47671
+ onClick: f[3] ||= (e) => c.value = !c.value
47655
47672
  }, null, 8, [
47656
47673
  "icon",
47657
47674
  "disabled",
@@ -47666,78 +47683,83 @@ var cq = /*#__PURE__*/ jH({
47666
47683
  "loading",
47667
47684
  "ui"
47668
47685
  ])]),
47669
- u.value ? (U(), W("p", _J, P(u.value), 1)) : Y("", !0),
47670
- m.value.message ? (U(), W("p", {
47686
+ u.value ? (U(), W("p", mJ, P(u.value), 1)) : Y("", !0),
47687
+ _.value.message ? (U(), W("p", {
47671
47688
  key: 1,
47672
- role: m.value.state === "error" ? "alert" : "status",
47673
- class: M(m.value.state === "error" ? "scheduler-error" : "scheduler-ok")
47674
- }, P(m.value.message), 11, vJ)) : Y("", !0),
47675
- v[20] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10 条消息发给所选供应商;密钥只存本机。", -1)
47676
- ]), K("button", {
47689
+ role: _.value.state === "error" ? "alert" : "status",
47690
+ class: M(_.value.state === "error" ? "scheduler-error" : "scheduler-ok")
47691
+ }, P(_.value.message), 11, hJ)) : Y("", !0),
47692
+ f[19] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10 条消息发给所选供应商;密钥只存本机。", -1)
47693
+ ]), K("span", gJ, [K("button", {
47694
+ type: "button",
47695
+ class: "scheduler-flip is-cancel",
47696
+ "aria-label": "放弃决策模型的修改",
47697
+ onClick: m
47698
+ }, "取消"), K("button", {
47677
47699
  type: "button",
47678
47700
  class: "scheduler-flip is-done",
47679
47701
  "aria-label": "完成并返回决策模型卡片",
47680
- onClick: v[6] ||= (e) => d.value = !1
47681
- }, [q(x, { name: "i-lucide-check" }), v[21] ||= J("完成", -1)])], 64)) : (U(), W("button", {
47702
+ onClick: f[5] ||= (e) => d.value = !1
47703
+ }, [q(C, { name: "i-lucide-check" }), f[20] ||= J("完成", -1)])])], 64)) : (U(), W("button", {
47682
47704
  key: 0,
47683
47705
  type: "button",
47684
47706
  class: "scheduler-open",
47685
47707
  "aria-label": "设置智能调度的决策模型",
47686
47708
  title: "点击设置",
47687
- onClick: v[1] ||= (e) => d.value = !0
47709
+ onClick: p
47688
47710
  }, [
47689
- v[15] ||= K("strong", null, "决策模型", -1),
47690
- K("dl", lJ, [
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
- 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, uJ)])
47711
+ f[14] ||= K("strong", null, "决策模型", -1),
47712
+ K("dl", oJ, [
47713
+ K("div", null, [f[10] ||= K("dt", null, "状态", -1), K("dd", { class: M(`is-${g.value.tone}`) }, [f[9] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(g.value.text), 1)], 2)]),
47714
+ K("div", null, [f[11] ||= K("dt", null, "供应商", -1), K("dd", null, P(h.value), 1)]),
47715
+ K("div", null, [f[12] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, sJ)])
47694
47716
  ]),
47695
- K("span", dJ, [q(x, { name: "i-lucide-settings-2" }), v[14] ||= J("设置", -1)])
47717
+ K("span", cJ, [q(C, { name: "i-lucide-settings-2" }), f[13] ||= J("设置", -1)])
47696
47718
  ]))], 2)])) : Y("", !0)]);
47697
47719
  };
47698
47720
  }
47699
- }, [["__scopeId", "data-v-a592f30e"]]), xJ = { class: "create-discussion" }, SJ = {
47721
+ }, [["__scopeId", "data-v-6b186313"]]), yJ = { class: "create-discussion" }, bJ = {
47700
47722
  key: 0,
47701
47723
  class: "create-connect",
47702
47724
  role: "status"
47703
- }, CJ = { class: "create-connect-command" }, wJ = {
47725
+ }, xJ = { class: "create-connect-command" }, SJ = {
47704
47726
  key: 1,
47705
47727
  class: "channel-create-location"
47706
- }, TJ = { class: "create-section" }, EJ = [
47728
+ }, CJ = { class: "create-section" }, wJ = [
47707
47729
  "aria-checked",
47708
47730
  "tabindex",
47709
47731
  "onClick"
47710
- ], DJ = { class: "create-mode-copy" }, OJ = { class: "create-section" }, kJ = { class: "fine-print create-hint" }, AJ = {
47732
+ ], TJ = { class: "create-mode-copy" }, EJ = { class: "create-section" }, DJ = { class: "fine-print create-hint" }, OJ = {
47711
47733
  key: 0,
47712
47734
  class: "create-experts",
47713
47735
  role: "group",
47714
47736
  "aria-label": "参与的 AI"
47715
- }, jJ = {
47737
+ }, kJ = {
47716
47738
  key: 1,
47717
47739
  class: "create-experts-empty"
47718
- }, MJ = [
47740
+ }, AJ = [
47719
47741
  "disabled",
47720
47742
  "title",
47721
47743
  "aria-label",
47722
47744
  "onClick"
47723
- ], NJ = { class: "fine-print create-hint create-host-hint" }, PJ = {
47745
+ ], jJ = { class: "fine-print create-hint create-host-hint" }, MJ = {
47724
47746
  key: 2,
47725
47747
  class: "create-section"
47726
- }, FJ = { class: "form-two-columns" }, IJ = { class: "create-host" }, LJ = {
47748
+ }, NJ = { class: "form-two-columns" }, PJ = { class: "create-host" }, FJ = {
47727
47749
  class: "create-chips",
47728
47750
  role: "radiogroup",
47729
47751
  "aria-label": "达到上限后"
47730
- }, RJ = ["aria-checked", "onClick"], zJ = {
47752
+ }, IJ = ["aria-checked", "onClick"], LJ = {
47731
47753
  class: "create-limit-rule",
47732
47754
  "aria-live": "polite"
47733
- }, BJ = { class: "create-section" }, VJ = {
47755
+ }, RJ = { class: "create-section" }, zJ = {
47734
47756
  key: 0,
47735
47757
  class: "fine-print create-hint"
47736
- }, HJ = { class: "create-footer" }, UJ = {
47758
+ }, BJ = { class: "create-footer" }, VJ = {
47737
47759
  key: 0,
47738
47760
  role: "alert",
47739
47761
  class: "create-error"
47740
- }, WJ = { class: "create-footer-row" }, GJ = ["title"], KJ = "new-expert-modes", qJ = 3e3, JJ = /*#__PURE__*/ jH({
47762
+ }, HJ = { class: "create-footer-row" }, UJ = ["title"], WJ = "new-expert-modes", GJ = 3e3, KJ = /*#__PURE__*/ jH({
47741
47763
  __name: "CreateDiscussion",
47742
47764
  props: { targetFolder: {
47743
47765
  type: Object,
@@ -47755,7 +47777,7 @@ var cq = /*#__PURE__*/ jH({
47755
47777
  icon: "i-lucide-message-circle",
47756
47778
  title: "自由协作",
47757
47779
  text: "按需点名 AI,在各自会话中工作"
47758
- }], p = Z(() => r.value.experts[KJ] || {}), m = /* @__PURE__ */ F([]), h = Z(() => Object.keys(p.value).filter((e) => p.value[e]));
47780
+ }], p = Z(() => r.value.experts[WJ] || {}), m = /* @__PURE__ */ F([]), h = Z(() => Object.keys(p.value).filter((e) => p.value[e]));
47759
47781
  R(h, (e) => {
47760
47782
  m.value = [...m.value.filter((t) => e.includes(t)), ...e.filter((e) => !m.value.includes(e))];
47761
47783
  }, { immediate: !0 });
@@ -47780,7 +47802,7 @@ var cq = /*#__PURE__*/ jH({
47780
47802
  Qi(() => {
47781
47803
  re(), te = window.setInterval(() => {
47782
47804
  k.value && !document.hidden && o("check_launch_connection");
47783
- }, qJ);
47805
+ }, GJ);
47784
47806
  }), ta(() => window.clearInterval(te));
47785
47807
  function ie(e) {
47786
47808
  u("kind", e), re();
@@ -47805,7 +47827,7 @@ var cq = /*#__PURE__*/ jH({
47805
47827
  "online"
47806
47828
  ] : e === y.value ? [] : ["cli", "manual"];
47807
47829
  function se(e, t) {
47808
- t === "cli" && !A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert(KJ, e, t), re();
47830
+ t === "cli" && !A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert(WJ, e, t), re();
47809
47831
  }
47810
47832
  function ce(e) {
47811
47833
  if (p.value[e] === "online") return {
@@ -47829,7 +47851,7 @@ var cq = /*#__PURE__*/ jH({
47829
47851
  return _(e) ? `已加入 ${_(e)} 位 · 可继续添加` : A(e) ? "API / 本地 App / CLI / 手动启动" : d.value ? "API / 手动启动 / 网页代发" : "API / 手动启动";
47830
47852
  }
47831
47853
  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(KJ, e, "cli") : se(e, "cli"), re());
47854
+ i.launch_clients[e] && (!A(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), _(e) ? i.add_instance(WJ, e, "cli") : se(e, "cli"), re());
47833
47855
  }
47834
47856
  function de(e) {
47835
47857
  se(e, ""), Qn(() => v.value?.querySelector("button:not(:disabled)")?.focus({ preventScroll: !0 }));
@@ -47847,7 +47869,7 @@ var cq = /*#__PURE__*/ jH({
47847
47869
  x.value?.settle(), n("submit");
47848
47870
  }
47849
47871
  let me = Z(() => {
47850
- let e = Number(l("limit-max_rounds")), t = Number(l("limit-max_minutes")), n = [e && `${e} 轮`, t && sq(t)].filter(Boolean);
47872
+ let e = Number(l("limit-max_rounds")), t = Number(l("limit-max_minutes")), n = [e && `${e} 轮`, t && iq(t)].filter(Boolean);
47851
47873
  if (!n.length) return "不设轮次和时长上限。";
47852
47874
  let r = l("limit-on_limit") === "summarize" ? "由主持人总结" : "暂停";
47853
47875
  return `最多 ${n.join(" 或 ")},${n.length === 2 ? "先到则" : "到限后"}${r}。`;
@@ -47858,7 +47880,7 @@ var cq = /*#__PURE__*/ jH({
47858
47880
  `${e.length} 位 AI`,
47859
47881
  y.value ? `${y.value} 主持` : "无主持人"
47860
47882
  ].join(" · ");
47861
- let t = l("limit-max_rounds"), n = l("limit-max_minutes"), r = [t && Number(t) ? `${t} 轮` : "不限轮次", n && Number(n) ? sq(Number(n)) : "不限时长"].join(" / ");
47883
+ let t = l("limit-max_rounds"), n = l("limit-max_minutes"), r = [t && Number(t) ? `${t} 轮` : "不限轮次", n && Number(n) ? iq(Number(n)) : "不限时长"].join(" / ");
47862
47884
  return [
47863
47885
  y.value ? `${i.display_name(y.value)} 主持` : "尚未选择主持人",
47864
47886
  e.length ? `${e.join("、")} 参与` : "尚未选择专家",
@@ -47866,21 +47888,21 @@ var cq = /*#__PURE__*/ jH({
47866
47888
  ].join(" · ");
47867
47889
  });
47868
47890
  return (t, c) => {
47869
- let m = sA, h = MA, _ = YV, S = zV, w = HV, E = pA, te = UK;
47870
- return U(), W("div", xJ, [K("form", {
47891
+ let m = sA, h = MA, _ = YV, S = zV, w = HV, E = pA, te = BK;
47892
+ return U(), W("div", yJ, [K("form", {
47871
47893
  id: "create-discussion-form",
47872
47894
  class: "create-scroll dialog-form",
47873
47895
  onSubmit: uu(pe, ["prevent"])
47874
47896
  }, [
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, {
47897
+ k.value ? (U(), W("div", bJ, [K("p", null, [q(m, { name: "i-lucide-plug-zap" }), c[11] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", xJ, [K("code", null, P(I(r).launch.connect_command), 1), q(h, {
47876
47898
  icon: "i-lucide-copy",
47877
47899
  "aria-label": "复制本机连接命令",
47878
47900
  variant: "ghost",
47879
47901
  color: "neutral",
47880
47902
  onClick: c[0] ||= (e) => I(o)("copy", I(r).launch.connect_command)
47881
47903
  })])])) : Y("", !0),
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, [
47904
+ e.targetFolder?.id ? (U(), W("p", SJ, [q(m, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
47905
+ K("section", CJ, [
47884
47906
  c[12] ||= K("h3", null, [K("span", null, "1"), J("这次做什么")], -1),
47885
47907
  K("div", {
47886
47908
  class: "create-modes",
@@ -47895,7 +47917,7 @@ var cq = /*#__PURE__*/ jH({
47895
47917
  "aria-checked": (l("kind") || "brainstorm") === e.value,
47896
47918
  tabindex: (l("kind") || "brainstorm") === e.value ? 0 : -1,
47897
47919
  onClick: (t) => ie(e.value)
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),
47920
+ }, [q(m, { name: e.icon }, null, 8, ["name"]), K("span", TJ, [K("strong", null, P(e.title), 1), K("small", null, P(e.text), 1)])], 10, wJ)), 64))], 32),
47899
47921
  q(S, {
47900
47922
  label: "话题名称",
47901
47923
  required: ""
@@ -47932,10 +47954,10 @@ var cq = /*#__PURE__*/ jH({
47932
47954
  _: 1
47933
47955
  }))
47934
47956
  ]),
47935
- K("section", OJ, [
47957
+ K("section", EJ, [
47936
47958
  c[14] ||= K("h3", null, [K("span", null, "2"), J("谁来参与")], -1),
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, {
47959
+ K("p", DJ, P(d.value ? "每位成员单独选:自动(本机唤醒)、手动(你来启动)或网页(由你转发回答)。" : "主持人由本机自动启动,专家可选自动或手动。网页 AI 请用自由协作。"), 1),
47960
+ g.value.length ? (U(), W("div", OJ, [(U(!0), W(H, null, B(g.value, (e) => (U(), G(nJ, {
47939
47961
  key: e,
47940
47962
  name: e,
47941
47963
  mode: p.value[e],
@@ -47957,7 +47979,7 @@ var cq = /*#__PURE__*/ jH({
47957
47979
  "onHost",
47958
47980
  "onRemove",
47959
47981
  "onMode"
47960
- ]))), 128))])) : (U(), W("p", jJ, "从下方添加 AI;同一平台可添加多位,各自独立会话。")),
47982
+ ]))), 128))])) : (U(), W("p", kJ, "从下方添加 AI;同一平台可添加多位,各自独立会话。")),
47961
47983
  K("div", {
47962
47984
  ref_key: "library",
47963
47985
  ref: v,
@@ -47986,16 +48008,16 @@ var cq = /*#__PURE__*/ jH({
47986
48008
  ]),
47987
48009
  J(P(e), 1),
47988
48010
  q(m, { name: "i-lucide-plus" })
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, {
48011
+ ], 8, AJ))), 128))], 512),
48012
+ K("div", jJ, [q(m, { name: "i-lucide-crown" }), K("span", null, P(d.value ? b.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "网页 AI 不能主持;添加一位本地 AI 后,没 @ 的消息才有人接。" : b.value.length ? "点卡片上的皇冠指定主持人,负责补全议题、安排发言与收束,也可同时作为专家。" : "先添加一位 AI 担任主持人。"), 1)]),
48013
+ q(vJ, {
47992
48014
  free: d.value,
47993
48015
  blocker: D.value
47994
48016
  }, null, 8, ["free", "blocker"])
47995
48017
  ]),
47996
- d.value ? Y("", !0) : (U(), W("section", PJ, [
48018
+ d.value ? Y("", !0) : (U(), W("section", MJ, [
47997
48019
  c[17] ||= K("h3", null, [K("span", null, "3"), J("讨论多久")], -1),
47998
- q(cq, {
48020
+ q(aq, {
47999
48021
  ref_key: "limit_picker",
48000
48022
  ref: x,
48001
48023
  rounds: Number(l("limit-max_rounds")),
@@ -48010,7 +48032,7 @@ var cq = /*#__PURE__*/ jH({
48010
48032
  description: "开启后,主持人每轮读完回答再逐位点名追问;关闭时专家之间互相回应、互相提问,主持人只开场和收尾。",
48011
48033
  "onUpdate:modelValue": c[5] ||= (e) => I(i).write_named_followup(e)
48012
48034
  }, null, 8, ["model-value"]),
48013
- K("div", FJ, [q(S, {
48035
+ K("div", NJ, [q(S, {
48014
48036
  label: "单次 AI 执行(分钟)",
48015
48037
  description: "留空或 0 表示不限"
48016
48038
  }, {
@@ -48026,9 +48048,9 @@ var cq = /*#__PURE__*/ jH({
48026
48048
  }, null, 8, ["model-value"])]),
48027
48049
  _: 1
48028
48050
  })]),
48029
- K("div", IJ, [
48051
+ K("div", PJ, [
48030
48052
  c[16] ||= K("span", { class: "create-label" }, "达到任一上限后", -1),
48031
- K("div", LJ, [(U(), W(H, null, B([{
48053
+ K("div", FJ, [(U(), W(H, null, B([{
48032
48054
  value: "pause",
48033
48055
  label: "暂停保留现场"
48034
48056
  }, {
@@ -48041,7 +48063,7 @@ var cq = /*#__PURE__*/ jH({
48041
48063
  "aria-checked": (l("limit-on_limit") || "pause") === e.value,
48042
48064
  class: M({ "is-selected": (l("limit-on_limit") || "pause") === e.value }),
48043
48065
  onClick: (t) => u("limit-on_limit", e.value)
48044
- }, P(e.label), 11, RJ)), 64))]),
48066
+ }, P(e.label), 11, IJ)), 64))]),
48045
48067
  l("limit-on_limit") === "summarize" ? (U(), G(_, {
48046
48068
  key: 0,
48047
48069
  "model-value": l("limit-summary_minutes"),
@@ -48057,9 +48079,9 @@ var cq = /*#__PURE__*/ jH({
48057
48079
  _: 1
48058
48080
  }, 8, ["model-value"])) : Y("", !0)
48059
48081
  ]),
48060
- K("p", zJ, [q(m, { name: "i-lucide-flag" }), J(P(me.value), 1)])
48082
+ K("p", LJ, [q(m, { name: "i-lucide-flag" }), J(P(me.value), 1)])
48061
48083
  ])),
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, {
48084
+ K("section", RJ, [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
48085
  key: 0,
48064
48086
  "model-value": I(r).launch.create,
48065
48087
  label: "创建后立即启动 AI",
@@ -48086,12 +48108,12 @@ var cq = /*#__PURE__*/ jH({
48086
48108
  _: 1
48087
48109
  }, 8, ["model-value"])]),
48088
48110
  _: 1
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, [
48111
+ }), c[20] ||= K("p", { class: "fine-print create-hint" }, "供本地软件查看的项目,读写权限在专家卡片上设置。API 仅使用房间上下文。", -1)], 64)) : Y("", !0)], 64)) : (U(), W("p", zJ, "连接本机服务后,可在此设置项目目录和启动方式。"))])
48112
+ ], 32), K("footer", BJ, [T.value && I(r).launch.error ? (U(), W("p", VJ, P(I(r).launch.error), 1)) : Y("", !0), K("div", HJ, [
48091
48113
  K("span", {
48092
48114
  class: M(["create-summary", { "is-blocked": ne.value }]),
48093
48115
  title: he.value
48094
- }, P(ne.value ? `还差:${ne.value}` : he.value), 11, GJ),
48116
+ }, P(ne.value ? `还差:${ne.value}` : he.value), 11, UJ),
48095
48117
  q(h, {
48096
48118
  label: "取消",
48097
48119
  color: "neutral",
@@ -48115,46 +48137,46 @@ var cq = /*#__PURE__*/ jH({
48115
48137
  ])])]);
48116
48138
  };
48117
48139
  }
48118
- }, [["__scopeId", "data-v-cabc90c9"]]), YJ = {
48140
+ }, [["__scopeId", "data-v-cabc90c9"]]), qJ = {
48119
48141
  class: "account-settings",
48120
48142
  "aria-labelledby": "account-heading"
48121
- }, XJ = {
48143
+ }, JJ = {
48122
48144
  key: 0,
48123
48145
  class: "fine-print",
48124
48146
  role: "status"
48125
- }, ZJ = ["aria-label"], QJ = { class: "fine-print account-intro" }, $J = {
48147
+ }, YJ = ["aria-label"], XJ = { class: "fine-print account-intro" }, ZJ = {
48126
48148
  key: 0,
48127
48149
  class: "account-message is-error",
48128
48150
  role: "status"
48129
- }, eY = {
48151
+ }, QJ = {
48130
48152
  key: 1,
48131
48153
  class: "fine-print"
48132
- }, tY = {
48154
+ }, $J = {
48133
48155
  key: 1,
48134
48156
  class: "fine-print"
48135
- }, nY = {
48157
+ }, eY = {
48136
48158
  key: 2,
48137
48159
  class: "account-message is-error",
48138
48160
  role: "alert"
48139
- }, rY = {
48161
+ }, tY = {
48140
48162
  key: 3,
48141
48163
  class: "account-message",
48142
48164
  role: "status"
48143
- }, iY = { class: "account-actions" }, aY = {
48165
+ }, nY = { class: "account-actions" }, rY = {
48144
48166
  key: 2,
48145
48167
  class: "account-profile"
48146
- }, oY = { class: "account-identity" }, sY = { class: "account-avatar-actions" }, cY = { class: "account-actions" }, lY = {
48168
+ }, iY = { class: "account-identity" }, aY = { class: "account-avatar-actions" }, oY = { class: "account-actions" }, sY = {
48147
48169
  key: 0,
48148
48170
  class: "account-message is-error",
48149
48171
  role: "alert"
48150
- }, uY = {
48172
+ }, cY = {
48151
48173
  key: 1,
48152
48174
  class: "account-message",
48153
48175
  role: "status"
48154
- }, dY = {
48176
+ }, lY = {
48155
48177
  key: 2,
48156
48178
  class: "account-signout account-actions"
48157
- }, fY = {
48179
+ }, uY = {
48158
48180
  __name: "AccountSettings",
48159
48181
  setup(e) {
48160
48182
  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 +48244,13 @@ var cq = /*#__PURE__*/ jH({
48222
48244
  }
48223
48245
  return (e, t) => {
48224
48246
  let p = YV, y = zV, b = MA, x = pA;
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", {
48247
+ return U(), W("section", qJ, [t[8] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", JJ, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48226
48248
  key: 1,
48227
48249
  class: "dialog-form account-form",
48228
48250
  "aria-label": a.value === "register" ? "设置管理员账号" : "登录管理员账号",
48229
48251
  onSubmit: uu(m, ["prevent"])
48230
48252
  }, [
48231
- K("p", QJ, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48253
+ K("p", XJ, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48232
48254
  q(y, {
48233
48255
  label: "用户名",
48234
48256
  description: a.value === "register" ? "1–30 个字符,也是公开显示的名称" : void 0,
@@ -48295,18 +48317,18 @@ var cq = /*#__PURE__*/ jH({
48295
48317
  }, null, 8, ["modelValue", "disabled"])]),
48296
48318
  _: 1
48297
48319
  }),
48298
- f.value ? (U(), W("p", $J, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", eY, [...t[6] ||= [
48320
+ f.value ? (U(), W("p", ZJ, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", QJ, [...t[6] ||= [
48299
48321
  J("首个注册者需要安装令牌,防止他人抢注。本地版见服务端启动日志;Cloudflare 版为部署机密 ADMIN_SETUP_KEY。忘记密码:本地版运行 ", -1),
48300
48322
  K("code", null, "python server.py --reset-admin", -1),
48301
48323
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48302
48324
  ]]))
48303
- ], 64)) : (U(), W("p", tY, [...t[7] ||= [
48325
+ ], 64)) : (U(), W("p", $J, [...t[7] ||= [
48304
48326
  J("忘记密码:本地版运行 ", -1),
48305
48327
  K("code", null, "python server.py --reset-admin", -1),
48306
48328
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48307
48329
  ]])),
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, {
48330
+ s.auth.error ? (U(), W("p", eY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", tY, P(s.auth.notice), 1)) : Y("", !0),
48331
+ K("div", nY, [q(b, {
48310
48332
  type: "submit",
48311
48333
  class: "channel-primary-button",
48312
48334
  label: a.value === "register" ? "创建并登录" : "登录",
@@ -48317,13 +48339,13 @@ var cq = /*#__PURE__*/ jH({
48317
48339
  "loading",
48318
48340
  "disabled"
48319
48341
  ])])
48320
- ], 40, ZJ)) : (U(), W("div", aY, [
48321
- K("div", oY, [q(x, {
48342
+ ], 40, YJ)) : (U(), W("div", rY, [
48343
+ K("div", iY, [q(x, {
48322
48344
  src: I(n).identities.用户.icon,
48323
48345
  alt: `${I(n).display_name("用户")} 的头像`,
48324
48346
  size: "lg",
48325
48347
  class: "channel-avatar user account-avatar"
48326
- }, null, 8, ["src", "alt"]), K("div", sY, [
48348
+ }, null, 8, ["src", "alt"]), K("div", aY, [
48327
48349
  K("input", {
48328
48350
  ref_key: "avatar_input",
48329
48351
  ref: u,
@@ -48371,7 +48393,7 @@ var cq = /*#__PURE__*/ jH({
48371
48393
  "aria-label": "显示名称"
48372
48394
  }, null, 8, ["modelValue"])]),
48373
48395
  _: 1
48374
- }), K("div", cY, [q(b, {
48396
+ }), K("div", oY, [q(b, {
48375
48397
  type: "submit",
48376
48398
  label: "保存名称",
48377
48399
  color: "neutral",
@@ -48380,8 +48402,8 @@ var cq = /*#__PURE__*/ jH({
48380
48402
  loading: o.value === "name",
48381
48403
  disabled: !!o.value || !d.value || !l.value.trim()
48382
48404
  }, null, 8, ["loading", "disabled"])])], 32),
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, {
48405
+ s.profile.error ? (U(), W("p", sY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", cY, P(s.profile.notice), 1)) : Y("", !0),
48406
+ r.value.local ? Y("", !0) : (U(), W("div", lY, [q(b, {
48385
48407
  label: "退出登录",
48386
48408
  icon: "i-lucide-log-out",
48387
48409
  color: "neutral",
@@ -48394,65 +48416,65 @@ var cq = /*#__PURE__*/ jH({
48394
48416
  ]))]);
48395
48417
  };
48396
48418
  }
48397
- }, pY = {
48419
+ }, dY = {
48398
48420
  key: 0,
48399
48421
  class: "channel-archive-manager"
48400
- }, mY = { class: "channel-archive-toolbar" }, hY = {
48422
+ }, fY = { class: "channel-archive-toolbar" }, pY = {
48401
48423
  key: 0,
48402
48424
  class: "channel-archive-confirm channel-archive-bulk",
48403
48425
  role: "alert"
48404
- }, gY = {
48426
+ }, mY = {
48405
48427
  key: 1,
48406
48428
  role: "alert",
48407
48429
  class: "channel-directory-error"
48408
- }, _Y = { class: "channel-archive-results" }, vY = {
48430
+ }, hY = { class: "channel-archive-results" }, gY = {
48409
48431
  key: 0,
48410
48432
  class: "channel-archive-list",
48411
48433
  "aria-label": "已存档房间列表"
48412
- }, yY = { class: "channel-archive-row" }, bY = { class: "channel-archive-info" }, xY = [
48434
+ }, _Y = { class: "channel-archive-row" }, vY = { class: "channel-archive-info" }, yY = [
48413
48435
  "title",
48414
48436
  "disabled",
48415
48437
  "onClick"
48416
- ], SY = { key: 0 }, CY = ["datetime"], wY = { class: "channel-archive-actions" }, TY = {
48438
+ ], bY = { key: 0 }, xY = ["datetime"], SY = { class: "channel-archive-actions" }, CY = {
48417
48439
  key: 0,
48418
48440
  class: "channel-archive-confirm channel-archive-bulk",
48419
48441
  role: "alert"
48420
- }, EY = {
48442
+ }, wY = {
48421
48443
  key: 1,
48422
48444
  class: "channel-archive-empty"
48423
- }, DY = { class: "fine-print" }, OY = { class: "dialog-actions" }, kY = { class: "dialog-actions" }, AY = { class: "channel-management-target" }, jY = {
48445
+ }, TY = { class: "fine-print" }, EY = { class: "dialog-actions" }, DY = { class: "dialog-actions" }, OY = { class: "channel-management-target" }, kY = {
48424
48446
  key: 0,
48425
48447
  class: "fine-print"
48426
- }, MY = {
48448
+ }, AY = {
48427
48449
  key: 1,
48428
48450
  class: "fine-print"
48429
- }, NY = {
48451
+ }, jY = {
48430
48452
  key: 2,
48431
48453
  class: "fine-print"
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 = {
48454
+ }, MY = { class: "dialog-actions" }, NY = { key: 4 }, PY = { class: "theme-choices" }, FY = ["aria-pressed", "onClick"], IY = { class: "theme-check" }, LY = { class: "channel-reading-setting" }, RY = {
48433
48455
  class: "channel-reading-options",
48434
48456
  role: "group",
48435
48457
  "aria-labelledby": "channel-reading-label"
48436
- }, VY = { class: "channel-reading-setting" }, HY = {
48458
+ }, zY = { class: "channel-reading-setting" }, BY = {
48437
48459
  class: "channel-reading-options channel-effect-options",
48438
48460
  role: "group",
48439
48461
  "aria-labelledby": "channel-effects-label"
48440
- }, UY = { class: "form-two-columns" }, WY = { class: "advanced-content" }, GY = { class: "form-two-columns" }, KY = {
48462
+ }, VY = { class: "form-two-columns" }, HY = { class: "advanced-content" }, UY = { class: "form-two-columns" }, WY = {
48441
48463
  key: 0,
48442
48464
  class: "fine-print"
48443
- }, qY = { class: "advanced-content" }, JY = { class: "expert-fields" }, YY = { class: "dialog-actions" }, XY = { class: "dialog-actions" }, ZY = {
48465
+ }, GY = { class: "advanced-content" }, KY = { class: "expert-fields" }, qY = { class: "dialog-actions" }, JY = { class: "dialog-actions" }, YY = {
48444
48466
  key: 8,
48445
48467
  class: "original-message"
48446
- }, QY = {
48468
+ }, XY = {
48447
48469
  key: 0,
48448
48470
  role: "alert"
48449
- }, $Y = { class: "original-meta" }, eX = { class: "fine-print" }, tX = {
48471
+ }, ZY = { class: "original-meta" }, QY = { class: "fine-print" }, $Y = {
48450
48472
  key: 0,
48451
48473
  class: "channel-answer-summary"
48452
- }, nX = { class: "message-prose" }, rX = { class: "message-prose" }, iX = ["innerHTML"], aX = {
48474
+ }, eX = { class: "message-prose" }, tX = { class: "message-prose" }, nX = ["innerHTML"], rX = {
48453
48475
  key: 2,
48454
48476
  class: "fine-print"
48455
- }, oX = "topic-expert-modes", sX = {
48477
+ }, iX = "topic-expert-modes", aX = {
48456
48478
  __name: "WorkspaceDialogs",
48457
48479
  props: /*@__PURE__*/ Fa({
48458
48480
  detailId: {
@@ -48720,7 +48742,7 @@ var cq = /*#__PURE__*/ jH({
48720
48742
  }
48721
48743
  let Ce = (e) => e.preventDefault();
48722
48744
  return (t, c) => {
48723
- let x = YV, S = bH, le = MA, de = zV, fe = sA, ye = HV, we = VK, Te = WV, Ee = zK;
48745
+ let x = YV, S = bH, le = MA, de = zV, fe = sA, ye = HV, we = RK, Te = WV, Ee = IK;
48724
48746
  return U(), G(Ee, {
48725
48747
  open: d.value,
48726
48748
  "onUpdate:open": c[24] ||= (e) => d.value = e,
@@ -48741,8 +48763,8 @@ var cq = /*#__PURE__*/ jH({
48741
48763
  } : void 0,
48742
48764
  "onAfter:leave": xe
48743
48765
  }, {
48744
- body: L(() => [a.value === "archives" ? (U(), W("section", pY, [
48745
- K("div", mY, [
48766
+ body: L(() => [a.value === "archives" ? (U(), W("section", dY, [
48767
+ K("div", fY, [
48746
48768
  q(x, {
48747
48769
  modelValue: h.value,
48748
48770
  "onUpdate:modelValue": c[0] ||= (e) => h.value = e,
@@ -48771,7 +48793,7 @@ var cq = /*#__PURE__*/ jH({
48771
48793
  }
48772
48794
  }, null, 8, ["label", "disabled"])
48773
48795
  ]),
48774
- b.value && v.value.length ? (U(), W("div", hY, [
48796
+ b.value && v.value.length ? (U(), W("div", pY, [
48775
48797
  K("span", null, "将永久删除当前列表中的 " + P(v.value.length) + " 个房间及其全部记录,无法撤销。", 1),
48776
48798
  q(le, {
48777
48799
  label: "取消",
@@ -48787,20 +48809,20 @@ var cq = /*#__PURE__*/ jH({
48787
48809
  onClick: E
48788
48810
  })
48789
48811
  ])) : Y("", !0),
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", {
48812
+ I(o).directory_error ? (U(), W("p", mY, P(I(o).directory_error), 1)) : Y("", !0),
48813
+ K("div", hY, [v.value.length ? (U(), W("ul", gY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48792
48814
  key: e.id,
48793
48815
  class: "channel-archive-item"
48794
- }, [K("div", yY, [K("div", bY, [K("button", {
48816
+ }, [K("div", _Y, [K("div", vY, [K("button", {
48795
48817
  class: "channel-archive-title",
48796
48818
  title: e.title,
48797
48819
  disabled: !!I(u),
48798
48820
  onClick: (t) => T(e)
48799
- }, P(e.title), 9, xY), K("small", null, [e.created_at ? (U(), W("span", SY, [
48821
+ }, P(e.title), 9, yY), K("small", null, [e.created_at ? (U(), W("span", bY, [
48800
48822
  c[25] ||= J("创建于 ", -1),
48801
- K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, CY),
48823
+ K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, xY),
48802
48824
  c[26] ||= J(" · ", -1)
48803
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", wY, [q(le, {
48825
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", SY, [q(le, {
48804
48826
  "aria-label": `彻底删除 ${e.title}`,
48805
48827
  title: "彻底删除",
48806
48828
  icon: "i-lucide-trash-2",
@@ -48832,7 +48854,7 @@ var cq = /*#__PURE__*/ jH({
48832
48854
  "aria-label",
48833
48855
  "disabled",
48834
48856
  "onClick"
48835
- ])])]), y.value === e.id ? (U(), W("div", TY, [
48857
+ ])])]), y.value === e.id ? (U(), W("div", CY, [
48836
48858
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
48837
48859
  q(le, {
48838
48860
  label: "取消",
@@ -48848,12 +48870,12 @@ var cq = /*#__PURE__*/ jH({
48848
48870
  disabled: w(e),
48849
48871
  onClick: ee
48850
48872
  }, null, 8, ["disabled"])
48851
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", EY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48873
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", wY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48852
48874
  ])) : a.value === "delete-folder" ? (U(), W("form", {
48853
48875
  key: 1,
48854
48876
  class: "dialog-form",
48855
48877
  onSubmit: uu(re, ["prevent"])
48856
- }, [K("p", DY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", OY, [q(le, {
48878
+ }, [K("p", TY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", EY, [q(le, {
48857
48879
  label: "取消",
48858
48880
  color: "neutral",
48859
48881
  variant: "ghost",
@@ -48884,7 +48906,7 @@ var cq = /*#__PURE__*/ jH({
48884
48906
  "modelValue",
48885
48907
  "aria-label",
48886
48908
  "readonly"
48887
- ]), K("div", kY, [q(le, {
48909
+ ]), K("div", DY, [q(le, {
48888
48910
  label: "取消",
48889
48911
  color: "neutral",
48890
48912
  variant: "ghost",
@@ -48909,10 +48931,10 @@ var cq = /*#__PURE__*/ jH({
48909
48931
  class: "dialog-form",
48910
48932
  onSubmit: uu(te, ["prevent"])
48911
48933
  }, [
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),
48934
+ K("p", OY, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
48935
+ a.value === "archive" ? (U(), W("p", kY, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
48936
+ a.value === "restore" ? (U(), W("p", AY, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
48937
+ a.value === "delete" ? (U(), W("p", jY, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
48916
48938
  a.value === "rename" ? (U(), G(de, {
48917
48939
  key: 3,
48918
48940
  label: "房间名称",
@@ -48929,7 +48951,7 @@ var cq = /*#__PURE__*/ jH({
48929
48951
  }, null, 8, ["modelValue"])]),
48930
48952
  _: 1
48931
48953
  })) : Y("", !0),
48932
- K("div", PY, [q(le, {
48954
+ K("div", MY, [q(le, {
48933
48955
  label: "取消",
48934
48956
  color: "neutral",
48935
48957
  variant: "ghost",
@@ -48946,10 +48968,10 @@ var cq = /*#__PURE__*/ jH({
48946
48968
  "loading",
48947
48969
  "disabled"
48948
48970
  ])])
48949
- ], 32)) : a.value === "settings" ? (U(), W("div", FY, [
48950
- q(fY),
48971
+ ], 32)) : a.value === "settings" ? (U(), W("div", NY, [
48972
+ q(uY),
48951
48973
  c[31] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
48952
- K("div", IY, [(U(), W(H, null, B(ge, (e) => K("button", {
48974
+ K("div", PY, [(U(), W(H, null, B(ge, (e) => K("button", {
48953
48975
  key: e.value,
48954
48976
  class: M({ chosen: I(o).theme === e.value }),
48955
48977
  "aria-pressed": I(o).theme === e.value,
@@ -48964,12 +48986,12 @@ var cq = /*#__PURE__*/ jH({
48964
48986
  K("b")
48965
48987
  ], -1)]], 2),
48966
48988
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
48967
- K("span", RY, [I(o).theme === e.value ? (U(), G(fe, {
48989
+ K("span", IY, [I(o).theme === e.value ? (U(), G(fe, {
48968
48990
  key: 0,
48969
48991
  name: "i-lucide-check"
48970
48992
  })) : Y("", !0)])
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, {
48993
+ ], 10, FY)), 64))]),
48994
+ K("section", LY, [c[28] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", RY, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(le, {
48973
48995
  key: e.value,
48974
48996
  label: e.label,
48975
48997
  color: "neutral",
@@ -48983,9 +49005,9 @@ var cq = /*#__PURE__*/ jH({
48983
49005
  "aria-pressed",
48984
49006
  "onClick"
48985
49007
  ]))), 128))])]),
48986
- K("section", VY, [
49008
+ K("section", zY, [
48987
49009
  c[29] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
48988
- K("div", HY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(le, {
49010
+ K("div", BY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(le, {
48989
49011
  key: e.value,
48990
49012
  label: e.label,
48991
49013
  color: "neutral",
@@ -49001,7 +49023,7 @@ var cq = /*#__PURE__*/ jH({
49001
49023
  ]))), 128))]),
49002
49024
  c[30] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
49003
49025
  ])
49004
- ])) : a.value === "create" ? (U(), G(JJ, {
49026
+ ])) : a.value === "create" ? (U(), G(KJ, {
49005
49027
  key: 5,
49006
49028
  "target-folder": e.targetFolder,
49007
49029
  onSubmit: _e,
@@ -49036,7 +49058,7 @@ var cq = /*#__PURE__*/ jH({
49036
49058
  }, null, 8, ["model-value"])]),
49037
49059
  _: 1
49038
49060
  }),
49039
- K("div", UY, [q(de, { label: "主持人" }, {
49061
+ K("div", VY, [q(de, { label: "主持人" }, {
49040
49062
  default: L(() => [q(S, {
49041
49063
  "model-value": I(o).fields[N("host")],
49042
49064
  items: I(ae),
@@ -49070,9 +49092,9 @@ var cq = /*#__PURE__*/ jH({
49070
49092
  }, null, 8, ["model-value"])]),
49071
49093
  _: 1
49072
49094
  })) : Y("", !0),
49073
- K("section", WY, [
49095
+ K("section", HY, [
49074
49096
  c[32] ||= K("h3", null, "讨论上限", -1),
49075
- K("div", GY, [
49097
+ K("div", UY, [
49076
49098
  (U(!0), W(H, null, B(ue.value, (e) => (U(), G(de, {
49077
49099
  key: e.key,
49078
49100
  label: e.label
@@ -49133,14 +49155,14 @@ var cq = /*#__PURE__*/ jH({
49133
49155
  })) : Y("", !0)
49134
49156
  ]),
49135
49157
  c[33] ||= K("p", { class: "fine-print" }, "轮次、总时长、单次执行留空或 0 表示不限。一轮指每位专家各完成一次观点;首次进入讨论阶段或创建安排后计时,暂停期间不计时。收束预留计入总时长。", -1),
49136
- ce.value ? (U(), W("p", KY, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49158
+ ce.value ? (U(), W("p", WY, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49137
49159
  ]),
49138
49160
  q(we, {
49139
49161
  open: se.value,
49140
49162
  "onUpdate:open": c[19] ||= (e) => se.value = e,
49141
49163
  class: "advanced-fields"
49142
49164
  }, {
49143
- content: L(() => [K("div", qY, [
49165
+ content: L(() => [K("div", GY, [
49144
49166
  (U(), W(H, null, B([
49145
49167
  {
49146
49168
  key: "user_request",
@@ -49167,11 +49189,11 @@ var cq = /*#__PURE__*/ jH({
49167
49189
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
49168
49190
  _: 2
49169
49191
  }, 1032, ["label"])), 64)),
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",
49192
+ K("div", KY, [(U(!0), W(H, null, B(I(ie), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49193
+ "model-value": I(o).experts[iX]?.[e] || "none",
49172
49194
  items: oe,
49173
49195
  "aria-label": `${e} 参与方式`,
49174
- "onUpdate:modelValue": (t) => I(s).write_expert(oX, e, t === "none" ? "" : t)
49196
+ "onUpdate:modelValue": (t) => I(s).write_expert(iX, e, t === "none" ? "" : t)
49175
49197
  }, null, 8, [
49176
49198
  "model-value",
49177
49199
  "aria-label",
@@ -49189,7 +49211,7 @@ var cq = /*#__PURE__*/ jH({
49189
49211
  }, null, 8, ["trailing-icon"])]),
49190
49212
  _: 1
49191
49213
  }, 8, ["open"]),
49192
- K("div", YY, [q(le, {
49214
+ K("div", qY, [q(le, {
49193
49215
  label: "取消",
49194
49216
  color: "neutral",
49195
49217
  variant: "ghost",
@@ -49233,7 +49255,7 @@ var cq = /*#__PURE__*/ jH({
49233
49255
  _: 1
49234
49256
  }),
49235
49257
  c[35] ||= K("p", { class: "fine-print" }, "创建后为待通知状态;由主持人实际联系专家。", -1),
49236
- K("div", XY, [q(le, {
49258
+ K("div", JY, [q(le, {
49237
49259
  label: "取消",
49238
49260
  variant: "ghost",
49239
49261
  color: "neutral",
@@ -49244,8 +49266,8 @@ var cq = /*#__PURE__*/ jH({
49244
49266
  label: "创建发言安排",
49245
49267
  loading: I(u) === "schedule"
49246
49268
  }, null, 8, ["loading"])])
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, [
49269
+ ], 32)) : a.value === "message" ? (U(), W("div", YY, [pe.value ? (U(), W("p", XY, P(pe.value), 1)) : j.value ? (U(), W(H, { key: 1 }, [
49270
+ K("div", ZY, [
49249
49271
  K("strong", null, P(I(s).display_name(j.value.author)), 1),
49250
49272
  K("span", null, "#" + P(j.value.id), 1),
49251
49273
  q(Te, {
@@ -49256,14 +49278,14 @@ var cq = /*#__PURE__*/ jH({
49256
49278
  _: 1
49257
49279
  })
49258
49280
  ]),
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),
49281
+ K("p", QY, P(I(s).provenance(j.value)) + " · " + P(new Date(j.value.created_at).toLocaleString("zh-CN")), 1),
49282
+ j.value.summary ? (U(), W("section", $Y, [K("small", null, "回答摘要 · " + P(I(s).display_name(j.value.summary_by)), 1), K("p", eX, P(j.value.summary), 1)])) : Y("", !0),
49283
+ K("p", tX, P(j.value.text), 1),
49262
49284
  j.value.attachments?.length ? (U(), W("div", {
49263
49285
  key: 1,
49264
49286
  onClick: be,
49265
49287
  innerHTML: I(s).attachment_markup(j.value.attachments)
49266
- }, null, 8, iX)) : Y("", !0),
49288
+ }, null, 8, nX)) : Y("", !0),
49267
49289
  j.value.reply_to ? (U(), G(le, {
49268
49290
  key: 2,
49269
49291
  label: `查看被回复的原文 #${j.value.reply_to}`,
@@ -49273,7 +49295,7 @@ var cq = /*#__PURE__*/ jH({
49273
49295
  class: "channel-surface-button",
49274
49296
  onClick: Se
49275
49297
  }, null, 8, ["label"])) : Y("", !0)
49276
- ], 64)) : (U(), W("p", aX, "正在读取原文…"))])) : Y("", !0)]),
49298
+ ], 64)) : (U(), W("p", rX, "正在读取原文…"))])) : Y("", !0)]),
49277
49299
  _: 1
49278
49300
  }, 8, [
49279
49301
  "open",
@@ -49284,7 +49306,7 @@ var cq = /*#__PURE__*/ jH({
49284
49306
  ]);
49285
49307
  };
49286
49308
  }
49287
- }, cX = {
49309
+ }, oX = {
49288
49310
  __name: "ContextMenuContent",
49289
49311
  props: {
49290
49312
  items: {
@@ -49579,7 +49601,7 @@ var cq = /*#__PURE__*/ jH({
49579
49601
  "disabled",
49580
49602
  "text-value",
49581
49603
  "class"
49582
- ]), q(cX, X({
49604
+ ]), q(oX, X({
49583
49605
  sub: "",
49584
49606
  class: r.ui?.content,
49585
49607
  ui: e.ui,
@@ -49690,7 +49712,7 @@ var cq = /*#__PURE__*/ jH({
49690
49712
  _: 3
49691
49713
  }, 16)], 64));
49692
49714
  }
49693
- }, lX = {
49715
+ }, sX = {
49694
49716
  slots: {
49695
49717
  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
49718
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -49878,7 +49900,7 @@ var cq = /*#__PURE__*/ jH({
49878
49900
  }
49879
49901
  ],
49880
49902
  defaultVariants: { size: "md" }
49881
- }, uX = {
49903
+ }, cX = {
49882
49904
  __name: "ContextMenu",
49883
49905
  props: {
49884
49906
  size: {
@@ -49948,7 +49970,7 @@ var cq = /*#__PURE__*/ jH({
49948
49970
  emits: ["update:open"],
49949
49971
  setup(e, { emit: t }) {
49950
49972
  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: lX,
49973
+ extend: sX,
49952
49974
  ...o.ui?.contextMenu || {}
49953
49975
  })({ size: a.size }));
49954
49976
  return (e, t) => (U(), G(I(iC), N(Ss(I(s))), {
@@ -49960,7 +49982,7 @@ var cq = /*#__PURE__*/ jH({
49960
49982
  }, {
49961
49983
  default: L(() => [V(e.$slots, "default")]),
49962
49984
  _: 3
49963
- }, 8, ["disabled", "class"])) : Y("", !0), q(cX, X({
49985
+ }, 8, ["disabled", "class"])) : Y("", !0), q(oX, X({
49964
49986
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
49965
49987
  ui: u.value,
49966
49988
  "ui-override": I(a).ui
@@ -49990,50 +50012,50 @@ var cq = /*#__PURE__*/ jH({
49990
50012
  _: 3
49991
50013
  }, 16));
49992
50014
  }
49993
- }, dX = { class: "channel-directory-manager" }, fX = { class: "channel-directory-heading" }, pX = ["aria-expanded"], mX = { class: "channel-directory-actions" }, hX = {
50015
+ }, lX = { class: "channel-directory-manager" }, uX = { class: "channel-directory-heading" }, dX = ["aria-expanded"], fX = { class: "channel-directory-actions" }, pX = {
49994
50016
  "aria-label": "讨论房间列表",
49995
50017
  class: "channel-room-list",
49996
50018
  "data-room-directory": ""
49997
- }, gX = ["data-room-folder", "data-drag-folder"], _X = {
50019
+ }, mX = ["data-room-folder", "data-drag-folder"], hX = {
49998
50020
  key: 0,
49999
50021
  class: "channel-folder-row"
50000
- }, vX = [
50022
+ }, gX = [
50001
50023
  "disabled",
50002
50024
  "aria-label",
50003
50025
  "aria-expanded",
50004
50026
  "onKeydown",
50005
50027
  "onClick"
50006
- ], yX = { class: "channel-folder-name" }, bX = { class: "channel-folder-actions" }, xX = {
50028
+ ], _X = { class: "channel-folder-name" }, vX = { class: "channel-folder-actions" }, yX = {
50007
50029
  class: "channel-directory-count",
50008
50030
  "aria-hidden": "true"
50009
- }, SX = ["data-drop-folder"], CX = {
50031
+ }, bX = ["data-drop-folder"], xX = {
50010
50032
  key: 0,
50011
50033
  class: "channel-directory-empty",
50012
50034
  role: "status"
50013
- }, wX = ["data-drag-room"], TX = [
50035
+ }, SX = ["data-drag-room"], CX = [
50014
50036
  "aria-label",
50015
50037
  "disabled",
50016
50038
  "onKeydown"
50017
- ], EX = [
50039
+ ], wX = [
50018
50040
  "title",
50019
50041
  "aria-label",
50020
50042
  "aria-current",
50021
50043
  "onClick"
50022
- ], DX = { class: "channel-room-actions" }, OX = {
50044
+ ], TX = { class: "channel-room-actions" }, EX = {
50023
50045
  key: 0,
50024
50046
  class: "channel-directory-empty"
50025
- }, kX = {
50047
+ }, DX = {
50026
50048
  key: 0,
50027
50049
  class: "channel-archive-count"
50028
- }, AX = {
50050
+ }, OX = {
50029
50051
  key: 0,
50030
50052
  role: "status",
50031
50053
  class: "channel-directory-notice"
50032
- }, jX = {
50054
+ }, kX = {
50033
50055
  key: 1,
50034
50056
  role: "alert",
50035
50057
  class: "channel-directory-error"
50036
- }, MX = {
50058
+ }, AX = {
50037
50059
  __name: "ChannelDirectory",
50038
50060
  emits: [
50039
50061
  "select",
@@ -50247,8 +50269,8 @@ var cq = /*#__PURE__*/ jH({
50247
50269
  ];
50248
50270
  }
50249
50271
  return (e, t) => {
50250
- let u = MA, _ = sA, v = TH, x = $V, S = uX;
50251
- return U(), W("div", dX, [
50272
+ let u = MA, _ = sA, v = TH, x = $V, S = cX;
50273
+ return U(), W("div", lX, [
50252
50274
  q(u, {
50253
50275
  label: "新建对话",
50254
50276
  icon: "i-lucide-plus",
@@ -50257,12 +50279,12 @@ var cq = /*#__PURE__*/ jH({
50257
50279
  disabled: I(r).directory_pending.includes("create-room"),
50258
50280
  onClick: t[0] ||= (e) => n("create", null)
50259
50281
  }, null, 8, ["disabled"]),
50260
- K("div", fX, [K("button", {
50282
+ K("div", uX, [K("button", {
50261
50283
  type: "button",
50262
50284
  class: "channel-section-toggle",
50263
50285
  "aria-expanded": m.value,
50264
50286
  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, pX), K("div", mX, [
50287
+ }, [q(_, { name: m.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[7] ||= J("讨论房间", -1)], 8, dX), K("div", fX, [
50266
50288
  q(v, {
50267
50289
  items: d.value,
50268
50290
  content: {
@@ -50304,12 +50326,12 @@ var cq = /*#__PURE__*/ jH({
50304
50326
  onChange: p
50305
50327
  }, null, 544)
50306
50328
  ])]),
50307
- vr(K("nav", hX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50329
+ vr(K("nav", pX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50308
50330
  key: e.order_id,
50309
50331
  class: "channel-folder-section",
50310
50332
  "data-room-folder": e.id,
50311
50333
  "data-drag-folder": e.order_id
50312
- }, [e.id ? (U(), W("div", _X, [
50334
+ }, [e.id ? (U(), W("div", hX, [
50313
50335
  K("button", {
50314
50336
  class: "channel-folder-heading",
50315
50337
  "data-drop-folder": "",
@@ -50331,9 +50353,9 @@ var cq = /*#__PURE__*/ jH({
50331
50353
  }, [
50332
50354
  q(_, { name: h.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
50333
50355
  q(_, { name: "i-lucide-folder" }),
50334
- K("span", yX, P(e.name), 1)
50335
- ], 40, vX),
50336
- K("div", bX, [q(v, {
50356
+ K("span", _X, P(e.name), 1)
50357
+ ], 40, gX),
50358
+ K("div", vX, [q(v, {
50337
50359
  items: g(e, s),
50338
50360
  content: {
50339
50361
  align: "start",
@@ -50367,12 +50389,12 @@ var cq = /*#__PURE__*/ jH({
50367
50389
  ])]),
50368
50390
  _: 2
50369
50391
  }, 1032, ["text"])]),
50370
- K("small", xX, P(e.pending ? "保存中" : e.rooms.length), 1)
50392
+ K("small", yX, P(e.pending ? "保存中" : e.rooms.length), 1)
50371
50393
  ])) : Y("", !0), !e.id || !h.value.has(e.id) ? (U(), W("div", {
50372
50394
  key: 1,
50373
50395
  class: M(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
50374
50396
  "data-drop-folder": e.id ? void 0 : ""
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, {
50397
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", xX, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(S, {
50376
50398
  key: s.id,
50377
50399
  items: b(s, c, s.folder_id || null, e.rooms.length),
50378
50400
  ui: { content: "channel-menu channel-topic-menu" }
@@ -50397,7 +50419,7 @@ var cq = /*#__PURE__*/ jH({
50397
50419
  direction: 1,
50398
50420
  folder_id: s.folder_id || null
50399
50421
  }), ["prevent"]), ["down"])]
50400
- }, [q(_, { name: "i-lucide-grip-vertical" })], 40, TX),
50422
+ }, [q(_, { name: "i-lucide-grip-vertical" })], 40, CX),
50401
50423
  K("button", {
50402
50424
  class: "channel-room-select",
50403
50425
  "data-drag-title": "",
@@ -50406,8 +50428,8 @@ var cq = /*#__PURE__*/ jH({
50406
50428
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
50407
50429
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
50408
50430
  onClick: (e) => n("select", s.id)
50409
- }, [K("span", null, P(s.title), 1)], 40, EX),
50410
- K("div", DX, [q(x, {
50431
+ }, [K("span", null, P(s.title), 1)], 40, wX),
50432
+ K("div", TX, [q(x, {
50411
50433
  text: s.archived ? "恢复房间" : "存档房间",
50412
50434
  ui: { content: "channel-topic-tooltip" }
50413
50435
  }, {
@@ -50448,9 +50470,9 @@ var cq = /*#__PURE__*/ jH({
50448
50470
  }, null, 8, ["aria-label"])]),
50449
50471
  _: 2
50450
50472
  }, 1032, ["items"])])
50451
- ], 10, wX)]),
50473
+ ], 10, SX)]),
50452
50474
  _: 2
50453
- }, 1032, ["items"]))), 128))], 10, SX)) : Y("", !0)], 8, gX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", OX, "暂无讨论房间"))], 512), [[Vc, m.value]]),
50475
+ }, 1032, ["items"]))), 128))], 10, bX)) : Y("", !0)], 8, mX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", EX, "暂无讨论房间"))], 512), [[Vc, m.value]]),
50454
50476
  vr(q(u, {
50455
50477
  icon: "i-lucide-archive",
50456
50478
  color: "neutral",
@@ -50459,118 +50481,114 @@ var cq = /*#__PURE__*/ jH({
50459
50481
  "aria-haspopup": "dialog",
50460
50482
  onClick: t[6] ||= (e) => n("archives")
50461
50483
  }, {
50462
- default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", kX, P(c.value), 1)) : Y("", !0)]),
50484
+ default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", DX, P(c.value), 1)) : Y("", !0)]),
50463
50485
  _: 1
50464
50486
  }, 512), [[Vc, m.value]]),
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)
50487
+ I(r).directory_notice ? (U(), W("p", OX, P(I(r).directory_notice), 1)) : Y("", !0),
50488
+ I(r).directory_error ? (U(), W("p", kX, P(I(r).directory_error), 1)) : Y("", !0)
50467
50489
  ]);
50468
50490
  };
50469
50491
  }
50470
- }, NX = {
50492
+ }, jX = {
50471
50493
  key: 0,
50472
50494
  class: "pb-header"
50473
- }, PX = { class: "pb-mode" }, FX = { class: "pb-status-line" }, IX = { role: "status" }, LX = {
50495
+ }, MX = { class: "pb-mode" }, NX = { class: "pb-status-line" }, PX = { role: "status" }, FX = {
50474
50496
  key: 0,
50475
50497
  class: "pb-mode"
50476
- }, RX = {
50498
+ }, IX = {
50477
50499
  key: 0,
50478
50500
  class: "pb-status-detail"
50479
- }, zX = {
50501
+ }, LX = {
50480
50502
  key: 1,
50481
50503
  class: "pb-status-detail"
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,
50504
+ }, RX = { class: "pb-error-detail" }, zX = {
50505
+ key: 3,
50488
50506
  class: "pb-meters"
50489
- }, GX = { class: "pb-meter-label" }, KX = {
50507
+ }, BX = { class: "pb-meter-label" }, VX = {
50490
50508
  key: 0,
50491
50509
  class: "pb-bar"
50492
- }, qX = {
50510
+ }, HX = {
50493
50511
  key: 1,
50494
50512
  class: "pb-section",
50495
50513
  "aria-label": "当前焦点"
50496
- }, JX = {
50514
+ }, UX = {
50497
50515
  class: "pb-section",
50498
50516
  "aria-label": "参与者"
50499
- }, YX = { class: "pb-heading" }, XX = {
50517
+ }, WX = { class: "pb-heading" }, GX = {
50500
50518
  key: 0,
50501
50519
  class: "pb-status-detail pb-held"
50502
- }, ZX = { class: "pb-members" }, QX = { class: "pb-member-body" }, $X = { class: "pb-member-name" }, eZ = {
50520
+ }, KX = { class: "pb-members" }, qX = { class: "pb-member-body" }, JX = { class: "pb-member-name" }, YX = {
50503
50521
  key: 0,
50504
50522
  class: "pb-member-model",
50505
50523
  title: "本场启动配置;默认模型与默认强度由对应软件决定"
50506
- }, tZ = {
50524
+ }, XX = {
50507
50525
  key: 1,
50508
50526
  class: "pb-member-model",
50509
50527
  title: "续接你已有的会话;它工作时请不要在原窗口继续操作"
50510
- }, nZ = { key: 0 }, rZ = {
50528
+ }, ZX = { key: 0 }, QX = {
50511
50529
  key: 3,
50512
50530
  class: "pb-member-manual"
50513
- }, iZ = { key: 0 }, aZ = ["onClick"], oZ = { class: "pb-member-body" }, sZ = { class: "pb-member-name" }, cZ = {
50531
+ }, $X = { key: 0 }, eZ = ["onClick"], tZ = { class: "pb-member-body" }, nZ = { class: "pb-member-name" }, rZ = {
50514
50532
  key: 1,
50515
50533
  role: "alert",
50516
50534
  class: "pb-free-note is-error"
50517
- }, lZ = {
50535
+ }, iZ = {
50518
50536
  key: 2,
50519
50537
  role: "status",
50520
50538
  class: "pb-free-note"
50521
- }, uZ = {
50539
+ }, aZ = {
50522
50540
  key: 2,
50523
50541
  class: "pb-actions",
50524
50542
  "aria-label": "操作"
50525
- }, dZ = {
50543
+ }, oZ = {
50526
50544
  key: 3,
50527
50545
  class: "pb-section",
50528
50546
  "aria-label": "阶段耗时"
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 = {
50547
+ }, sZ = { class: "pb-timing-heading" }, cZ = ["aria-label"], lZ = { class: "pb-timing-totals" }, uZ = ["title"], dZ = { class: "pb-timings" }, fZ = { class: "pb-timing-who" }, pZ = { class: "pb-timing-stages" }, mZ = ["title"], hZ = {
50530
50548
  key: 0,
50531
50549
  class: "pb-note"
50532
- }, xZ = { class: "pb-connection" }, SZ = { class: "fine-print" }, CZ = {
50550
+ }, gZ = { class: "pb-connection" }, _Z = { class: "fine-print" }, vZ = {
50533
50551
  key: 0,
50534
50552
  role: "status",
50535
50553
  class: "fine-print"
50536
- }, wZ = {
50554
+ }, yZ = {
50537
50555
  key: 2,
50538
50556
  role: "alert",
50539
50557
  class: "fine-print"
50540
- }, TZ = { key: 2 }, EZ = {
50558
+ }, bZ = { key: 2 }, xZ = {
50541
50559
  key: 0,
50542
50560
  class: "pb-invite",
50543
50561
  "aria-label": "启动手动成员"
50544
- }, DZ = { class: "pb-invite-lead" }, OZ = {
50562
+ }, SZ = { class: "pb-invite-lead" }, CZ = {
50545
50563
  key: 0,
50546
50564
  role: "alert",
50547
50565
  class: "pb-free-note is-error"
50548
- }, kZ = { class: "pb-invite-launches" }, AZ = { class: "pb-invite-footer" }, jZ = {
50566
+ }, wZ = { class: "pb-invite-launches" }, TZ = { class: "pb-invite-footer" }, EZ = {
50549
50567
  class: "pb-invite-library",
50550
50568
  role: "group",
50551
50569
  "aria-label": "选择 AI(可多选)"
50552
- }, MZ = [
50570
+ }, DZ = [
50553
50571
  "aria-pressed",
50554
50572
  "title",
50555
50573
  "onClick"
50556
- ], NZ = {
50574
+ ], OZ = {
50557
50575
  key: 0,
50558
50576
  class: "pb-invite-cards"
50559
- }, PZ = {
50577
+ }, kZ = {
50560
50578
  key: 0,
50561
50579
  class: "fine-print"
50562
- }, FZ = ["aria-hidden"], IZ = {
50580
+ }, AZ = ["aria-hidden"], jZ = {
50563
50581
  key: 2,
50564
50582
  class: "pb-invite-empty"
50565
- }, LZ = {
50583
+ }, MZ = {
50566
50584
  key: 3,
50567
50585
  role: "alert",
50568
50586
  class: "fine-print"
50569
- }, RZ = {
50587
+ }, NZ = {
50570
50588
  key: 4,
50571
50589
  role: "alert",
50572
50590
  class: "pb-free-note is-error"
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({
50591
+ }, PZ = { class: "pb-invite-footer" }, FZ = { class: "pb-invite-footer" }, IZ = { class: "pb-invite-footer" }, LZ = { class: "progress-ending pb-decision-summary" }, RZ = ["disabled"], zZ = { class: "progress-ending" }, BZ = ["disabled"], VZ = { key: 0 }, HZ = ["disabled"], UZ = 2e3, WZ = 90, GZ = 100, KZ = /*#__PURE__*/ jH({
50574
50592
  __name: "ProgressBoard",
50575
50593
  props: { docked: {
50576
50594
  type: Boolean,
@@ -50581,7 +50599,7 @@ var cq = /*#__PURE__*/ jH({
50581
50599
  async function l(e) {
50582
50600
  clearTimeout(c), s.value = "", await i("copy_member_launch", e) && (s.value = e, c = setTimeout(() => {
50583
50601
  s.value = "";
50584
- }, GZ));
50602
+ }, UZ));
50585
50603
  }
50586
50604
  let u = /* @__PURE__ */ F(!1), d = /* @__PURE__ */ F(null), f = /* @__PURE__ */ F(!1), p = ["pending", "notified"], m = {
50587
50605
  dispatched: "已交付,等待开始",
@@ -50609,19 +50627,19 @@ var cq = /*#__PURE__*/ jH({
50609
50627
  completed: "完成",
50610
50628
  cancelled: "已撤销",
50611
50629
  failed: "失败"
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(() => [
50630
+ }, _ = 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(!1), O = /* @__PURE__ */ F(0), k = /* @__PURE__ */ F(0), te = Z(() => r.limit_rounds(v.value)), ne = Z(() => C.value && b.value && !!_.value.round_budget && !_.value.archived), re = Z(() => b.value && (y.value.status === "paused" || y.value.expired) && !C.value && !_.value.archived && !T.value), ie = Z(() => [
50613
50631
  "initial",
50614
50632
  "discussing",
50615
50633
  "reviewing"
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) => {
50634
+ ].includes(_.value.phase) && !_.value.archived), ae = Z(() => !!(x.value && (ie.value || re.value))), A = Z(() => !!n.value.access?.can_manage), oe = Z(() => (ie.value || _.value.phase === "paused") && !_.value.archived), se = Z(() => T.value && b.value && A.value), ce = Z(() => ie.value || re.value || oe.value || ne.value || se.value), le = Z(() => !S.value && _.value.phase !== "preparing" && !_.value.archived && !v.value.closing), ue = Z(() => [_.value.host, ...Object.keys(_.value.experts || {}).filter((e) => e !== _.value.host)].filter((e) => e && e !== "用户").map(Ie)), de = Z(() => ue.value.find((e) => e.result)), fe = (e) => /^Codex(?:-|$)/.test(e), pe = Z(() => de.value && fe(de.value.name) && /active writer/.test(de.value.result) ? de.value : null), me = Z(() => (_.value.members || []).filter((e) => e.status === "away")), he = (e) => (_.value.members || []).find((t) => t.name === e), ge = Z(() => b.value && !w.value), N = /* @__PURE__ */ F([]), _e = 0, ve = /* @__PURE__ */ F(!1), ye = /* @__PURE__ */ F([]), be = /* @__PURE__ */ F(!1), xe = Z(() => Object.keys(r.launch_clients)), Se = Z(() => (_.value.members || []).map((e) => e.name)), Ce = (e) => Se.value.filter((t) => r.platform_of(t) === e).length, we = Z(() => [...N.value.filter((e) => e.mode !== "manual"), ...N.value.filter((e) => e.mode === "manual")]), Te = Z(() => {
50635
+ let e = [...Se.value];
50636
+ return new Map(we.value.map((t) => {
50619
50637
  let n = t.name;
50620
50638
  for (let r = 2; e.includes(n); r++) n = `${t.name}-${r}`;
50621
50639
  return e.push(n), [t, n];
50622
50640
  }));
50623
50641
  });
50624
- function we(e) {
50642
+ function Ee(e) {
50625
50643
  let t = n.value.launch.profiles[e] || {}, r = t.adapter === "api";
50626
50644
  return (r ? t.base_url && t.api_protocol && t.api_key_ref && t.model : t.adapter && (t.adapter === "antigravity" ? t.ipc_directory : t.executable)) ? {
50627
50645
  text: r ? "已配置 API" : "已配置本机软件",
@@ -50631,23 +50649,23 @@ var cq = /*#__PURE__*/ jH({
50631
50649
  tone: "warn"
50632
50650
  };
50633
50651
  }
50634
- let Te = (e) => e.mode === "manual" ? {
50652
+ let De = (e) => e.mode === "manual" ? {
50635
50653
  text: "手动启动,自行提交",
50636
50654
  tone: "muted"
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")));
50655
+ } : Ee(e.name), Oe = Z(() => !N.value.length || N.value.some((e) => e.mode === "cli" && (!n.value.launch.available || Ee(e.name).tone === "warn")));
50638
50656
  R(() => _.value.id, () => {
50639
- N.value = !1, he.value = [];
50657
+ ve.value = !1, N.value = [];
50640
50658
  });
50641
- let De = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), Oe = Z(() => De.value.length > KZ), ke = Z(() => y.value.timings || {
50659
+ let ke = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), Ae = Z(() => ke.value.length > WZ), je = Z(() => y.value.timings || {
50642
50660
  items: [],
50643
50661
  totals: {},
50644
50662
  count: 0
50645
- }), Ae = Z({
50663
+ }), Me = Z({
50646
50664
  get: () => d.value?.room_id === _.value.id,
50647
50665
  set: (e) => {
50648
50666
  e || (d.value = null);
50649
50667
  }
50650
- }), je = Z(() => f.value && n.value.launch.repair?.room_id === _.value.id ? n.value.launch.repair.participants[d.value?.name] : null), Me = Z(() => {
50668
+ }), Ne = Z(() => f.value && n.value.launch.repair?.room_id === _.value.id ? n.value.launch.repair.participants[d.value?.name] : null), Pe = Z(() => {
50651
50669
  let e = _.value;
50652
50670
  if (e.archived) return {
50653
50671
  tone: "neutral",
@@ -50670,14 +50688,14 @@ var cq = /*#__PURE__*/ jH({
50670
50688
  detail: "讨论尚未开始"
50671
50689
  };
50672
50690
  if (e.phase === "paused") {
50673
- if (n.value.free_error && !N.value) return {
50691
+ if (n.value.free_error && !ve.value) return {
50674
50692
  tone: "error",
50675
50693
  title: "操作失败",
50676
50694
  detail: n.value.free_error
50677
50695
  };
50678
- let e = le.value;
50696
+ let e = de.value;
50679
50697
  if (e) {
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;
50698
+ let t = e.result.startsWith(e.name) ? e.result : `${r.display_name(e.name)} 执行失败:${e.result}`, n = t.split("\n")[0], i = n.length > GZ ? `${n.slice(0, GZ)}…` : n;
50681
50699
  return {
50682
50700
  tone: "error",
50683
50701
  title: "已暂停",
@@ -50704,10 +50722,10 @@ var cq = /*#__PURE__*/ jH({
50704
50722
  title: "进行中",
50705
50723
  detail: r.progress_speaker(e)
50706
50724
  };
50707
- }), Ne = Z(() => {
50725
+ }), Fe = Z(() => {
50708
50726
  let e = v.value, t = Math.floor((e.elapsed_seconds || 0) / 60);
50709
50727
  if (w.value) return [];
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;
50728
+ let n = te.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;
50711
50729
  return [{
50712
50730
  label: "轮次",
50713
50731
  text: n.cap ? `${o} / ${n.cap}${n.total ? `(${n.total})` : ""}` : `${o} 轮`,
@@ -50718,14 +50736,14 @@ var cq = /*#__PURE__*/ jH({
50718
50736
  ratio: e.max_minutes ? t / e.max_minutes : null
50719
50737
  }].filter((t) => t.label !== "用时" || e.started_at);
50720
50738
  });
50721
- function Pe(e) {
50739
+ function Ie(e) {
50722
50740
  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);
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";
50741
+ 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 ? "原安排保留" : he(e)?.access === "manual" ? "轮到它了,请去它的 AI 会话触发" : "轮到发言"}`, s = S.value ? "neutral" : "primary";
50724
50742
  else if (a && !x.value && !S.value) {
50725
50743
  let e = v.value.closing ? "总结收尾中" : "安排下一步";
50726
50744
  o = c && t.role === "host" ? `${e} · ${c}` : e, s = "primary";
50727
50745
  } else l >= 0 && !S.value ? o = `本轮排队 · 第 ${l + 1} 位` : i.includes(e) && (o = "本轮已发言", s = "success");
50728
- let u = pe(e);
50746
+ let u = he(e);
50729
50747
  if (u?.access === "manual" && u.status === "active" && !a) {
50730
50748
  let t = i.includes(e);
50731
50749
  u.registered_at ? t || (o = `已注册${o === "等待" ? "" : ` · ${o}`}`) : (o = `待注册${o === "等待" ? "" : ` · ${o}`}`, s = "warning");
@@ -50735,7 +50753,7 @@ var cq = /*#__PURE__*/ jH({
50735
50753
  is_host: a,
50736
50754
  text: o,
50737
50755
  tone: s,
50738
- manual: pe(e)?.access === "manual",
50756
+ manual: he(e)?.access === "manual",
50739
50757
  failures: t?.failures || 0,
50740
50758
  result: t?.status === "failed" ? t.result : "",
50741
50759
  model: r.participant_model(e, _.value, n.value.launch.room_models),
@@ -50743,23 +50761,23 @@ var cq = /*#__PURE__*/ jH({
50743
50761
  mode: r.participant_access(e, _.value)
50744
50762
  };
50745
50763
  }
50746
- function Fe(e) {
50764
+ function Le(e) {
50747
50765
  let t = e.session ? [{
50748
50766
  label: "复制会话 ID",
50749
50767
  icon: "i-lucide-copy",
50750
50768
  onSelect: () => i("copy", e.session)
50751
50769
  }] : [];
50752
- pe(e.name)?.access === "manual" && t.push({
50770
+ he(e.name)?.access === "manual" && t.push({
50753
50771
  label: "复制启动指令(含凭证)",
50754
50772
  icon: "i-lucide-rocket",
50755
50773
  onSelect: () => i("copy_member_launch", e.name)
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({
50774
+ }), fe(e.name) && (e.session || he(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({
50757
50775
  label: "切换 App / CLI",
50758
50776
  icon: "i-lucide-arrow-left-right",
50759
50777
  disabled: !!a.value,
50760
- onSelect: () => ze(e)
50778
+ onSelect: () => Ve(e)
50761
50779
  });
50762
- let r = pe(e.name);
50780
+ let r = he(e.name);
50763
50781
  if (!r || e.is_host || w.value) return [t].filter((e) => e.length);
50764
50782
  let o = (t, n, a, o = {}) => ({
50765
50783
  label: t,
@@ -50779,21 +50797,21 @@ var cq = /*#__PURE__*/ jH({
50779
50797
  [o("移除", "i-lucide-trash-2", "remove", { color: "error" })]
50780
50798
  ].filter((e) => e.length);
50781
50799
  }
50782
- function Ie() {
50783
- he.value = [], ve.value = !1, _e.value = [], N.value = !0;
50800
+ function Re() {
50801
+ N.value = [], be.value = !1, ye.value = [], ve.value = !0;
50784
50802
  }
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,
50803
+ function ze(e) {
50804
+ !r.launch_clients[e]?.some((e) => e.value !== "api") && !n.value.launch.profiles[e]?.adapter && r.write_launch(e, "adapter", "api"), N.value = [...N.value, {
50805
+ id: ++_e,
50788
50806
  name: e,
50789
50807
  mode: "cli",
50790
50808
  session: ""
50791
50809
  }];
50792
50810
  }
50793
- async function Re() {
50794
- ve.value = !0;
50795
- let e = [], t = new Map(Ce.value);
50796
- for (let a of [...Se.value]) {
50811
+ async function Be() {
50812
+ be.value = !0;
50813
+ let e = [], t = new Map(Te.value);
50814
+ for (let a of [...we.value]) {
50797
50815
  let o = n.value.launch.profiles[a.name] || {}, s = a.mode === "manual", c = t.get(a);
50798
50816
  if (await i("invite_member", {
50799
50817
  name: a.name,
@@ -50801,102 +50819,65 @@ var cq = /*#__PURE__*/ jH({
50801
50819
  project_access: o.project_access || n.value.launch.workspace?.project_access || "read",
50802
50820
  session_id: r.launch_can_bind_session(a.name, n.value.launch) ? a.session : ""
50803
50821
  }), n.value.free_error) break;
50804
- s && e.push(c), he.value = he.value.filter((e) => e !== a);
50822
+ s && e.push(c), N.value = N.value.filter((e) => e !== a);
50805
50823
  }
50806
- _e.value = [..._e.value, ...e], !he.value.length && !_e.value.length && (N.value = !1);
50824
+ ye.value = [...ye.value, ...e], !N.value.length && !ye.value.length && (ve.value = !1);
50807
50825
  }
50808
- async function ze(e, t = "") {
50826
+ async function Ve(e, t = "") {
50809
50827
  d.value = {
50810
50828
  room_id: _.value.id,
50811
50829
  name: e.name,
50812
50830
  prefer: t
50813
- }, f.value = !1, y.value.status === "paused" && await Be();
50831
+ }, f.value = !1, y.value.status === "paused" && await He();
50814
50832
  }
50815
- async function Be() {
50833
+ async function He() {
50816
50834
  let e = d.value;
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)));
50835
+ 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 && Ne.value?.adapter !== e.prefer && r.write_room_adapter(e.name, e.prefer)));
50818
50836
  }
50819
- let Ve = Z(() => {
50820
- let e = ke.value.totals || {}, t = h.reduce((t, n) => t + (e[n.key] || 0), 0);
50837
+ let Ue = Z(() => {
50838
+ let e = je.value.totals || {}, t = h.reduce((t, n) => t + (e[n.key] || 0), 0);
50821
50839
  return h.map((n) => ({
50822
50840
  ...n,
50823
50841
  seconds: e[n.key] || 0,
50824
50842
  percent: t ? Math.round((e[n.key] || 0) / t * 100) : 0
50825
50843
  }));
50826
50844
  });
50827
- function He(e) {
50845
+ function We(e) {
50828
50846
  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)}分`;
50829
50847
  }
50830
- function Ue() {
50831
- D.value = v.value.max_rounds || 0, O.value = v.value.max_minutes || 0, E.value = !0;
50848
+ function Ge() {
50849
+ O.value = v.value.max_rounds || 0, k.value = v.value.max_minutes || 0, D.value = !0;
50832
50850
  }
50833
- async function We() {
50851
+ async function Ke() {
50834
50852
  let e = (e) => Number.isInteger(e) && e >= 0 ? e : 0;
50835
50853
  await i("reopen_discussion", {
50836
- max_rounds: e(D.value),
50837
- max_minutes: e(O.value)
50838
- }) && (E.value = !1);
50854
+ max_rounds: e(O.value),
50855
+ max_minutes: e(k.value)
50856
+ }) && (D.value = !1);
50839
50857
  }
50840
- async function Ge(e) {
50841
- await i(e) && (o.value = !1);
50858
+ async function qe(e, t = "ending") {
50859
+ await i(e) && ((t === "deciding" ? E : o).value = !1);
50860
+ }
50861
+ async function Je() {
50862
+ await i("extend_rounds", ee.value) && (E.value = !1);
50842
50863
  }
50843
50864
  return (e, c) => {
50844
- let f = MA, p = sA, m = pA, k = TH, le = bH, ue = zV, ge = zK;
50865
+ let f = MA, p = sA, m = pA, T = TH, te = bH, de = zV, fe = IK, _e = YV;
50845
50866
  return U(), W("div", { class: M(["progress-board", { "is-docked": t.docked }]) }, [
50846
- t.docked ? (U(), W("header", NX, [c[23] ||= K("strong", null, "讨论进度", -1), K("span", PX, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
50867
+ t.docked ? (U(), W("header", jX, [c[25] ||= K("strong", null, "讨论进度", -1), K("span", MX, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
50847
50868
  K("section", {
50848
- class: M(["pb-status", `is-${Me.value.tone}`]),
50869
+ class: M(["pb-status", `is-${Pe.value.tone}`]),
50849
50870
  "aria-label": "讨论状态"
50850
50871
  }, [
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))
50872
+ K("div", NX, [
50873
+ c[26] ||= K("span", { class: "pb-dot" }, null, -1),
50874
+ K("strong", PX, P(Pe.value.title), 1),
50875
+ t.docked ? Y("", !0) : (U(), W("span", FX, P(b.value ? "全自动" : "手动"), 1))
50855
50876
  ]),
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,
50877
+ Pe.value.detail ? (U(), W("p", IX, P(Pe.value.detail), 1)) : Y("", !0),
50878
+ Pe.value.full_detail ? (U(), W("details", LX, [c[27] ||= K("summary", null, "查看错误详情", -1), K("pre", RX, P(Pe.value.full_detail), 1)])) : Y("", !0),
50879
+ pe.value && I(n).launch.available && !I(n).launch.remote ? (U(), G(f, {
50880
+ key: 2,
50900
50881
  icon: "i-lucide-arrow-left-right",
50901
50882
  label: "切换到 Codex App",
50902
50883
  size: "xs",
@@ -50904,32 +50885,32 @@ var cq = /*#__PURE__*/ jH({
50904
50885
  variant: "outline",
50905
50886
  title: "会话正被 Codex App 占用时,改由 App 接入,沿用原聊天和讨论进度",
50906
50887
  disabled: !!I(a),
50907
- onClick: c[3] ||= (e) => ze(de.value, "codex")
50888
+ onClick: c[0] ||= (e) => Ve(pe.value, "codex")
50908
50889
  }, null, 8, ["disabled"])) : Y("", !0),
50909
- Ne.value.length ? (U(), W("div", WX, [(U(!0), W(H, null, B(Ne.value, (e) => (U(), W("div", {
50890
+ Fe.value.length ? (U(), W("div", zX, [(U(!0), W(H, null, B(Fe.value, (e) => (U(), W("div", {
50910
50891
  key: e.label,
50911
50892
  class: "pb-meter"
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)
50893
+ }, [K("div", BX, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", VX, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])) : Y("", !0)
50913
50894
  ], 2),
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", {
50895
+ ke.value ? (U(), W("section", HX, [
50896
+ c[28] ||= K("h4", null, "当前焦点", -1),
50897
+ K("p", { class: M(["pb-focus", { "is-expanded": u.value }]) }, P(ke.value), 3),
50898
+ Ae.value ? (U(), W("button", {
50918
50899
  key: 0,
50919
50900
  type: "button",
50920
50901
  class: "pb-link",
50921
- onClick: c[4] ||= (e) => u.value = !u.value
50902
+ onClick: c[1] ||= (e) => u.value = !u.value
50922
50903
  }, P(u.value ? "收起" : "展开"), 1)) : Y("", !0)
50923
50904
  ])) : Y("", !0),
50924
- K("section", JX, [
50925
- K("div", YX, [c[31] ||= K("h4", null, "参与者", -1), me.value ? (U(), W("button", {
50905
+ K("section", UX, [
50906
+ K("div", WX, [c[30] ||= K("h4", null, "参与者", -1), ge.value ? (U(), W("button", {
50926
50907
  key: 0,
50927
50908
  type: "button",
50928
50909
  class: "pb-link",
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", {
50910
+ onClick: Re
50911
+ }, [q(p, { name: "i-lucide-plus" }), c[29] ||= J("邀请", -1)])) : Y("", !0)]),
50912
+ _.value.held_since && x.value && !S.value ? (U(), W("p", GX, "用户有新操作," + P(I(r).display_name(x.value.expert)) + " 说完后交给主持人", 1)) : Y("", !0),
50913
+ K("ul", KX, [(U(!0), W(H, null, B(ue.value, (e) => (U(), W("li", {
50933
50914
  key: e.name,
50934
50915
  class: "pb-member"
50935
50916
  }, [
@@ -50945,8 +50926,8 @@ var cq = /*#__PURE__*/ jH({
50945
50926
  "alt",
50946
50927
  "class"
50947
50928
  ]),
50948
- K("div", QX, [
50949
- K("div", $X, [
50929
+ K("div", qX, [
50930
+ K("div", JX, [
50950
50931
  J(P(I(r).display_name(e.name)), 1),
50951
50932
  e.is_host ? (U(), G(p, {
50952
50933
  key: 0,
@@ -50955,26 +50936,26 @@ var cq = /*#__PURE__*/ jH({
50955
50936
  })) : Y("", !0),
50956
50937
  K("small", null, P(e.is_host ? `主持 · ${e.mode}` : e.mode), 1)
50957
50938
  ]),
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),
50939
+ e.model ? (U(), W("div", YX, P(e.model), 1)) : Y("", !0),
50940
+ he(e.name)?.session_mode === "borrowed" ? (U(), W("div", XX, "借用已有会话")) : Y("", !0),
50960
50941
  w.value ? Y("", !0) : (U(), W("div", {
50961
50942
  key: 2,
50962
50943
  class: M(["pb-member-status", `is-${e.tone}`])
50963
50944
  }, [
50964
- c[32] ||= K("span", { class: "pb-dot" }, null, -1),
50945
+ c[31] ||= K("span", { class: "pb-dot" }, null, -1),
50965
50946
  J(P(e.text), 1),
50966
- e.failures ? (U(), W("small", nZ, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
50947
+ e.failures ? (U(), W("small", ZX, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
50967
50948
  ], 2)),
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", {
50949
+ e.manual && !w.value ? (U(), W("div", QX, [!he(e.name)?.registered_at && !e.is_host ? (U(), W("span", $X, "需在它的会话中注册,才算到场")) : Y("", !0), A.value ? (U(), W("button", {
50969
50950
  key: 1,
50970
50951
  type: "button",
50971
50952
  class: "pb-link",
50972
50953
  onClick: (t) => l(e.name)
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)
50954
+ }, [q(p, { name: s.value === e.name ? "i-lucide-check" : "i-lucide-rocket" }, null, 8, ["name"]), J(P(s.value === e.name ? "已复制" : "复制启动指令"), 1)], 8, eZ)) : Y("", !0)])) : Y("", !0)
50974
50955
  ]),
50975
- Fe(e).length ? (U(), G(k, {
50956
+ Le(e).length ? (U(), G(T, {
50976
50957
  key: 0,
50977
- items: Fe(e),
50958
+ items: Le(e),
50978
50959
  content: { align: "end" },
50979
50960
  ui: { content: "channel-menu" }
50980
50961
  }, {
@@ -50988,7 +50969,7 @@ var cq = /*#__PURE__*/ jH({
50988
50969
  }, null, 8, ["aria-label"])]),
50989
50970
  _: 2
50990
50971
  }, 1032, ["items"])) : Y("", !0)
50991
- ]))), 128)), (U(!0), W(H, null, B(fe.value, (e) => (U(), W("li", {
50972
+ ]))), 128)), (U(!0), W(H, null, B(me.value, (e) => (U(), W("li", {
50992
50973
  key: e.id,
50993
50974
  class: "pb-member is-away"
50994
50975
  }, [
@@ -51004,10 +50985,10 @@ var cq = /*#__PURE__*/ jH({
51004
50985
  "alt",
51005
50986
  "class"
51006
50987
  ]),
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, {
50988
+ K("div", tZ, [K("div", nZ, [J(P(I(r).display_name(e.name)), 1), c[32] ||= K("small", null, "暂离", -1)]), c[33] ||= K("div", { class: "pb-member-status is-neutral" }, [K("span", { class: "pb-dot" }), J("保留位置和会话,不参与安排")], -1)]),
50989
+ Le({ name: e.name }).length ? (U(), G(T, {
51009
50990
  key: 0,
51010
- items: Fe({ name: e.name }),
50991
+ items: Le({ name: e.name }),
51011
50992
  content: { align: "end" },
51012
50993
  ui: { content: "channel-menu" }
51013
50994
  }, {
@@ -51022,11 +51003,23 @@ var cq = /*#__PURE__*/ jH({
51022
51003
  _: 2
51023
51004
  }, 1032, ["items"])) : Y("", !0)
51024
51005
  ]))), 128))]),
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)
51006
+ !ve.value && I(n).free_error && _.value.phase !== "paused" ? (U(), W("p", rZ, P(I(n).free_error), 1)) : I(n).free_notice ? (U(), W("p", iZ, P(I(n).free_notice), 1)) : Y("", !0)
51026
51007
  ]),
51027
- oe.value ? (U(), W("section", uZ, [
51028
- ne.value ? (U(), G(f, {
51008
+ ce.value ? (U(), W("section", aZ, [
51009
+ se.value ? (U(), G(f, {
51029
51010
  key: 0,
51011
+ icon: "i-lucide-list-checks",
51012
+ label: "选择后续",
51013
+ size: "sm",
51014
+ color: "neutral",
51015
+ variant: "outline",
51016
+ class: "pb-action pb-restart",
51017
+ title: "追加轮数继续,或请主持人总结",
51018
+ disabled: !!I(a),
51019
+ onClick: c[2] ||= (e) => E.value = !0
51020
+ }, null, 8, ["disabled"])) : Y("", !0),
51021
+ re.value ? (U(), G(f, {
51022
+ key: 1,
51030
51023
  icon: "i-lucide-rotate-ccw",
51031
51024
  label: "重启",
51032
51025
  size: "sm",
@@ -51035,11 +51028,11 @@ var cq = /*#__PURE__*/ jH({
51035
51028
  class: "pb-action pb-restart",
51036
51029
  title: "原安排重新交给对应 AI,需本机接入程序在运行",
51037
51030
  loading: I(a) === "restart_discussion",
51038
- disabled: !ae.value,
51039
- onClick: c[5] ||= (e) => I(i)("restart_discussion")
51031
+ disabled: !A.value,
51032
+ onClick: c[3] ||= (e) => I(i)("restart_discussion")
51040
51033
  }, null, 8, ["loading", "disabled"])) : Y("", !0),
51041
- re.value ? (U(), G(f, {
51042
- key: 1,
51034
+ ie.value ? (U(), G(f, {
51035
+ key: 2,
51043
51036
  icon: "i-lucide-pause",
51044
51037
  label: "暂停",
51045
51038
  size: "sm",
@@ -51048,28 +51041,28 @@ var cq = /*#__PURE__*/ jH({
51048
51041
  class: "pb-action",
51049
51042
  title: "暂停讨论,原安排保留",
51050
51043
  loading: I(a) === "pause_discussion",
51051
- disabled: !ae.value,
51052
- onClick: c[6] ||= (e) => I(i)("pause_discussion")
51044
+ disabled: !A.value,
51045
+ onClick: c[4] ||= (e) => I(i)("pause_discussion")
51053
51046
  }, null, 8, ["loading", "disabled"])) : Y("", !0),
51054
- ie.value ? (U(), G(f, {
51055
- key: 2,
51047
+ ae.value ? (U(), G(f, {
51048
+ key: 3,
51056
51049
  icon: "i-lucide-skip-forward",
51057
51050
  label: "跳过",
51058
51051
  size: "sm",
51059
51052
  color: "neutral",
51060
51053
  variant: "outline",
51061
51054
  class: "pb-action",
51062
- title: `跳过 ${I(r).display_name(x.value.expert)} 本次发言,${ne.value ? "恢复讨论," : ""}交给主持人继续安排`,
51055
+ title: `跳过 ${I(r).display_name(x.value.expert)} 本次发言,${re.value ? "恢复讨论," : ""}交给主持人继续安排`,
51063
51056
  loading: I(a) === "skip_turn",
51064
- disabled: !ae.value || !!I(a),
51065
- onClick: c[7] ||= (e) => I(i)("skip_turn")
51057
+ disabled: !A.value || !!I(a),
51058
+ onClick: c[5] ||= (e) => I(i)("skip_turn")
51066
51059
  }, null, 8, [
51067
51060
  "title",
51068
51061
  "loading",
51069
51062
  "disabled"
51070
51063
  ])) : Y("", !0),
51071
- te.value ? (U(), G(f, {
51072
- key: 3,
51064
+ ne.value ? (U(), G(f, {
51065
+ key: 4,
51073
51066
  icon: "i-lucide-rotate-ccw",
51074
51067
  label: "重新开始",
51075
51068
  size: "sm",
@@ -51077,11 +51070,11 @@ var cq = /*#__PURE__*/ jH({
51077
51070
  variant: "outline",
51078
51071
  class: "pb-action pb-restart",
51079
51072
  title: "保留全部记录,设定新的轮次与时长上限后继续讨论,需本机接入程序在运行",
51080
- disabled: !ae.value || !!I(a),
51081
- onClick: Ue
51073
+ disabled: !A.value || !!I(a),
51074
+ onClick: Ge
51082
51075
  }, null, 8, ["disabled"])) : Y("", !0),
51083
- A.value ? (U(), G(f, {
51084
- key: 4,
51076
+ oe.value ? (U(), G(f, {
51077
+ key: 5,
51085
51078
  icon: "i-lucide-flag",
51086
51079
  label: "结束",
51087
51080
  size: "sm",
@@ -51089,37 +51082,37 @@ var cq = /*#__PURE__*/ jH({
51089
51082
  variant: "outline",
51090
51083
  class: "pb-action pb-end",
51091
51084
  title: "结束讨论:选择主持人收尾或直接结束",
51092
- disabled: !ae.value,
51093
- onClick: c[8] ||= (e) => o.value = !0
51085
+ disabled: !A.value,
51086
+ onClick: c[6] ||= (e) => o.value = !0
51094
51087
  }, null, 8, ["disabled"])) : Y("", !0)
51095
51088
  ])) : Y("", !0),
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)]),
51089
+ b.value && je.value.count ? (U(), W("section", oZ, [
51090
+ K("div", sZ, [c[34] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(je.value.count) + " 次执行", 1)]),
51098
51091
  K("div", {
51099
51092
  class: "pb-timing-bar",
51100
51093
  role: "img",
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", {
51094
+ "aria-label": Ue.value.map((e) => `${e.label} ${e.percent}%`).join(",")
51095
+ }, [(U(!0), W(H, null, B(Ue.value, (e) => (U(), W("i", {
51103
51096
  key: e.key,
51104
51097
  class: M(`is-${e.key}`),
51105
51098
  style: j({ width: `${e.percent}%` })
51106
- }, null, 6))), 128))], 8, pZ),
51107
- K("dl", mZ, [(U(!0), W(H, null, B(Ve.value, (e) => (U(), W("div", {
51099
+ }, null, 6))), 128))], 8, cZ),
51100
+ K("dl", lZ, [(U(!0), W(H, null, B(Ue.value, (e) => (U(), W("div", {
51108
51101
  key: e.key,
51109
51102
  title: e.hint
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", {
51103
+ }, [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(We(e.seconds)), 1), K("small", null, P(e.percent) + "%", 1)])], 8, uZ))), 128))]),
51104
+ K("details", dZ, [
51105
+ c[35] ||= K("summary", null, "查看每次执行", -1),
51106
+ K("ol", null, [(U(!0), W(H, null, B(je.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", fZ, [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", pZ, [(U(), W(H, null, B(h, (t) => K("span", {
51114
51107
  key: t.key,
51115
51108
  title: t.hint
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)
51109
+ }, P(t.label) + " " + P(We(e[t.key])), 9, mZ)), 64))])]))), 128))]),
51110
+ je.value.count > je.value.items.length ? (U(), W("p", hZ, "只列出最近 " + P(je.value.items.length) + " 次,共 " + P(je.value.count) + " 次执行。", 1)) : Y("", !0)
51118
51111
  ])
51119
51112
  ])) : Y("", !0),
51120
- q(ge, {
51121
- open: Ae.value,
51122
- "onUpdate:open": c[12] ||= (e) => Ae.value = e,
51113
+ q(fe, {
51114
+ open: Me.value,
51115
+ "onUpdate:open": c[10] ||= (e) => Me.value = e,
51123
51116
  title: "切换 Codex 接入方式",
51124
51117
  description: "沿用原聊天和讨论进度,仅修改本场讨论。",
51125
51118
  ui: {
@@ -51127,16 +51120,16 @@ var cq = /*#__PURE__*/ jH({
51127
51120
  body: "dialog-body"
51128
51121
  }
51129
51122
  }, {
51130
- body: L(() => [K("div", xZ, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[37] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51123
+ body: L(() => [K("div", gZ, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[36] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51131
51124
  label: "暂停并读取配置",
51132
51125
  icon: "i-lucide-pause",
51133
51126
  class: "channel-primary-button",
51134
51127
  loading: !!I(a),
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,
51128
+ onClick: He
51129
+ }, null, 8, ["loading"])], 64)) : y.value.status === "paused" ? (U(), W(H, { key: 1 }, [Ne.value ? (U(), W(H, { key: 0 }, [
51130
+ q(de, { label: "接入方式" }, {
51131
+ default: L(() => [q(te, {
51132
+ "model-value": Ne.value.adapter,
51140
51133
  items: [{
51141
51134
  label: "Codex App",
51142
51135
  value: "codex"
@@ -51146,20 +51139,20 @@ var cq = /*#__PURE__*/ jH({
51146
51139
  }],
51147
51140
  class: "w-full",
51148
51141
  disabled: !!I(a),
51149
- "onUpdate:modelValue": c[9] ||= (e) => I(r).write_room_adapter(d.value.name, e)
51142
+ "onUpdate:modelValue": c[7] ||= (e) => I(r).write_room_adapter(d.value.name, e)
51150
51143
  }, null, 8, ["model-value", "disabled"])]),
51151
51144
  _: 1
51152
51145
  }),
51153
- K("p", SZ, P(je.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51146
+ K("p", _Z, P(Ne.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51154
51147
  q(f, {
51155
51148
  label: "保存接入方式",
51156
51149
  class: "channel-primary-button",
51157
51150
  loading: I(a) === "save_room_configuration",
51158
51151
  disabled: !!I(a),
51159
- onClick: c[10] ||= (e) => I(i)("save_room_configuration")
51152
+ onClick: c[8] ||= (e) => I(i)("save_room_configuration")
51160
51153
  }, null, 8, ["loading", "disabled"]),
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, {
51154
+ I(n).launch.repair?.notice ? (U(), W("p", vZ, P(I(n).launch.repair.notice), 1)) : Y("", !0),
51155
+ I(n).launch.repair?.applied && re.value ? (U(), G(f, {
51163
51156
  key: 1,
51164
51157
  label: "重启讨论",
51165
51158
  icon: "i-lucide-rotate-ccw",
@@ -51167,8 +51160,8 @@ var cq = /*#__PURE__*/ jH({
51167
51160
  color: "neutral",
51168
51161
  loading: I(a) === "restart_discussion",
51169
51162
  disabled: !!I(a),
51170
- onClick: c[11] ||= (e) => {
51171
- I(i)("restart_discussion"), Ae.value = !1;
51163
+ onClick: c[9] ||= (e) => {
51164
+ I(i)("restart_discussion"), Me.value = !1;
51172
51165
  }
51173
51166
  }, null, 8, ["loading", "disabled"])) : Y("", !0)
51174
51167
  ], 64)) : (U(), G(f, {
@@ -51177,13 +51170,13 @@ var cq = /*#__PURE__*/ jH({
51177
51170
  variant: "outline",
51178
51171
  color: "neutral",
51179
51172
  loading: !!I(a),
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, "本场状态已变化,请关闭后重新核对。"))])]),
51173
+ onClick: He
51174
+ }, null, 8, ["loading"])), I(n).launch.repair_error ? (U(), W("p", yZ, P(I(n).launch.repair_error), 1)) : Y("", !0)], 64)) : (U(), W("p", bZ, "本场状态已变化,请关闭后重新核对。"))])]),
51182
51175
  _: 1
51183
51176
  }, 8, ["open"]),
51184
- q(ge, {
51185
- open: N.value,
51186
- "onUpdate:open": c[15] ||= (e) => N.value = e,
51177
+ q(fe, {
51178
+ open: ve.value,
51179
+ "onUpdate:open": c[13] ||= (e) => ve.value = e,
51187
51180
  title: "邀请专家",
51188
51181
  description: "新专家由程序按本机软件配置启动,或由你手动启动,加入本轮发言队列。",
51189
51182
  ui: {
@@ -51191,10 +51184,10 @@ var cq = /*#__PURE__*/ jH({
51191
51184
  body: "dialog-body"
51192
51185
  }
51193
51186
  }, {
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 }, [
51187
+ body: L(() => [ye.value.length && !N.value.length ? (U(), W("div", xZ, [
51188
+ K("p", SZ, P(ye.value.length > 1 ? `${ye.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
51189
+ I(n).access?.error ? (U(), W("p", CZ, P(I(n).access.error), 1)) : Y("", !0),
51190
+ K("ul", wZ, [(U(!0), W(H, null, B(ye.value, (e) => (U(), W("li", { key: e }, [
51198
51191
  q(m, {
51199
51192
  src: I(r).identities[I(r).platform_of(e)]?.icon,
51200
51193
  text: I(r).identities[I(r).platform_of(e)]?.initials,
@@ -51208,7 +51201,7 @@ var cq = /*#__PURE__*/ jH({
51208
51201
  "class"
51209
51202
  ]),
51210
51203
  K("strong", null, P(I(r).display_name(e)), 1),
51211
- K("small", { class: M({ "is-registered": pe(e)?.registered_at }) }, P(pe(e)?.registered_at ? "已注册" : "待注册"), 3),
51204
+ K("small", { class: M({ "is-registered": he(e)?.registered_at }) }, P(he(e)?.registered_at ? "已注册" : "待注册"), 3),
51212
51205
  q(f, {
51213
51206
  icon: s.value === e ? "i-lucide-check" : "i-lucide-rocket",
51214
51207
  label: s.value === e ? "已复制" : "复制启动指令",
@@ -51228,24 +51221,24 @@ var cq = /*#__PURE__*/ jH({
51228
51221
  "onClick"
51229
51222
  ])
51230
51223
  ]))), 128))]),
51231
- c[38] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51232
- K("div", AZ, [q(f, {
51224
+ c[37] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
51225
+ K("div", TZ, [q(f, {
51233
51226
  label: "完成",
51234
51227
  class: "channel-primary-button",
51235
- onClick: c[13] ||= (e) => N.value = !1
51228
+ onClick: c[11] ||= (e) => ve.value = !1
51236
51229
  })])
51237
51230
  ])) : (U(), W("form", {
51238
51231
  key: 1,
51239
51232
  class: "pb-invite",
51240
51233
  "aria-label": "邀请专家",
51241
- onSubmit: uu(Re, ["prevent"])
51234
+ onSubmit: uu(Be, ["prevent"])
51242
51235
  }, [
51243
- K("div", jZ, [(U(!0), W(H, null, B(ye.value, (e) => (U(), W("button", {
51236
+ K("div", EZ, [(U(!0), W(H, null, B(xe.value, (e) => (U(), W("button", {
51244
51237
  key: e,
51245
51238
  type: "button",
51246
- "aria-pressed": he.value.some((t) => t.name === e),
51247
- title: xe(e) ? `已在场 ${xe(e)} 位 · 将添加新实例` : "",
51248
- onClick: (t) => Le(e)
51239
+ "aria-pressed": N.value.some((t) => t.name === e),
51240
+ title: Ce(e) ? `已在场 ${Ce(e)} 位 · 将添加新实例` : "",
51241
+ onClick: (t) => ze(e)
51249
51242
  }, [q(m, {
51250
51243
  src: I(r).identities[e]?.icon,
51251
51244
  text: I(r).identities[e]?.initials,
@@ -51257,19 +51250,19 @@ var cq = /*#__PURE__*/ jH({
51257
51250
  "text",
51258
51251
  "alt",
51259
51252
  "class"
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", {
51253
+ ]), J(P(e), 1)], 8, DZ))), 128))]),
51254
+ N.value.length ? (U(), W("div", OZ, [(U(!0), W(H, null, B(N.value, (e) => (U(), W("div", {
51262
51255
  key: e.id,
51263
51256
  class: "pb-invite-pick"
51264
- }, [q(aJ, {
51257
+ }, [q(nJ, {
51265
51258
  name: e.name,
51266
51259
  mode: e.mode,
51267
51260
  choices: ["cli", "manual"],
51268
- status: Te(e),
51261
+ status: De(e),
51269
51262
  session: e.session,
51270
51263
  onMode: (t) => e.mode = t,
51271
51264
  onSession: (t) => e.session = t,
51272
- onRemove: (t) => he.value = he.value.filter((t) => t !== e)
51265
+ onRemove: (t) => N.value = N.value.filter((t) => t !== e)
51273
51266
  }, null, 8, [
51274
51267
  "name",
51275
51268
  "mode",
@@ -51278,25 +51271,25 @@ var cq = /*#__PURE__*/ jH({
51278
51271
  "onMode",
51279
51272
  "onSession",
51280
51273
  "onRemove"
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", {
51274
+ ]), Te.value.get(e) === e.name ? Y("", !0) : (U(), W("p", kZ, "同一 AI 已有实例,将以 " + P(Te.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
51275
+ N.value.length ? (U(), W("p", {
51283
51276
  key: 1,
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, {
51277
+ class: M(["fine-print", { "pb-invite-reserved": !(N.value.some((e) => e.mode === "manual") && N.value.some((e) => e.mode !== "manual")) }]),
51278
+ "aria-hidden": !(N.value.some((e) => e.mode === "manual") && N.value.some((e) => e.mode !== "manual"))
51279
+ }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, AZ)) : (U(), W("p", jZ, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
51280
+ N.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", MZ, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
51281
+ be.value && I(n).free_error ? (U(), W("p", NZ, P(I(n).free_error), 1)) : Y("", !0),
51282
+ K("div", PZ, [q(f, {
51290
51283
  label: "取消",
51291
51284
  color: "neutral",
51292
51285
  variant: "ghost",
51293
- onClick: c[14] ||= (e) => N.value = !1
51286
+ onClick: c[12] ||= (e) => ve.value = !1
51294
51287
  }), q(f, {
51295
51288
  type: "submit",
51296
51289
  icon: "i-lucide-user-plus",
51297
- label: he.value.length > 1 ? `邀请 ${he.value.length} 位` : "邀请",
51290
+ label: N.value.length > 1 ? `邀请 ${N.value.length} 位` : "邀请",
51298
51291
  class: "channel-primary-button",
51299
- disabled: Ee.value,
51292
+ disabled: Oe.value,
51300
51293
  loading: I(a) === "invite_member"
51301
51294
  }, null, 8, [
51302
51295
  "label",
@@ -51306,9 +51299,9 @@ var cq = /*#__PURE__*/ jH({
51306
51299
  ], 32))]),
51307
51300
  _: 1
51308
51301
  }, 8, ["open"]),
51309
- q(ge, {
51310
- open: E.value,
51311
- "onUpdate:open": c[19] ||= (e) => E.value = e,
51302
+ q(fe, {
51303
+ open: D.value,
51304
+ "onUpdate:open": c[17] ||= (e) => D.value = e,
51312
51305
  title: "重新开始讨论",
51313
51306
  description: "保留全部记录和原结论,按新的上限继续。",
51314
51307
  ui: {
@@ -51318,45 +51311,45 @@ var cq = /*#__PURE__*/ jH({
51318
51311
  }, {
51319
51312
  body: L(() => [K("form", {
51320
51313
  class: "pb-reopen",
51321
- onSubmit: uu(We, ["prevent"])
51314
+ onSubmit: uu(Ke, ["prevent"])
51322
51315
  }, [
51323
51316
  K("label", null, [
51324
- c[39] ||= J("轮次上限", -1),
51317
+ c[38] ||= J("轮次上限", -1),
51325
51318
  vr(K("input", {
51326
- "onUpdate:modelValue": c[16] ||= (e) => D.value = e,
51319
+ "onUpdate:modelValue": c[14] ||= (e) => O.value = e,
51327
51320
  type: "number",
51328
51321
  min: "0",
51329
51322
  max: "100",
51330
51323
  inputmode: "numeric"
51331
51324
  }, null, 512), [[
51332
51325
  Yl,
51333
- D.value,
51326
+ O.value,
51334
51327
  void 0,
51335
51328
  { number: !0 }
51336
51329
  ]]),
51337
- c[40] ||= K("small", null, "0 表示不限", -1)
51330
+ c[39] ||= K("small", null, "0 表示不限", -1)
51338
51331
  ]),
51339
51332
  K("label", null, [
51340
- c[41] ||= J("总时长(分钟)", -1),
51333
+ c[40] ||= J("总时长(分钟)", -1),
51341
51334
  vr(K("input", {
51342
- "onUpdate:modelValue": c[17] ||= (e) => O.value = e,
51335
+ "onUpdate:modelValue": c[15] ||= (e) => k.value = e,
51343
51336
  type: "number",
51344
51337
  min: "0",
51345
51338
  max: "1440",
51346
51339
  inputmode: "numeric"
51347
51340
  }, null, 512), [[
51348
51341
  Yl,
51349
- O.value,
51342
+ k.value,
51350
51343
  void 0,
51351
51344
  { number: !0 }
51352
51345
  ]]),
51353
- c[42] ||= K("small", null, "0 表示不限", -1)
51346
+ c[41] ||= K("small", null, "0 表示不限", -1)
51354
51347
  ]),
51355
- K("div", BZ, [q(f, {
51348
+ K("div", FZ, [q(f, {
51356
51349
  label: "取消",
51357
51350
  color: "neutral",
51358
51351
  variant: "ghost",
51359
- onClick: c[18] ||= (e) => E.value = !1
51352
+ onClick: c[16] ||= (e) => D.value = !1
51360
51353
  }), q(f, {
51361
51354
  type: "submit",
51362
51355
  icon: "i-lucide-rotate-ccw",
@@ -51368,9 +51361,57 @@ var cq = /*#__PURE__*/ jH({
51368
51361
  ], 32)]),
51369
51362
  _: 1
51370
51363
  }, 8, ["open"]),
51371
- q(ge, {
51364
+ q(fe, {
51365
+ open: E.value,
51366
+ "onUpdate:open": c[21] ||= (e) => E.value = e,
51367
+ title: "选择后续",
51368
+ description: "现场已保留,追加轮数继续,或请主持人总结后收束。",
51369
+ ui: {
51370
+ content: "glass-panel studio-modal",
51371
+ body: "dialog-body"
51372
+ }
51373
+ }, {
51374
+ body: L(() => [K("form", {
51375
+ class: "pb-reopen",
51376
+ onSubmit: uu(Je, ["prevent"])
51377
+ }, [q(de, {
51378
+ label: "追加轮数",
51379
+ hint: "1–100"
51380
+ }, {
51381
+ default: L(() => [q(_e, {
51382
+ modelValue: ee.value,
51383
+ "onUpdate:modelValue": c[18] ||= (e) => ee.value = e,
51384
+ modelModifiers: { number: !0 },
51385
+ type: "number",
51386
+ min: 1,
51387
+ max: 100,
51388
+ inputmode: "numeric",
51389
+ class: "w-full"
51390
+ }, null, 8, ["modelValue"])]),
51391
+ _: 1
51392
+ }), K("div", IZ, [q(f, {
51393
+ label: "取消",
51394
+ color: "neutral",
51395
+ variant: "ghost",
51396
+ onClick: c[19] ||= (e) => E.value = !1
51397
+ }), q(f, {
51398
+ type: "submit",
51399
+ icon: "i-lucide-plus",
51400
+ label: "追加并继续",
51401
+ class: "channel-primary-button",
51402
+ loading: I(a) === "extend_rounds",
51403
+ disabled: !!I(a) || !(ee.value >= 1 && ee.value <= 100)
51404
+ }, null, 8, ["loading", "disabled"])])], 32), K("div", LZ, [K("button", {
51405
+ type: "button",
51406
+ class: "progress-ending-option",
51407
+ disabled: !!I(a),
51408
+ onClick: c[20] ||= (e) => qe("request_summary", "deciding")
51409
+ }, [c[42] ||= K("strong", null, "请主持人总结", -1), K("span", null, "由 " + P(I(r).display_name(_.value.host)) + " 根据已有材料总结,之后讨论收束。", 1)], 8, RZ)])]),
51410
+ _: 1
51411
+ }, 8, ["open"]),
51412
+ q(fe, {
51372
51413
  open: o.value,
51373
- "onUpdate:open": c[22] ||= (e) => o.value = e,
51414
+ "onUpdate:open": c[24] ||= (e) => o.value = e,
51374
51415
  title: "提前结束讨论",
51375
51416
  description: "当前发言安排会被取消,已有消息全部保留。",
51376
51417
  ui: {
@@ -51378,27 +51419,27 @@ var cq = /*#__PURE__*/ jH({
51378
51419
  body: "dialog-body"
51379
51420
  }
51380
51421
  }, {
51381
- body: L(() => [K("div", VZ, [K("button", {
51422
+ body: L(() => [K("div", zZ, [K("button", {
51382
51423
  type: "button",
51383
51424
  class: "progress-ending-option",
51384
- disabled: !se.value || !!I(a),
51385
- onClick: c[20] ||= (e) => Ge("force_close")
51425
+ disabled: !le.value || !!I(a),
51426
+ onClick: c[22] ||= (e) => qe("force_close")
51386
51427
  }, [
51387
51428
  c[43] ||= K("strong", null, "请主持人收尾", -1),
51388
51429
  K("span", null, "立即进入收束,由 " + P(I(r).display_name(_.value.host)) + " 在 " + P(v.value.summary_minutes || 5) + " 分钟收束预留内根据已有材料总结。", 1),
51389
- se.value ? Y("", !0) : (U(), W("small", UZ, P(v.value.closing ? "已在收尾中。" : "仅进行中的讨论可以收尾;暂停后可先重启再收尾,或直接结束并保留记录。"), 1))
51390
- ], 8, HZ), K("button", {
51430
+ le.value ? Y("", !0) : (U(), W("small", VZ, P(v.value.closing ? "已在收尾中。" : "仅进行中的讨论可以收尾;暂停后可先重启再收尾,或直接结束并保留记录。"), 1))
51431
+ ], 8, BZ), K("button", {
51391
51432
  type: "button",
51392
51433
  class: "progress-ending-option",
51393
51434
  disabled: C.value || !!I(a),
51394
- onClick: c[21] ||= (e) => Ge("conclude_discussion")
51395
- }, [...c[44] ||= [K("strong", null, "直接结束(不总结)", -1), K("span", null, "保留全部记录,阶段设为“已收束”,自动运行随之停止。", -1)]], 8, WZ)])]),
51435
+ onClick: c[23] ||= (e) => qe("conclude_discussion")
51436
+ }, [...c[44] ||= [K("strong", null, "直接结束(不总结)", -1), K("span", null, "保留全部记录,阶段设为“已收束”,自动运行随之停止。", -1)]], 8, HZ)])]),
51396
51437
  _: 1
51397
51438
  }, 8, ["open"])
51398
51439
  ], 2);
51399
51440
  };
51400
51441
  }
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 = {
51442
+ }, [["__scopeId", "data-v-e8945b72"]]), qZ = { class: "progress-panel-anchor" }, JZ = ["aria-expanded", "aria-label"], YZ = { class: "progress-chip-text" }, XZ = { class: "progress-chip-rounds" }, ZZ = {
51402
51443
  __name: "ProgressPanel",
51403
51444
  setup(e) {
51404
51445
  let { view: t, bridge: n } = xr("discussion"), r = /* @__PURE__ */ F(!1), i = Z(() => t.value.room), a = Z(() => i.value.limits || {}), o = Z(() => {
@@ -51428,7 +51469,7 @@ var cq = /*#__PURE__*/ jH({
51428
51469
  }), 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}`);
51429
51470
  return (e, t) => {
51430
51471
  let n = $V, a = NV;
51431
- return U(), W("div", YZ, [q(n, { text: "查看讨论进度" }, {
51472
+ return U(), W("div", qZ, [q(n, { text: "查看讨论进度" }, {
51432
51473
  default: L(() => [K("button", {
51433
51474
  type: "button",
51434
51475
  class: M(["progress-chip", `is-${o.value.tone}`]),
@@ -51436,7 +51477,7 @@ var cq = /*#__PURE__*/ jH({
51436
51477
  "aria-expanded": r.value,
51437
51478
  "aria-label": `查看讨论进度:${c.value}`,
51438
51479
  onClick: t[0] ||= (e) => r.value = !0
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)]),
51480
+ }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", YZ, [J(P(o.value.title), 1), K("span", XZ, " · " + P(s.value), 1)])], 10, JZ)]),
51440
51481
  _: 1
51441
51482
  }), q(a, {
51442
51483
  open: r.value,
@@ -51449,60 +51490,60 @@ var cq = /*#__PURE__*/ jH({
51449
51490
  body: "progress-drawer-body"
51450
51491
  }
51451
51492
  }, {
51452
- body: L(() => [q(JZ)]),
51493
+ body: L(() => [q(KZ)]),
51453
51494
  _: 1
51454
51495
  }, 8, ["open", "description"])]);
51455
51496
  };
51456
51497
  }
51457
- }, eQ = { class: "progress-board is-docked" }, tQ = { class: "pb-header" }, nQ = { class: "pb-mode" }, rQ = { class: "pb-status-line" }, iQ = { role: "status" }, aQ = {
51498
+ }, QZ = { class: "progress-board is-docked" }, $Z = { class: "pb-header" }, eQ = { class: "pb-mode" }, tQ = { class: "pb-status-line" }, nQ = { role: "status" }, rQ = {
51458
51499
  key: 0,
51459
51500
  class: "pb-status-detail"
51460
- }, oQ = { class: "pb-meters" }, sQ = { class: "pb-meter-label" }, cQ = {
51501
+ }, iQ = { class: "pb-meters" }, aQ = { class: "pb-meter-label" }, oQ = {
51461
51502
  key: 0,
51462
51503
  class: "pb-bar"
51463
- }, lQ = {
51504
+ }, sQ = {
51464
51505
  key: 0,
51465
51506
  class: "pb-section",
51466
51507
  "aria-label": "当前任务"
51467
- }, uQ = {
51508
+ }, cQ = {
51468
51509
  class: "pb-section",
51469
51510
  "aria-label": "成员"
51470
- }, dQ = { class: "pb-members" }, fQ = { class: "pb-member-body" }, pQ = { class: "pb-member-name" }, mQ = { class: "pb-member-model" }, hQ = {
51511
+ }, lQ = { class: "pb-members" }, uQ = { class: "pb-member-body" }, dQ = { class: "pb-member-name" }, fQ = { class: "pb-member-model" }, pQ = {
51471
51512
  key: 0,
51472
51513
  class: "pb-member-model",
51473
51514
  title: "它工作时请不要在原窗口继续操作"
51474
- }, gQ = {
51515
+ }, mQ = {
51475
51516
  key: 0,
51476
51517
  role: "alert",
51477
51518
  class: "pb-free-note is-error"
51478
- }, _Q = {
51519
+ }, hQ = {
51479
51520
  key: 1,
51480
51521
  role: "status",
51481
51522
  class: "pb-free-note"
51482
- }, vQ = {
51523
+ }, gQ = {
51483
51524
  key: 2,
51484
51525
  role: "alert",
51485
51526
  class: "pb-free-note is-error"
51486
- }, yQ = {
51527
+ }, _Q = {
51487
51528
  key: 3,
51488
51529
  role: "status",
51489
51530
  class: "pb-free-note"
51490
- }, bQ = {
51531
+ }, vQ = {
51491
51532
  key: 5,
51492
51533
  class: "pb-free-note"
51493
- }, xQ = {
51534
+ }, yQ = {
51494
51535
  key: 1,
51495
51536
  class: "pb-section",
51496
51537
  "aria-label": "头脑风暴"
51497
- }, SQ = ["onClick"], CQ = {
51538
+ }, bQ = ["onClick"], xQ = {
51498
51539
  key: 2,
51499
51540
  class: "pb-actions",
51500
51541
  "aria-label": "操作"
51501
- }, wQ = {
51542
+ }, SQ = {
51502
51543
  key: 3,
51503
51544
  class: "pb-section",
51504
51545
  "aria-label": "执行耗时"
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({
51546
+ }, CQ = { class: "pb-timing-heading" }, wQ = { class: "pb-timings" }, TQ = { class: "pb-timing-who" }, EQ = { class: "pb-timing-stages" }, DQ = 90, OQ = /*#__PURE__*/ jH({
51506
51547
  __name: "FreeBoard",
51507
51548
  emits: ["brainstorm"],
51508
51549
  setup(e, { emit: t }) {
@@ -51668,32 +51709,32 @@ var cq = /*#__PURE__*/ jH({
51668
51709
  }
51669
51710
  return (e, t) => {
51670
51711
  let s = pA, m = sA, g = MA, ae = TH, A = bH, oe = YV;
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)]),
51712
+ return U(), W("div", QZ, [
51713
+ K("header", $Z, [t[6] ||= K("strong", null, "自由协作", -1), K("span", eQ, P(f.value ? `${I(i).display_name(f.value.name)} 主持` : "无主持人"), 1)]),
51673
51714
  K("section", {
51674
51715
  class: M(["pb-status", `is-${b.value.tone}`]),
51675
51716
  "aria-label": "房间状态"
51676
51717
  }, [
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", {
51718
+ K("div", tQ, [t[7] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", nQ, P(b.value.title), 1)]),
51719
+ b.value.detail ? (U(), W("p", rQ, P(b.value.detail), 1)) : Y("", !0),
51720
+ K("div", iQ, [(U(!0), W(H, null, B(x.value, (e) => (U(), W("div", {
51680
51721
  key: e.label,
51681
51722
  class: "pb-meter"
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))])
51723
+ }, [K("div", aQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", oQ, [K("i", { style: j({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51683
51724
  ], 2),
51684
- S.value ? (U(), W("section", lQ, [
51725
+ S.value ? (U(), W("section", sQ, [
51685
51726
  t[8] ||= K("h4", null, "当前任务", -1),
51686
51727
  K("p", { class: M(["pb-focus", { "is-expanded": C.value }]) }, P(S.value), 3),
51687
- S.value.length > kQ ? (U(), W("button", {
51728
+ S.value.length > DQ ? (U(), W("button", {
51688
51729
  key: 0,
51689
51730
  type: "button",
51690
51731
  class: "pb-link",
51691
51732
  onClick: t[0] ||= (e) => C.value = !C.value
51692
51733
  }, P(C.value ? "收起" : "展开"), 1)) : Y("", !0)
51693
51734
  ])) : Y("", !0),
51694
- K("section", uQ, [
51735
+ K("section", cQ, [
51695
51736
  t[10] ||= K("h4", null, "成员", -1),
51696
- K("ul", dQ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", {
51737
+ K("ul", lQ, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", {
51697
51738
  key: e.id,
51698
51739
  class: M(["pb-member", { "is-away": e.status === "away" }])
51699
51740
  }, [
@@ -51709,8 +51750,8 @@ var cq = /*#__PURE__*/ jH({
51709
51750
  "alt",
51710
51751
  "class"
51711
51752
  ]),
51712
- K("div", fQ, [
51713
- K("div", pQ, [
51753
+ K("div", uQ, [
51754
+ K("div", dQ, [
51714
51755
  J(P(I(i).display_name(e.name)), 1),
51715
51756
  e.role === "host" ? (U(), G(m, {
51716
51757
  key: 0,
@@ -51719,8 +51760,8 @@ var cq = /*#__PURE__*/ jH({
51719
51760
  })) : Y("", !0),
51720
51761
  K("small", null, P(e.role === "host" ? `主持 · ${l[e.access]}` : l[e.access]), 1)
51721
51762
  ]),
51722
- K("div", mQ, P(y(e)), 1),
51723
- e.session_mode === "borrowed" ? (U(), W("div", hQ, "借用已有会话")) : Y("", !0),
51763
+ K("div", fQ, P(y(e)), 1),
51764
+ e.session_mode === "borrowed" ? (U(), W("div", pQ, "借用已有会话")) : Y("", !0),
51724
51765
  K("div", { class: M(["pb-member-status", `is-${_(e)}`]) }, [t[9] ||= K("span", { class: "pb-dot" }, null, -1), J(P(v(e)), 1)], 2)
51725
51766
  ]),
51726
51767
  q(ae, {
@@ -51743,8 +51784,8 @@ var cq = /*#__PURE__*/ jH({
51743
51784
  key: e.executions.join("-"),
51744
51785
  class: "pb-free-note is-warning"
51745
51786
  }, "可能冲突:" + P(e.members.map((e) => I(i).display_name(e)).join(" 与 ")) + " 的重叠执行观察到 " + P(e.files.join("、")) + " 变化;修改者未确认。", 1))), 128)),
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),
51787
+ I(r).free_error ? (U(), W("p", mQ, P(I(r).free_error), 1)) : I(r).free_notice ? (U(), W("p", hQ, P(I(r).free_notice), 1)) : Y("", !0),
51788
+ I(r).access?.error ? (U(), W("p", gQ, P(I(r).access.error), 1)) : I(r).access?.notice ? (U(), W("p", _Q, P(I(r).access.notice), 1)) : Y("", !0),
51748
51789
  u.value.archived ? Y("", !0) : (U(), W("form", {
51749
51790
  key: 4,
51750
51791
  class: "pb-free-invite",
@@ -51806,15 +51847,15 @@ var cq = /*#__PURE__*/ jH({
51806
51847
  class: "w-full"
51807
51848
  }, null, 8, ["modelValue"])) : Y("", !0)
51808
51849
  ], 32)),
51809
- u.value.archived ? Y("", !0) : (U(), W("p", bQ, P(re.value), 1))
51850
+ u.value.archived ? Y("", !0) : (U(), W("p", vQ, P(re.value), 1))
51810
51851
  ]),
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", {
51852
+ u.value.linked_rooms?.length ? (U(), W("section", yQ, [t[11] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(u.value.linked_rooms, (e) => (U(), W("button", {
51812
51853
  key: e.id,
51813
51854
  type: "button",
51814
51855
  class: "pb-link pb-free-linked",
51815
51856
  onClick: (t) => I(a)("room", e.id)
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, {
51857
+ }, [J(P(e.title), 1), K("small", null, P(I(i).phases[e.phase] || e.phase), 1)], 8, bQ))), 128))])) : Y("", !0),
51858
+ u.value.archived ? Y("", !0) : (U(), W("section", xQ, [q(g, {
51818
51859
  icon: "i-lucide-messages-square",
51819
51860
  label: "发起头脑风暴",
51820
51861
  size: "sm",
@@ -51824,54 +51865,54 @@ var cq = /*#__PURE__*/ jH({
51824
51865
  title: "用当前成员新建一场讨论房间,收束后可把结论发回这里",
51825
51866
  onClick: t[5] ||= (e) => n("brainstorm")
51826
51867
  })])),
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)
51868
+ w.value.items.length ? (U(), W("section", SQ, [K("div", CQ, [t[12] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(w.value.items.length) + " 次执行 · " + P(T(w.value.total)), 1)]), K("details", wQ, [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", TQ, [J("#" + P(e.id) + " " + P(h(e.member_id)), 1), K("small", null, P(c[e.status] || e.status), 1)]), K("span", EQ, [K("span", null, "用时 " + P(T(e.seconds)), 1)])]))), 128))])])])) : Y("", !0)
51828
51869
  ]);
51829
51870
  };
51830
51871
  }
51831
- }, [["__scopeId", "data-v-e7e5af2a"]]), jQ = {
51872
+ }, [["__scopeId", "data-v-e7e5af2a"]]), kQ = {
51832
51873
  id: "channel-sidebar",
51833
51874
  class: "channel-sidebar",
51834
51875
  "aria-label": "房间导航"
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 = [
51876
+ }, AQ = { class: "channel-sidebar-content" }, jQ = { class: "channel-directory-heading channel-tools-heading" }, MQ = ["aria-expanded"], NQ = { class: "channel-sidebar-footer" }, PQ = ["aria-label"], FQ = { class: "channel-self" }, IQ = ["title"], LQ = [
51836
51877
  "aria-valuemax",
51837
51878
  "aria-valuenow",
51838
51879
  "aria-valuetext"
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 = {
51880
+ ], RQ = { class: "channel-main" }, zQ = { class: "channel-header" }, BQ = { class: "channel-title-icon" }, VQ = { class: "channel-title" }, HQ = { class: "channel-title-copy" }, UQ = ["title"], WQ = ["title"], GQ = {
51840
51881
  key: 0,
51841
51882
  class: "channel-header-context"
51842
- }, JQ = { class: "channel-header-actions" }, YQ = {
51883
+ }, KQ = { class: "channel-header-actions" }, qQ = {
51843
51884
  key: 0,
51844
51885
  class: "channel-launch-recovery",
51845
51886
  "aria-label": "未完成的创建或启动请求"
51846
- }, XQ = { role: "status" }, ZQ = { class: "button-row" }, QQ = {
51887
+ }, JQ = { role: "status" }, YQ = { class: "button-row" }, XQ = {
51847
51888
  key: 1,
51848
51889
  class: "channel-tabbar"
51849
- }, $Q = { class: "channel-brief-inner" }, e$ = { class: "channel-brief-heading" }, t$ = ["aria-label", "aria-expanded"], n$ = {
51890
+ }, ZQ = { class: "channel-brief-inner" }, QQ = { class: "channel-brief-heading" }, $Q = ["aria-label", "aria-expanded"], e$ = {
51850
51891
  key: 0,
51851
51892
  class: "channel-brief-preview"
51852
- }, r$ = {
51893
+ }, t$ = {
51853
51894
  id: "channel-brief-content",
51854
51895
  class: "channel-brief-content"
51855
- }, i$ = ["innerHTML"], a$ = { class: "channel-brief-footer" }, o$ = { class: "channel-brief-status" }, s$ = { class: "channel-content" }, c$ = {
51896
+ }, n$ = ["innerHTML"], r$ = { class: "channel-brief-footer" }, i$ = { class: "channel-brief-status" }, a$ = { class: "channel-content" }, o$ = {
51856
51897
  key: 0,
51857
51898
  class: "content-page channel-summary",
51858
51899
  role: "tabpanel",
51859
51900
  "aria-label": "共识"
51860
- }, l$ = { class: "page-heading" }, u$ = {
51901
+ }, s$ = { class: "page-heading" }, c$ = {
51861
51902
  key: 0,
51862
51903
  class: "info-section"
51863
- }, d$ = { class: "button-row" }, f$ = { class: "form-footer" }, p$ = {
51904
+ }, l$ = { class: "button-row" }, u$ = { class: "form-footer" }, d$ = {
51864
51905
  key: 1,
51865
51906
  class: "channel-empty"
51866
- }, m$ = ["aria-valuenow", "aria-valuetext"], h$ = {
51907
+ }, f$ = ["aria-valuenow", "aria-valuetext"], p$ = {
51867
51908
  key: 2,
51868
51909
  id: "channel-member-rail",
51869
51910
  class: "channel-member-rail",
51870
51911
  "aria-label": "当前焦点与讨论进度"
51871
- }, g$ = { class: "channel-rail-board" }, _$ = {
51912
+ }, m$ = { class: "channel-rail-board" }, h$ = {
51872
51913
  key: 2,
51873
51914
  class: "progress-board is-docked"
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$ = {
51915
+ }, g$ = { class: "channel-detail-title" }, _$ = { class: "info-section" }, v$ = "ai-codiscuss-channel-layout", y$ = 220, b$ = 440, x$ = 280, S$ = 16, C$ = 180, w$ = 400, T$ = 248, E$ = 16, D$ = 480, O$ = 1200, k$ = 0, A$ = {
51875
51916
  __name: "ChannelWorkspace",
51876
51917
  setup(e) {
51877
51918
  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 = [{
@@ -51893,14 +51934,14 @@ var cq = /*#__PURE__*/ jH({
51893
51934
  label: "宽",
51894
51935
  width: 1240
51895
51936
  }
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(() => {
51937
+ }, 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 >= O$), k = Z(() => t.value.tab === "discussion" && !D.value), te = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ne = Z(() => {
51897
51938
  let e = document.createElement("template");
51898
51939
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
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(() => ({
51940
+ }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), ae = null, A = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(null), se = Z(() => Math.min(w$, Math.max(C$, T.value - D$ - k$))), ce = Z(() => Math.min(w.value, se.value)), le = Z(() => ({
51900
51941
  "--channel-reading-width": `${y[x.value].width}px`,
51901
51942
  "--channel-rail-width": `${C.value}px`,
51902
51943
  "--channel-topbar-height": `${ie.value}px`,
51903
- "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${ce.value}px ${j$}px minmax(0, 1fr)`
51944
+ "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${ce.value}px ${k$}px minmax(0, 1fr)`
51904
51945
  })), ue = Object.entries(y).map(([e, t]) => ({
51905
51946
  value: e,
51906
51947
  label: t.label
@@ -51986,12 +52027,12 @@ var cq = /*#__PURE__*/ jH({
51986
52027
  }
51987
52028
  function Ee() {
51988
52029
  try {
51989
- let e = JSON.parse(localStorage.getItem(b$)) || {};
52030
+ let e = JSON.parse(localStorage.getItem(v$)) || {};
51990
52031
  return {
51991
52032
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
51992
52033
  effects: e.effects === "reduced" ? "reduced" : "full",
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(),
52034
+ rail: Number.isFinite(e.rail) ? Math.min(b$, Math.max(y$, e.rail)) : x$,
52035
+ nav: Number.isFinite(e.nav) ? Math.min(w$, Math.max(C$, e.nav)) : De(),
51995
52036
  collapsed: e.collapsed === !0,
51996
52037
  brief_collapsed: e.brief_collapsed === !0,
51997
52038
  rail_collapsed: e.rail_collapsed === !0
@@ -52000,7 +52041,7 @@ var cq = /*#__PURE__*/ jH({
52000
52041
  return {
52001
52042
  reading: "default",
52002
52043
  effects: "full",
52003
- rail: C$,
52044
+ rail: x$,
52004
52045
  nav: De(),
52005
52046
  collapsed: !1,
52006
52047
  brief_collapsed: !1,
@@ -52009,11 +52050,11 @@ var cq = /*#__PURE__*/ jH({
52009
52050
  }
52010
52051
  }
52011
52052
  function De() {
52012
- return typeof window > "u" ? D$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : D$;
52053
+ return typeof window > "u" ? T$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : T$;
52013
52054
  }
52014
52055
  function Oe() {
52015
52056
  try {
52016
- localStorage.setItem(b$, JSON.stringify({
52057
+ localStorage.setItem(v$, JSON.stringify({
52017
52058
  reading: x.value,
52018
52059
  effects: S.value,
52019
52060
  rail: C.value,
@@ -52044,19 +52085,19 @@ var cq = /*#__PURE__*/ jH({
52044
52085
  }, e.currentTarget.setPointerCapture(e.pointerId));
52045
52086
  }
52046
52087
  function Pe(e) {
52047
- A.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(S$, Math.max(x$, A.value.width + A.value.x - e.clientX))));
52088
+ A.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(b$, Math.max(y$, A.value.width + A.value.x - e.clientX))));
52048
52089
  }
52049
52090
  function Fe(e) {
52050
52091
  A.value?.pointer === e.pointerId && (A.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Oe());
52051
52092
  }
52052
52093
  function Ie(e) {
52053
52094
  let t = {
52054
- ArrowLeft: C.value + w$,
52055
- ArrowRight: C.value - w$,
52056
- Home: x$,
52057
- End: S$
52095
+ ArrowLeft: C.value + S$,
52096
+ ArrowRight: C.value - S$,
52097
+ Home: y$,
52098
+ End: b$
52058
52099
  };
52059
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(S$, Math.max(x$, t[e.key])), Oe());
52100
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(b$, Math.max(y$, t[e.key])), Oe());
52060
52101
  }
52061
52102
  function Le(e) {
52062
52103
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), oe.value = {
@@ -52066,19 +52107,19 @@ var cq = /*#__PURE__*/ jH({
52066
52107
  }, e.currentTarget.setPointerCapture(e.pointerId));
52067
52108
  }
52068
52109
  function Re(e) {
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))));
52110
+ oe.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(se.value, Math.max(C$, oe.value.width + e.clientX - oe.value.x))));
52070
52111
  }
52071
52112
  function ze(e) {
52072
52113
  oe.value?.pointer === e.pointerId && (oe.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Oe());
52073
52114
  }
52074
52115
  function Be(e) {
52075
52116
  let t = {
52076
- ArrowLeft: ce.value - O$,
52077
- ArrowRight: ce.value + O$,
52078
- Home: T$,
52117
+ ArrowLeft: ce.value - E$,
52118
+ ArrowRight: ce.value + E$,
52119
+ Home: C$,
52079
52120
  End: se.value
52080
52121
  };
52081
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(se.value, Math.max(T$, t[e.key])), Oe());
52122
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(se.value, Math.max(C$, t[e.key])), Oe());
52082
52123
  }
52083
52124
  return (e, r) => {
52084
52125
  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;
@@ -52090,10 +52131,10 @@ var cq = /*#__PURE__*/ jH({
52090
52131
  }]),
52091
52132
  style: j(le.value)
52092
52133
  }, [
52093
- K("aside", jQ, [
52134
+ K("aside", kQ, [
52094
52135
  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),
52095
- K("div", MQ, [
52096
- q(MX, {
52136
+ K("div", AQ, [
52137
+ q(AX, {
52097
52138
  onSelect: be,
52098
52139
  onManage: ve,
52099
52140
  onCreate: Se,
@@ -52102,12 +52143,12 @@ var cq = /*#__PURE__*/ jH({
52102
52143
  onDeleteFolder: Te,
52103
52144
  onArchives: ye
52104
52145
  }),
52105
- K("div", NQ, [K("button", {
52146
+ K("div", jQ, [K("button", {
52106
52147
  type: "button",
52107
52148
  class: "channel-section-toggle",
52108
52149
  "aria-expanded": f.value,
52109
52150
  onClick: r[0] ||= (e) => f.value = !f.value
52110
- }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, PQ)]),
52151
+ }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, MQ)]),
52111
52152
  f.value ? (U(), G(b, {
52112
52153
  key: 0,
52113
52154
  items: ge.value,
@@ -52123,7 +52164,7 @@ var cq = /*#__PURE__*/ jH({
52123
52164
  }
52124
52165
  }, null, 8, ["items"])) : Y("", !0)
52125
52166
  ]),
52126
- K("footer", FQ, [K("button", {
52167
+ K("footer", NQ, [K("button", {
52127
52168
  type: "button",
52128
52169
  class: "channel-self-button",
52129
52170
  "aria-label": `账号与设置:${I(n).display_name(I(_))}${N.value ? "," + N.value : ""}`,
@@ -52139,10 +52180,10 @@ var cq = /*#__PURE__*/ jH({
52139
52180
  "text",
52140
52181
  "alt",
52141
52182
  "class"
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", {
52183
+ ]), K("span", FQ, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: M(["channel-connection", { "is-action": N.value }]) }, [K("span", {
52143
52184
  class: M({ connected: I(t).connected }),
52144
52185
  title: I(t).connected ? "网站已连接" : "网站未连接"
52145
- }, null, 10, RQ), J(P(N.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, IQ), q(D, { text: "设置" }, {
52186
+ }, null, 10, IQ), J(P(N.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, PQ), q(D, { text: "设置" }, {
52146
52187
  default: L(() => [q(T, {
52147
52188
  icon: "i-lucide-settings-2",
52148
52189
  color: "neutral",
@@ -52163,7 +52204,7 @@ var cq = /*#__PURE__*/ jH({
52163
52204
  "aria-label": "调整房间栏宽度",
52164
52205
  "aria-orientation": "vertical",
52165
52206
  "aria-controls": "channel-sidebar",
52166
- "aria-valuemin": T$,
52207
+ "aria-valuemin": C$,
52167
52208
  "aria-valuemax": se.value,
52168
52209
  "aria-valuenow": ce.value,
52169
52210
  "aria-valuetext": `${ce.value} 像素`,
@@ -52174,13 +52215,13 @@ var cq = /*#__PURE__*/ jH({
52174
52215
  onPointercancel: ze,
52175
52216
  onLostpointercapture: ze,
52176
52217
  onKeydown: Be
52177
- }, null, 40, zQ)),
52178
- K("main", BQ, [K("div", {
52218
+ }, null, 40, LQ)),
52219
+ K("main", RQ, [K("div", {
52179
52220
  ref_key: "topbar",
52180
52221
  ref: re,
52181
52222
  class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
52182
52223
  }, [
52183
- K("header", VQ, [
52224
+ K("header", zQ, [
52184
52225
  q(D, { text: ee.value ? "展开房间栏" : "收起房间栏" }, {
52185
52226
  default: L(() => [q(T, {
52186
52227
  icon: "i-lucide-panel-left",
@@ -52205,13 +52246,13 @@ var cq = /*#__PURE__*/ jH({
52205
52246
  "aria-expanded": d.value,
52206
52247
  onClick: r[4] ||= (e) => d.value = !0
52207
52248
  }, null, 8, ["aria-expanded"]),
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", {
52249
+ K("span", BQ, [q(y, { name: "i-lucide-hash" })]),
52250
+ K("div", VQ, [K("div", HQ, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, UQ), o.value?.floor && !pe.value ? (U(), W("div", {
52210
52251
  key: 0,
52211
52252
  class: M(["channel-floor-status", { "is-held": o.value.floor.holder }]),
52212
52253
  role: "status",
52213
52254
  title: `发言权:${I(n).floor_status(o.value)}`
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, {
52255
+ }, [q(y, { name: "i-lucide-mic" }), K("span", null, "发言权:" + P(I(n).floor_status(o.value)), 1)], 10, WQ)) : Y("", !0)]), o.value?.archived ? (U(), G(ie, {
52215
52256
  key: 0,
52216
52257
  color: "neutral",
52217
52258
  variant: "subtle",
@@ -52220,12 +52261,12 @@ var cq = /*#__PURE__*/ jH({
52220
52261
  default: L(() => [...r[26] ||= [J("已存档", -1)]]),
52221
52262
  _: 1
52222
52263
  })) : Y("", !0)]),
52223
- o.value ? (U(), W("span", qQ, [
52264
+ o.value ? (U(), W("span", GQ, [
52224
52265
  J(P(me.value.find((e) => e.value === I(t).tab)?.label), 1),
52225
52266
  r[27] ||= K("span", null, "·", -1),
52226
52267
  J(P(o.value.message_count) + " 条记录", 1)
52227
52268
  ])) : Y("", !0),
52228
- K("div", JQ, [
52269
+ K("div", KQ, [
52229
52270
  I(t).tab === "discussion" ? (U(), W("form", {
52230
52271
  key: 0,
52231
52272
  class: "channel-search",
@@ -52283,7 +52324,7 @@ var cq = /*#__PURE__*/ jH({
52283
52324
  ])]),
52284
52325
  _: 1
52285
52326
  })) : Y("", !0),
52286
- o.value && !(k.value && O.value) ? (U(), G($Z, { key: 2 })) : Y("", !0)
52327
+ o.value && !(k.value && O.value) ? (U(), G(ZZ, { key: 2 })) : Y("", !0)
52287
52328
  ]),
52288
52329
  q(D, { text: te.value }, {
52289
52330
  default: L(() => [q(T, {
@@ -52304,12 +52345,12 @@ var cq = /*#__PURE__*/ jH({
52304
52345
  _: 1
52305
52346
  }, 8, ["text"])
52306
52347
  ]),
52307
- I(t).launch.recoveries.length ? (U(), W("section", YQ, [
52348
+ I(t).launch.recoveries.length ? (U(), W("section", qQ, [
52308
52349
  r[28] ||= K("h2", null, "继续未完成的请求", -1),
52309
52350
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
52310
52351
  K("strong", null, P(e.title), 1),
52311
- K("p", XQ, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52312
- K("div", ZQ, [
52352
+ K("p", JQ, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52353
+ K("div", YQ, [
52313
52354
  q(T, {
52314
52355
  label: e.direct ? "继续创建房间" : "继续本次启动",
52315
52356
  size: "sm",
@@ -52342,7 +52383,7 @@ var cq = /*#__PURE__*/ jH({
52342
52383
  ]))), 128)),
52343
52384
  r[29] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
52344
52385
  ])) : Y("", !0),
52345
- o.value ? (U(), W("div", QQ, [q(fe, {
52386
+ o.value ? (U(), W("div", XQ, [q(fe, {
52346
52387
  modelValue: de.value,
52347
52388
  "onUpdate:modelValue": r[9] ||= (e) => de.value = e,
52348
52389
  items: me.value,
@@ -52357,7 +52398,7 @@ var cq = /*#__PURE__*/ jH({
52357
52398
  key: 2,
52358
52399
  class: M(["channel-host-brief", { "is-collapsed": E.value }]),
52359
52400
  "aria-label": "主持简报"
52360
- }, [K("div", $Q, [K("div", e$, [K("button", {
52401
+ }, [K("div", ZQ, [K("div", QQ, [K("button", {
52361
52402
  type: "button",
52362
52403
  class: "channel-brief-toggle",
52363
52404
  "aria-label": E.value ? "展开主持简报" : "收起主持简报",
@@ -52367,8 +52408,8 @@ var cq = /*#__PURE__*/ jH({
52367
52408
  }, [
52368
52409
  q(y, { name: E.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
52369
52410
  K("strong", null, "主持简报" + P(E.value ? ":" : ""), 1),
52370
- E.value ? (U(), W("span", n$, P(ne.value), 1)) : Y("", !0)
52371
- ], 8, t$), E.value ? Y("", !0) : (U(), G(T, {
52411
+ E.value ? (U(), W("span", e$, P(ne.value), 1)) : Y("", !0)
52412
+ ], 8, $Q), E.value ? Y("", !0) : (U(), G(T, {
52372
52413
  key: 0,
52373
52414
  label: "更新简报",
52374
52415
  color: "neutral",
@@ -52376,30 +52417,30 @@ var cq = /*#__PURE__*/ jH({
52376
52417
  size: "xs",
52377
52418
  class: "channel-brief-update",
52378
52419
  onClick: r[10] ||= (e) => I(i)("tab", "context")
52379
- }))]), vr(K("div", r$, [K("div", {
52420
+ }))]), vr(K("div", t$, [K("div", {
52380
52421
  class: "channel-brief-text markdown-body",
52381
52422
  innerHTML: o.value.rendered_brief
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)
52423
+ }, null, 8, n$), K("div", r$, [K("span", i$, 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)
52383
52424
  ], 2), o.value ? (U(), W("div", {
52384
52425
  key: 0,
52385
52426
  class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
52386
- }, [K("div", s$, [
52387
- vr(q(lG, {
52427
+ }, [K("div", a$, [
52428
+ vr(q(oG, {
52388
52429
  onDetail: xe,
52389
52430
  onEdit: r[11] ||= (e) => s.value = "edit"
52390
52431
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
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, {
52432
+ I(t).tab === "context" ? (U(), W("section", o$, [
52433
+ K("div", s$, [r[30] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ie, {
52393
52434
  color: "neutral",
52394
52435
  variant: "outline"
52395
52436
  }, {
52396
52437
  default: L(() => [J("截止 #" + P(o.value.state_until), 1)]),
52397
52438
  _: 1
52398
52439
  })]),
52399
- Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", u$, [
52440
+ Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", c$, [
52400
52441
  r[31] ||= K("h3", null, "最新运行回执", -1),
52401
52442
  r[32] ||= K("p", { class: "fine-print" }, "以下回执独立于摘要更新;晚于摘要的回执可能尚未整理,实际运行结果请查看原文。", -1),
52402
- K("div", d$, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
52443
+ K("div", l$, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
52403
52444
  key: e.id,
52404
52445
  label: `${I(n).display_name(e.author)} #${e.id} · ${new Date(e.created_at).toLocaleString("zh-CN")}${e.id > o.value.state_until ? " · 晚于摘要" : ""}`,
52405
52446
  variant: "link",
@@ -52442,7 +52483,7 @@ var cq = /*#__PURE__*/ jH({
52442
52483
  }, null, 8, ["modelValue"])]),
52443
52484
  _: 1
52444
52485
  }),
52445
- K("div", f$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52486
+ K("div", u$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52446
52487
  type: "submit",
52447
52488
  color: "neutral",
52448
52489
  icon: "i-lucide-check",
@@ -52452,12 +52493,12 @@ var cq = /*#__PURE__*/ jH({
52452
52493
  }, null, 8, ["loading"])])
52453
52494
  ], 32)
52454
52495
  ])) : Y("", !0),
52455
- I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(LK, {
52496
+ I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(PK, {
52456
52497
  key: I(t).tab,
52457
52498
  onOpen: r[15] ||= (e) => s.value = e,
52458
52499
  onDetail: xe
52459
52500
  })) : Y("", !0)
52460
- ])], 2)) : (U(), W("div", p$, [
52501
+ ])], 2)) : (U(), W("div", d$, [
52461
52502
  q(y, { name: "i-lucide-hash" }),
52462
52503
  r[33] ||= K("h2", null, "新建一个讨论房间", -1),
52463
52504
  r[34] ||= K("p", null, "每个房间围绕一个议题,保留所有人的观点。", -1),
@@ -52476,8 +52517,8 @@ var cq = /*#__PURE__*/ jH({
52476
52517
  "aria-label": "调整右侧栏宽度",
52477
52518
  "aria-orientation": "vertical",
52478
52519
  "aria-controls": "channel-member-rail",
52479
- "aria-valuemin": x$,
52480
- "aria-valuemax": S$,
52520
+ "aria-valuemin": y$,
52521
+ "aria-valuemax": b$,
52481
52522
  "aria-valuenow": C.value,
52482
52523
  "aria-valuetext": `${C.value} 像素`,
52483
52524
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -52487,14 +52528,14 @@ var cq = /*#__PURE__*/ jH({
52487
52528
  onPointercancel: Fe,
52488
52529
  onLostpointercapture: Fe,
52489
52530
  onKeydown: Ie
52490
- }, null, 40, m$)) : Y("", !0),
52491
- k.value ? (U(), W("aside", h$, [K("section", g$, [o.value && pe.value ? (U(), G(AQ, {
52531
+ }, null, 40, f$)) : Y("", !0),
52532
+ k.value ? (U(), W("aside", p$, [K("section", m$, [o.value && pe.value ? (U(), G(OQ, {
52492
52533
  key: 0,
52493
52534
  onBrainstorm: he
52494
- })) : o.value ? (U(), G(JZ, {
52535
+ })) : o.value ? (U(), G(KZ, {
52495
52536
  key: 1,
52496
52537
  docked: ""
52497
- })) : (U(), W("div", _$, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52538
+ })) : (U(), W("div", h$, [...r[35] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52498
52539
  q(Oe, {
52499
52540
  open: d.value,
52500
52541
  "onUpdate:open": r[18] ||= (e) => d.value = e,
@@ -52506,7 +52547,7 @@ var cq = /*#__PURE__*/ jH({
52506
52547
  body: "channel-drawer-body"
52507
52548
  }
52508
52549
  }, {
52509
- body: L(() => [q(MX, {
52550
+ body: L(() => [q(AX, {
52510
52551
  onSelect: be,
52511
52552
  onManage: ve,
52512
52553
  onCreate: Se,
@@ -52537,7 +52578,7 @@ var cq = /*#__PURE__*/ jH({
52537
52578
  }
52538
52579
  }, {
52539
52580
  body: L(() => [o.value ? (U(), W(H, { key: 0 }, [
52540
- K("div", v$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52581
+ K("div", g$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52541
52582
  (U(), W(H, null, B([
52542
52583
  {
52543
52584
  key: "goal",
@@ -52564,7 +52605,7 @@ var cq = /*#__PURE__*/ jH({
52564
52605
  class: "info-section"
52565
52606
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
52566
52607
  q(Ae),
52567
- K("section", y$, [r[36] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(_e.value, (e) => (U(), W("div", {
52608
+ K("section", _$, [r[36] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(_e.value, (e) => (U(), W("div", {
52568
52609
  key: e.name,
52569
52610
  class: "expert-row"
52570
52611
  }, [
@@ -52597,7 +52638,7 @@ var cq = /*#__PURE__*/ jH({
52597
52638
  ], 64)) : Y("", !0)]),
52598
52639
  _: 1
52599
52640
  }, 8, ["open"]),
52600
- q(sX, {
52641
+ q(aX, {
52601
52642
  modelValue: s.value,
52602
52643
  "onUpdate:modelValue": r[21] ||= (e) => s.value = e,
52603
52644
  "reading-width": x.value,
@@ -52621,7 +52662,7 @@ var cq = /*#__PURE__*/ jH({
52621
52662
  ], 6);
52622
52663
  };
52623
52664
  }
52624
- }, N$ = {
52665
+ }, j$ = {
52625
52666
  __name: "App",
52626
52667
  setup(e) {
52627
52668
  return br("discussion", OV()), (e, t) => {
@@ -52632,7 +52673,7 @@ var cq = /*#__PURE__*/ jH({
52632
52673
  toaster: null
52633
52674
  }, {
52634
52675
  default: L(() => [q(I(Qz), { "reduced-motion": "user" }, {
52635
- default: L(() => [q(M$)]),
52676
+ default: L(() => [q(A$)]),
52636
52677
  _: 1
52637
52678
  })]),
52638
52679
  _: 1
@@ -52642,8 +52683,8 @@ var cq = /*#__PURE__*/ jH({
52642
52683
  };
52643
52684
  //#endregion
52644
52685
  //#region frontend/main.js
52645
- function P$() {
52646
- bu(N$).use(ph).mount("#modern-root");
52686
+ function M$() {
52687
+ bu(j$).use(ph).mount("#modern-root");
52647
52688
  }
52648
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", P$) : P$();
52689
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", M$) : M$();
52649
52690
  //#endregion