ai_co_discuss 0.2.64 → 0.2.65

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
@@ -41793,7 +41793,7 @@ var _H = {
41793
41793
  }, BW = ["aria-pressed", "onClick"], VW = {
41794
41794
  key: 1,
41795
41795
  class: "channel-composer-identity"
41796
- }, HW = { class: "channel-composer-note" }, UW = { key: 0 }, WW = { key: 1 }, GW = { class: "channel-draft-length" }, KW = 240, qW = 6, JW = .9, YW = 160, XW = 100, ZW = 4, QW = 3, $W = 320, eG = 34, tG = 12, nG = 16, rG = 14, iG = 8, aG = 28, oG = 18, sG = 1, cG = 1.5, lG = 3, uG = 6, dG = .62, fG = .72, pG = .88, mG = .16, hG = 12, gG = 450, _G = 8, vG = 70, yG = 20, bG = 1, xG = 18.566573373612275, SG = 78.16726685662772 / 8, CG = 1e3, wG = 2e3, TG = /*#__PURE__*/ MH({
41796
+ }, HW = { class: "channel-composer-note" }, UW = { key: 0 }, WW = { key: 1 }, GW = { class: "channel-draft-length" }, KW = 240, qW = 6, JW = .9, YW = 160, XW = 100, ZW = 4, QW = 3, $W = 320, eG = 34, tG = 12, nG = 16, rG = 14, iG = 8, aG = 28, oG = 18, sG = 1, cG = 1.5, lG = 3, uG = 6, dG = .62, fG = .72, pG = .88, mG = .16, hG = 12, gG = 450, _G = 8, vG = 70, yG = 20, bG = 1, xG = 18.566573373612275, SG = 78.16726685662772 / 8, CG = 1e3, wG = "全体成员", TG = 2e3, EG = /*#__PURE__*/ MH({
41797
41797
  __name: "ChannelDiscussion",
41798
41798
  emits: ["detail", "edit"],
41799
41799
  setup(e, { emit: t }) {
@@ -41803,7 +41803,7 @@ var _H = {
41803
41803
  }, {
41804
41804
  value: "submitter",
41805
41805
  label: "代发者整理"
41806
- }], b = c("search-input"), x = /* @__PURE__ */ F(null), S = /* @__PURE__ */ F(/* @__PURE__ */ new Set()), C = /* @__PURE__ */ new WeakMap(), w = Z(() => new Map(o.value.messages.map((e) => (C.has(e) || C.set(e, Ht(e)), [e.id, C.get(e)])))), T = Z(() => {
41806
+ }], b = c("search-input"), x = /* @__PURE__ */ F(null), S = /* @__PURE__ */ F(/* @__PURE__ */ new Set()), C = /* @__PURE__ */ new WeakMap(), w = Z(() => new Map(o.value.messages.map((e) => (C.has(e) || C.set(e, Wt(e)), [e.id, C.get(e)])))), T = Z(() => {
41807
41807
  let e = N.value || {}, t = e.user_request?.trim() ? {
41808
41808
  label: "用户原文",
41809
41809
  text: e.user_request
@@ -41831,7 +41831,7 @@ var _H = {
41831
41831
  mass: 1,
41832
41832
  stiffness: 604.0197893466687,
41833
41833
  damping: 44.729801589453814
41834
- }, de = null, fe = !1, A = TV(0, ue), me = TV(0, ue), he = TV(0, ue), ge = CV(he, [0, 1], [.96, 1]), _e = CV(he, [0, 1], [-8, 0]), M = CV(he, [0, 1], [0, 1]), ve = Z(() => o.value.messages.find((e) => e.id === ne.value)), ye = Z(() => Kt.value.find((e) => e.messages.some((e) => e.id === ne.value))), be = Z(() => ye.value?.label), xe = Z(() => ae.value ? Xt.value.findIndex((e) => e.key === re.value) : -1), Se = /* @__PURE__ */ F(null), Ce = /* @__PURE__ */ F(!0), N = Z(() => o.value.room);
41834
+ }, de = null, fe = !1, A = TV(0, ue), me = TV(0, ue), he = TV(0, ue), ge = CV(he, [0, 1], [.96, 1]), _e = CV(he, [0, 1], [-8, 0]), M = CV(he, [0, 1], [0, 1]), ve = Z(() => o.value.messages.find((e) => e.id === ne.value)), ye = Z(() => Jt.value.find((e) => e.messages.some((e) => e.id === ne.value))), be = Z(() => ye.value?.label), xe = Z(() => ae.value ? Qt.value.findIndex((e) => e.key === re.value) : -1), Se = /* @__PURE__ */ F(null), Ce = /* @__PURE__ */ F(!0), N = Z(() => o.value.room);
41835
41835
  async function we() {
41836
41836
  await Qn(), a.value = (i.value?.scrollHeight || 0) > KW;
41837
41837
  }
@@ -41858,21 +41858,27 @@ var _H = {
41858
41858
  return De(e) ? e.registered_at ? `${t} 是手动启动,轮到它时需到其 AI 会话触发;不接入可在进度看板点「跳过」本次发言` : "" : d.value.trim() ? `新消息会在 ${t} 回复后交给主持人;可在进度看板点「跳过」本次发言` : "";
41859
41859
  }), je = Z(() => N.value?.mode === "free"), Me = Z(() => !je.value || N.value.archived ? [] : (N.value.free?.members || []).flatMap((e) => {
41860
41860
  let t = e.execution;
41861
- return t && ["dispatched", "started"].includes(t.status) ? [{
41861
+ if (t && ["dispatched", "started"].includes(t.status)) return [{
41862
41862
  id: `free-${t.id}`,
41863
41863
  author: e.name,
41864
41864
  member_id: e.id,
41865
41865
  text: t.stale ? "执行失联:网站已不再接受本次回答,软件停止未确认" : "正在处理",
41866
41866
  working: !t.stale,
41867
41867
  created_at: t.created_at
41868
- }] : e.pending > 0 && e.access === "manual" ? [{
41869
- id: `free-wait-${e.id}`,
41870
- author: e.name,
41871
- member_id: e.id,
41872
- text: `待投递 ${e.pending} 条:需在其 AI 会话中触发`,
41873
- working: !1,
41874
- waiting: !0
41875
- }] : [];
41868
+ }];
41869
+ if (e.pending > 0 && e.access === "manual") {
41870
+ let t = Math.min(...(N.value.free?.requests || []).filter((t) => t.member_id === e.id && t.status === "pending").map((e) => e.created_at));
41871
+ return [{
41872
+ id: `free-wait-${e.id}`,
41873
+ author: e.name,
41874
+ member_id: e.id,
41875
+ text: `待投递 ${e.pending} 条:需在其 AI 会话中触发`,
41876
+ working: !1,
41877
+ waiting: !0,
41878
+ created_at: Number.isFinite(t) ? t : null
41879
+ }];
41880
+ }
41881
+ return [];
41876
41882
  })), Ne = /* @__PURE__ */ F(Math.floor(Date.now() / 1e3));
41877
41883
  R(() => Me.value.length > 0, (e, t, n) => {
41878
41884
  if (!e) return;
@@ -41884,9 +41890,9 @@ var _H = {
41884
41890
  }, { immediate: !0 });
41885
41891
  let Pe = Z(() => o.value.query || o.value.mention_only ? [] : Me.value), Fe = Z(() => {
41886
41892
  if (o.value.free_proxy) return `本条作为 ${s.display_name(o.value.free_proxy)} 的回答原文保存,并关闭它的待处理请求`;
41887
- let e = Le.value.filter((e) => We(e.name).test(Ge.value));
41893
+ let e = At.some((e) => We(e).test(Ge.value)) ? Le.value : Le.value.filter((e) => We(e.name).test(Ge.value));
41888
41894
  return e.length ? `发给 ${e.map((e) => s.display_name(e.name)).join("、")}` : Le.value.length === 1 ? `发给 ${s.display_name(Le.value[0].name)}` : Re.value ? `发给主持人 ${s.display_name(Re.value.name)};@ 其他成员让它们发言` : "未 @ 任何成员:只作留言,不会唤醒 AI";
41889
- }), Ie = Z(() => !!(d.value.trim() || o.value.attachment_drafts.length)), Le = Z(() => je.value ? (N.value.free?.members || []).filter((e) => e.status === "active" && (e.access !== "manual" || e.registered_at)) : []), Re = Z(() => Le.value.find((e) => e.role === "host")), ze = Z(() => Le.value.filter((e) => e.access === "online")), Be = Z(() => je.value ? [] : (N.value?.members || []).filter((e) => e.status === "active" && e.name !== "用户")), Ve = Z(() => Be.value.filter((e) => We(e.name).test(Ge.value)).map((e) => s.display_name(e.name))), He = Z(() => je.value ? Le.value : Be.value), Ue = Z(() => {
41895
+ }), Ie = Z(() => !!(d.value.trim() || o.value.attachment_drafts.length)), Le = Z(() => je.value ? (N.value.free?.members || []).filter((e) => e.status === "active" && (e.access !== "manual" || e.registered_at)) : []), Re = Z(() => Le.value.find((e) => e.role === "host")), ze = Z(() => Le.value.filter((e) => e.access === "online")), Be = Z(() => je.value ? [] : (N.value?.members || []).filter((e) => e.status === "active" && e.name !== "用户")), Ve = Z(() => Be.value.filter((e) => We(e.name).test(Ge.value)).map((e) => s.display_name(e.name))), He = Z(() => je.value ? [...jt.value ? At.map((e) => ({ name: e })) : [], ...Le.value] : Be.value), Ue = Z(() => {
41890
41896
  if (!je.value) return /* @__PURE__ */ new Map();
41891
41897
  let e = new Map((N.value.free?.members || []).map((e) => [e.id, e])), t = new Map((N.value.free?.requests || []).map((e) => [`${e.message_id}:${e.member_id}`, e]));
41892
41898
  return new Map(o.value.messages.map((n) => [n.id, (n.suggestions || []).map((r) => {
@@ -42092,7 +42098,7 @@ var _H = {
42092
42098
  return Number.isFinite(n) ? Math.max(0, n) : null;
42093
42099
  }
42094
42100
  function vt(e) {
42095
- return e.elapsed_seconds == null ? Ye.value.get(e.id)?.find((t) => t.answer_id === e.id)?.seconds ?? null : e.elapsed_seconds;
42101
+ return e.elapsed_seconds == null ? ((je.value ? N.value.free : N.value.asks)?.executions || []).find((t) => t.answer_id === e.id)?.seconds ?? null : e.elapsed_seconds;
42096
42102
  }
42097
42103
  let yt = Z(() => ["用户", ...Object.keys(N.value?.experts || {}).filter((e) => N.value.experts[e] === "online")].map((e) => {
42098
42104
  let t = s.identities[e];
@@ -42145,14 +42151,14 @@ var _H = {
42145
42151
  Dt.value && Se.value?.textareaRef && (Dt.value.scrollTop = Se.value.textareaRef.scrollTop);
42146
42152
  }
42147
42153
  R(Et, () => Qn(Ot), { flush: "post" });
42148
- let kt = /* @__PURE__ */ F(null), At = /* @__PURE__ */ F(0), jt = /* @__PURE__ */ F(null), Mt = !1, Nt = Z(() => {
42149
- let e = je.value ? Le.value.map((e) => e.name) : [.../* @__PURE__ */ new Set([N.value?.host, ...Object.keys(N.value?.experts || {})])].filter((e) => e && e !== "用户"), t = kt.value?.query.toLocaleLowerCase() || "";
42150
- return e.filter((e) => `${e} ${s.display_name(e)}`.toLocaleLowerCase().includes(t));
42151
- }), Pt = Z(() => Nt.value[Math.min(At.value, Nt.value.length - 1)]);
42154
+ let kt = /* @__PURE__ */ F(null), At = [wG, "all"], jt = Z(() => Le.value.length > 1), Mt = /* @__PURE__ */ F(0), Nt = /* @__PURE__ */ F(null), Pt = !1, Ft = Z(() => {
42155
+ let e = je.value ? [...jt.value ? [wG] : [], ...Le.value.map((e) => e.name)] : [.../* @__PURE__ */ new Set([N.value?.host, ...Object.keys(N.value?.experts || {})])].filter((e) => e && e !== "用户"), t = kt.value?.query.toLocaleLowerCase() || "";
42156
+ return e.filter((e) => (e === wG ? `${e} all` : `${e} ${s.display_name(e)}`).toLocaleLowerCase().includes(t));
42157
+ }), It = Z(() => Ft.value[Math.min(Mt.value, Ft.value.length - 1)]);
42152
42158
  R([() => N.value?.id, () => o.value.tab], () => {
42153
42159
  kt.value = null;
42154
42160
  });
42155
- function Ft(e, t, n = t) {
42161
+ function Lt(e, t, n = t) {
42156
42162
  if (t !== n) return null;
42157
42163
  let r = e.slice(0, t), i = r.match(/(?:^|[\s((,,。;;::])@([^\s@`,,。;;::()()]*)$/u);
42158
42164
  if (!i) return null;
@@ -42165,42 +42171,42 @@ var _H = {
42165
42171
  query: i[1]
42166
42172
  };
42167
42173
  }
42168
- function It(e) {
42174
+ function Rt(e) {
42169
42175
  let t = Se.value?.textareaRef;
42170
- if (e.target !== t || Mt || e.type === "keyup" && ![
42176
+ if (e.target !== t || Pt || e.type === "keyup" && ![
42171
42177
  "ArrowLeft",
42172
42178
  "ArrowRight",
42173
42179
  "Home",
42174
42180
  "End"
42175
42181
  ].includes(e.key)) return;
42176
- let n = Ft(t.value, t.selectionStart, t.selectionEnd);
42177
- (n?.query !== kt.value?.query || n?.start !== kt.value?.start) && (At.value = 0), kt.value = n;
42182
+ let n = Lt(t.value, t.selectionStart, t.selectionEnd);
42183
+ (n?.query !== kt.value?.query || n?.start !== kt.value?.start) && (Mt.value = 0), kt.value = n;
42178
42184
  }
42179
- async function Lt(e) {
42180
- if (!kt.value || !Nt.value.includes(e)) return;
42185
+ async function zt(e) {
42186
+ if (!kt.value || !Ft.value.includes(e)) return;
42181
42187
  let { start: t, end: n } = kt.value, r = `@${e} `;
42182
42188
  d.value = d.value.slice(0, t) + r + d.value.slice(n).replace(/^ /, ""), kt.value = null, await Qn();
42183
42189
  let i = Se.value?.textareaRef;
42184
42190
  i?.focus(), i?.setSelectionRange(t + r.length, t + r.length);
42185
42191
  }
42186
- function Rt(e) {
42192
+ function Bt(e) {
42187
42193
  if (e.target === Se.value?.textareaRef && kt.value && !e.isComposing && e.keyCode !== 229 && !(e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {
42188
42194
  if (e.key === "Escape") kt.value = null;
42189
- else if (["ArrowDown", "ArrowUp"].includes(e.key) && Nt.value.length) {
42195
+ else if (["ArrowDown", "ArrowUp"].includes(e.key) && Ft.value.length) {
42190
42196
  let t = e.key === "ArrowDown" ? 1 : -1;
42191
- At.value = (Nt.value.indexOf(Pt.value) + t + Nt.value.length) % Nt.value.length, Qn(() => jt.value?.querySelector("[aria-selected=\"true\"]")?.scrollIntoView({ block: "nearest" }));
42192
- } else if (["Enter", "Tab"].includes(e.key) && Pt.value) Lt(Pt.value);
42197
+ Mt.value = (Ft.value.indexOf(It.value) + t + Ft.value.length) % Ft.value.length, Qn(() => Nt.value?.querySelector("[aria-selected=\"true\"]")?.scrollIntoView({ block: "nearest" }));
42198
+ } else if (["Enter", "Tab"].includes(e.key) && It.value) zt(It.value);
42193
42199
  else return;
42194
42200
  e.preventDefault(), e.stopPropagation();
42195
42201
  }
42196
42202
  }
42197
- function zt(e) {
42198
- Mt = e.type === "compositionstart", kt.value = null, Mt || It(e);
42203
+ function Vt(e) {
42204
+ Pt = e.type === "compositionstart", kt.value = null, Pt || Rt(e);
42199
42205
  }
42200
- function Bt(e) {
42206
+ function Ht(e) {
42201
42207
  e.preventDefault();
42202
42208
  }
42203
- function Vt(e) {
42209
+ function Ut(e) {
42204
42210
  for (let t of e.querySelectorAll("pre code, tbody")) {
42205
42211
  let n = e.ownerDocument.createRange();
42206
42212
  if (t.tagName === "TBODY") {
@@ -42215,7 +42221,7 @@ var _H = {
42215
42221
  }
42216
42222
  return !1;
42217
42223
  }
42218
- function Ht(e) {
42224
+ function Wt(e) {
42219
42225
  let t = {
42220
42226
  truncated: !1,
42221
42227
  html: e.rendered_text
@@ -42223,7 +42229,7 @@ var _H = {
42223
42229
  if (e.kind === "receipt") return t;
42224
42230
  let n = document.createElement("template");
42225
42231
  n.innerHTML = e.rendered_text;
42226
- let r = Vt(n.content), i = document.createTreeWalker(n.content, NodeFilter.SHOW_TEXT, { acceptNode: (e) => e.parentElement?.closest(".katex-mathml") ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT }), a = [];
42232
+ let r = Ut(n.content), i = document.createTreeWalker(n.content, NodeFilter.SHOW_TEXT, { acceptNode: (e) => e.parentElement?.closest(".katex-mathml") ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT }), a = [];
42227
42233
  for (; i.nextNode();) a.push(i.currentNode);
42228
42234
  let o = [...a.map((e) => e.textContent).join("").trimEnd()];
42229
42235
  if (o.length <= YW) return {
@@ -42245,22 +42251,22 @@ var _H = {
42245
42251
  html: n.innerHTML
42246
42252
  };
42247
42253
  }
42248
- let Ut = Z(() => je.value || o.value.query || o.value.mention_only ? [] : (N.value.runtime?.failures || []).map((e) => ({
42254
+ let Gt = Z(() => je.value || o.value.query || o.value.mention_only ? [] : (N.value.runtime?.failures || []).map((e) => ({
42249
42255
  id: `execution-${e.id}`,
42250
42256
  author: e.participant,
42251
42257
  created_at: e.created_at,
42252
42258
  failure: e,
42253
42259
  can_retry: !!(o.value.access?.can_manage && s.can_retry_execution(e, N.value))
42254
- }))), Wt = Z(() => {
42260
+ }))), Kt = Z(() => {
42255
42261
  let e = [...o.value.messages];
42256
- for (let t of Ut.value) {
42262
+ for (let t of Gt.value) {
42257
42263
  let n = e.findIndex((e) => new Date(e.created_at) > new Date(t.created_at) || !e.failure && t.failure.turn_id && e.turn_id === t.failure.turn_id);
42258
42264
  e.splice(n < 0 ? e.length : n, 0, t);
42259
42265
  }
42260
42266
  return e;
42261
- }), Gt = Z(() => {
42267
+ }), qt = Z(() => {
42262
42268
  let e = [];
42263
- for (let t of Wt.value) {
42269
+ for (let t of Kt.value) {
42264
42270
  let n = new Date(t.created_at), r = n.toLocaleDateString();
42265
42271
  e.at(-1)?.key !== r && e.push({
42266
42272
  key: r,
@@ -42269,7 +42275,7 @@ var _H = {
42269
42275
  }), e.at(-1).messages.push(t);
42270
42276
  }
42271
42277
  return e;
42272
- }), Kt = Z(() => {
42278
+ }), Jt = Z(() => {
42273
42279
  let e = [];
42274
42280
  for (let t of o.value.messages) {
42275
42281
  let n = s.round_groups(N.value)?.findLast((e) => e.start_id <= t.id), r = n?.number || 0;
@@ -42285,9 +42291,9 @@ var _H = {
42285
42291
  e.at(-1).messages.push(t);
42286
42292
  }
42287
42293
  return e;
42288
- }), qt = Z(() => Kt.value.find((e) => e.messages.some((e) => e.id === O.value))?.number), Jt = Z(() => new Map(je.value ? [] : Kt.value.flatMap((e) => e.messages.map((t) => [t.id, e.label])))), Yt = Z(() => {
42294
+ }), Yt = Z(() => Jt.value.find((e) => e.messages.some((e) => e.id === O.value))?.number), Xt = Z(() => new Map(je.value ? [] : Jt.value.flatMap((e) => e.messages.map((t) => [t.id, e.label])))), Zt = Z(() => {
42289
42295
  let e = 0;
42290
- return Kt.value.map((t) => ({
42296
+ return Jt.value.map((t) => ({
42291
42297
  number: t.number,
42292
42298
  count: t.messages.length,
42293
42299
  entries: [{
@@ -42305,15 +42311,15 @@ var _H = {
42305
42311
  index: e++
42306
42312
  }))]
42307
42313
  }));
42308
- }), Xt = Z(() => Yt.value.flatMap((e) => e.entries));
42309
- function Zt(e) {
42314
+ }), Qt = Z(() => Zt.value.flatMap((e) => e.entries));
42315
+ function $t(e) {
42310
42316
  return e.getBoundingClientRect().top + (parseFloat(getComputedStyle(e).getPropertyValue("--channel-topbar-height")) || 0);
42311
42317
  }
42312
- function Qt() {
42318
+ function en() {
42313
42319
  let e = x.value;
42314
42320
  if (!e || !e.clientHeight) return;
42315
42321
  Ce.value = e.scrollHeight - e.scrollTop - e.clientHeight < vG;
42316
- let t = e.getBoundingClientRect(), n = Zt(e), r = [...e.querySelectorAll("[data-message-id]")], i = r.find((e) => Number(e.dataset.messageId) === te.value);
42322
+ let t = e.getBoundingClientRect(), n = $t(e), r = [...e.querySelectorAll("[data-message-id]")], i = r.find((e) => Number(e.dataset.messageId) === te.value);
42317
42323
  if (i && i.getBoundingClientRect().bottom > n && i.getBoundingClientRect().top < t.bottom) {
42318
42324
  O.value = te.value;
42319
42325
  return;
@@ -42322,32 +42328,32 @@ var _H = {
42322
42328
  let a = r.find((e) => e.getBoundingClientRect().bottom > n + yG);
42323
42329
  O.value = a ? Number(a.dataset.messageId) : null;
42324
42330
  }
42325
- async function $t() {
42326
- await Qn(), Ce.value && x.value && (x.value.scrollTop = x.value.scrollHeight), Qt();
42331
+ async function tn() {
42332
+ await Qn(), Ce.value && x.value && (x.value.scrollTop = x.value.scrollHeight), en();
42327
42333
  }
42328
42334
  R([
42329
42335
  () => o.value.messages,
42330
42336
  Xe,
42331
42337
  Pe,
42332
- Ut
42333
- ], $t, { immediate: !0 }), R([
42338
+ Gt
42339
+ ], tn, { immediate: !0 }), R([
42334
42340
  () => o.value.room?.id,
42335
42341
  () => o.value.query,
42336
42342
  () => o.value.mention_only
42337
42343
  ], () => {
42338
- te.value = null, O.value = null, yn(), Ce.value = !0;
42344
+ te.value = null, O.value = null, xn(), Ce.value = !0;
42339
42345
  }), R(() => o.value.tab, (e) => {
42340
- yn(), e === "discussion" && $t();
42346
+ xn(), e === "discussion" && tn();
42341
42347
  }), R(() => o.value.room?.id, () => S.value.clear());
42342
- async function en(e, t) {
42348
+ async function nn(e, t) {
42343
42349
  let n = t.currentTarget.closest("[data-message-id]"), r = S.value.has(e.id), i = x.value.scrollTop;
42344
- Ce.value = !1, r ? S.value.delete(e.id) : S.value.add(e.id), yn(), await Qn(), r || (x.value.scrollTop = i), r && n.getBoundingClientRect().top < Zt(x.value) && (x.value.scrollTop += n.getBoundingClientRect().top - Zt(x.value) - yG), Qt();
42350
+ Ce.value = !1, r ? S.value.delete(e.id) : S.value.add(e.id), xn(), await Qn(), r || (x.value.scrollTop = i), r && n.getBoundingClientRect().top < $t(x.value) && (x.value.scrollTop += n.getBoundingClientRect().top - $t(x.value) - yG), en();
42345
42351
  }
42346
- function tn(e) {
42352
+ function rn(e) {
42347
42353
  let t = x.value, n = t?.querySelector(`[data-message-id="${e}"]`);
42348
- n && (vn(), te.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - Zt(t) - yG, n.focus({ preventScroll: !0 }), Qt());
42354
+ n && (bn(), te.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - $t(t) - yG, n.focus({ preventScroll: !0 }), en());
42349
42355
  }
42350
- function nn(e) {
42356
+ function an(e) {
42351
42357
  (e.type !== "keydown" || [
42352
42358
  "ArrowUp",
42353
42359
  "ArrowDown",
@@ -42358,34 +42364,34 @@ var _H = {
42358
42364
  " "
42359
42365
  ].includes(e.key)) && (te.value = null);
42360
42366
  }
42361
- function rn(e, t) {
42367
+ function on(e, t) {
42362
42368
  let n = {
42363
42369
  ArrowUp: t - 1,
42364
42370
  ArrowDown: t + 1,
42365
42371
  Home: 0,
42366
- End: Xt.value.length - 1
42372
+ End: Qt.value.length - 1
42367
42373
  };
42368
42374
  if (!Object.hasOwn(n, e.key)) return;
42369
42375
  e.preventDefault();
42370
- let r = Math.max(0, Math.min(n[e.key], Xt.value.length - 1));
42376
+ let r = Math.max(0, Math.min(n[e.key], Qt.value.length - 1));
42371
42377
  E.value.querySelectorAll("button")[r].focus({ preventScroll: !0 });
42372
42378
  }
42373
- function an(e) {
42379
+ function sn(e) {
42374
42380
  let t = E.value;
42375
42381
  if (!t?.clientHeight || !e) return;
42376
42382
  let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
42377
42383
  r.top < n.top + hG ? t.scrollTop += r.top - n.top - hG : r.bottom > n.bottom - hG && (t.scrollTop += r.bottom - n.bottom + hG);
42378
42384
  }
42379
- async function on() {
42380
- await Qn(), an(E.value?.querySelector(`[data-jump-id="${O.value}"]`));
42385
+ async function cn() {
42386
+ await Qn(), sn(E.value?.querySelector(`[data-jump-id="${O.value}"]`));
42381
42387
  }
42382
- R(O, on);
42383
- function sn(e, t) {
42384
- !de && t.currentTarget.matches(":focus-visible") && (D.value = !0, an(e.round ? t.currentTarget.parentElement.querySelector("[data-jump-id]") : t.currentTarget), _n(e, t));
42388
+ R(O, cn);
42389
+ function un(e, t) {
42390
+ !de && t.currentTarget.matches(":focus-visible") && (D.value = !0, sn(e.round ? t.currentTarget.parentElement.querySelector("[data-jump-id]") : t.currentTarget), yn(e, t));
42385
42391
  }
42386
- function cn(e, t) {
42392
+ function dn(e, t) {
42387
42393
  if (fe = !1, !["touch", "pen"].includes(t.pointerType)) return;
42388
- vn(), D.value = !1;
42394
+ bn(), D.value = !1;
42389
42395
  let n = {
42390
42396
  pointer: t.pointerId,
42391
42397
  x: t.clientX,
@@ -42393,31 +42399,31 @@ var _H = {
42393
42399
  target: t.currentTarget
42394
42400
  };
42395
42401
  de = n, n.timer = setTimeout(() => {
42396
- de === n && (fe = !0, _n(e, { currentTarget: n.target }));
42402
+ de === n && (fe = !0, yn(e, { currentTarget: n.target }));
42397
42403
  }, gG);
42398
42404
  }
42399
- function un() {
42405
+ function fn() {
42400
42406
  de && clearTimeout(de.timer), de = null;
42401
42407
  }
42402
- function dn(e) {
42403
- de?.pointer === e.pointerId && (e.type === "pointercancel" && (fe = !0), vn());
42408
+ function pn(e) {
42409
+ de?.pointer === e.pointerId && (e.type === "pointercancel" && (fe = !0), bn());
42404
42410
  }
42405
- function fn(e, t) {
42406
- ["touch", "pen"].includes(t.pointerType) ? de?.pointer === t.pointerId && Math.hypot(t.clientX - de.x, t.clientY - de.y) > _G && (fe = !0, vn()) : t.type === "pointerenter" && D.value || (D.value = !1, (re.value !== e.key || !ae.value) && _n(e, t));
42411
+ function mn(e, t) {
42412
+ ["touch", "pen"].includes(t.pointerType) ? de?.pointer === t.pointerId && Math.hypot(t.clientX - de.x, t.clientY - de.y) > _G && (fe = !0, bn()) : t.type === "pointerenter" && D.value || (D.value = !1, (re.value !== e.key || !ae.value) && yn(e, t));
42407
42413
  }
42408
- function pn(e, t) {
42409
- fe && t.detail !== 0 ? (fe = !1, t.preventDefault()) : tn(e.message.id);
42414
+ function hn(e, t) {
42415
+ fe && t.detail !== 0 ? (fe = !1, t.preventDefault()) : rn(e.message.id);
42410
42416
  }
42411
- function mn(e) {
42417
+ function gn(e) {
42412
42418
  de && e.preventDefault();
42413
42419
  }
42414
- function hn(e) {
42415
- (e.deltaX || e.deltaY) && (D.value = !1, vn());
42420
+ function _n(e) {
42421
+ (e.deltaX || e.deltaY) && (D.value = !1, bn());
42416
42422
  }
42417
- function gn() {
42418
- vn(), te.value = null, Ce.value = !0, $t();
42423
+ function vn() {
42424
+ bn(), te.value = null, Ce.value = !0, tn();
42419
42425
  }
42420
- async function _n(e, t) {
42426
+ async function yn(e, t) {
42421
42427
  let n = e.message, r = t.currentTarget.getBoundingClientRect(), i = E.value.getBoundingClientRect(), a = Math.min($W, innerWidth - 24), o = i.right + nG;
42422
42428
  if (k.value = Math.max(tG, Math.min(o, innerWidth - a - tG)), ne.value = n.id, re.value = e.key, ie.value = e.round, ae.value = !0, await Qn(), !ae.value || re.value !== e.key) return;
42423
42429
  ce.value = oe.value.scrollHeight + eG;
@@ -42426,20 +42432,20 @@ var _H = {
42426
42432
  let c = le.value || he.get() === 0;
42427
42433
  A[c ? "jump" : "set"](se.value), me[c ? "jump" : "set"](ce.value);
42428
42434
  }
42429
- function vn(e) {
42430
- e?.relatedTarget?.closest?.(".channel-message-map, .channel-nav-preview") || (un(), ae.value = !1);
42435
+ function bn(e) {
42436
+ e?.relatedTarget?.closest?.(".channel-message-map, .channel-nav-preview") || (fn(), ae.value = !1);
42431
42437
  }
42432
- function yn() {
42433
- un(), ae.value = !1, he.jump(0), ne.value = null;
42438
+ function xn() {
42439
+ fn(), ae.value = !1, he.jump(0), ne.value = null;
42434
42440
  }
42435
- async function bn() {
42436
- yn(), we(), await $t(), await on();
42441
+ async function Sn() {
42442
+ xn(), we(), await tn(), await cn();
42437
42443
  }
42438
- function xn(e) {
42444
+ function Cn(e) {
42439
42445
  let t = e.entries.length - 1;
42440
42446
  return Math.max(-3, Math.min(t + lG, xe.value - e.entries[0].index));
42441
42447
  }
42442
- function Sn(e, t) {
42448
+ function wn(e, t) {
42443
42449
  let n = xe.value < 0 ? Infinity : Math.abs(t - xe.value), r = Math.max(0, 1 - n / lG), i = O.value === e.message.id, a = n === 0 || i && xe.value < 0, o = iG;
42444
42450
  return {
42445
42451
  scaleX: a ? aG / o : i ? oG / o : 1 + r * uG / o,
@@ -42450,48 +42456,48 @@ var _H = {
42450
42456
  R([ae, le], () => {
42451
42457
  let e = +!!ae.value;
42452
42458
  le.value ? (he.jump(e), A.jump(se.value), me.jump(ce.value)) : he.set(e);
42453
- }), Qi(() => window.addEventListener("resize", bn)), ta(() => window.removeEventListener("resize", bn));
42454
- function Cn() {
42459
+ }), Qi(() => window.addEventListener("resize", Sn)), ta(() => window.removeEventListener("resize", Sn));
42460
+ function Tn() {
42455
42461
  let e = Se.value?.textareaRef;
42456
42462
  if (!e) return;
42457
42463
  e.rows = 1;
42458
42464
  let t = getComputedStyle(e), n = (e.scrollHeight - parseFloat(t.paddingTop) - parseFloat(t.paddingBottom)) / parseFloat(t.lineHeight);
42459
42465
  e.rows = Math.min(Math.max(Math.floor(n), 1), qW);
42460
42466
  }
42461
- let wn = 0, Tn = new ResizeObserver(([e]) => {
42462
- Math.round(e.contentRect.width) !== wn && (wn = Math.round(e.contentRect.width), Cn());
42467
+ let En = 0, Dn = new ResizeObserver(([e]) => {
42468
+ Math.round(e.contentRect.width) !== En && (En = Math.round(e.contentRect.width), Tn());
42463
42469
  });
42464
- Qi(() => Se.value?.textareaRef && Tn.observe(Se.value.textareaRef)), ta(() => Tn.disconnect()), ta(un);
42465
- let En = /* @__PURE__ */ F(""), Dn;
42466
- function On() {
42467
- clearTimeout(Dn), En.value = "";
42470
+ Qi(() => Se.value?.textareaRef && Dn.observe(Se.value.textareaRef)), ta(() => Dn.disconnect()), ta(fn);
42471
+ let On = /* @__PURE__ */ F(""), kn;
42472
+ function An() {
42473
+ clearTimeout(kn), On.value = "";
42468
42474
  }
42469
- async function kn(e) {
42475
+ async function jn(e) {
42470
42476
  let t = N.value.id;
42471
- On(), await l("copy_member_launch", e) && N.value?.id === t && (En.value = e, Dn = setTimeout(On, wG));
42477
+ An(), await l("copy_member_launch", e) && N.value?.id === t && (On.value = e, kn = setTimeout(An, TG));
42472
42478
  }
42473
- R([() => N.value?.id, () => Ee.value?.id], On), ta(On);
42474
- function An(e) {
42479
+ R([() => N.value?.id, () => Ee.value?.id], An), ta(An);
42480
+ function Mn(e) {
42475
42481
  return [[{
42476
42482
  label: "复制原文链接",
42477
42483
  icon: "i-lucide-link",
42478
- onSelect: () => Pn(e)
42484
+ onSelect: () => In(e)
42479
42485
  }, {
42480
42486
  label: "查看原文",
42481
42487
  icon: "i-lucide-expand",
42482
42488
  onSelect: () => n("detail", e.id)
42483
42489
  }]];
42484
42490
  }
42485
- async function jn(e) {
42491
+ async function Nn(e) {
42486
42492
  await l("reply", e), Se.value?.textareaRef?.focus();
42487
42493
  }
42488
- async function Mn() {
42489
- !Ie.value || u.value || o.value.sending_message || (kt.value = null, Ce.value = !0, await l("send"), await $t());
42494
+ async function Pn() {
42495
+ !Ie.value || u.value || o.value.sending_message || (kt.value = null, Ce.value = !0, await l("send"), await tn());
42490
42496
  }
42491
- function Nn(e) {
42492
- e.key !== "Enter" || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || e.isComposing || d.value.trim() || o.value.attachment_drafts.length && (e.preventDefault(), e.stopPropagation(), Mn());
42497
+ function Fn(e) {
42498
+ e.key !== "Enter" || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey || e.isComposing || d.value.trim() || o.value.attachment_drafts.length && (e.preventDefault(), e.stopPropagation(), Pn());
42493
42499
  }
42494
- function Pn(e) {
42500
+ function In(e) {
42495
42501
  l("copy", `${location.origin}/r/${N.value.id}/messages/${e.id}`);
42496
42502
  }
42497
42503
  return (e, t) => {
@@ -42520,18 +42526,18 @@ var _H = {
42520
42526
  class: "channel-message-map",
42521
42527
  style: pe({ "--nav-entry-height": `${rG}px` }),
42522
42528
  "aria-label": "发言快速导航",
42523
- onWheelPassive: uu(hn, ["stop"]),
42524
- onPointerleave: vn,
42525
- onFocusout: vn,
42526
- onKeydown: fu(uu(vn, ["stop"]), ["esc"]),
42527
- onContextmenu: mn
42528
- }, [K("div", FH, [(U(!0), W(H, null, B(Yt.value, (e, t, n, r) => {
42529
+ onWheelPassive: uu(_n, ["stop"]),
42530
+ onPointerleave: bn,
42531
+ onFocusout: bn,
42532
+ onKeydown: fu(uu(bn, ["stop"]), ["esc"]),
42533
+ onContextmenu: gn
42534
+ }, [K("div", FH, [(U(!0), W(H, null, B(Zt.value, (e, t, n, r) => {
42529
42535
  let i = [
42530
42536
  e,
42531
42537
  I(le),
42532
42538
  ae.value,
42533
- qt.value === e.number ? O.value : null,
42534
- xn(e)
42539
+ Yt.value === e.number ? O.value : null,
42540
+ Cn(e)
42535
42541
  ];
42536
42542
  if (r && r.el && r.key === e.number && rc(r, i)) return r;
42537
42543
  let a = (U(), W("div", {
@@ -42549,21 +42555,21 @@ var _H = {
42549
42555
  tabindex: !e.round && e.message.id === (O.value || I(o).messages[0]?.id) ? 0 : -1,
42550
42556
  "aria-current": !e.round && O.value === e.message.id ? "location" : void 0,
42551
42557
  "aria-describedby": ae.value && re.value === e.key ? "channel-navigation-preview" : void 0,
42552
- onPointerenter: (t) => fn(e, t),
42553
- onPointermove: (t) => fn(e, t),
42554
- onPointerdown: (t) => cn(e, t),
42555
- onPointerup: dn,
42556
- onPointercancel: dn,
42557
- onFocus: (t) => sn(e, t),
42558
- onKeydown: (t) => rn(t, e.index),
42559
- onClick: (t) => pn(e, t)
42558
+ onPointerenter: (t) => mn(e, t),
42559
+ onPointermove: (t) => mn(e, t),
42560
+ onPointerdown: (t) => dn(e, t),
42561
+ onPointerup: pn,
42562
+ onPointercancel: pn,
42563
+ onFocus: (t) => un(e, t),
42564
+ onKeydown: (t) => on(t, e.index),
42565
+ onClick: (t) => hn(e, t)
42560
42566
  }, [e.round ? (U(), W("span", LH, P(e.number || "–"), 1)) : (U(), G(I(bV).span, {
42561
42567
  key: 1,
42562
42568
  class: "channel-jump-tick",
42563
42569
  "aria-hidden": "true",
42564
42570
  initial: !1,
42565
- animate: I(le) ? void 0 : Sn(e, e.index),
42566
- style: pe(I(le) ? Sn(e, e.index) : void 0),
42571
+ animate: I(le) ? void 0 : wn(e, e.index),
42572
+ style: pe(I(le) ? wn(e, e.index) : void 0),
42567
42573
  transition: ue
42568
42574
  }, null, 8, ["animate", "style"]))], 42, IH))), 128))], 4));
42569
42575
  return a.memo = i, a;
@@ -42585,9 +42591,9 @@ var _H = {
42585
42591
  height: I(me),
42586
42592
  "--preview-gap": `${nG}px`
42587
42593
  }),
42588
- onPointerleave: vn,
42589
- onFocusout: vn,
42590
- onKeydown: fu(uu(vn, ["stop"]), ["esc"])
42594
+ onPointerleave: bn,
42595
+ onFocusout: bn,
42596
+ onKeydown: fu(uu(bn, ["stop"]), ["esc"])
42591
42597
  }, {
42592
42598
  default: L(() => [K("div", {
42593
42599
  ref_key: "preview_content",
@@ -42626,8 +42632,8 @@ var _H = {
42626
42632
  "onKeydown"
42627
42633
  ])) : Y("", !0)])),
42628
42634
  nc([
42629
- Gt.value,
42630
- Jt.value,
42635
+ qt.value,
42636
+ Xt.value,
42631
42637
  O.value,
42632
42638
  S.value.size,
42633
42639
  N.value.title,
@@ -42652,10 +42658,10 @@ var _H = {
42652
42658
  ref: x,
42653
42659
  class: "channel-transcript",
42654
42660
  "aria-label": "聊天记录",
42655
- onScroll: Qt,
42656
- onWheelPassive: nn,
42657
- onTouchstartPassive: nn,
42658
- onKeydown: nn
42661
+ onScroll: en,
42662
+ onWheelPassive: an,
42663
+ onTouchstartPassive: an,
42664
+ onKeydown: an
42659
42665
  }, [
42660
42666
  !I(o).query && !I(o).mention_only ? (U(), W("div", WH, [K("section", {
42661
42667
  class: j(["channel-message channel-topic-card", { "is-expanded": r.value }]),
@@ -42742,7 +42748,7 @@ var _H = {
42742
42748
  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))]),
42743
42749
  _: 2
42744
42750
  }, 1032, ["title"]))), 128))])) : Y("", !0),
42745
- (U(!0), W(H, null, B(Gt.value, (e) => (U(), W("div", {
42751
+ (U(!0), W(H, null, B(qt.value, (e) => (U(), W("div", {
42746
42752
  key: e.key,
42747
42753
  class: "channel-message-group"
42748
42754
  }, [q(te, {
@@ -42805,7 +42811,7 @@ var _H = {
42805
42811
  nc([
42806
42812
  e,
42807
42813
  I(o).admin?.identity_version,
42808
- Jt.value.get(e.id),
42814
+ Xt.value.get(e.id),
42809
42815
  S.value.has(e.id),
42810
42816
  O.value === e.id,
42811
42817
  Qe(e),
@@ -42847,7 +42853,7 @@ var _H = {
42847
42853
  ]),
42848
42854
  K("div", yU, [K("div", bU, [
42849
42855
  K("strong", null, P(I(s).display_name(e.author)), 1),
42850
- K("span", xU, P(Jt.value.get(e.id)), 1),
42856
+ K("span", xU, P(Xt.value.get(e.id)), 1),
42851
42857
  q(ne, {
42852
42858
  size: "xs",
42853
42859
  color: "neutral",
@@ -42952,7 +42958,7 @@ var _H = {
42952
42958
  "aria-label": `${S.value.has(e.id) ? "收起回答" : "展开完整回答"} #${e.id}`,
42953
42959
  "aria-expanded": S.value.has(e.id),
42954
42960
  "aria-controls": `channel-answer-${e.id}`,
42955
- onClick: (t) => en(e, t)
42961
+ onClick: (t) => nn(e, t)
42956
42962
  }, null, 8, [
42957
42963
  "label",
42958
42964
  "trailing-icon",
@@ -43054,11 +43060,11 @@ var _H = {
43054
43060
  color: "neutral",
43055
43061
  variant: "ghost",
43056
43062
  "aria-label": `回复 #${e.id}`,
43057
- onClick: (t) => jn(e)
43063
+ onClick: (t) => Nn(e)
43058
43064
  }, null, 8, ["aria-label", "onClick"])]),
43059
43065
  _: 2
43060
43066
  }, 1024), q(ce, {
43061
- items: An(e),
43067
+ items: Mn(e),
43062
43068
  content: {
43063
43069
  align: "end",
43064
43070
  sideOffset: 5
@@ -43295,7 +43301,7 @@ var _H = {
43295
43301
  "class"
43296
43302
  ]),
43297
43303
  K("div", gW, [K("div", _W, [K("strong", null, P(I(s).display_name(e.author)), 1)])]),
43298
- K("span", vW, P(e.waiting ? "手动启动" : `已用 ${mt(Math.max(0, Ne.value - e.created_at))}`), 1)
43304
+ K("span", vW, P(e.waiting ? `手动启动${e.created_at ? ` · 已等 ${mt(Math.max(0, Ne.value - e.created_at))}` : ""}` : `已用 ${mt(Math.max(0, Ne.value - e.created_at))}`), 1)
43299
43305
  ]), K("div", {
43300
43306
  class: "channel-message-text",
43301
43307
  role: "status",
@@ -43313,19 +43319,19 @@ var _H = {
43313
43319
  ]])) : Y("", !0)], 512))], 8, yW)]),
43314
43320
  _: 2
43315
43321
  }, 1032, ["id", "data-author"]))), 128))])) : Y("", !0),
43316
- !Wt.value.length && !Xe.value && !Pe.value.length ? (U(), W("div", SW, [
43322
+ !Kt.value.length && !Xe.value && !Pe.value.length ? (U(), W("div", SW, [
43317
43323
  q(D, { name: I(o).query || I(o).mention_only ? "i-lucide-search" : "i-lucide-hash" }, null, 8, ["name"]),
43318
43324
  K("h2", null, P(I(o).query || I(o).mention_only ? "没有找到消息" : N.value.title), 1),
43319
43325
  K("p", null, P(I(o).query || I(o).mention_only ? "试试其他关键词,或清除筛选。" : I(s).empty_discussion_message(N.value)), 1)
43320
43326
  ])) : Y("", !0)
43321
43327
  ], 544)), t, 12),
43322
- (Wt.value.length || Xe.value) && !Ce.value ? (U(), W("div", CW, [q(c, {
43328
+ (Kt.value.length || Xe.value) && !Ce.value ? (U(), W("div", CW, [q(c, {
43323
43329
  icon: "i-lucide-arrow-down",
43324
43330
  color: "neutral",
43325
43331
  variant: "outline",
43326
43332
  "aria-label": "回到最新消息",
43327
43333
  class: "channel-latest-button",
43328
- onClick: gn
43334
+ onClick: vn
43329
43335
  })])) : Y("", !0),
43330
43336
  K("div", wW, [K("div", {
43331
43337
  class: "channel-composer-column",
@@ -43333,14 +43339,14 @@ var _H = {
43333
43339
  onDrop: t[25] ||= (...e) => I(s).drop_attachments && I(s).drop_attachments(...e),
43334
43340
  onPaste: t[26] ||= (...e) => I(s).paste_attachments && I(s).paste_attachments(...e),
43335
43341
  onKeydownCapture: t[27] ||= (e) => {
43336
- Rt(e), Nn(e);
43342
+ Bt(e), Fn(e);
43337
43343
  },
43338
- onInput: It,
43339
- onClick: It,
43340
- onKeyup: It,
43341
- onSelect: It,
43342
- onCompositionstart: zt,
43343
- onCompositionend: zt,
43344
+ onInput: Rt,
43345
+ onClick: Rt,
43346
+ onKeyup: Rt,
43347
+ onSelect: Rt,
43348
+ onCompositionstart: Vt,
43349
+ onCompositionend: Vt,
43344
43350
  onScrollCapture: Ot
43345
43351
  }, [
43346
43352
  q(fe, {
@@ -43350,8 +43356,8 @@ var _H = {
43350
43356
  side: "top",
43351
43357
  align: "start",
43352
43358
  sideOffset: 8,
43353
- onOpenAutoFocus: Bt,
43354
- onCloseAutoFocus: Bt
43359
+ onOpenAutoFocus: Ht,
43360
+ onCloseAutoFocus: Ht
43355
43361
  },
43356
43362
  ui: { content: "channel-select-menu channel-mention-menu" },
43357
43363
  "onUpdate:open": t[14] ||= (e) => !e && (kt.value = null)
@@ -43359,23 +43365,30 @@ var _H = {
43359
43365
  content: L(() => [t[45] ||= K("div", { class: "channel-mention-heading" }, [K("span", null, "选择成员"), K("small", null, "↑↓ 选择 · Enter 确认")], -1), K("div", {
43360
43366
  id: "channel-mention-list",
43361
43367
  ref_key: "mention_list",
43362
- ref: jt,
43368
+ ref: Nt,
43363
43369
  role: "listbox",
43364
43370
  "aria-label": "选择成员",
43365
43371
  class: "channel-mention-list"
43366
- }, [(U(!0), W(H, null, B(Nt.value, (e, n) => (U(), W("button", {
43372
+ }, [(U(!0), W(H, null, B(Ft.value, (e, n) => (U(), W("button", {
43367
43373
  id: `channel-mention-${n}`,
43368
43374
  key: e,
43369
43375
  type: "button",
43370
43376
  role: "option",
43371
- "aria-selected": e === Pt.value,
43377
+ "aria-selected": e === It.value,
43372
43378
  tabindex: "-1",
43373
43379
  class: "channel-mention-option",
43374
43380
  onPointerdown: t[13] ||= uu(() => {}, ["prevent"]),
43375
- onClick: (t) => Lt(e),
43376
- onPointermove: (e) => At.value = n
43381
+ onClick: (t) => zt(e),
43382
+ onPointermove: (e) => Mt.value = n
43377
43383
  }, [
43378
- q(C, {
43384
+ e === wG ? (U(), G(C, {
43385
+ key: 0,
43386
+ icon: "i-lucide-users",
43387
+ alt: e,
43388
+ size: "xs",
43389
+ class: "channel-avatar"
43390
+ }, null, 8, ["alt"])) : (U(), G(C, {
43391
+ key: 1,
43379
43392
  src: I(s).identities[e]?.icon,
43380
43393
  text: I(s).identities[e]?.initials,
43381
43394
  alt: I(s).display_name(e),
@@ -43386,10 +43399,10 @@ var _H = {
43386
43399
  "text",
43387
43400
  "alt",
43388
43401
  "class"
43389
- ]),
43390
- K("span", null, P(I(s).display_name(e)), 1),
43402
+ ])),
43403
+ K("span", null, P(e === wG ? `全体成员(${Le.value.length} 位)` : I(s).display_name(e)), 1),
43391
43404
  K("small", null, "@" + P(e), 1)
43392
- ], 40, TW))), 128)), Nt.value.length ? Y("", !0) : (U(), W("p", EW, "没有匹配的成员"))], 512)]),
43405
+ ], 40, TW))), 128)), Ft.value.length ? Y("", !0) : (U(), W("p", EW, "没有匹配的成员"))], 512)]),
43393
43406
  _: 1
43394
43407
  }, 8, [
43395
43408
  "open",
@@ -43413,7 +43426,7 @@ var _H = {
43413
43426
  "aria-haspopup": "listbox",
43414
43427
  "aria-expanded": !!kt.value,
43415
43428
  "aria-controls": kt.value ? "channel-mention-list" : void 0,
43416
- "aria-activedescendant": kt.value && Pt.value ? `channel-mention-${Nt.value.indexOf(Pt.value)}` : void 0,
43429
+ "aria-activedescendant": kt.value && It.value ? `channel-mention-${Ft.value.indexOf(It.value)}` : void 0,
43417
43430
  variant: "outline",
43418
43431
  color: "neutral",
43419
43432
  class: j(["channel-composer", { "has-mentions": Et.value }]),
@@ -43422,7 +43435,7 @@ var _H = {
43422
43435
  base: "channel-editor",
43423
43436
  footer: "channel-composer-footer"
43424
43437
  },
43425
- onSubmit: Mn
43438
+ onSubmit: Pn
43426
43439
  }, {
43427
43440
  header: L(() => [
43428
43441
  I(o).attachment_drafts.length ? (U(), W("div", DW, [(U(!0), W(H, null, B(I(o).attachment_drafts, (e) => (U(), W("div", {
@@ -43450,14 +43463,14 @@ var _H = {
43450
43463
  K("span", null, P(I(s).display_name(ke.value.name)) + " 尚未注册:需把启动指令粘贴到其 AI 会话,由它自己注册后才算到场", 1),
43451
43464
  I(o).access?.can_manage ? (U(), G(c, {
43452
43465
  key: 0,
43453
- icon: En.value === ke.value.name ? "i-lucide-check" : "i-lucide-copy",
43454
- label: En.value === ke.value.name ? "已复制" : "复制启动指令",
43466
+ icon: On.value === ke.value.name ? "i-lucide-check" : "i-lucide-copy",
43467
+ label: On.value === ke.value.name ? "已复制" : "复制启动指令",
43455
43468
  "aria-live": "polite",
43456
43469
  size: "xs",
43457
43470
  color: "neutral",
43458
43471
  variant: "ghost",
43459
43472
  class: "channel-launch-copy",
43460
- onClick: t[15] ||= (e) => kn(ke.value.name)
43473
+ onClick: t[15] ||= (e) => jn(ke.value.name)
43461
43474
  }, null, 8, ["icon", "label"])) : Y("", !0)
43462
43475
  ])) : Y("", !0),
43463
43476
  Ae.value ? (U(), W("div", FW, [
@@ -43465,14 +43478,14 @@ var _H = {
43465
43478
  K("span", null, P(Ae.value), 1),
43466
43479
  De(Oe.value) && I(o).access?.can_manage ? (U(), G(c, {
43467
43480
  key: 0,
43468
- icon: En.value === Oe.value.name ? "i-lucide-check" : "i-lucide-copy",
43469
- label: En.value === Oe.value.name ? "已复制" : "复制启动指令",
43481
+ icon: On.value === Oe.value.name ? "i-lucide-check" : "i-lucide-copy",
43482
+ label: On.value === Oe.value.name ? "已复制" : "复制启动指令",
43470
43483
  "aria-live": "polite",
43471
43484
  size: "xs",
43472
43485
  color: "neutral",
43473
43486
  variant: "ghost",
43474
43487
  class: "channel-launch-copy",
43475
- onClick: t[16] ||= (e) => kn(Oe.value.name)
43488
+ onClick: t[16] ||= (e) => jn(Oe.value.name)
43476
43489
  }, null, 8, ["icon", "label"])) : Y("", !0)
43477
43490
  ])) : Y("", !0),
43478
43491
  I(o).reply_to || I(o).turn_reply_to ? (U(), W("div", IW, [
@@ -43576,7 +43589,7 @@ var _H = {
43576
43589
  title: "发送 · Enter",
43577
43590
  disabled: !Ie.value || v.value && !I(g).trim(),
43578
43591
  loading: I(u) === "send" || I(o).sending_message,
43579
- onClick: Mn
43592
+ onClick: Pn
43580
43593
  }, null, 8, ["disabled", "loading"])
43581
43594
  ]),
43582
43595
  default: L(() => [Et.value ? (U(), W("div", {
@@ -43622,7 +43635,7 @@ var _H = {
43622
43635
  ], 2);
43623
43636
  };
43624
43637
  }
43625
- }, [["__scopeId", "data-v-d1ec615d"]]), EG = {
43638
+ }, [["__scopeId", "data-v-0a19b1a3"]]), DG = {
43626
43639
  slots: {
43627
43640
  root: "relative inline-flex items-center",
43628
43641
  base: ["rounded-md", "transition-colors"],
@@ -44050,7 +44063,7 @@ var _H = {
44050
44063
  color: "primary",
44051
44064
  variant: "outline"
44052
44065
  }
44053
- }, DG = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
44066
+ }, OG = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
44054
44067
  __name: "InputMenu",
44055
44068
  props: /*@__PURE__*/ Fa({
44056
44069
  as: {
@@ -44330,7 +44343,7 @@ var _H = {
44330
44343
  required: !1
44331
44344
  }
44332
44345
  } }), ve = Z(() => oA({
44333
- extend: EG,
44346
+ extend: DG,
44334
44347
  ...l.ui?.inputMenu || {}
44335
44348
  })({
44336
44349
  color: de.value,
@@ -44824,16 +44837,16 @@ var _H = {
44824
44837
  ])
44825
44838
  ], 64));
44826
44839
  }
44827
- }), OG = { class: "api-settings" }, kG = {
44840
+ }), kG = { class: "api-settings" }, AG = {
44828
44841
  class: "api-field",
44829
44842
  title: "Base URL"
44830
- }, AG = {
44843
+ }, jG = {
44831
44844
  class: "api-field",
44832
44845
  title: "OpenRouter 等兼容服务可选 Chat Completions,并填写该服务的完整模型 ID。"
44833
- }, jG = { class: "api-field" }, MG = { class: "api-field" }, NG = { class: "api-inline" }, PG = {
44846
+ }, MG = { class: "api-field" }, NG = { class: "api-field" }, PG = { class: "api-inline" }, FG = {
44834
44847
  key: 0,
44835
44848
  role: "alert"
44836
- }, FG = "••••••••••••", IG = /*#__PURE__*/ MH({
44849
+ }, IG = "••••••••••••", LG = /*#__PURE__*/ MH({
44837
44850
  __name: "ApiSettings",
44838
44851
  props: { name: {
44839
44852
  type: String,
@@ -44875,9 +44888,9 @@ var _H = {
44875
44888
  }
44876
44889
  }
44877
44890
  return (t, n) => {
44878
- let u = YV, m = bH, h = MA, g = DG;
44879
- return U(), W("div", OG, [
44880
- K("label", kG, [n[6] ||= K("span", null, "地址", -1), q(u, {
44891
+ let u = YV, m = bH, h = MA, g = OG;
44892
+ return U(), W("div", kG, [
44893
+ K("label", AG, [n[6] ||= K("span", null, "地址", -1), q(u, {
44881
44894
  "model-value": i.value.base_url || "",
44882
44895
  "aria-label": `${e.name} Base URL`,
44883
44896
  placeholder: "Base URL",
@@ -44885,7 +44898,7 @@ var _H = {
44885
44898
  size: "xs",
44886
44899
  "onUpdate:modelValue": n[0] ||= (e) => f("base_url", e)
44887
44900
  }, null, 8, ["model-value", "aria-label"])]),
44888
- K("div", AG, [n[7] ||= K("span", null, "协议", -1), q(m, {
44901
+ K("div", jG, [n[7] ||= K("span", null, "协议", -1), q(m, {
44889
44902
  "model-value": i.value.api_protocol || "",
44890
44903
  items: d,
44891
44904
  "aria-label": `${e.name} API 请求协议`,
@@ -44893,7 +44906,7 @@ var _H = {
44893
44906
  size: "xs",
44894
44907
  "onUpdate:modelValue": n[1] ||= (e) => f("api_protocol", e)
44895
44908
  }, null, 8, ["model-value", "aria-label"])]),
44896
- K("div", jG, [n[8] ||= K("span", null, "密钥", -1), q(u, {
44909
+ K("div", MG, [n[8] ||= K("span", null, "密钥", -1), q(u, {
44897
44910
  modelValue: o.value,
44898
44911
  "onUpdate:modelValue": n[3] ||= (e) => o.value = e,
44899
44912
  type: "text",
@@ -44901,7 +44914,7 @@ var _H = {
44901
44914
  spellcheck: "false",
44902
44915
  "data-1p-ignore": "",
44903
44916
  "data-lpignore": "true",
44904
- placeholder: i.value.api_key_ref ? FG : "填写 API Key",
44917
+ placeholder: i.value.api_key_ref ? IG : "填写 API Key",
44905
44918
  title: i.value.api_key_ref && !o.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
44906
44919
  "aria-label": `${e.name} API Key`,
44907
44920
  size: "xs",
@@ -44937,7 +44950,7 @@ var _H = {
44937
44950
  "loading",
44938
44951
  "ui"
44939
44952
  ])]),
44940
- K("div", MG, [n[9] ||= K("span", null, "模型", -1), K("div", NG, [q(g, {
44953
+ K("div", NG, [n[9] ||= K("span", null, "模型", -1), K("div", PG, [q(g, {
44941
44954
  mode: "autocomplete",
44942
44955
  "ignore-filter": "",
44943
44956
  "model-value": i.value.model || "",
@@ -44967,26 +44980,26 @@ var _H = {
44967
44980
  "loading",
44968
44981
  "disabled"
44969
44982
  ])])]),
44970
- l.value || a.value.error ? (U(), W("p", PG, P(l.value || a.value.error), 1)) : Y("", !0)
44983
+ l.value || a.value.error ? (U(), W("p", FG, P(l.value || a.value.error), 1)) : Y("", !0)
44971
44984
  ]);
44972
44985
  };
44973
44986
  }
44974
- }, [["__scopeId", "data-v-9bf1d860"]]), LG = {
44987
+ }, [["__scopeId", "data-v-9bf1d860"]]), RG = {
44975
44988
  class: "launch-settings",
44976
44989
  "aria-label": "启动配置"
44977
- }, RG = { class: "launch-connect-command" }, zG = {
44990
+ }, zG = { class: "launch-connect-command" }, BG = {
44978
44991
  key: 0,
44979
44992
  role: "alert",
44980
44993
  class: "fine-print"
44981
- }, BG = { class: "launch-effective" }, VG = { class: "launch-client-fields" }, HG = ["onClick"], UG = { key: 7 }, WG = { class: "launch-client-fields" }, GG = { class: "form-two-columns" }, KG = {
44994
+ }, VG = { class: "launch-effective" }, HG = { class: "launch-client-fields" }, UG = ["onClick"], WG = { key: 7 }, GG = { class: "launch-client-fields" }, KG = { class: "form-two-columns" }, qG = {
44982
44995
  key: 0,
44983
44996
  role: "alert",
44984
44997
  class: "fine-print"
44985
- }, qG = {
44998
+ }, JG = {
44986
44999
  key: 1,
44987
45000
  role: "status",
44988
45001
  class: "fine-print"
44989
- }, JG = /*#__PURE__*/ MH({
45002
+ }, YG = /*#__PURE__*/ MH({
44990
45003
  __name: "LaunchSettings",
44991
45004
  props: {
44992
45005
  participants: {
@@ -45027,7 +45040,7 @@ var _H = {
45027
45040
  e && t && o.value.forEach((e) => r.load_launch_models(e));
45028
45041
  }, { immediate: !0 }), (e, m) => {
45029
45042
  let h = MA, g = bH, _ = zV, v = YV, y = HV;
45030
- return U(), W("section", LG, [I(n).launch.available ? (U(), W(H, { key: 1 }, [
45043
+ return U(), W("section", RG, [I(n).launch.available ? (U(), W(H, { key: 1 }, [
45031
45044
  m[10] ||= K("h3", null, "启动配置", -1),
45032
45045
  m[11] ||= K("p", { class: "fine-print" }, "接入配置可保存供后续讨论复用。API 不需要安装 AI 软件;App 需要保持运行;CLI 按需启动。", -1),
45033
45046
  (U(!0), W(H, null, B(o.value, (e) => (U(), W("details", {
@@ -45036,12 +45049,12 @@ var _H = {
45036
45049
  class: "launch-client"
45037
45050
  }, [
45038
45051
  K("summary", null, P(e) + " · " + P(I(r).launch_summary(e).client) + " · " + P(I(r).launch_summary(e).session), 1),
45039
- K("p", BG, [
45052
+ K("p", VG, [
45040
45053
  J("工作目录:" + P(I(r).launch_summary(e).cwd) + "(" + P(I(r).launch_summary(e).access) + ")", 1),
45041
45054
  m[8] ||= K("br", null, null, -1),
45042
45055
  J("项目:" + P(I(r).launch_summary(e).project), 1)
45043
45056
  ]),
45044
- K("div", VG, [
45057
+ K("div", HG, [
45045
45058
  q(_, { label: `${e} 执行客户端` }, {
45046
45059
  default: L(() => [q(g, {
45047
45060
  "model-value": s(e).adapter || "",
@@ -45084,7 +45097,7 @@ var _H = {
45084
45097
  ])]),
45085
45098
  _: 2
45086
45099
  }, 1024)),
45087
- s(e).adapter === "api" ? (U(), G(IG, {
45100
+ s(e).adapter === "api" ? (U(), G(LG, {
45088
45101
  key: 2,
45089
45102
  name: e
45090
45103
  }, null, 8, ["name"])) : t.modelSelection && f(e).supported ? (U(), G(_, {
@@ -45108,7 +45121,7 @@ var _H = {
45108
45121
  type: "button",
45109
45122
  class: "model-retry",
45110
45123
  onClick: (t) => I(r).load_launch_models(e, !0)
45111
- }, "重新读取模型列表", 8, HG)) : Y("", !0)]),
45124
+ }, "重新读取模型列表", 8, UG)) : Y("", !0)]),
45112
45125
  _: 2
45113
45126
  }, 1032, ["help"])) : Y("", !0),
45114
45127
  t.modelSelection && f(e).efforts?.length ? (U(), G(_, {
@@ -45152,7 +45165,7 @@ var _H = {
45152
45165
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
45153
45166
  _: 2
45154
45167
  }, 1024)) : Y("", !0),
45155
- s(e).adapter === "api" ? Y("", !0) : (U(), W("details", UG, [m[9] ||= K("summary", null, "会话与目录覆盖(可选)", -1), K("div", WG, [
45168
+ s(e).adapter === "api" ? Y("", !0) : (U(), W("details", WG, [m[9] ||= K("summary", null, "会话与目录覆盖(可选)", -1), K("div", GG, [
45156
45169
  q(_, { label: "复用会话 ID(仅本次)" }, {
45157
45170
  default: L(() => [q(v, {
45158
45171
  "model-value": s(e).session_id || "",
@@ -45211,7 +45224,7 @@ var _H = {
45211
45224
  ])]))
45212
45225
  ])
45213
45226
  ]))), 128)),
45214
- K("div", GG, [
45227
+ K("div", KG, [
45215
45228
  t.workspace ? (U(), G(_, {
45216
45229
  key: 0,
45217
45230
  label: "本次工作目录(可选)",
@@ -45255,11 +45268,11 @@ var _H = {
45255
45268
  loading: I(a) === "save_launch_defaults",
45256
45269
  onClick: m[5] ||= (e) => I(i)("save_launch_defaults")
45257
45270
  }, null, 8, ["loading"]),
45258
- I(n).launch.error ? (U(), W("p", KG, P(I(n).launch.error), 1)) : I(n).launch.notice ? (U(), W("p", qG, P(I(n).launch.notice), 1)) : Y("", !0)
45271
+ I(n).launch.error ? (U(), W("p", qG, P(I(n).launch.error), 1)) : I(n).launch.notice ? (U(), W("p", JG, P(I(n).launch.notice), 1)) : Y("", !0)
45259
45272
  ], 64)) : (U(), W(H, { key: 0 }, [
45260
45273
  m[6] ||= K("h3", null, "连接这台电脑", -1),
45261
45274
  m[7] ||= K("p", { class: "fine-print" }, "先安装并配置 codiscuss,在运行 AI 的这台电脑上执行以下命令,使用命令打开的网页完成连接。浏览器询问时允许访问本机网络。", -1),
45262
- K("div", RG, [K("code", null, P(I(n).launch.connect_command), 1), q(h, {
45275
+ K("div", zG, [K("code", null, P(I(n).launch.connect_command), 1), q(h, {
45263
45276
  icon: "i-lucide-copy",
45264
45277
  "aria-label": "复制本机连接命令",
45265
45278
  variant: "ghost",
@@ -45273,93 +45286,93 @@ var _H = {
45273
45286
  loading: I(a) === "retry_launch_connection",
45274
45287
  onClick: m[1] ||= (e) => I(i)("retry_launch_connection")
45275
45288
  }, null, 8, ["loading"]),
45276
- I(n).launch.error ? (U(), W("p", zG, P(I(n).launch.error), 1)) : Y("", !0)
45289
+ I(n).launch.error ? (U(), W("p", BG, P(I(n).launch.error), 1)) : Y("", !0)
45277
45290
  ], 64))]);
45278
45291
  };
45279
45292
  }
45280
- }, [["__scopeId", "data-v-b8f8fe3c"]]), YG = { class: "page-heading" }, XG = { class: "topic-brief" }, ZG = { class: "host-status" }, QG = {
45293
+ }, [["__scopeId", "data-v-b8f8fe3c"]]), XG = { class: "page-heading" }, ZG = { class: "topic-brief" }, QG = { class: "host-status" }, $G = {
45281
45294
  key: 0,
45282
45295
  class: "turn-panel"
45283
- }, $G = { class: "turn-header" }, eK = { class: "turn-panel host-turn" }, tK = { class: "turn-header" }, nK = { class: "turn-expert" }, rK = { class: "turn-question" }, iK = {
45296
+ }, eK = { class: "turn-header" }, tK = { class: "turn-panel host-turn" }, nK = { class: "turn-header" }, rK = { class: "turn-expert" }, iK = { class: "turn-question" }, aK = {
45284
45297
  key: 0,
45285
45298
  class: "button-row turn-actions"
45286
- }, aK = {
45299
+ }, oK = {
45287
45300
  key: 1,
45288
45301
  class: "turn-empty"
45289
- }, oK = {
45302
+ }, sK = {
45290
45303
  key: 2,
45291
45304
  class: "fine-print"
45292
- }, sK = { class: "form-footer" }, cK = ["href"], lK = {
45305
+ }, cK = { class: "form-footer" }, lK = ["href"], uK = {
45293
45306
  key: 0,
45294
45307
  class: "fine-print host-schedule-hint"
45295
- }, uK = { class: "page-heading access-heading" }, dK = {
45308
+ }, dK = { class: "page-heading access-heading" }, fK = {
45296
45309
  key: 0,
45297
45310
  class: "access-evidence",
45298
45311
  "aria-label": "实际执行进展",
45299
45312
  role: "status"
45300
- }, fK = {
45313
+ }, pK = {
45301
45314
  key: 0,
45302
45315
  class: "fine-print"
45303
- }, pK = {
45316
+ }, mK = {
45304
45317
  key: 1,
45305
45318
  class: "access-setup",
45306
45319
  "aria-label": "网页启动入口"
45307
- }, mK = {
45320
+ }, hK = {
45308
45321
  key: 1,
45309
45322
  class: "access-repair"
45310
- }, hK = { class: "access-repair-heading" }, gK = {
45323
+ }, gK = { class: "access-repair-heading" }, _K = {
45311
45324
  key: 0,
45312
45325
  class: "access-repair-fields"
45313
- }, _K = {
45326
+ }, vK = {
45314
45327
  key: 0,
45315
45328
  role: "status",
45316
45329
  class: "fine-print"
45317
- }, vK = {
45330
+ }, yK = {
45318
45331
  key: 1,
45319
45332
  role: "alert",
45320
45333
  class: "fine-print"
45321
- }, yK = {
45334
+ }, bK = {
45322
45335
  key: 2,
45323
45336
  class: "fine-print"
45324
- }, bK = {
45337
+ }, xK = {
45325
45338
  key: 3,
45326
45339
  class: "fine-print"
45327
- }, xK = {
45340
+ }, SK = {
45328
45341
  key: 4,
45329
45342
  class: "fine-print"
45330
- }, SK = {
45343
+ }, CK = {
45331
45344
  key: 2,
45332
45345
  class: "access-setup",
45333
45346
  "aria-label": "全自动接入步骤"
45334
- }, CK = { class: "access-section-title" }, wK = {
45347
+ }, wK = { class: "access-section-title" }, TK = {
45335
45348
  href: "https://github.com/huyan1458/ai_co_discuss/blob/main/docs/runner.md#常驻讨论服务",
45336
45349
  target: "_blank",
45337
45350
  rel: "noopener",
45338
45351
  class: "subtle-link"
45339
- }, TK = { class: "access-steps" }, EK = { class: "access-command" }, DK = { class: "access-command" }, OK = {
45352
+ }, EK = { class: "access-steps" }, DK = { class: "access-command" }, OK = { class: "access-command" }, kK = {
45340
45353
  key: 3,
45341
45354
  class: "access-disclosure access-workspace"
45342
- }, kK = { class: "access-disclosure-body" }, AK = { class: "form-two-columns" }, jK = ["open"], MK = { class: "access-disclosure-body" }, NK = {
45355
+ }, AK = { class: "access-disclosure-body" }, jK = { class: "form-two-columns" }, MK = ["open"], NK = { class: "access-disclosure-body" }, PK = {
45343
45356
  key: 0,
45344
45357
  class: "fine-print"
45345
- }, PK = {
45358
+ }, FK = {
45346
45359
  class: "access-member-list",
45347
45360
  "aria-label": "成员接入"
45348
- }, FK = { class: "access-member-copy" }, IK = { key: 1 }, LK = { class: "button-row" }, RK = {
45361
+ }, IK = { class: "access-member-copy" }, LK = { key: 1 }, RK = { class: "button-row" }, zK = {
45349
45362
  key: 1,
45350
45363
  role: "alert",
45351
45364
  class: "access-member-error"
45352
- }, zK = {
45365
+ }, BK = {
45353
45366
  key: 2,
45354
45367
  role: "status",
45355
45368
  class: "fine-print"
45356
- }, BK = { class: "access-reading" }, VK = { class: "access-address" }, HK = {
45369
+ }, VK = { class: "access-reading" }, HK = { class: "access-address" }, UK = {
45357
45370
  key: 3,
45358
45371
  class: "fine-print"
45359
- }, UK = {
45372
+ }, WK = {
45360
45373
  key: 4,
45361
45374
  class: "access-disclosure access-limits"
45362
- }, WK = { class: "access-limit-summary" }, GK = { class: "access-disclosure-body" }, KK = { class: "button-row" }, qK = /*#__PURE__*/ MH({
45375
+ }, GK = { class: "access-limit-summary" }, KK = { class: "access-disclosure-body" }, qK = { class: "button-row" }, JK = /*#__PURE__*/ MH({
45363
45376
  __name: "TopicPanel",
45364
45377
  emits: ["open", "detail"],
45365
45378
  setup(e) {
@@ -45411,7 +45424,7 @@ var _H = {
45411
45424
  transition: { duration: .16 }
45412
45425
  }, {
45413
45426
  default: L(() => [I(t).tab === "topic" ? (U(), W(H, { key: 0 }, [
45414
- K("div", YG, [K("div", null, [
45427
+ K("div", XG, [K("div", null, [
45415
45428
  C[19] ||= K("span", { class: "eyebrow" }, "讨论进程", -1),
45416
45429
  C[20] ||= K("h2", null, "主持与安排", -1),
45417
45430
  K("p", null, "当前由 " + P(I(n).display_name(o.value.host)) + " 主持,围绕具体问题组织下一轮发言。", 1)
@@ -45423,9 +45436,9 @@ var _H = {
45423
45436
  class: "channel-surface-button",
45424
45437
  onClick: C[0] ||= (t) => e.$emit("open", "edit")
45425
45438
  })]),
45426
- K("div", XG, [K("div", null, [C[21] ||= K("h3", null, "讨论目标", -1), K("p", null, P(o.value.goal || "待主持人根据用户原文补全"), 1)]), K("div", null, [C[22] ||= K("h3", null, "当前焦点", -1), K("p", null, P(o.value.focus || "尚未设置当前焦点"), 1)])]),
45427
- K("div", ZG, [o.value.limits ? (U(), W("section", QG, [
45428
- K("div", $G, [C[23] ||= K("h3", null, "讨论上限与进度", -1), q(T, {
45439
+ K("div", ZG, [K("div", null, [C[21] ||= K("h3", null, "讨论目标", -1), K("p", null, P(o.value.goal || "待主持人根据用户原文补全"), 1)]), K("div", null, [C[22] ||= K("h3", null, "当前焦点", -1), K("p", null, P(o.value.focus || "尚未设置当前焦点"), 1)])]),
45440
+ K("div", QG, [o.value.limits ? (U(), W("section", $G, [
45441
+ K("div", eK, [C[23] ||= K("h3", null, "讨论上限与进度", -1), q(T, {
45429
45442
  color: o.value.limits.reached && o.value.phase !== "concluded" ? "warning" : "neutral",
45430
45443
  variant: "subtle"
45431
45444
  }, {
@@ -45443,8 +45456,8 @@ var _H = {
45443
45456
  }, null, 8, ["loading"])) : Y("", !0),
45444
45457
  C[24] ||= K("p", { class: "fine-print" }, "在“编辑议题”中调整参数。自动模式由接入程序检查;手动模式由主持人或此按钮执行到限处理。", -1)
45445
45458
  ])) : Y("", !0)]),
45446
- K("section", eK, [
45447
- K("div", tK, [C[25] ||= K("h3", null, "当前发言安排", -1), q(T, {
45459
+ K("section", tK, [
45460
+ K("div", nK, [C[25] ||= K("h3", null, "当前发言安排", -1), q(T, {
45448
45461
  color: c.value ? "primary" : "neutral",
45449
45462
  variant: "subtle"
45450
45463
  }, {
@@ -45452,7 +45465,7 @@ var _H = {
45452
45465
  _: 1
45453
45466
  }, 8, ["color"])]),
45454
45467
  s.value ? (U(), W(H, { key: 0 }, [
45455
- K("div", nK, [q(ee, {
45468
+ K("div", rK, [q(ee, {
45456
45469
  src: I(n).identities[s.value.expert]?.icon,
45457
45470
  text: I(n).identities[s.value.expert]?.initials,
45458
45471
  alt: s.value.expert,
@@ -45463,8 +45476,8 @@ var _H = {
45463
45476
  "alt",
45464
45477
  "class"
45465
45478
  ]), K("div", null, [K("strong", null, P(s.value.expert), 1), K("small", null, "发言安排 #" + P(s.value.id), 1)])]),
45466
- K("p", rK, P(s.value.question), 1),
45467
- c.value ? (U(), W("div", iK, [
45479
+ K("p", iK, P(s.value.question), 1),
45480
+ c.value ? (U(), W("div", aK, [
45468
45481
  q(w, {
45469
45482
  icon: "i-lucide-copy",
45470
45483
  label: "复制通知",
@@ -45508,24 +45521,24 @@ var _H = {
45508
45521
  class: "channel-surface-button",
45509
45522
  onClick: C[6] ||= (t) => e.$emit("detail", s.value.answer_id)
45510
45523
  })) : Y("", !0)
45511
- ], 64)) : (U(), W("p", aK, "把下一轮需要回答的问题,交给一位参与者。")),
45512
- c.value ? (U(), W("p", oK, P(I(n).turn_guidance(s.value, o.value)), 1)) : Y("", !0)
45524
+ ], 64)) : (U(), W("p", oK, "把下一轮需要回答的问题,交给一位参与者。")),
45525
+ c.value ? (U(), W("p", sK, P(I(n).turn_guidance(s.value, o.value)), 1)) : Y("", !0)
45513
45526
  ]),
45514
- K("div", sK, [K("a", {
45527
+ K("div", cK, [K("a", {
45515
45528
  href: `${d.value}/turns`,
45516
45529
  target: "_blank",
45517
45530
  rel: "noopener",
45518
45531
  class: "subtle-link"
45519
- }, [C[26] ||= J("发言安排历史 ", -1), q(E, { name: "i-lucide-arrow-up-right" })], 8, cK), q(w, {
45532
+ }, [C[26] ||= J("发言安排历史 ", -1), q(E, { name: "i-lucide-arrow-up-right" })], 8, lK), q(w, {
45520
45533
  icon: "i-lucide-plus",
45521
45534
  label: "安排下一位专家",
45522
45535
  class: "channel-primary-button",
45523
45536
  disabled: !u.value,
45524
45537
  onClick: C[7] ||= (t) => e.$emit("open", "schedule")
45525
45538
  }, null, 8, ["disabled"])]),
45526
- u.value ? Y("", !0) : (U(), W("p", lK, P(l.value ? "话题已暂停或收束,修改阶段后可以继续安排。" : c.value ? "先完成或取消当前安排,再安排下一位。" : o.value.limits?.reached ? "已达到讨论上限,请检查到限处理;需要继续时先暂停并调整参数。" : "请先在议题资料中配置参与专家。"), 1))
45539
+ u.value ? Y("", !0) : (U(), W("p", uK, P(l.value ? "话题已暂停或收束,修改阶段后可以继续安排。" : c.value ? "先完成或取消当前安排,再安排下一位。" : o.value.limits?.reached ? "已达到讨论上限,请检查到限处理;需要继续时先暂停并调整参数。" : "请先在议题资料中配置参与专家。"), 1))
45527
45540
  ], 64)) : (U(), W(H, { key: 1 }, [
45528
- K("div", uK, [C[27] ||= K("div", null, [K("h2", null, "接入 AI"), K("p", null, "讨论由本机服务唤醒 AI:在这里启动、修正软件连接或查看参与说明;成员进出在进度看板操作。")], -1), f.value ? (U(), G(T, {
45541
+ K("div", dK, [C[27] ||= K("div", null, [K("h2", null, "接入 AI"), K("p", null, "讨论由本机服务唤醒 AI:在这里启动、修正软件连接或查看参与说明;成员进出在进度看板操作。")], -1), f.value ? (U(), G(T, {
45529
45542
  key: 0,
45530
45543
  color: o.value.runtime?.status === "running" ? "primary" : "neutral",
45531
45544
  variant: "subtle"
@@ -45533,21 +45546,21 @@ var _H = {
45533
45546
  default: L(() => [J(P(g.value), 1)]),
45534
45547
  _: 1
45535
45548
  }, 8, ["color"])) : Y("", !0)]),
45536
- f.value ? (U(), W("section", dK, [
45549
+ f.value ? (U(), W("section", fK, [
45537
45550
  C[28] ||= K("strong", null, "实际执行进展", -1),
45538
45551
  K("p", null, P(I(n).execution_label(m.value)), 1),
45539
- o.value.runtime?.status === "running" && (!m.value || ["pending", "dispatched"].includes(m.value.status)) ? (U(), W("p", fK, "尚无 AI 进入记录。请核对本机服务及对应软件的登录和工具权限。")) : Y("", !0)
45552
+ o.value.runtime?.status === "running" && (!m.value || ["pending", "dispatched"].includes(m.value.status)) ? (U(), W("p", pK, "尚无 AI 进入记录。请核对本机服务及对应软件的登录和工具权限。")) : Y("", !0)
45540
45553
  ])) : Y("", !0),
45541
- f.value && I(t).launch.available ? (U(), W("section", pK, [
45554
+ f.value && I(t).launch.available ? (U(), W("section", mK, [
45542
45555
  C[31] ||= K("div", { class: "access-section-title" }, [K("h3", null, "从网页启动"), K("span", { class: "fine-print" }, "本机执行")], -1),
45543
- o.value.runtime?.status === "ready" ? (U(), W(H, { key: 0 }, [q(JG, { participants: v.value }, null, 8, ["participants"]), q(w, {
45556
+ o.value.runtime?.status === "ready" ? (U(), W(H, { key: 0 }, [q(YG, { participants: v.value }, null, 8, ["participants"]), q(w, {
45544
45557
  label: "启动讨论",
45545
45558
  icon: "i-lucide-play",
45546
45559
  class: "channel-primary-button",
45547
45560
  loading: I(i) === "launch_current_room",
45548
45561
  onClick: C[8] ||= (e) => I(r)("launch_current_room")
45549
- }, null, 8, ["loading"])], 64)) : o.value.runtime?.status === "paused" && !o.value.archived && !I(t).launch.remote ? (U(), W("div", mK, [
45550
- K("div", hK, [C[29] ||= K("h3", null, "修正本场软件连接", -1), q(w, {
45562
+ }, null, 8, ["loading"])], 64)) : o.value.runtime?.status === "paused" && !o.value.archived && !I(t).launch.remote ? (U(), W("div", hK, [
45563
+ K("div", gK, [C[29] ||= K("h3", null, "修正本场软件连接", -1), q(w, {
45551
45564
  label: "读取本场配置",
45552
45565
  variant: "outline",
45553
45566
  color: "neutral",
@@ -45556,7 +45569,7 @@ var _H = {
45556
45569
  onClick: C[9] ||= (e) => I(r)("load_room_configuration")
45557
45570
  }, null, 8, ["loading"])]),
45558
45571
  C[30] ||= K("div", { class: "access-repair-description" }, [K("p", null, "修正软件路径,或切换 Codex 的 App / CLI 接入。保留原房间、发言进度和会话,保存后到进度看板重启。"), K("p", { class: "fine-print" }, "App 需保持运行,模型与文件权限在 App 内设置。切回 CLI 前须让 App 释放原聊天;未释放时执行仍会暂停。")], -1),
45559
- h.value ? (U(), W("div", gK, [
45572
+ h.value ? (U(), W("div", _K, [
45560
45573
  (U(!0), W(H, null, B(h.value.participants, (e, t) => (U(), W("div", {
45561
45574
  key: t,
45562
45575
  class: "form-two-columns"
@@ -45591,19 +45604,19 @@ var _H = {
45591
45604
  loading: I(i) === "save_room_configuration",
45592
45605
  onClick: C[10] ||= (e) => I(r)("save_room_configuration")
45593
45606
  }, null, 8, ["loading"]),
45594
- h.value.notice ? (U(), W("p", _K, P(h.value.notice), 1)) : Y("", !0)
45607
+ h.value.notice ? (U(), W("p", vK, P(h.value.notice), 1)) : Y("", !0)
45595
45608
  ])) : Y("", !0),
45596
- I(t).launch.repair_error ? (U(), W("p", vK, P(I(t).launch.repair_error), 1)) : Y("", !0)
45597
- ])) : o.value.runtime?.status === "paused" && I(t).launch.remote ? (U(), W("p", yK, "讨论已暂停,可在进度看板重启。线上连接暂不提供已登记房间的软件路径修正。")) : o.value.runtime?.status === "running" ? (U(), W("p", bK, "讨论正在运行。")) : (U(), W("p", xK, "本场讨论已停止或结束,已有记录保留。")),
45609
+ I(t).launch.repair_error ? (U(), W("p", yK, P(I(t).launch.repair_error), 1)) : Y("", !0)
45610
+ ])) : o.value.runtime?.status === "paused" && I(t).launch.remote ? (U(), W("p", bK, "讨论已暂停,可在进度看板重启。线上连接暂不提供已登记房间的软件路径修正。")) : o.value.runtime?.status === "running" ? (U(), W("p", xK, "讨论正在运行。")) : (U(), W("p", SK, "本场讨论已停止或结束,已有记录保留。")),
45598
45611
  C[32] ||= K("p", { class: "access-host-entry" }, [
45599
45612
  J("另一种入口:在 AI 工具对话中调用 "),
45600
45613
  K("code", null, "discuss-host"),
45601
45614
  J(",由当前会话主持。")
45602
45615
  ], -1)
45603
- ])) : f.value ? (U(), W("section", SK, [q(JG, { participants: v.value }, null, 8, ["participants"]), K("details", null, [
45616
+ ])) : f.value ? (U(), W("section", CK, [q(YG, { participants: v.value }, null, 8, ["participants"]), K("details", null, [
45604
45617
  C[44] ||= K("summary", null, "手动下载与登记配置", -1),
45605
- K("div", CK, [C[34] ||= K("h3", null, "首次接入", -1), K("a", wK, [C[33] ||= J("配置说明 ", -1), q(E, { name: "i-lucide-arrow-up-right" })])]),
45606
- K("ol", TK, [
45618
+ K("div", wK, [C[34] ||= K("h3", null, "首次接入", -1), K("a", TK, [C[33] ||= J("配置说明 ", -1), q(E, { name: "i-lucide-arrow-up-right" })])]),
45619
+ K("ol", EK, [
45607
45620
  K("li", null, [
45608
45621
  C[35] ||= K("span", { class: "access-step-number" }, "1", -1),
45609
45622
  C[36] ||= K("div", null, [K("h4", null, "下载接入配置"), K("p", null, "包含当前房间信息。下载后,补齐本机软件路径与会话配置。")], -1),
@@ -45619,7 +45632,7 @@ var _H = {
45619
45632
  K("li", null, [C[39] ||= K("span", { class: "access-step-number" }, "2", -1), K("div", null, [
45620
45633
  C[37] ||= K("h4", null, "登记到本机服务", -1),
45621
45634
  C[38] ||= K("p", null, "在下载文件所在目录执行;也可以将文件名换成完整路径。", -1),
45622
- K("div", EK, [K("code", null, P(_.value), 1), q(w, {
45635
+ K("div", DK, [K("code", null, P(_.value), 1), q(w, {
45623
45636
  icon: "i-lucide-copy",
45624
45637
  color: "neutral",
45625
45638
  variant: "ghost",
@@ -45630,7 +45643,7 @@ var _H = {
45630
45643
  K("li", null, [C[43] ||= K("span", { class: "access-step-number" }, "3", -1), K("div", null, [
45631
45644
  C[41] ||= K("h4", null, "启动服务,保持终端打开", -1),
45632
45645
  C[42] ||= K("p", null, "启动服务不会自动开始讨论。已暂停的讨论可在进度看板点“重启”。", -1),
45633
- K("div", DK, [C[40] ||= K("code", null, "codiscuss", -1), q(w, {
45646
+ K("div", OK, [C[40] ||= K("code", null, "codiscuss", -1), q(w, {
45634
45647
  icon: "i-lucide-copy",
45635
45648
  color: "neutral",
45636
45649
  variant: "ghost",
@@ -45640,10 +45653,10 @@ var _H = {
45640
45653
  ])])
45641
45654
  ])
45642
45655
  ])])) : Y("", !0),
45643
- !f.value || !I(t).launch.available ? (U(), W("details", OK, [K("summary", null, [C[45] ||= K("span", null, [J("项目与工作目录 "), K("small", null, "可选")], -1), q(E, {
45656
+ !f.value || !I(t).launch.available ? (U(), W("details", kK, [K("summary", null, [C[45] ||= K("span", null, [J("项目与工作目录 "), K("small", null, "可选")], -1), q(E, {
45644
45657
  name: "i-lucide-chevron-down",
45645
45658
  class: "disclosure-icon"
45646
- })]), K("div", kK, [C[46] ||= K("p", null, "指定 AI 使用的本机项目和目录,留空使用默认位置。仅保存在本机配置中。", -1), K("div", AK, [q(O, { label: "AI 软件中的项目" }, {
45659
+ })]), K("div", AK, [C[46] ||= K("p", null, "指定 AI 使用的本机项目和目录,留空使用默认位置。仅保存在本机配置中。", -1), K("div", jK, [q(O, { label: "AI 软件中的项目" }, {
45647
45660
  default: L(() => [q(te, {
45648
45661
  "model-value": I(t).fields["runtime-project"],
45649
45662
  placeholder: "项目名称",
@@ -45666,9 +45679,9 @@ var _H = {
45666
45679
  }, [K("summary", null, [K("span", null, P(f.value ? "成员参与说明与阅读地址" : "复制指令,交给对应的 AI"), 1), q(E, {
45667
45680
  name: "i-lucide-chevron-down",
45668
45681
  class: "disclosure-icon"
45669
- })]), K("div", MK, [
45670
- y.value || b.value ? (U(), W("p", NK, P([y.value && "手动成员:复制启动指令,交给你自己的 AI 会话。", b.value && "网页成员只读,回答由你或授权主持人代发。"].filter(Boolean).join("")), 1)) : Y("", !0),
45671
- K("ul", PK, [(U(!0), W(H, null, B(p.value.members || [], (e) => (U(), W("li", { key: e.name }, [
45682
+ })]), K("div", NK, [
45683
+ y.value || b.value ? (U(), W("p", PK, P([y.value && "手动成员:复制启动指令,交给你自己的 AI 会话。", b.value && "网页成员只读,回答由你或授权主持人代发。"].filter(Boolean).join("")), 1)) : Y("", !0),
45684
+ K("ul", FK, [(U(!0), W(H, null, B(p.value.members || [], (e) => (U(), W("li", { key: e.name }, [
45672
45685
  q(ee, {
45673
45686
  src: I(n).identities[e.name]?.icon,
45674
45687
  text: I(n).identities[e.name]?.initials,
@@ -45681,16 +45694,16 @@ var _H = {
45681
45694
  "alt",
45682
45695
  "class"
45683
45696
  ]),
45684
- K("div", FK, [
45697
+ K("div", IK, [
45685
45698
  K("strong", null, P(e.name), 1),
45686
45699
  K("span", null, P(e.access === "online" ? "网页代发" : e.access === "runner" ? "本机唤醒 · 自行发言" : "手动接入 · 自行发言"), 1),
45687
45700
  e.access === "manual" ? (U(), W("small", {
45688
45701
  key: 0,
45689
45702
  class: j({ "is-registered": (o.value.members || []).find((t) => t.name === e.name)?.registered_at })
45690
45703
  }, P((o.value.members || []).find((t) => t.name === e.name)?.registered_at ? "已注册" : "待注册"), 3)) : Y("", !0),
45691
- e.access !== "online" && !e.available ? (U(), W("small", IK, "当前浏览器没有此成员的私有配置")) : Y("", !0)
45704
+ e.access !== "online" && !e.available ? (U(), W("small", LK, "当前浏览器没有此成员的私有配置")) : Y("", !0)
45692
45705
  ]),
45693
- K("div", LK, [e.access === "manual" ? (U(), W(H, { key: 0 }, [q(w, {
45706
+ K("div", RK, [e.access === "manual" ? (U(), W(H, { key: 0 }, [q(w, {
45694
45707
  icon: "i-lucide-rocket",
45695
45708
  label: "复制启动指令",
45696
45709
  "aria-label": `复制 ${e.name} 含凭证的启动指令`,
@@ -45744,25 +45757,25 @@ var _H = {
45744
45757
  "onClick"
45745
45758
  ])], 64))])
45746
45759
  ]))), 128))]),
45747
- p.value.error ? (U(), W("p", RK, P(p.value.error), 1)) : p.value.notice ? (U(), W("p", zK, P(p.value.notice), 1)) : Y("", !0),
45760
+ p.value.error ? (U(), W("p", zK, P(p.value.error), 1)) : p.value.notice ? (U(), W("p", BK, P(p.value.notice), 1)) : Y("", !0),
45748
45761
  C[48] ||= K("p", { class: "fine-print" }, "复制说明或下载配置不代表 AI 已接入,请以实际回答和运行记录为准。", -1),
45749
- K("details", BK, [C[47] ||= K("summary", null, "查看房间阅读地址", -1), K("div", VK, [K("code", null, P(d.value), 1), q(w, {
45762
+ K("details", VK, [C[47] ||= K("summary", null, "查看房间阅读地址", -1), K("div", HK, [K("code", null, P(d.value), 1), q(w, {
45750
45763
  icon: "i-lucide-copy",
45751
45764
  color: "neutral",
45752
45765
  variant: "ghost",
45753
45766
  "aria-label": "复制阅读地址",
45754
45767
  onClick: C[16] ||= (e) => I(r)("copy", d.value)
45755
45768
  })])]),
45756
- d.value.includes("127.0.0.1") || d.value.includes("localhost") ? (U(), W("p", HK, "本机地址仅本机可访问。在线 AI 需要公网阅读地址,或由用户提供材料。")) : Y("", !0)
45757
- ])], 8, jK),
45758
- o.value.limits ? (U(), W("details", UK, [K("summary", null, [
45769
+ d.value.includes("127.0.0.1") || d.value.includes("localhost") ? (U(), W("p", UK, "本机地址仅本机可访问。在线 AI 需要公网阅读地址,或由用户提供材料。")) : Y("", !0)
45770
+ ])], 8, MK),
45771
+ o.value.limits ? (U(), W("details", WK, [K("summary", null, [
45759
45772
  C[49] ||= K("span", null, "讨论上限与进度", -1),
45760
- K("span", WK, P(S.value), 1),
45773
+ K("span", GK, P(S.value), 1),
45761
45774
  q(E, {
45762
45775
  name: "i-lucide-chevron-down",
45763
45776
  class: "disclosure-icon"
45764
45777
  })
45765
- ]), K("div", GK, [K("p", null, P(I(n).limits_label(o.value.limits)), 1), K("div", KK, [q(w, {
45778
+ ]), K("div", KK, [K("p", null, P(I(n).limits_label(o.value.limits)), 1), K("div", qK, [q(w, {
45766
45779
  icon: "i-lucide-pencil",
45767
45780
  label: "编辑讨论上限",
45768
45781
  variant: "outline",
@@ -45787,7 +45800,7 @@ var _H = {
45787
45800
  ]);
45788
45801
  };
45789
45802
  }
45790
- }, [["__scopeId", "data-v-9f594065"]]), JK = {
45803
+ }, [["__scopeId", "data-v-9f594065"]]), YK = {
45791
45804
  slots: {
45792
45805
  overlay: "fixed inset-0",
45793
45806
  content: "bg-default divide-y divide-default flex flex-col focus:outline-none",
@@ -45829,7 +45842,7 @@ var _H = {
45829
45842
  fullscreen: !1,
45830
45843
  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" }
45831
45844
  }]
45832
- }, YK = {
45845
+ }, XK = {
45833
45846
  __name: "Modal",
45834
45847
  props: {
45835
45848
  title: {
@@ -45920,7 +45933,7 @@ var _H = {
45920
45933
  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) => {
45921
45934
  e.preventDefault(), r("close:prevent");
45922
45935
  }, e), {})), [f, p] = _m(), m = Z(() => oA({
45923
- extend: JK,
45936
+ extend: YK,
45924
45937
  ...s.ui?.modal || {}
45925
45938
  })({
45926
45939
  transition: a.transition,
@@ -46045,10 +46058,10 @@ var _H = {
46045
46058
  _: 3
46046
46059
  }, 16));
46047
46060
  }
46048
- }, XK = { slots: {
46061
+ }, ZK = { slots: {
46049
46062
  root: "",
46050
46063
  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"
46051
- } }, ZK = {
46064
+ } }, QK = {
46052
46065
  __name: "Collapsible",
46053
46066
  props: {
46054
46067
  as: {
@@ -46084,7 +46097,7 @@ var _H = {
46084
46097
  emits: ["update:open"],
46085
46098
  setup(e, { emit: t }) {
46086
46099
  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({
46087
- extend: XK,
46100
+ extend: ZK,
46088
46101
  ...o.ui?.collapsible || {}
46089
46102
  })());
46090
46103
  return (e, t) => (U(), G(I(Kg), X(I(s), {
@@ -46107,7 +46120,7 @@ var _H = {
46107
46120
  _: 3
46108
46121
  }, 16, ["class"]));
46109
46122
  }
46110
- }, QK = {
46123
+ }, $K = {
46111
46124
  slots: {
46112
46125
  root: "relative flex items-start",
46113
46126
  container: "flex items-center",
@@ -46495,7 +46508,7 @@ var _H = {
46495
46508
  variant: "list",
46496
46509
  indicator: "start"
46497
46510
  }
46498
- }, $K = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
46511
+ }, eq = /*@__PURE__*/ Object.assign({ inheritAttrs: !1 }, {
46499
46512
  __name: "Checkbox",
46500
46513
  props: {
46501
46514
  as: {
@@ -46589,7 +46602,7 @@ var _H = {
46589
46602
  let { "data-state": e, ...t } = C;
46590
46603
  return t;
46591
46604
  }), T = Z(() => oA({
46592
- extend: QK,
46605
+ extend: $K,
46593
46606
  ...o.ui?.checkbox || {}
46594
46607
  })({
46595
46608
  size: b.value,
@@ -46680,18 +46693,18 @@ var _H = {
46680
46693
  "class"
46681
46694
  ]));
46682
46695
  }
46683
- }), eq = ["aria-label"], tq = { class: "limit-field-heading" }, nq = ["for"], rq = [
46696
+ }), tq = ["aria-label"], nq = { class: "limit-field-heading" }, rq = ["for"], iq = [
46684
46697
  "aria-pressed",
46685
46698
  "aria-label",
46686
46699
  "onClick"
46687
- ], iq = [
46700
+ ], aq = [
46688
46701
  "id",
46689
46702
  "disabled",
46690
46703
  "aria-label"
46691
- ], aq = { key: 0 }, oq = {
46704
+ ], oq = { key: 0 }, sq = {
46692
46705
  key: 1,
46693
46706
  class: "limit-trigger-value"
46694
- }, sq = { class: "limit-editor" }, cq = { class: "limit-editor-heading" }, lq = ["aria-label", "onClick"], uq = { class: "limit-columns" }, dq = [
46707
+ }, cq = { class: "limit-editor" }, lq = { class: "limit-editor-heading" }, uq = ["aria-label", "onClick"], dq = { class: "limit-columns" }, fq = [
46695
46708
  "onKeydown",
46696
46709
  "onWheel",
46697
46710
  "onPointerdown",
@@ -46699,16 +46712,16 @@ var _H = {
46699
46712
  "onPointerup",
46700
46713
  "onPointercancel",
46701
46714
  "onLostpointercapture"
46702
- ], fq = [
46715
+ ], pq = [
46703
46716
  "aria-label",
46704
46717
  "aria-valuemin",
46705
46718
  "aria-valuemax",
46706
46719
  "aria-valuenow",
46707
46720
  "aria-valuetext"
46708
- ], pq = {
46721
+ ], mq = {
46709
46722
  class: "limit-wheel-rows",
46710
46723
  "aria-hidden": "true"
46711
- }, mq = { class: "limit-exact-value" }, hq = [
46724
+ }, hq = { class: "limit-exact-value" }, gq = [
46712
46725
  "min",
46713
46726
  "max",
46714
46727
  "value",
@@ -46717,12 +46730,12 @@ var _H = {
46717
46730
  "onInput",
46718
46731
  "onBlur",
46719
46732
  "onKeydown"
46720
- ], gq = { "aria-hidden": "true" };
46721
- function _q(e) {
46733
+ ], _q = { "aria-hidden": "true" };
46734
+ function vq(e) {
46722
46735
  let t = Math.floor(e / 60), n = e % 60;
46723
46736
  return [t && `${t} 小时`, n && `${n} 分钟`].filter(Boolean).join(" ") || "0 分钟";
46724
46737
  }
46725
- var vq = /*#__PURE__*/ MH({
46738
+ var yq = /*#__PURE__*/ MH({
46726
46739
  __name: "LimitPicker",
46727
46740
  props: {
46728
46741
  rounds: {
@@ -46787,7 +46800,7 @@ var vq = /*#__PURE__*/ MH({
46787
46800
  target: null,
46788
46801
  hand: null,
46789
46802
  pointer: null
46790
- }))), 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 = Z(() => r.append ? c.slice(0, 1) : c), h = (e) => r.append ? "追加轮数" : e.label, g = (e) => l.filter((t) => t.field === e.key), _ = (e) => c.find((t) => t.key === e.field), v = (e) => e.key === "rounds" ? `${e.selected} 轮` : _q(e.selected), y = (e, t, n) => -((2 * Math.PI * n) ** 2) * e - 4 * Math.PI * n * t;
46803
+ }))), 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 = Z(() => r.append ? c.slice(0, 1) : c), h = (e) => r.append ? "追加轮数" : e.label, g = (e) => l.filter((t) => t.field === e.key), _ = (e) => c.find((t) => t.key === e.field), v = (e) => e.key === "rounds" ? `${e.selected} 轮` : vq(e.selected), y = (e, t, n) => -((2 * Math.PI * n) ** 2) * e - 4 * Math.PI * n * t;
46791
46804
  function b(e, t) {
46792
46805
  O(e, t), e.selected = e.x, e.draft = String(e.selected);
46793
46806
  }
@@ -46931,7 +46944,7 @@ var vq = /*#__PURE__*/ MH({
46931
46944
  }, [(U(!0), W(H, null, B(m.value, (t) => (U(), W("div", {
46932
46945
  key: t.key,
46933
46946
  class: "limit-field"
46934
- }, [K("div", tq, [K("label", { for: `limit-trigger-${t.key}` }, P(h(t)), 9, nq), e.append ? Y("", !0) : (U(), W("button", {
46947
+ }, [K("div", nq, [K("label", { for: `limit-trigger-${t.key}` }, P(h(t)), 9, rq), e.append ? Y("", !0) : (U(), W("button", {
46935
46948
  key: 0,
46936
46949
  type: "button",
46937
46950
  class: "limit-unlimited",
@@ -46941,7 +46954,7 @@ var vq = /*#__PURE__*/ MH({
46941
46954
  }, [q(r, {
46942
46955
  name: "i-lucide-infinity",
46943
46956
  "aria-hidden": "true"
46944
- }), n[0] ||= K("span", null, "不限", -1)], 8, rq))]), q(i, {
46957
+ }), n[0] ||= K("span", null, "不限", -1)], 8, iq))]), q(i, {
46945
46958
  open: t.open,
46946
46959
  content: {
46947
46960
  align: t.key === "rounds" ? "start" : "end",
@@ -46951,12 +46964,12 @@ var vq = /*#__PURE__*/ MH({
46951
46964
  ui: { content: `limit-popover-content ${t.key === "minutes" ? "limit-duration-content" : ""}` },
46952
46965
  "onUpdate:open": (e) => C(t, e)
46953
46966
  }, {
46954
- content: L(() => [K("div", sq, [K("div", cq, [K("span", null, P(t.label), 1), K("button", {
46967
+ content: L(() => [K("div", cq, [K("div", lq, [K("span", null, P(t.label), 1), K("button", {
46955
46968
  type: "button",
46956
46969
  class: "limit-close",
46957
46970
  "aria-label": `关闭${t.label}选择`,
46958
46971
  onClick: (e) => C(t, !1)
46959
- }, [q(r, { name: "i-lucide-x" })], 8, lq)]), K("div", uq, [(U(!0), W(H, null, B(g(t), (e) => (U(), W("div", {
46972
+ }, [q(r, { name: "i-lucide-x" })], 8, uq)]), K("div", dq, [(U(!0), W(H, null, B(g(t), (e) => (U(), W("div", {
46960
46973
  key: e.key,
46961
46974
  class: j(["limit-track", { "is-editing": e.editing }]),
46962
46975
  onKeydown: (t) => ie(e, t),
@@ -46978,11 +46991,11 @@ var vq = /*#__PURE__*/ MH({
46978
46991
  }, [n[1] ||= K("div", {
46979
46992
  class: "limit-selection",
46980
46993
  "aria-hidden": "true"
46981
- }, null, -1), K("div", pq, [(U(!0), W(H, null, B(ce(e), (t) => (U(), W("span", {
46994
+ }, null, -1), K("div", mq, [(U(!0), W(H, null, B(ce(e), (t) => (U(), W("span", {
46982
46995
  key: t.index,
46983
46996
  class: j(["limit-wheel-row", { "is-current": t.index === p(e) }]),
46984
46997
  style: pe(t.style)
46985
- }, P(t.text), 7))), 128))])], 8, fq), K("div", mq, [K("input", {
46998
+ }, P(t.text), 7))), 128))])], 8, pq), K("div", hq, [K("input", {
46986
46999
  type: "number",
46987
47000
  inputmode: "numeric",
46988
47001
  min: e.min,
@@ -46996,27 +47009,27 @@ var vq = /*#__PURE__*/ MH({
46996
47009
  onKeydown: fu(uu((n) => {
46997
47010
  T(e), C(t, !1);
46998
47011
  }, ["stop", "prevent"]), ["enter"])
46999
- }, null, 40, hq), K("span", gq, P(e.unit), 1)])], 42, dq))), 128))])])]),
47012
+ }, null, 40, gq), K("span", _q, P(e.unit), 1)])], 42, fq))), 128))])])]),
47000
47013
  default: L(() => [K("button", {
47001
47014
  id: `limit-trigger-${t.key}`,
47002
47015
  type: "button",
47003
47016
  class: "limit-trigger",
47004
47017
  disabled: t.unlimited,
47005
47018
  "aria-label": `${t.label}:${t.unlimited ? "不限" : v(t)}`
47006
- }, [t.unlimited ? (U(), W("span", aq, "不限" + P(t.key === "rounds" ? "轮次" : "时长"), 1)) : (U(), W("span", oq, [(U(!0), W(H, null, B(v(t).match(/\d+ \S+/g), (e) => (U(), W("span", { key: e }, P(e), 1))), 128))])), q(r, { name: "i-lucide-chevrons-up-down" })], 8, iq)]),
47019
+ }, [t.unlimited ? (U(), W("span", oq, "不限" + P(t.key === "rounds" ? "轮次" : "时长"), 1)) : (U(), W("span", sq, [(U(!0), W(H, null, B(v(t).match(/\d+ \S+/g), (e) => (U(), W("span", { key: e }, P(e), 1))), 128))])), q(r, { name: "i-lucide-chevrons-up-down" })], 8, aq)]),
47007
47020
  _: 2
47008
47021
  }, 1032, [
47009
47022
  "open",
47010
47023
  "content",
47011
47024
  "ui",
47012
47025
  "onUpdate:open"
47013
- ])]))), 128))], 10, eq);
47026
+ ])]))), 128))], 10, tq);
47014
47027
  };
47015
47028
  }
47016
- }, [["__scopeId", "data-v-c7ed15d7"]]), yq = ["disabled"], bq = ["open"], xq = {
47029
+ }, [["__scopeId", "data-v-c7ed15d7"]]), bq = ["disabled"], xq = ["open"], Sq = {
47017
47030
  class: "discussion-limits-rule",
47018
47031
  "aria-live": "polite"
47019
- }, Sq = 60, Cq = /*#__PURE__*/ MH({
47032
+ }, Cq = 60, wq = /*#__PURE__*/ MH({
47020
47033
  __name: "DiscussionLimits",
47021
47034
  props: {
47022
47035
  rounds: {
@@ -47044,7 +47057,7 @@ var vq = /*#__PURE__*/ MH({
47044
47057
  ],
47045
47058
  setup(e, { expose: t, emit: n }) {
47046
47059
  let r = e, i = n, a = /* @__PURE__ */ F(null), o = Z(() => {
47047
- let e = [r.rounds && `${r.rounds} 轮`, r.minutes && _q(r.minutes)].filter(Boolean);
47060
+ let e = [r.rounds && `${r.rounds} 轮`, r.minutes && vq(r.minutes)].filter(Boolean);
47048
47061
  return e.length ? `最多 ${e.join(" 或 ")},${e.length === 2 ? "先到则" : "到限后"}暂停,由你决定追加轮次或结束。` : "不设轮次和时长上限。";
47049
47062
  });
47050
47063
  function s() {
@@ -47056,7 +47069,7 @@ var vq = /*#__PURE__*/ MH({
47056
47069
  class: "discussion-limits",
47057
47070
  disabled: e.disabled
47058
47071
  }, [
47059
- q(vq, {
47072
+ q(yq, {
47060
47073
  ref_key: "picker",
47061
47074
  ref: a,
47062
47075
  rounds: e.rounds,
@@ -47077,29 +47090,29 @@ var vq = /*#__PURE__*/ MH({
47077
47090
  "model-value": Number(e.execution_minutes) ? e.execution_minutes : "",
47078
47091
  type: "number",
47079
47092
  min: 0,
47080
- max: Sq,
47093
+ max: Cq,
47081
47094
  step: 1,
47082
47095
  placeholder: "不限时长",
47083
47096
  class: "w-40",
47084
47097
  "onUpdate:modelValue": n[2] ||= (e) => i("update:execution_minutes", e)
47085
47098
  }, null, 8, ["model-value"])]),
47086
47099
  _: 1
47087
- })], 8, bq)) : Y("", !0),
47100
+ })], 8, xq)) : Y("", !0),
47088
47101
  V(t.$slots, "default", {}, void 0, !0),
47089
- K("p", xq, [q(c, { name: "i-lucide-flag" }), J(P(o.value), 1)])
47090
- ], 8, yq);
47102
+ K("p", Sq, [q(c, { name: "i-lucide-flag" }), J(P(o.value), 1)])
47103
+ ], 8, bq);
47091
47104
  };
47092
47105
  }
47093
- }, [["__scopeId", "data-v-d1a3dff2"]]), wq = { class: "effort-field" }, Tq = {
47106
+ }, [["__scopeId", "data-v-d1a3dff2"]]), Tq = { class: "effort-field" }, Eq = {
47094
47107
  key: 0,
47095
47108
  class: "effort-caption",
47096
47109
  "aria-hidden": "true"
47097
- }, Eq = [
47110
+ }, Dq = [
47098
47111
  "aria-label",
47099
47112
  "aria-valuemax",
47100
47113
  "aria-valuenow",
47101
47114
  "aria-valuetext"
47102
- ], Dq = ["title"], Oq = 4.5, kq = 6, Aq = 8, jq = 1 / 240, Mq = .001, Nq = .01, Pq = .05, Fq = 10, Iq = 4, Lq = /*#__PURE__*/ MH({
47115
+ ], Oq = ["title"], kq = 4.5, Aq = 6, jq = 8, Mq = 1 / 240, Nq = .001, Pq = .01, Fq = .05, Iq = 10, Lq = 4, Rq = /*#__PURE__*/ MH({
47103
47116
  __name: "EffortSlider",
47104
47117
  props: {
47105
47118
  items: {
@@ -47129,18 +47142,18 @@ var vq = /*#__PURE__*/ MH({
47129
47142
  pointer: null
47130
47143
  }), 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;
47131
47144
  function v(e) {
47132
- let t = c.hand ?? c.target, n = c.hand === null ? Oq : kq, r = (e, r) => _(e - t, r, n) + (e < 0 || e > o.value ? _(e - g(e), r, Aq) : 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);
47145
+ let t = c.hand ?? c.target, n = c.hand === null ? kq : Aq, r = (e, r) => _(e - t, r, n) + (e < 0 || e > o.value ? _(e - g(e), r, jq) : 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);
47133
47146
  c.x += e * (a + 2 * l + 2 * d + p) / 6, c.v += e * (s + 2 * u + 2 * f + m) / 6;
47134
47147
  }
47135
47148
  function y(e) {
47136
47149
  d = 0;
47137
- let t = Math.min(Pq, (e - f) / 1e3);
47150
+ let t = Math.min(Fq, (e - f) / 1e3);
47138
47151
  for (f = e; t > 0;) {
47139
- let e = Math.min(jq, t);
47152
+ let e = Math.min(Mq, t);
47140
47153
  v(e), t -= e;
47141
47154
  }
47142
47155
  let n = c.hand ?? c.target;
47143
- Math.abs(c.x - n) < Mq && Math.abs(c.v) < Nq ? (c.x = n, c.v = 0) : d = requestAnimationFrame(y);
47156
+ Math.abs(c.x - n) < Nq && Math.abs(c.v) < Pq ? (c.x = n, c.v = 0) : d = requestAnimationFrame(y);
47144
47157
  }
47145
47158
  function b() {
47146
47159
  i.value ? (cancelAnimationFrame(d), d = 0, c.x = c.hand ?? c.target, c.v = 0) : d ||= (f = performance.now(), requestAnimationFrame(y));
@@ -47150,17 +47163,17 @@ var vq = /*#__PURE__*/ MH({
47150
47163
  }
47151
47164
  function S(e) {
47152
47165
  let t = a.value.getBoundingClientRect();
47153
- return g((e.clientX - t.left - Fq) / Math.max(1, t.width - 20) * o.value);
47166
+ return g((e.clientX - t.left - Iq) / Math.max(1, t.width - 20) * o.value);
47154
47167
  }
47155
47168
  function C(e) {
47156
47169
  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());
47157
47170
  }
47158
47171
  function w(e) {
47159
- c.pointer === e.pointerId && (h ||= Math.abs(e.clientX - p) > Iq, c.hand = g(S(e) + m), b());
47172
+ c.pointer === e.pointerId && (h ||= Math.abs(e.clientX - p) > Lq, c.hand = g(S(e) + m), b());
47160
47173
  }
47161
47174
  function T(e) {
47162
47175
  if (c.pointer !== e.pointerId) return;
47163
- let t = h ? c.x + c.v / (4 * Math.PI * Oq) : c.hand;
47176
+ let t = h ? c.x + c.v / (4 * Math.PI * kq) : c.hand;
47164
47177
  c.hand = null, c.pointer = null, x(t);
47165
47178
  }
47166
47179
  function ee(e) {
@@ -47183,7 +47196,7 @@ var vq = /*#__PURE__*/ MH({
47183
47196
  i
47184
47197
  ], () => {
47185
47198
  c.target = s.value, b();
47186
- }), ta(() => cancelAnimationFrame(d)), (t, n) => (U(), W("div", wq, [e.caption ? (U(), W("div", Tq, [K("span", null, P(e.caption), 1), q(Cc, {
47199
+ }), ta(() => cancelAnimationFrame(d)), (t, n) => (U(), W("div", Tq, [e.caption ? (U(), W("div", Eq, [K("span", null, P(e.caption), 1), q(Cc, {
47187
47200
  name: I(i) ? "" : "effort-value",
47188
47201
  mode: "out-in"
47189
47202
  }, {
@@ -47221,59 +47234,59 @@ var vq = /*#__PURE__*/ MH({
47221
47234
  "aria-hidden": "true",
47222
47235
  style: pe({ "--at": t / o.value }),
47223
47236
  title: e.label
47224
- }, null, 14, Dq))), 128)),
47237
+ }, null, 14, Oq))), 128)),
47225
47238
  n[1] ||= K("span", {
47226
47239
  class: "effort-slider-thumb",
47227
47240
  "aria-hidden": "true"
47228
47241
  }, null, -1)
47229
- ], 46, Eq)]));
47242
+ ], 46, Dq)]));
47230
47243
  }
47231
- }, [["__scopeId", "data-v-f27db748"]]), Rq = ["data-identity", "data-face"], zq = ["inert", "aria-hidden"], Bq = { class: "expert-card-identity" }, Vq = {
47244
+ }, [["__scopeId", "data-v-f27db748"]]), zq = ["data-identity", "data-face"], Bq = ["inert", "aria-hidden"], Vq = { class: "expert-card-identity" }, Hq = {
47232
47245
  key: 0,
47233
47246
  class: "expert-card-badge"
47234
- }, Hq = { class: "expert-card-facts" }, Uq = ["title"], Wq = {
47247
+ }, Uq = { class: "expert-card-facts" }, Wq = ["title"], Gq = {
47235
47248
  key: 0,
47236
47249
  "aria-hidden": "true"
47237
- }, Gq = {
47250
+ }, Kq = {
47238
47251
  key: 0,
47239
47252
  class: "expert-card-manual"
47240
- }, Kq = { key: 0 }, qq = {
47253
+ }, qq = { key: 0 }, Jq = {
47241
47254
  key: 1,
47242
47255
  class: "expert-card-flip"
47243
- }, Jq = ["aria-label"], Yq = [
47256
+ }, Yq = ["aria-label"], Xq = [
47244
47257
  "aria-checked",
47245
47258
  "tabindex",
47246
47259
  "data-mode",
47247
47260
  "onClick"
47248
- ], Xq = { class: "expert-card-tools" }, Zq = [
47261
+ ], Zq = { class: "expert-card-tools" }, Qq = [
47249
47262
  "aria-pressed",
47250
47263
  "aria-label",
47251
47264
  "title"
47252
- ], Qq = ["aria-label"], $q = ["inert", "aria-hidden"], eJ = { class: "expert-card-back-body" }, tJ = { class: "expert-card-heading" }, nJ = ["role"], rJ = {
47265
+ ], $q = ["aria-label"], eJ = ["inert", "aria-hidden"], tJ = { class: "expert-card-back-body" }, nJ = { class: "expert-card-heading" }, rJ = ["role"], iJ = {
47253
47266
  key: 1,
47254
47267
  class: "expert-card-field"
47255
- }, iJ = {
47268
+ }, aJ = {
47256
47269
  key: 2,
47257
47270
  class: "expert-card-field"
47258
- }, aJ = {
47271
+ }, oJ = {
47259
47272
  key: 3,
47260
47273
  class: "expert-card-check"
47261
- }, oJ = {
47274
+ }, sJ = {
47262
47275
  key: 4,
47263
47276
  class: "expert-card-field"
47264
- }, sJ = ["aria-label"], cJ = ["aria-checked", "onClick"], lJ = { class: "expert-card-field" }, uJ = {
47277
+ }, cJ = ["aria-label"], lJ = ["aria-checked", "onClick"], uJ = { class: "expert-card-field" }, dJ = {
47265
47278
  key: 0,
47266
47279
  class: "expert-card-catalog"
47267
- }, dJ = {
47280
+ }, fJ = {
47268
47281
  key: 1,
47269
47282
  class: "expert-card-effort"
47270
- }, fJ = {
47283
+ }, pJ = {
47271
47284
  key: 2,
47272
47285
  class: "expert-card-note"
47273
- }, pJ = ["aria-label", "disabled"], mJ = {
47286
+ }, mJ = ["aria-label", "disabled"], hJ = {
47274
47287
  key: 7,
47275
47288
  class: "expert-card-note"
47276
- }, hJ = { class: "expert-card-flip-actions" }, gJ = ["aria-label"], _J = ["aria-label"], vJ = 180, yJ = "[role='listbox'], [role='menu'], [data-reka-popper-content-wrapper]", bJ = /*#__PURE__*/ MH({
47289
+ }, gJ = { class: "expert-card-flip-actions" }, _J = ["aria-label"], vJ = ["aria-label"], yJ = 180, bJ = "[role='listbox'], [role='menu'], [data-reka-popper-content-wrapper]", xJ = /*#__PURE__*/ MH({
47277
47290
  __name: "ExpertCard",
47278
47291
  props: {
47279
47292
  name: {
@@ -47426,7 +47439,7 @@ var vq = /*#__PURE__*/ MH({
47426
47439
  });
47427
47440
  }
47428
47441
  function ge(e) {
47429
- let t = e >= vJ / 2;
47442
+ let t = e >= yJ / 2;
47430
47443
  f.value !== t && (f.value = t, he());
47431
47444
  }
47432
47445
  let _e = o.on("change", ge), M = o.on("animationComplete", he), ve = null, ye = "";
@@ -47458,12 +47471,12 @@ var vq = /*#__PURE__*/ MH({
47458
47471
  d.value && (e.stopPropagation(), e.preventDefault(), xe());
47459
47472
  }
47460
47473
  function we(e) {
47461
- c.value?.contains(e.target) || e.target.closest?.(yJ) || be(!1);
47474
+ c.value?.contains(e.target) || e.target.closest?.(bJ) || be(!1);
47462
47475
  }
47463
47476
  return R(d, (e) => {
47464
47477
  e ? document.addEventListener("pointerdown", we, !0) : document.removeEventListener("pointerdown", we, !0);
47465
47478
  }), R([d, s], ([e, t]) => {
47466
- let n = e ? vJ : 0;
47479
+ let n = e ? yJ : 0;
47467
47480
  t ? (o.jump(n), he()) : o.set(n);
47468
47481
  }), R(() => [
47469
47482
  te.value,
@@ -47509,7 +47522,7 @@ var vq = /*#__PURE__*/ MH({
47509
47522
  onClick: n[0] ||= (e) => be(!0)
47510
47523
  }, {
47511
47524
  default: L(() => [
47512
- K("span", Bq, [
47525
+ K("span", Vq, [
47513
47526
  q(s, {
47514
47527
  src: I(a).identities[e.name]?.icon,
47515
47528
  text: I(a).identities[e.name]?.initials,
@@ -47523,14 +47536,14 @@ var vq = /*#__PURE__*/ MH({
47523
47536
  "class"
47524
47537
  ]),
47525
47538
  K("strong", null, P(e.name), 1),
47526
- e.host ? (U(), W("span", Vq, "主持")) : Y("", !0)
47539
+ e.host ? (U(), W("span", Hq, "主持")) : Y("", !0)
47527
47540
  ]),
47528
- K("dl", Hq, [(U(!0), W(H, null, B(ue.value, (e) => (U(), W("div", { key: e.label }, [K("dt", null, P(e.label), 1), K("dd", {
47541
+ K("dl", Uq, [(U(!0), W(H, null, B(ue.value, (e) => (U(), W("div", { key: e.label }, [K("dt", null, P(e.label), 1), K("dd", {
47529
47542
  class: j(e.tone ? ["expert-card-status", `is-${e.tone}`] : ""),
47530
47543
  title: e.value
47531
- }, [e.tone ? (U(), W("i", Wq)) : Y("", !0), J(P(e.value), 1)], 10, Uq)]))), 128))]),
47532
- S.value ? (U(), W("div", Gq, [n[9] ||= K("p", null, "会话自行注册后才算到场。", -1), w.value ? (U(), W("p", Kq, P(w.value), 1)) : Y("", !0)])) : Y("", !0),
47533
- E.value ? (U(), W("span", qq, [q(d, { name: "i-lucide-settings-2" }), n[10] ||= J("设置", -1)])) : Y("", !0)
47544
+ }, [e.tone ? (U(), W("i", Gq)) : Y("", !0), J(P(e.value), 1)], 10, Wq)]))), 128))]),
47545
+ S.value ? (U(), W("div", Kq, [n[9] ||= K("p", null, "会话自行注册后才算到场。", -1), w.value ? (U(), W("p", qq, P(w.value), 1)) : Y("", !0)])) : Y("", !0),
47546
+ E.value ? (U(), W("span", Jq, [q(d, { name: "i-lucide-settings-2" }), n[10] ||= J("设置", -1)])) : Y("", !0)
47534
47547
  ]),
47535
47548
  _: 1
47536
47549
  }, 8, [
@@ -47553,8 +47566,8 @@ var vq = /*#__PURE__*/ MH({
47553
47566
  tabindex: e.mode === t ? 0 : -1,
47554
47567
  "data-mode": t,
47555
47568
  onClick: (e) => r("mode", t)
47556
- }, P(_[t]), 9, Yq))), 128))], 40, Jq)) : Y("", !0),
47557
- K("span", Xq, [e.hostable ? (U(), W("button", {
47569
+ }, P(_[t]), 9, Xq))), 128))], 40, Yq)) : Y("", !0),
47570
+ K("span", Zq, [e.hostable ? (U(), W("button", {
47558
47571
  key: 0,
47559
47572
  type: "button",
47560
47573
  class: "expert-card-host",
@@ -47562,19 +47575,19 @@ var vq = /*#__PURE__*/ MH({
47562
47575
  "aria-label": e.host ? `${e.name} 是主持人` : `设 ${e.name} 为主持人`,
47563
47576
  title: e.host ? "主持人" : "设为主持人",
47564
47577
  onClick: n[1] ||= (e) => r("host")
47565
- }, [q(d, { name: "i-lucide-crown" })], 8, Zq)) : Y("", !0), K("button", {
47578
+ }, [q(d, { name: "i-lucide-crown" })], 8, Qq)) : Y("", !0), K("button", {
47566
47579
  type: "button",
47567
47580
  "aria-label": `移出 ${e.name}`,
47568
47581
  title: "移出",
47569
47582
  onClick: n[2] ||= (e) => r("remove")
47570
- }, [q(d, { name: "i-lucide-x" })], 8, Qq)])
47571
- ], 8, zq), E.value ? (U(), W("div", {
47583
+ }, [q(d, { name: "i-lucide-x" })], 8, $q)])
47584
+ ], 8, Bq), E.value ? (U(), W("div", {
47572
47585
  key: 0,
47573
47586
  class: "expert-card-face expert-card-back",
47574
47587
  inert: !f.value,
47575
47588
  "aria-hidden": !f.value
47576
- }, [K("div", eJ, [
47577
- K("div", tJ, [K("strong", null, [J(P(e.name), 1), K("span", null, "设置" + P(oe.value ? " · 不访问项目" : ""), 1)]), v.value ? (U(), G(x, {
47589
+ }, [K("div", tJ, [
47590
+ K("div", nJ, [K("strong", null, [J(P(e.name), 1), K("span", null, "设置" + P(oe.value ? " · 不访问项目" : ""), 1)]), v.value ? (U(), G(x, {
47578
47591
  key: 0,
47579
47592
  icon: "i-lucide-zap",
47580
47593
  "aria-label": `检查 ${e.name} 的 API 配置`,
@@ -47595,8 +47608,8 @@ var vq = /*#__PURE__*/ MH({
47595
47608
  key: 0,
47596
47609
  role: y.value.state === "error" ? "alert" : "status",
47597
47610
  class: "expert-card-check"
47598
- }, P(y.value.message), 9, nJ)) : Y("", !0),
47599
- g.value && m.value.length > 1 ? (U(), W("div", rJ, [n[11] ||= K("span", null, "接入", -1), q(C, {
47611
+ }, P(y.value.message), 9, rJ)) : Y("", !0),
47612
+ g.value && m.value.length > 1 ? (U(), W("div", iJ, [n[11] ||= K("span", null, "接入", -1), q(C, {
47600
47613
  "model-value": p.value.adapter || "",
47601
47614
  items: m.value,
47602
47615
  placeholder: "选择 API / App / CLI",
@@ -47625,7 +47638,7 @@ var vq = /*#__PURE__*/ MH({
47625
47638
  "aria-label",
47626
47639
  "onUpdate:modelValue"
47627
47640
  ])]))), 128)),
47628
- T.value ? (U(), W("div", iJ, [n[12] ||= K("span", null, "会话", -1), q(ee, {
47641
+ T.value ? (U(), W("div", aJ, [n[12] ||= K("span", null, "会话", -1), q(ee, {
47629
47642
  "model-value": e.session,
47630
47643
  placeholder: "续接已有会话 ID,留空则新建",
47631
47644
  "aria-label": `${e.name} 要续接的已有会话 ID`,
@@ -47633,8 +47646,8 @@ var vq = /*#__PURE__*/ MH({
47633
47646
  class: "w-full",
47634
47647
  "onUpdate:modelValue": n[4] ||= (e) => r("session", e)
47635
47648
  }, null, 8, ["model-value", "aria-label"])])) : Y("", !0),
47636
- T.value && e.session.trim() && w.value ? (U(), W("p", aJ, P(w.value), 1)) : Y("", !0),
47637
- ae.value ? (U(), W("div", oJ, [n[13] ||= K("span", null, "项目", -1), K("div", {
47649
+ T.value && e.session.trim() && w.value ? (U(), W("p", oJ, P(w.value), 1)) : Y("", !0),
47650
+ ae.value ? (U(), W("div", sJ, [n[13] ||= K("span", null, "项目", -1), K("div", {
47638
47651
  class: "expert-card-modes",
47639
47652
  role: "radiogroup",
47640
47653
  "aria-label": `${e.name} 的项目文件权限`
@@ -47650,12 +47663,12 @@ var vq = /*#__PURE__*/ MH({
47650
47663
  role: "radio",
47651
47664
  "aria-checked": se.value === t.value,
47652
47665
  onClick: (n) => I(a).write_launch(e.name, "project_access", t.value)
47653
- }, P(t.label), 9, cJ)), 64))], 8, sJ)])) : Y("", !0),
47654
- v.value ? (U(), G(IG, {
47666
+ }, P(t.label), 9, lJ)), 64))], 8, cJ)])) : Y("", !0),
47667
+ v.value ? (U(), G(LG, {
47655
47668
  key: 5,
47656
47669
  name: e.name
47657
47670
  }, null, 8, ["name"])) : te.value && !me.value.length ? (U(), W(H, { key: 6 }, [
47658
- K("div", lJ, [n[14] ||= K("span", null, "模型", -1), q(C, {
47671
+ K("div", uJ, [n[14] ||= K("span", null, "模型", -1), q(C, {
47659
47672
  "model-value": p.value.model || "__default__",
47660
47673
  items: O.value.items,
47661
47674
  title: O.value.source,
@@ -47669,12 +47682,12 @@ var vq = /*#__PURE__*/ MH({
47669
47682
  "title",
47670
47683
  "aria-label"
47671
47684
  ])]),
47672
- O.value.loading || O.value.error ? (U(), W("div", uJ, [K("span", null, P(O.value.loading ? "正在读取软件模型列表…" : O.value.error), 1), !O.value.loading && O.value.error && I(i).launch.available ? (U(), W("button", {
47685
+ O.value.loading || O.value.error ? (U(), W("div", dJ, [K("span", null, P(O.value.loading ? "正在读取软件模型列表…" : O.value.error), 1), !O.value.loading && O.value.error && I(i).launch.available ? (U(), W("button", {
47673
47686
  key: 0,
47674
47687
  type: "button",
47675
47688
  onClick: n[6] ||= (t) => I(a).load_launch_models(e.name, !0)
47676
47689
  }, "重试")) : Y("", !0)])) : Y("", !0),
47677
- re.value ? (U(), W("div", dJ, [q(Lq, {
47690
+ re.value ? (U(), W("div", fJ, [q(Rq, {
47678
47691
  caption: "强度",
47679
47692
  items: re.value,
47680
47693
  "model-value": p.value.effort || "",
@@ -47684,7 +47697,7 @@ var vq = /*#__PURE__*/ MH({
47684
47697
  "items",
47685
47698
  "model-value",
47686
47699
  "label"
47687
- ])])) : (U(), W("p", fJ, P(O.value.effort_note), 1)),
47700
+ ])])) : (U(), W("p", pJ, P(O.value.effort_note), 1)),
47688
47701
  K("button", {
47689
47702
  type: "button",
47690
47703
  class: "expert-card-defaults",
@@ -47692,33 +47705,33 @@ var vq = /*#__PURE__*/ MH({
47692
47705
  "aria-label": `恢复 ${e.name} 的默认模型与强度`,
47693
47706
  disabled: !p.value.model && !p.value.effort,
47694
47707
  onClick: Se
47695
- }, "恢复默认", 8, pJ)
47696
- ], 64)) : (U(), W("p", mJ, [q(d, { name: e.mode === "online" ? "i-lucide-globe" : "i-lucide-monitor" }, null, 8, ["name"]), J(P(ne.value), 1)]))
47697
- ]), K("span", hJ, [K("button", {
47708
+ }, "恢复默认", 8, mJ)
47709
+ ], 64)) : (U(), W("p", hJ, [q(d, { name: e.mode === "online" ? "i-lucide-globe" : "i-lucide-monitor" }, null, 8, ["name"]), J(P(ne.value), 1)]))
47710
+ ]), K("span", gJ, [K("button", {
47698
47711
  type: "button",
47699
47712
  class: "expert-card-flip is-cancel",
47700
47713
  "aria-label": `放弃 ${e.name} 的修改`,
47701
47714
  onClick: xe
47702
- }, "取消", 8, gJ), K("button", {
47715
+ }, "取消", 8, _J), K("button", {
47703
47716
  ref_key: "back_button",
47704
47717
  ref: u,
47705
47718
  type: "button",
47706
47719
  class: "expert-card-flip is-done",
47707
47720
  "aria-label": `保存并返回 ${e.name} 角色卡片`,
47708
47721
  onClick: n[8] ||= (e) => be(!1)
47709
- }, [q(d, { name: "i-lucide-check" }), n[15] ||= J("完成", -1)], 8, _J)])], 8, $q)) : Y("", !0)]),
47722
+ }, [q(d, { name: "i-lucide-check" }), n[15] ||= J("完成", -1)], 8, vJ)])], 8, eJ)) : Y("", !0)]),
47710
47723
  _: 1
47711
- }, 8, ["style"])], 42, Rq);
47724
+ }, 8, ["style"])], 42, zq);
47712
47725
  };
47713
47726
  }
47714
- }, [["__scopeId", "data-v-e1a2ab87"]]), xJ = { class: "scheduler-settings" }, SJ = { class: "scheduler-title" }, CJ = {
47727
+ }, [["__scopeId", "data-v-e1a2ab87"]]), SJ = { class: "scheduler-settings" }, CJ = { class: "scheduler-title" }, wJ = {
47715
47728
  key: 0,
47716
47729
  class: "scheduler-cards"
47717
- }, wJ = { class: "scheduler-facts" }, TJ = ["title"], EJ = { class: "scheduler-flip" }, DJ = { class: "scheduler-back" }, OJ = { class: "scheduler-heading" }, kJ = { class: "scheduler-field" }, AJ = { class: "scheduler-field" }, jJ = { class: "scheduler-field" }, MJ = {
47730
+ }, TJ = { class: "scheduler-facts" }, EJ = ["title"], DJ = { class: "scheduler-flip" }, OJ = { class: "scheduler-back" }, kJ = { class: "scheduler-heading" }, AJ = { class: "scheduler-field" }, jJ = { class: "scheduler-field" }, MJ = { class: "scheduler-field" }, NJ = {
47718
47731
  key: 0,
47719
47732
  role: "alert",
47720
47733
  class: "scheduler-error"
47721
- }, NJ = ["role"], PJ = { class: "scheduler-flip-actions" }, FJ = "••••••••••••", IJ = /*#__PURE__*/ MH({
47734
+ }, PJ = ["role"], FJ = { class: "scheduler-flip-actions" }, IJ = "••••••••••••", LJ = /*#__PURE__*/ MH({
47722
47735
  __name: "SchedulerSettings",
47723
47736
  props: {
47724
47737
  free: {
@@ -47814,14 +47827,14 @@ var vq = /*#__PURE__*/ MH({
47814
47827
  }
47815
47828
  }
47816
47829
  return (t, f) => {
47817
- let x = WV, S = $K, C = sA, w = MA, T = bH, ee = DG, E = YV;
47818
- return U(), W("div", xJ, [q(S, {
47830
+ let x = WV, S = eq, C = sA, w = MA, T = bH, ee = OG, E = YV;
47831
+ return U(), W("div", SJ, [q(S, {
47819
47832
  "model-value": !!i.value.enabled && !e.blocker,
47820
47833
  disabled: !!e.blocker,
47821
47834
  description: e.blocker ? `${y.value}(${e.blocker})` : y.value,
47822
47835
  "onUpdate:modelValue": f[0] ||= (e) => I(r).write_scheduler("enabled", e)
47823
47836
  }, {
47824
- label: L(() => [K("span", SJ, [
47837
+ label: L(() => [K("span", CJ, [
47825
47838
  f[7] ||= J("智能调度", -1),
47826
47839
  q(x, {
47827
47840
  size: "xs",
@@ -47838,8 +47851,8 @@ var vq = /*#__PURE__*/ MH({
47838
47851
  "model-value",
47839
47852
  "disabled",
47840
47853
  "description"
47841
- ]), i.value.enabled && !e.blocker ? (U(), W("div", CJ, [K("div", { class: j(["scheduler-card", { "is-editing": d.value }]) }, [d.value ? (U(), W(H, { key: 1 }, [K("div", DJ, [
47842
- K("div", OJ, [f[15] ||= K("strong", null, [J("决策模型"), K("span", null, "设置")], -1), q(w, {
47854
+ ]), i.value.enabled && !e.blocker ? (U(), W("div", wJ, [K("div", { class: j(["scheduler-card", { "is-editing": d.value }]) }, [d.value ? (U(), W(H, { key: 1 }, [K("div", OJ, [
47855
+ K("div", kJ, [f[15] ||= K("strong", null, [J("决策模型"), K("span", null, "设置")], -1), q(w, {
47843
47856
  icon: "i-lucide-zap",
47844
47857
  "aria-label": "检查智能调度配置",
47845
47858
  title: "检查配置:向决策模型发送一道极短的是非题,核对供应商、模型与密钥",
@@ -47854,7 +47867,7 @@ var vq = /*#__PURE__*/ MH({
47854
47867
  "loading",
47855
47868
  "disabled"
47856
47869
  ])]),
47857
- K("div", kJ, [f[16] ||= K("span", null, "供应商", -1), q(T, {
47870
+ K("div", AJ, [f[16] ||= K("span", null, "供应商", -1), q(T, {
47858
47871
  "model-value": i.value.provider || "",
47859
47872
  items: a.value,
47860
47873
  "aria-label": "智能调度供应商",
@@ -47862,7 +47875,7 @@ var vq = /*#__PURE__*/ MH({
47862
47875
  class: "w-full",
47863
47876
  "onUpdate:modelValue": f[1] ||= (e) => I(r).write_scheduler("provider", e)
47864
47877
  }, null, 8, ["model-value", "items"])]),
47865
- K("div", AJ, [f[17] ||= K("span", null, "模型", -1), q(ee, {
47878
+ K("div", jJ, [f[17] ||= K("span", null, "模型", -1), q(ee, {
47866
47879
  mode: "autocomplete",
47867
47880
  "ignore-filter": "",
47868
47881
  "model-value": i.value.model || "",
@@ -47874,7 +47887,7 @@ var vq = /*#__PURE__*/ MH({
47874
47887
  class: "w-full",
47875
47888
  "onUpdate:modelValue": f[2] ||= (e) => I(r).write_scheduler("model", e)
47876
47889
  }, null, 8, ["model-value", "items"])]),
47877
- K("div", jJ, [f[18] ||= K("span", null, "密钥", -1), q(E, {
47890
+ K("div", MJ, [f[18] ||= K("span", null, "密钥", -1), q(E, {
47878
47891
  modelValue: s.value,
47879
47892
  "onUpdate:modelValue": f[4] ||= (e) => s.value = e,
47880
47893
  type: "text",
@@ -47882,7 +47895,7 @@ var vq = /*#__PURE__*/ MH({
47882
47895
  spellcheck: "false",
47883
47896
  "data-1p-ignore": "",
47884
47897
  "data-lpignore": "true",
47885
- placeholder: i.value.api_key_ref ? FJ : "填写所选供应商的 API Key",
47898
+ placeholder: i.value.api_key_ref ? IJ : "填写所选供应商的 API Key",
47886
47899
  title: i.value.api_key_ref && !s.value ? "已保存;本机不回传密钥,输入新 Key 可更换" : void 0,
47887
47900
  "aria-label": "智能调度 API Key",
47888
47901
  size: "xs",
@@ -47917,14 +47930,14 @@ var vq = /*#__PURE__*/ MH({
47917
47930
  "loading",
47918
47931
  "ui"
47919
47932
  ])]),
47920
- u.value ? (U(), W("p", MJ, P(u.value), 1)) : Y("", !0),
47933
+ u.value ? (U(), W("p", NJ, P(u.value), 1)) : Y("", !0),
47921
47934
  _.value.message ? (U(), W("p", {
47922
47935
  key: 1,
47923
47936
  role: _.value.state === "error" ? "alert" : "status",
47924
47937
  class: j(_.value.state === "error" ? "scheduler-error" : "scheduler-ok")
47925
- }, P(_.value.message), 11, NJ)) : Y("", !0),
47938
+ }, P(_.value.message), 11, PJ)) : Y("", !0),
47926
47939
  f[19] ||= K("p", { class: "scheduler-note" }, "决策模型只做选择、不生成文本,只按输入计费。判断时会把房间标题和最近 10 条消息发给所选供应商;密钥只存本机。", -1)
47927
- ]), K("span", PJ, [K("button", {
47940
+ ]), K("span", FJ, [K("button", {
47928
47941
  type: "button",
47929
47942
  class: "scheduler-flip is-cancel",
47930
47943
  "aria-label": "放弃决策模型的修改",
@@ -47943,46 +47956,46 @@ var vq = /*#__PURE__*/ MH({
47943
47956
  onClick: p
47944
47957
  }, [
47945
47958
  f[14] ||= K("strong", null, "决策模型", -1),
47946
- K("dl", wJ, [
47959
+ K("dl", TJ, [
47947
47960
  K("div", null, [f[10] ||= K("dt", null, "状态", -1), K("dd", { class: j(`is-${g.value.tone}`) }, [f[9] ||= K("i", { "aria-hidden": "true" }, null, -1), J(P(g.value.text), 1)], 2)]),
47948
47961
  K("div", null, [f[11] ||= K("dt", null, "供应商", -1), K("dd", null, P(h.value), 1)]),
47949
- K("div", null, [f[12] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, TJ)])
47962
+ K("div", null, [f[12] ||= K("dt", null, "模型", -1), K("dd", { title: i.value.model }, P(i.value.model || "未选择"), 9, EJ)])
47950
47963
  ]),
47951
- K("span", EJ, [q(C, { name: "i-lucide-settings-2" }), f[13] ||= J("设置", -1)])
47964
+ K("span", DJ, [q(C, { name: "i-lucide-settings-2" }), f[13] ||= J("设置", -1)])
47952
47965
  ]))], 2)])) : Y("", !0)]);
47953
47966
  };
47954
47967
  }
47955
- }, [["__scopeId", "data-v-6b186313"]]), LJ = { class: "create-discussion" }, RJ = {
47968
+ }, [["__scopeId", "data-v-6b186313"]]), RJ = { class: "create-discussion" }, zJ = {
47956
47969
  key: 0,
47957
47970
  class: "create-connect",
47958
47971
  role: "status"
47959
- }, zJ = { class: "create-connect-command" }, BJ = {
47972
+ }, BJ = { class: "create-connect-command" }, VJ = {
47960
47973
  key: 1,
47961
47974
  class: "channel-create-location"
47962
- }, VJ = { class: "create-section" }, HJ = { class: "create-section" }, UJ = {
47975
+ }, HJ = { class: "create-section" }, UJ = { class: "create-section" }, WJ = {
47963
47976
  key: 0,
47964
47977
  class: "fine-print create-hint"
47965
- }, WJ = {
47978
+ }, GJ = [
47979
+ "disabled",
47980
+ "title",
47981
+ "aria-label",
47982
+ "onClick"
47983
+ ], KJ = {
47966
47984
  key: 1,
47967
47985
  class: "create-experts",
47968
47986
  role: "group",
47969
47987
  "aria-label": "参与的 AI"
47970
- }, GJ = {
47988
+ }, qJ = {
47971
47989
  key: 2,
47972
47990
  class: "create-experts-empty"
47973
- }, KJ = [
47974
- "disabled",
47975
- "title",
47976
- "aria-label",
47977
- "onClick"
47978
- ], qJ = {
47991
+ }, JJ = {
47979
47992
  key: 3,
47980
47993
  class: "fine-print create-hint create-host-hint"
47981
- }, JJ = { class: "create-section" }, YJ = { class: "create-footer" }, XJ = {
47994
+ }, YJ = { class: "create-section" }, XJ = { class: "create-footer" }, ZJ = {
47982
47995
  key: 0,
47983
47996
  role: "alert",
47984
47997
  class: "create-error"
47985
- }, ZJ = { class: "create-footer-row" }, QJ = ["title"], $J = "new-expert-modes", eY = 3e3, tY = /*#__PURE__*/ MH({
47998
+ }, QJ = { class: "create-footer-row" }, $J = ["title"], eY = "new-expert-modes", tY = 3e3, nY = /*#__PURE__*/ MH({
47986
47999
  __name: "CreateDiscussion",
47987
48000
  props: { targetFolder: {
47988
48001
  type: Object,
@@ -47990,7 +48003,7 @@ var vq = /*#__PURE__*/ MH({
47990
48003
  } },
47991
48004
  emits: ["submit", "cancel"],
47992
48005
  setup(e, { emit: t }) {
47993
- let n = t, { view: r, bridge: i, pending: a, act: o } = xr("discussion"), s = Object.keys(i.identities).filter((e) => e !== "用户"), c = (e) => `new-room-${e}`, l = (e) => r.value.fields[c(e)] ?? "", u = (e, t) => i.write_field(c(e), t), d = Z(() => !!r.value.create_discussion), f = Z(() => r.value.experts[$J] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
48006
+ let n = t, { view: r, bridge: i, pending: a, act: o } = xr("discussion"), s = Object.keys(i.identities).filter((e) => e !== "用户"), c = (e) => `new-room-${e}`, l = (e) => r.value.fields[c(e)] ?? "", u = (e, t) => i.write_field(c(e), t), d = Z(() => !!r.value.create_discussion), f = Z(() => r.value.experts[eY] || {}), p = /* @__PURE__ */ F([]), m = Z(() => Object.keys(f.value).filter((e) => f.value[e]));
47994
48007
  R(m, (e) => {
47995
48008
  p.value = [...p.value.filter((t) => e.includes(t)), ...e.filter((e) => !p.value.includes(e))];
47996
48009
  }, { immediate: !0 });
@@ -48013,14 +48026,14 @@ var vq = /*#__PURE__*/ MH({
48013
48026
  Qi(() => {
48014
48027
  ae(), re = window.setInterval(() => {
48015
48028
  ne.value && !document.hidden && o("check_launch_connection");
48016
- }, eY);
48029
+ }, tY);
48017
48030
  }), ta(() => window.clearInterval(re));
48018
48031
  function oe(e) {
48019
48032
  i.write_create_discussion(e), Qn(ae);
48020
48033
  }
48021
48034
  let k = (e) => i.launch_clients[e]?.some((e) => e.value !== "api"), se = (e) => d.value && e === v.value ? [] : ["cli", "manual"];
48022
48035
  function ce(e, t) {
48023
- t === "cli" && !k(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert($J, e, t), ae();
48036
+ t === "cli" && !k(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), i.write_expert(eY, e, t), ae();
48024
48037
  }
48025
48038
  function le(e) {
48026
48039
  if (f.value[e] === "online") return {
@@ -48044,7 +48057,7 @@ var vq = /*#__PURE__*/ MH({
48044
48057
  return g(e) ? `已加入 ${g(e)} 位 · 可继续添加` : k(e) ? "API / 本地 App / CLI / 手动启动" : "API / 手动启动";
48045
48058
  }
48046
48059
  function de(e) {
48047
- i.launch_clients[e] && (!k(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), g(e) ? i.add_instance($J, e, "cli") : ce(e, "cli"), ae());
48060
+ i.launch_clients[e] && (!k(e) && !r.value.launch.profiles[e]?.adapter && i.write_launch(e, "adapter", "api"), g(e) ? i.add_instance(eY, e, "cli") : ce(e, "cli"), ae());
48048
48061
  }
48049
48062
  function fe(e) {
48050
48063
  ce(e, ""), Qn(() => _.value?.querySelector("button:not(:disabled)")?.focus({ preventScroll: !0 }));
@@ -48069,26 +48082,26 @@ var vq = /*#__PURE__*/ MH({
48069
48082
  ];
48070
48083
  if (d.value) {
48071
48084
  let e = l("limit-max_rounds"), n = l("limit-max_minutes");
48072
- t.push("开启讨论", [e && Number(e) ? `${e} 轮` : "不限轮次", n && Number(n) ? _q(Number(n)) : "不限时长"].join(" / "));
48085
+ t.push("开启讨论", [e && Number(e) ? `${e} 轮` : "不限轮次", n && Number(n) ? vq(Number(n)) : "不限时长"].join(" / "));
48073
48086
  }
48074
48087
  return t.join(" · ");
48075
48088
  });
48076
48089
  return (t, c) => {
48077
- let p = sA, m = MA, g = YV, x = zV, C = pA, w = $K, E = HV;
48078
- return U(), W("div", LJ, [K("form", {
48090
+ let p = sA, m = MA, g = YV, x = zV, C = pA, w = eq, E = HV;
48091
+ return U(), W("div", RJ, [K("form", {
48079
48092
  id: "create-discussion-form",
48080
48093
  class: "create-scroll dialog-form",
48081
48094
  onSubmit: uu(me, ["prevent"])
48082
48095
  }, [
48083
- ne.value ? (U(), W("div", RJ, [K("p", null, [q(p, { name: "i-lucide-plug-zap" }), c[10] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", zJ, [K("code", null, P(I(r).launch.connect_command), 1), q(m, {
48096
+ ne.value ? (U(), W("div", zJ, [K("p", null, [q(p, { name: "i-lucide-plug-zap" }), c[10] ||= J("本机服务未连接,连接后才能唤醒本机 AI。在运行 AI 的电脑上执行下面的命令并完成网页授权,连上后自动检测。", -1)]), K("div", BJ, [K("code", null, P(I(r).launch.connect_command), 1), q(m, {
48084
48097
  icon: "i-lucide-copy",
48085
48098
  "aria-label": "复制本机连接命令",
48086
48099
  variant: "ghost",
48087
48100
  color: "neutral",
48088
48101
  onClick: c[0] ||= (e) => I(o)("copy", I(r).launch.connect_command)
48089
48102
  })])])) : Y("", !0),
48090
- e.targetFolder?.id ? (U(), W("p", BJ, [q(p, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48091
- K("section", VJ, [
48103
+ e.targetFolder?.id ? (U(), W("p", VJ, [q(p, { name: "i-lucide-folder" }), J(P(e.targetFolder.name), 1)])) : Y("", !0),
48104
+ K("section", HJ, [
48092
48105
  c[11] ||= K("h3", null, [K("span", null, "1"), J("这次做什么")], -1),
48093
48106
  q(x, {
48094
48107
  label: "话题名称",
@@ -48133,32 +48146,9 @@ var vq = /*#__PURE__*/ MH({
48133
48146
  _: 1
48134
48147
  }, 8, ["description"])
48135
48148
  ]),
48136
- K("section", HJ, [
48149
+ K("section", UJ, [
48137
48150
  c[13] ||= K("h3", null, [K("span", null, "2"), J("谁来参与")], -1),
48138
- h.value.length ? (U(), W("p", UJ, "每位成员可选本机唤醒,或手动(你来启动或代发,网页 AI 选手动)。")) : Y("", !0),
48139
- h.value.length ? (U(), W("div", WJ, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(bJ, {
48140
- key: e,
48141
- name: e,
48142
- mode: f.value[e],
48143
- choices: se(e),
48144
- status: le(e),
48145
- host: v.value === e,
48146
- hostable: y.value.includes(e),
48147
- hosting: "",
48148
- onHost: (t) => u("host", e),
48149
- onRemove: (t) => fe(e),
48150
- onMode: (t) => ce(e, t)
48151
- }, null, 8, [
48152
- "name",
48153
- "mode",
48154
- "choices",
48155
- "status",
48156
- "host",
48157
- "hostable",
48158
- "onHost",
48159
- "onRemove",
48160
- "onMode"
48161
- ]))), 128))])) : (U(), W("p", GJ, "可以先不添加成员,建房后再邀请。同一平台可添加多位,各自独立会话。")),
48151
+ h.value.length ? (U(), W("p", WJ, "每位成员可选本机唤醒,或手动(你来启动或代发,网页 AI 选手动)。")) : Y("", !0),
48162
48152
  K("div", {
48163
48153
  ref_key: "library",
48164
48154
  ref: _,
@@ -48187,14 +48177,37 @@ var vq = /*#__PURE__*/ MH({
48187
48177
  ]),
48188
48178
  J(P(e), 1),
48189
48179
  q(p, { name: "i-lucide-plus" })
48190
- ], 8, KJ))), 128))], 512),
48191
- h.value.length ? (U(), W("div", qJ, [q(p, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48192
- q(IJ, {
48180
+ ], 8, GJ))), 128))], 512),
48181
+ h.value.length ? (U(), W("div", KJ, [(U(!0), W(H, null, B(h.value, (e) => (U(), G(xJ, {
48182
+ key: e,
48183
+ name: e,
48184
+ mode: f.value[e],
48185
+ choices: se(e),
48186
+ status: le(e),
48187
+ host: v.value === e,
48188
+ hostable: y.value.includes(e),
48189
+ hosting: "",
48190
+ onHost: (t) => u("host", e),
48191
+ onRemove: (t) => fe(e),
48192
+ onMode: (t) => ce(e, t)
48193
+ }, null, 8, [
48194
+ "name",
48195
+ "mode",
48196
+ "choices",
48197
+ "status",
48198
+ "host",
48199
+ "hostable",
48200
+ "onHost",
48201
+ "onRemove",
48202
+ "onMode"
48203
+ ]))), 128))])) : (U(), W("p", qJ, "可以先不添加成员,建房后再邀请。同一平台可添加多位,各自独立会话。")),
48204
+ h.value.length ? (U(), W("div", JJ, [q(p, { name: "i-lucide-crown" }), K("span", null, P(y.value.length ? "点卡片上的皇冠指定主持人:没 @ 任何人的消息由它分配;其他成员只在被你或主持人点名时发言。" : "需要一位本地 AI 做主持人,没 @ 的消息才有人接。"), 1)])) : Y("", !0),
48205
+ q(LJ, {
48193
48206
  free: !0,
48194
48207
  blocker: O.value
48195
48208
  }, null, 8, ["blocker"])
48196
48209
  ]),
48197
- K("section", JJ, [
48210
+ K("section", YJ, [
48198
48211
  c[14] ||= K("h3", null, [K("span", null, "3"), J("推进方式(可选)")], -1),
48199
48212
  q(w, {
48200
48213
  "model-value": d.value,
@@ -48217,7 +48230,7 @@ var vq = /*#__PURE__*/ MH({
48217
48230
  "onUpdate:modelValue": c[4] ||= (e) => u("goal", e)
48218
48231
  }, null, 8, ["model-value"])]),
48219
48232
  _: 1
48220
- }), q(Cq, {
48233
+ }), q(wq, {
48221
48234
  ref_key: "limit_picker",
48222
48235
  ref: b,
48223
48236
  rounds: Number(l("limit-max_rounds")),
@@ -48240,7 +48253,7 @@ var vq = /*#__PURE__*/ MH({
48240
48253
  "execution_minutes"
48241
48254
  ])], 64)) : Y("", !0)
48242
48255
  ])
48243
- ], 32), K("footer", YJ, [T.value && I(r).launch.error ? (U(), W("p", XJ, P(I(r).launch.error), 1)) : Y("", !0), K("div", ZJ, [
48256
+ ], 32), K("footer", XJ, [T.value && I(r).launch.error ? (U(), W("p", ZJ, P(I(r).launch.error), 1)) : Y("", !0), K("div", QJ, [
48244
48257
  K("span", {
48245
48258
  class: j(["create-summary", { "is-blocked": ie.value }]),
48246
48259
  title: ie.value || he.value,
@@ -48248,7 +48261,7 @@ var vq = /*#__PURE__*/ MH({
48248
48261
  }, [ie.value ? (U(), G(p, {
48249
48262
  key: 0,
48250
48263
  name: "i-lucide-circle-alert"
48251
- })) : Y("", !0), J(P(ie.value ? `还差:${ie.value}` : h.value.length || d.value ? he.value : ""), 1)], 10, QJ),
48264
+ })) : Y("", !0), J(P(ie.value ? `还差:${ie.value}` : h.value.length || d.value ? he.value : ""), 1)], 10, $J),
48252
48265
  q(m, {
48253
48266
  label: "取消",
48254
48267
  color: "neutral",
@@ -48272,46 +48285,46 @@ var vq = /*#__PURE__*/ MH({
48272
48285
  ])])]);
48273
48286
  };
48274
48287
  }
48275
- }, [["__scopeId", "data-v-1310345e"]]), nY = {
48288
+ }, [["__scopeId", "data-v-e3d9b738"]]), rY = {
48276
48289
  class: "account-settings",
48277
48290
  "aria-labelledby": "account-heading"
48278
- }, rY = {
48291
+ }, iY = {
48279
48292
  key: 0,
48280
48293
  class: "fine-print",
48281
48294
  role: "status"
48282
- }, iY = ["aria-label"], aY = { class: "fine-print account-intro" }, oY = {
48295
+ }, aY = ["aria-label"], oY = { class: "fine-print account-intro" }, sY = {
48283
48296
  key: 0,
48284
48297
  class: "account-message is-error",
48285
48298
  role: "status"
48286
- }, sY = {
48287
- key: 1,
48288
- class: "fine-print"
48289
48299
  }, cY = {
48290
48300
  key: 1,
48291
48301
  class: "fine-print"
48292
48302
  }, lY = {
48303
+ key: 1,
48304
+ class: "fine-print"
48305
+ }, uY = {
48293
48306
  key: 2,
48294
48307
  class: "account-message is-error",
48295
48308
  role: "alert"
48296
- }, uY = {
48309
+ }, dY = {
48297
48310
  key: 3,
48298
48311
  class: "account-message",
48299
48312
  role: "status"
48300
- }, dY = { class: "account-actions" }, fY = {
48313
+ }, fY = { class: "account-actions" }, pY = {
48301
48314
  key: 2,
48302
48315
  class: "account-profile"
48303
- }, pY = { class: "account-identity" }, mY = { class: "account-avatar-actions" }, hY = { class: "account-actions" }, gY = {
48316
+ }, mY = { class: "account-identity" }, hY = { class: "account-avatar-actions" }, gY = { class: "account-actions" }, _Y = {
48304
48317
  key: 0,
48305
48318
  class: "account-message is-error",
48306
48319
  role: "alert"
48307
- }, _Y = {
48320
+ }, vY = {
48308
48321
  key: 1,
48309
48322
  class: "account-message",
48310
48323
  role: "status"
48311
- }, vY = {
48324
+ }, yY = {
48312
48325
  key: 2,
48313
48326
  class: "account-signout account-actions"
48314
- }, yY = {
48327
+ }, bY = {
48315
48328
  __name: "AccountSettings",
48316
48329
  setup(e) {
48317
48330
  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({
@@ -48379,13 +48392,13 @@ var vq = /*#__PURE__*/ MH({
48379
48392
  }
48380
48393
  return (e, t) => {
48381
48394
  let p = YV, y = zV, b = MA, x = pA;
48382
- return U(), W("section", nY, [t[8] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", rY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48395
+ return U(), W("section", rY, [t[8] ||= K("h3", { id: "account-heading" }, "账号", -1), a.value === "loading" ? (U(), W("p", iY, "正在读取账号状态…")) : a.value === "register" || a.value === "login" ? (U(), W("form", {
48383
48396
  key: 1,
48384
48397
  class: "dialog-form account-form",
48385
48398
  "aria-label": a.value === "register" ? "设置管理员账号" : "登录管理员账号",
48386
48399
  onSubmit: uu(m, ["prevent"])
48387
48400
  }, [
48388
- K("p", aY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48401
+ K("p", oY, [a.value === "register" ? (U(), W(H, { key: 0 }, [J("设置站点管理员账号:名称和头像对所有访客可见,登录后可在没有房间凭据的浏览器中存档、恢复、删除房间。")], 64)) : (U(), W(H, { key: 1 }, [J("登录后可管理房间;未登录时仍可阅读并使用本浏览器创建的房间。")], 64))]),
48389
48402
  q(y, {
48390
48403
  label: "用户名",
48391
48404
  description: a.value === "register" ? "1–30 个字符,也是公开显示的名称" : void 0,
@@ -48452,18 +48465,18 @@ var vq = /*#__PURE__*/ MH({
48452
48465
  }, null, 8, ["modelValue", "disabled"])]),
48453
48466
  _: 1
48454
48467
  }),
48455
- f.value ? (U(), W("p", oY, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", sY, [...t[6] ||= [
48468
+ f.value ? (U(), W("p", sY, "服务端未配置安装令牌,暂时无法注册。本地版请设置环境变量 DISCUSS_ADMIN_SETUP_KEY 后重启;Cloudflare 版请配置部署机密 ADMIN_SETUP_KEY。")) : (U(), W("p", cY, [...t[6] ||= [
48456
48469
  J("首个注册者需要安装令牌,防止他人抢注。本地版见服务端启动日志;Cloudflare 版为部署机密 ADMIN_SETUP_KEY。忘记密码:本地版运行 ", -1),
48457
48470
  K("code", null, "python server.py --reset-admin", -1),
48458
48471
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48459
48472
  ]]))
48460
- ], 64)) : (U(), W("p", cY, [...t[7] ||= [
48473
+ ], 64)) : (U(), W("p", lY, [...t[7] ||= [
48461
48474
  J("忘记密码:本地版运行 ", -1),
48462
48475
  K("code", null, "python server.py --reset-admin", -1),
48463
48476
  J(" 后重新注册;Cloudflare 版需清空管理员表(见部署文档)。", -1)
48464
48477
  ]])),
48465
- s.auth.error ? (U(), W("p", lY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", uY, P(s.auth.notice), 1)) : Y("", !0),
48466
- K("div", dY, [q(b, {
48478
+ s.auth.error ? (U(), W("p", uY, P(s.auth.error), 1)) : s.auth.notice ? (U(), W("p", dY, P(s.auth.notice), 1)) : Y("", !0),
48479
+ K("div", fY, [q(b, {
48467
48480
  type: "submit",
48468
48481
  class: "channel-primary-button",
48469
48482
  label: a.value === "register" ? "创建并登录" : "登录",
@@ -48474,13 +48487,13 @@ var vq = /*#__PURE__*/ MH({
48474
48487
  "loading",
48475
48488
  "disabled"
48476
48489
  ])])
48477
- ], 40, iY)) : (U(), W("div", fY, [
48478
- K("div", pY, [q(x, {
48490
+ ], 40, aY)) : (U(), W("div", pY, [
48491
+ K("div", mY, [q(x, {
48479
48492
  src: I(n).identities.用户.icon,
48480
48493
  alt: `${I(n).display_name("用户")} 的头像`,
48481
48494
  size: "lg",
48482
48495
  class: "channel-avatar user account-avatar"
48483
- }, null, 8, ["src", "alt"]), K("div", mY, [
48496
+ }, null, 8, ["src", "alt"]), K("div", hY, [
48484
48497
  K("input", {
48485
48498
  ref_key: "avatar_input",
48486
48499
  ref: u,
@@ -48528,7 +48541,7 @@ var vq = /*#__PURE__*/ MH({
48528
48541
  "aria-label": "显示名称"
48529
48542
  }, null, 8, ["modelValue"])]),
48530
48543
  _: 1
48531
- }), K("div", hY, [q(b, {
48544
+ }), K("div", gY, [q(b, {
48532
48545
  type: "submit",
48533
48546
  label: "保存名称",
48534
48547
  color: "neutral",
@@ -48537,8 +48550,8 @@ var vq = /*#__PURE__*/ MH({
48537
48550
  loading: o.value === "name",
48538
48551
  disabled: !!o.value || !d.value || !l.value.trim()
48539
48552
  }, null, 8, ["loading", "disabled"])])], 32),
48540
- s.profile.error ? (U(), W("p", gY, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", _Y, P(s.profile.notice), 1)) : Y("", !0),
48541
- r.value.local ? Y("", !0) : (U(), W("div", vY, [q(b, {
48553
+ s.profile.error ? (U(), W("p", _Y, P(s.profile.error), 1)) : s.profile.notice ? (U(), W("p", vY, P(s.profile.notice), 1)) : Y("", !0),
48554
+ r.value.local ? Y("", !0) : (U(), W("div", yY, [q(b, {
48542
48555
  label: "退出登录",
48543
48556
  icon: "i-lucide-log-out",
48544
48557
  color: "neutral",
@@ -48551,65 +48564,65 @@ var vq = /*#__PURE__*/ MH({
48551
48564
  ]))]);
48552
48565
  };
48553
48566
  }
48554
- }, bY = {
48567
+ }, xY = {
48555
48568
  key: 0,
48556
48569
  class: "channel-archive-manager"
48557
- }, xY = { class: "channel-archive-toolbar" }, SY = {
48570
+ }, SY = { class: "channel-archive-toolbar" }, CY = {
48558
48571
  key: 0,
48559
48572
  class: "channel-archive-confirm channel-archive-bulk",
48560
48573
  role: "alert"
48561
- }, CY = {
48574
+ }, wY = {
48562
48575
  key: 1,
48563
48576
  role: "alert",
48564
48577
  class: "channel-directory-error"
48565
- }, wY = { class: "channel-archive-results" }, TY = {
48578
+ }, TY = { class: "channel-archive-results" }, EY = {
48566
48579
  key: 0,
48567
48580
  class: "channel-archive-list",
48568
48581
  "aria-label": "已存档房间列表"
48569
- }, EY = { class: "channel-archive-row" }, DY = { class: "channel-archive-info" }, OY = [
48582
+ }, DY = { class: "channel-archive-row" }, OY = { class: "channel-archive-info" }, kY = [
48570
48583
  "title",
48571
48584
  "disabled",
48572
48585
  "onClick"
48573
- ], kY = { key: 0 }, AY = ["datetime"], jY = { class: "channel-archive-actions" }, MY = {
48586
+ ], AY = { key: 0 }, jY = ["datetime"], MY = { class: "channel-archive-actions" }, NY = {
48574
48587
  key: 0,
48575
48588
  class: "channel-archive-confirm channel-archive-bulk",
48576
48589
  role: "alert"
48577
- }, NY = {
48590
+ }, PY = {
48578
48591
  key: 1,
48579
48592
  class: "channel-archive-empty"
48580
- }, PY = { class: "fine-print" }, FY = { class: "dialog-actions" }, IY = { class: "dialog-actions" }, LY = { class: "channel-management-target" }, RY = {
48593
+ }, FY = { class: "fine-print" }, IY = { class: "dialog-actions" }, LY = { class: "dialog-actions" }, RY = { class: "channel-management-target" }, zY = {
48581
48594
  key: 0,
48582
48595
  class: "fine-print"
48583
- }, zY = {
48596
+ }, BY = {
48584
48597
  key: 1,
48585
48598
  class: "fine-print"
48586
- }, BY = {
48599
+ }, VY = {
48587
48600
  key: 2,
48588
48601
  class: "fine-print"
48589
- }, VY = { class: "dialog-actions" }, HY = { key: 4 }, UY = { class: "theme-choices" }, WY = ["aria-pressed", "onClick"], GY = { class: "theme-check" }, KY = { class: "channel-reading-setting" }, qY = {
48602
+ }, HY = { class: "dialog-actions" }, UY = { key: 4 }, WY = { class: "theme-choices" }, GY = ["aria-pressed", "onClick"], KY = { class: "theme-check" }, qY = { class: "channel-reading-setting" }, JY = {
48590
48603
  class: "channel-reading-options",
48591
48604
  role: "group",
48592
48605
  "aria-labelledby": "channel-reading-label"
48593
- }, JY = { class: "channel-reading-setting" }, YY = {
48606
+ }, YY = { class: "channel-reading-setting" }, XY = {
48594
48607
  class: "channel-reading-options channel-effect-options",
48595
48608
  role: "group",
48596
48609
  "aria-labelledby": "channel-effects-label"
48597
- }, XY = { class: "form-two-columns" }, ZY = { class: "advanced-content" }, QY = {
48610
+ }, ZY = { class: "form-two-columns" }, QY = { class: "advanced-content" }, $Y = {
48598
48611
  key: 0,
48599
48612
  class: "fine-print"
48600
- }, $Y = { class: "advanced-content" }, eX = { class: "expert-fields" }, tX = { class: "dialog-actions" }, nX = { class: "dialog-actions" }, rX = {
48613
+ }, eX = { class: "advanced-content" }, tX = { class: "expert-fields" }, nX = { class: "dialog-actions" }, rX = { class: "dialog-actions" }, iX = {
48601
48614
  key: 8,
48602
48615
  class: "original-message"
48603
- }, iX = {
48616
+ }, aX = {
48604
48617
  key: 0,
48605
48618
  role: "alert"
48606
- }, aX = { class: "original-meta" }, oX = { class: "fine-print" }, sX = {
48619
+ }, oX = { class: "original-meta" }, sX = { class: "fine-print" }, cX = {
48607
48620
  key: 0,
48608
48621
  class: "channel-answer-summary"
48609
- }, cX = { class: "message-prose" }, lX = { class: "message-prose" }, uX = ["innerHTML"], dX = {
48622
+ }, lX = { class: "message-prose" }, uX = { class: "message-prose" }, dX = ["innerHTML"], fX = {
48610
48623
  key: 2,
48611
48624
  class: "fine-print"
48612
- }, fX = "topic-expert-modes", pX = {
48625
+ }, pX = "topic-expert-modes", mX = {
48613
48626
  __name: "WorkspaceDialogs",
48614
48627
  props: /*@__PURE__*/ Fa({
48615
48628
  detailId: {
@@ -48859,7 +48872,7 @@ var vq = /*#__PURE__*/ MH({
48859
48872
  }
48860
48873
  let Ce = (e) => e.preventDefault();
48861
48874
  return (t, c) => {
48862
- let x = YV, S = bH, de = MA, fe = zV, ye = sA, N = HV, we = ZK, Te = WV, Ee = YK;
48875
+ let x = YV, S = bH, de = MA, fe = zV, ye = sA, N = HV, we = QK, Te = WV, Ee = XK;
48863
48876
  return U(), G(Ee, {
48864
48877
  open: d.value,
48865
48878
  "onUpdate:open": c[25] ||= (e) => d.value = e,
@@ -48880,8 +48893,8 @@ var vq = /*#__PURE__*/ MH({
48880
48893
  } : void 0,
48881
48894
  "onAfter:leave": xe
48882
48895
  }, {
48883
- body: L(() => [a.value === "archives" ? (U(), W("section", bY, [
48884
- K("div", xY, [
48896
+ body: L(() => [a.value === "archives" ? (U(), W("section", xY, [
48897
+ K("div", SY, [
48885
48898
  q(x, {
48886
48899
  modelValue: h.value,
48887
48900
  "onUpdate:modelValue": c[0] ||= (e) => h.value = e,
@@ -48910,7 +48923,7 @@ var vq = /*#__PURE__*/ MH({
48910
48923
  }
48911
48924
  }, null, 8, ["label", "disabled"])
48912
48925
  ]),
48913
- b.value && v.value.length ? (U(), W("div", SY, [
48926
+ b.value && v.value.length ? (U(), W("div", CY, [
48914
48927
  K("span", null, "将永久删除当前列表中的 " + P(v.value.length) + " 个房间及其全部记录,无法撤销。", 1),
48915
48928
  q(de, {
48916
48929
  label: "取消",
@@ -48926,20 +48939,20 @@ var vq = /*#__PURE__*/ MH({
48926
48939
  onClick: E
48927
48940
  })
48928
48941
  ])) : Y("", !0),
48929
- I(o).directory_error ? (U(), W("p", CY, P(I(o).directory_error), 1)) : Y("", !0),
48930
- K("div", wY, [v.value.length ? (U(), W("ul", TY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48942
+ I(o).directory_error ? (U(), W("p", wY, P(I(o).directory_error), 1)) : Y("", !0),
48943
+ K("div", TY, [v.value.length ? (U(), W("ul", EY, [(U(!0), W(H, null, B(v.value, (e) => (U(), W("li", {
48931
48944
  key: e.id,
48932
48945
  class: "channel-archive-item"
48933
- }, [K("div", EY, [K("div", DY, [K("button", {
48946
+ }, [K("div", DY, [K("div", OY, [K("button", {
48934
48947
  class: "channel-archive-title",
48935
48948
  title: e.title,
48936
48949
  disabled: !!I(u),
48937
48950
  onClick: (t) => T(e)
48938
- }, P(e.title), 9, OY), K("small", null, [e.created_at ? (U(), W("span", kY, [
48951
+ }, P(e.title), 9, kY), K("small", null, [e.created_at ? (U(), W("span", AY, [
48939
48952
  c[26] ||= J("创建于 ", -1),
48940
- K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, AY),
48953
+ K("time", { datetime: e.created_at }, P(C(e.created_at)), 9, jY),
48941
48954
  c[27] ||= J(" · ", -1)
48942
- ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", jY, [q(de, {
48955
+ ])) : Y("", !0), J(P(e.message_count) + " 条消息", 1)])]), K("div", MY, [q(de, {
48943
48956
  "aria-label": `彻底删除 ${e.title}`,
48944
48957
  title: "彻底删除",
48945
48958
  icon: "i-lucide-trash-2",
@@ -48971,7 +48984,7 @@ var vq = /*#__PURE__*/ MH({
48971
48984
  "aria-label",
48972
48985
  "disabled",
48973
48986
  "onClick"
48974
- ])])]), y.value === e.id ? (U(), W("div", MY, [
48987
+ ])])]), y.value === e.id ? (U(), W("div", NY, [
48975
48988
  K("span", null, "永久删除「" + P(e.title) + "」及其全部记录,无法撤销。", 1),
48976
48989
  q(de, {
48977
48990
  label: "取消",
@@ -48987,12 +49000,12 @@ var vq = /*#__PURE__*/ MH({
48987
49000
  disabled: w(e),
48988
49001
  onClick: ee
48989
49002
  }, null, 8, ["disabled"])
48990
- ])) : Y("", !0)]))), 128))])) : (U(), W("p", NY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
49003
+ ])) : Y("", !0)]))), 128))])) : (U(), W("p", PY, P(m.value.length ? "没有匹配的存档房间" : "暂无已存档房间"), 1))])
48991
49004
  ])) : a.value === "delete-folder" ? (U(), W("form", {
48992
49005
  key: 1,
48993
49006
  class: "dialog-form",
48994
49007
  onSubmit: uu(ie, ["prevent"])
48995
- }, [K("p", PY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", FY, [q(de, {
49008
+ }, [K("p", FY, "移除「" + P(e.targetFolder?.name) + "」后,房间不再归属文件夹,所有消息和存档状态都会保留。", 1), K("div", IY, [q(de, {
48996
49009
  label: "取消",
48997
49010
  color: "neutral",
48998
49011
  variant: "ghost",
@@ -49023,7 +49036,7 @@ var vq = /*#__PURE__*/ MH({
49023
49036
  "modelValue",
49024
49037
  "aria-label",
49025
49038
  "readonly"
49026
- ]), K("div", IY, [q(de, {
49039
+ ]), K("div", LY, [q(de, {
49027
49040
  label: "取消",
49028
49041
  color: "neutral",
49029
49042
  variant: "ghost",
@@ -49048,10 +49061,10 @@ var vq = /*#__PURE__*/ MH({
49048
49061
  class: "dialog-form",
49049
49062
  onSubmit: uu(ne, ["prevent"])
49050
49063
  }, [
49051
- K("p", LY, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49052
- a.value === "archive" ? (U(), W("p", RY, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49053
- a.value === "restore" ? (U(), W("p", zY, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49054
- a.value === "delete" ? (U(), W("p", BY, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49064
+ K("p", RY, [J(P(e.targetRoom?.title) + " ", 1), K("span", null, "· " + P(e.targetRoom?.message_count) + " 条消息", 1)]),
49065
+ a.value === "archive" ? (U(), W("p", zY, "存档后可在侧栏「已存档」中查阅与恢复。已有发言安排会保留;专家需在下次检查时停止自己的定时任务。")) : Y("", !0),
49066
+ a.value === "restore" ? (U(), W("p", BY, "恢复不会自动继续讨论;需要继续时,在主持设置中调整阶段。")) : Y("", !0),
49067
+ a.value === "delete" ? (U(), W("p", VY, "消息、共识和发言安排将一起删除,无法撤销。")) : Y("", !0),
49055
49068
  a.value === "rename" ? (U(), G(fe, {
49056
49069
  key: 3,
49057
49070
  label: "房间名称",
@@ -49068,7 +49081,7 @@ var vq = /*#__PURE__*/ MH({
49068
49081
  }, null, 8, ["modelValue"])]),
49069
49082
  _: 1
49070
49083
  })) : Y("", !0),
49071
- K("div", VY, [q(de, {
49084
+ K("div", HY, [q(de, {
49072
49085
  label: "取消",
49073
49086
  color: "neutral",
49074
49087
  variant: "ghost",
@@ -49085,10 +49098,10 @@ var vq = /*#__PURE__*/ MH({
49085
49098
  "loading",
49086
49099
  "disabled"
49087
49100
  ])])
49088
- ], 32)) : a.value === "settings" ? (U(), W("div", HY, [
49089
- q(yY),
49101
+ ], 32)) : a.value === "settings" ? (U(), W("div", UY, [
49102
+ q(bY),
49090
49103
  c[32] ||= K("h3", { class: "account-appearance-heading" }, "外观", -1),
49091
- K("div", UY, [(U(), W(H, null, B(ge, (e) => K("button", {
49104
+ K("div", WY, [(U(), W(H, null, B(ge, (e) => K("button", {
49092
49105
  key: e.value,
49093
49106
  class: j({ chosen: I(o).theme === e.value }),
49094
49107
  "aria-pressed": I(o).theme === e.value,
@@ -49103,12 +49116,12 @@ var vq = /*#__PURE__*/ MH({
49103
49116
  K("b")
49104
49117
  ], -1)]], 2),
49105
49118
  K("span", null, [K("strong", null, P(e.title), 1), K("small", null, P(e.description), 1)]),
49106
- K("span", GY, [I(o).theme === e.value ? (U(), G(ye, {
49119
+ K("span", KY, [I(o).theme === e.value ? (U(), G(ye, {
49107
49120
  key: 0,
49108
49121
  name: "i-lucide-check"
49109
49122
  })) : Y("", !0)])
49110
- ], 10, WY)), 64))]),
49111
- K("section", KY, [c[29] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", qY, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(de, {
49123
+ ], 10, GY)), 64))]),
49124
+ K("section", qY, [c[29] ||= K("h3", { id: "channel-reading-label" }, "对话宽度", -1), K("div", JY, [(U(!0), W(H, null, B(e.readingOptions, (e) => (U(), G(de, {
49112
49125
  key: e.value,
49113
49126
  label: e.label,
49114
49127
  color: "neutral",
@@ -49122,9 +49135,9 @@ var vq = /*#__PURE__*/ MH({
49122
49135
  "aria-pressed",
49123
49136
  "onClick"
49124
49137
  ]))), 128))])]),
49125
- K("section", JY, [
49138
+ K("section", YY, [
49126
49139
  c[30] ||= K("h3", { id: "channel-effects-label" }, "视觉效果", -1),
49127
- K("div", YY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(de, {
49140
+ K("div", XY, [(U(!0), W(H, null, B(e.effectOptions, (e) => (U(), G(de, {
49128
49141
  key: e.value,
49129
49142
  label: e.label,
49130
49143
  color: "neutral",
@@ -49140,7 +49153,7 @@ var vq = /*#__PURE__*/ MH({
49140
49153
  ]))), 128))]),
49141
49154
  c[31] ||= K("p", { class: "fine-print" }, "精简模式关闭毛玻璃模糊与多层阴影,适合配置较低或需要更流畅滚动的设备。", -1)
49142
49155
  ])
49143
- ])) : a.value === "create" ? (U(), G(tY, {
49156
+ ])) : a.value === "create" ? (U(), G(nY, {
49144
49157
  key: 5,
49145
49158
  "target-folder": e.targetFolder,
49146
49159
  onSubmit: M,
@@ -49175,7 +49188,7 @@ var vq = /*#__PURE__*/ MH({
49175
49188
  }, null, 8, ["model-value"])]),
49176
49189
  _: 1
49177
49190
  }),
49178
- K("div", XY, [q(fe, { label: "主持人" }, {
49191
+ K("div", ZY, [q(fe, { label: "主持人" }, {
49179
49192
  default: L(() => [q(S, {
49180
49193
  "model-value": I(o).fields[_e("host")],
49181
49194
  items: I(oe),
@@ -49209,9 +49222,9 @@ var vq = /*#__PURE__*/ MH({
49209
49222
  }, null, 8, ["model-value"])]),
49210
49223
  _: 1
49211
49224
  })) : Y("", !0),
49212
- K("section", ZY, [
49225
+ K("section", QY, [
49213
49226
  c[33] ||= K("h3", null, "讨论上限", -1),
49214
- q(Cq, {
49227
+ q(wq, {
49215
49228
  ref_key: "topic_limits",
49216
49229
  ref: le,
49217
49230
  rounds: Number(I(o).fields[_e("limit-max_rounds")]),
@@ -49229,14 +49242,14 @@ var vq = /*#__PURE__*/ MH({
49229
49242
  "execution",
49230
49243
  "disabled"
49231
49244
  ]),
49232
- ue.value ? (U(), W("p", QY, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49245
+ ue.value ? (U(), W("p", $Y, "修改上限前,请先把阶段保存为“已暂停”。")) : Y("", !0)
49233
49246
  ]),
49234
49247
  q(we, {
49235
49248
  open: ce.value,
49236
49249
  "onUpdate:open": c[20] ||= (e) => ce.value = e,
49237
49250
  class: "advanced-fields"
49238
49251
  }, {
49239
- content: L(() => [K("div", $Y, [
49252
+ content: L(() => [K("div", eX, [
49240
49253
  (U(), W(H, null, B([
49241
49254
  {
49242
49255
  key: "user_request",
@@ -49263,11 +49276,11 @@ var vq = /*#__PURE__*/ MH({
49263
49276
  }, null, 8, ["model-value", "onUpdate:modelValue"])]),
49264
49277
  _: 2
49265
49278
  }, 1032, ["label"])), 64)),
49266
- K("div", eX, [(U(!0), W(H, null, B(I(ae), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49267
- "model-value": I(o).experts[fX]?.[e] || "none",
49279
+ K("div", tX, [(U(!0), W(H, null, B(I(ae), (e) => (U(), W("div", { key: e }, [K("label", null, P(e), 1), q(S, {
49280
+ "model-value": I(o).experts[pX]?.[e] || "none",
49268
49281
  items: se,
49269
49282
  "aria-label": `${e} 参与方式`,
49270
- "onUpdate:modelValue": (t) => I(s).write_expert(fX, e, t === "none" ? "" : t)
49283
+ "onUpdate:modelValue": (t) => I(s).write_expert(pX, e, t === "none" ? "" : t)
49271
49284
  }, null, 8, [
49272
49285
  "model-value",
49273
49286
  "aria-label",
@@ -49285,7 +49298,7 @@ var vq = /*#__PURE__*/ MH({
49285
49298
  }, null, 8, ["trailing-icon"])]),
49286
49299
  _: 1
49287
49300
  }, 8, ["open"]),
49288
- K("div", tX, [q(de, {
49301
+ K("div", nX, [q(de, {
49289
49302
  label: "取消",
49290
49303
  color: "neutral",
49291
49304
  variant: "ghost",
@@ -49329,7 +49342,7 @@ var vq = /*#__PURE__*/ MH({
49329
49342
  _: 1
49330
49343
  }),
49331
49344
  c[35] ||= K("p", { class: "fine-print" }, "创建后为待通知状态;由主持人实际联系专家。", -1),
49332
- K("div", nX, [q(de, {
49345
+ K("div", rX, [q(de, {
49333
49346
  label: "取消",
49334
49347
  variant: "ghost",
49335
49348
  color: "neutral",
@@ -49340,8 +49353,8 @@ var vq = /*#__PURE__*/ MH({
49340
49353
  label: "创建发言安排",
49341
49354
  loading: I(u) === "schedule"
49342
49355
  }, null, 8, ["loading"])])
49343
- ], 32)) : a.value === "message" ? (U(), W("div", rX, [pe.value ? (U(), W("p", iX, P(pe.value), 1)) : A.value ? (U(), W(H, { key: 1 }, [
49344
- K("div", aX, [
49356
+ ], 32)) : a.value === "message" ? (U(), W("div", iX, [pe.value ? (U(), W("p", aX, P(pe.value), 1)) : A.value ? (U(), W(H, { key: 1 }, [
49357
+ K("div", oX, [
49345
49358
  K("strong", null, P(I(s).display_name(A.value.author)), 1),
49346
49359
  K("span", null, "#" + P(A.value.id), 1),
49347
49360
  q(Te, {
@@ -49352,14 +49365,14 @@ var vq = /*#__PURE__*/ MH({
49352
49365
  _: 1
49353
49366
  })
49354
49367
  ]),
49355
- K("p", oX, P(I(s).provenance(A.value)) + " · " + P(new Date(A.value.created_at).toLocaleString("zh-CN")), 1),
49356
- A.value.summary ? (U(), W("section", sX, [K("small", null, "回答摘要 · " + P(I(s).display_name(A.value.summary_by)), 1), K("p", cX, P(A.value.summary), 1)])) : Y("", !0),
49357
- K("p", lX, P(A.value.text), 1),
49368
+ K("p", sX, P(I(s).provenance(A.value)) + " · " + P(new Date(A.value.created_at).toLocaleString("zh-CN")), 1),
49369
+ A.value.summary ? (U(), W("section", cX, [K("small", null, "回答摘要 · " + P(I(s).display_name(A.value.summary_by)), 1), K("p", lX, P(A.value.summary), 1)])) : Y("", !0),
49370
+ K("p", uX, P(A.value.text), 1),
49358
49371
  A.value.attachments?.length ? (U(), W("div", {
49359
49372
  key: 1,
49360
49373
  onClick: be,
49361
49374
  innerHTML: I(s).attachment_markup(A.value.attachments)
49362
- }, null, 8, uX)) : Y("", !0),
49375
+ }, null, 8, dX)) : Y("", !0),
49363
49376
  A.value.reply_to ? (U(), G(de, {
49364
49377
  key: 2,
49365
49378
  label: `查看被回复的原文 #${A.value.reply_to}`,
@@ -49369,7 +49382,7 @@ var vq = /*#__PURE__*/ MH({
49369
49382
  class: "channel-surface-button",
49370
49383
  onClick: Se
49371
49384
  }, null, 8, ["label"])) : Y("", !0)
49372
- ], 64)) : (U(), W("p", dX, "正在读取原文…"))])) : Y("", !0)]),
49385
+ ], 64)) : (U(), W("p", fX, "正在读取原文…"))])) : Y("", !0)]),
49373
49386
  _: 1
49374
49387
  }, 8, [
49375
49388
  "open",
@@ -49380,7 +49393,7 @@ var vq = /*#__PURE__*/ MH({
49380
49393
  ]);
49381
49394
  };
49382
49395
  }
49383
- }, mX = {
49396
+ }, hX = {
49384
49397
  __name: "ContextMenuContent",
49385
49398
  props: {
49386
49399
  items: {
@@ -49675,7 +49688,7 @@ var vq = /*#__PURE__*/ MH({
49675
49688
  "disabled",
49676
49689
  "text-value",
49677
49690
  "class"
49678
- ]), q(mX, X({
49691
+ ]), q(hX, X({
49679
49692
  sub: "",
49680
49693
  class: r.ui?.content,
49681
49694
  ui: e.ui,
@@ -49786,7 +49799,7 @@ var vq = /*#__PURE__*/ MH({
49786
49799
  _: 3
49787
49800
  }, 16)], 64));
49788
49801
  }
49789
- }, hX = {
49802
+ }, gX = {
49790
49803
  slots: {
49791
49804
  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",
49792
49805
  viewport: "relative divide-y divide-default scroll-py-1 overflow-y-auto flex-1",
@@ -49974,7 +49987,7 @@ var vq = /*#__PURE__*/ MH({
49974
49987
  }
49975
49988
  ],
49976
49989
  defaultVariants: { size: "md" }
49977
- }, gX = {
49990
+ }, _X = {
49978
49991
  __name: "ContextMenu",
49979
49992
  props: {
49980
49993
  size: {
@@ -50044,7 +50057,7 @@ var vq = /*#__PURE__*/ MH({
50044
50057
  emits: ["update:open"],
50045
50058
  setup(e, { emit: t }) {
50046
50059
  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({
50047
- extend: hX,
50060
+ extend: gX,
50048
50061
  ...o.ui?.contextMenu || {}
50049
50062
  })({ size: a.size }));
50050
50063
  return (e, t) => (U(), G(I(iC), M(Ss(I(s))), {
@@ -50056,7 +50069,7 @@ var vq = /*#__PURE__*/ MH({
50056
50069
  }, {
50057
50070
  default: L(() => [V(e.$slots, "default")]),
50058
50071
  _: 3
50059
- }, 8, ["disabled", "class"])) : Y("", !0), q(mX, X({
50072
+ }, 8, ["disabled", "class"])) : Y("", !0), q(hX, X({
50060
50073
  class: u.value.content({ class: [!i.default && I(a).class, I(a).ui?.content] }),
50061
50074
  ui: u.value,
50062
50075
  "ui-override": I(a).ui
@@ -50086,47 +50099,47 @@ var vq = /*#__PURE__*/ MH({
50086
50099
  _: 3
50087
50100
  }, 16));
50088
50101
  }
50089
- }, _X = { class: "channel-directory-manager" }, vX = { class: "channel-directory-heading" }, yX = ["aria-expanded"], bX = { class: "channel-directory-actions" }, xX = {
50102
+ }, vX = { class: "channel-directory-manager" }, yX = { class: "channel-directory-heading" }, bX = ["aria-expanded"], xX = { class: "channel-directory-actions" }, SX = {
50090
50103
  "aria-label": "协作房间列表",
50091
50104
  class: "channel-room-list",
50092
50105
  "data-room-directory": ""
50093
- }, SX = ["data-room-folder", "data-drag-folder"], CX = [
50106
+ }, CX = ["data-room-folder", "data-drag-folder"], wX = [
50094
50107
  "disabled",
50095
50108
  "aria-label",
50096
50109
  "aria-expanded",
50097
50110
  "onKeydown",
50098
50111
  "onClick"
50099
- ], wX = { class: "channel-folder-name" }, TX = { class: "channel-folder-actions" }, EX = {
50112
+ ], TX = { class: "channel-folder-name" }, EX = { class: "channel-folder-actions" }, DX = {
50100
50113
  class: "channel-directory-count",
50101
50114
  "aria-hidden": "true"
50102
- }, DX = ["data-drop-folder"], OX = {
50115
+ }, OX = ["data-drop-folder"], kX = {
50103
50116
  key: 0,
50104
50117
  class: "channel-directory-empty",
50105
50118
  role: "status"
50106
- }, kX = ["data-drag-room"], AX = [
50119
+ }, AX = ["data-drag-room"], jX = [
50107
50120
  "aria-label",
50108
50121
  "disabled",
50109
50122
  "onKeydown"
50110
- ], jX = [
50123
+ ], MX = [
50111
50124
  "title",
50112
50125
  "aria-label",
50113
50126
  "aria-current",
50114
50127
  "onClick"
50115
- ], MX = { class: "channel-room-actions" }, NX = {
50128
+ ], NX = { class: "channel-room-actions" }, PX = {
50116
50129
  key: 0,
50117
50130
  class: "channel-directory-empty"
50118
- }, PX = {
50131
+ }, FX = {
50119
50132
  key: 0,
50120
50133
  class: "channel-archive-count"
50121
- }, FX = {
50134
+ }, IX = {
50122
50135
  key: 0,
50123
50136
  role: "status",
50124
50137
  class: "channel-directory-notice"
50125
- }, IX = {
50138
+ }, LX = {
50126
50139
  key: 1,
50127
50140
  role: "alert",
50128
50141
  class: "channel-directory-error"
50129
- }, LX = {
50142
+ }, RX = {
50130
50143
  __name: "ChannelDirectory",
50131
50144
  emits: [
50132
50145
  "select",
@@ -50340,8 +50353,8 @@ var vq = /*#__PURE__*/ MH({
50340
50353
  ];
50341
50354
  }
50342
50355
  return (e, t) => {
50343
- let u = MA, _ = sA, v = TH, x = $V, S = gX;
50344
- return U(), W("div", _X, [
50356
+ let u = MA, _ = sA, v = TH, x = $V, S = _X;
50357
+ return U(), W("div", vX, [
50345
50358
  q(u, {
50346
50359
  label: "新建对话",
50347
50360
  icon: "i-lucide-plus",
@@ -50350,12 +50363,12 @@ var vq = /*#__PURE__*/ MH({
50350
50363
  disabled: I(r).directory_pending.includes("create-room"),
50351
50364
  onClick: t[0] ||= (e) => n("create", null)
50352
50365
  }, null, 8, ["disabled"]),
50353
- K("div", vX, [K("button", {
50366
+ K("div", yX, [K("button", {
50354
50367
  type: "button",
50355
50368
  class: "channel-section-toggle",
50356
50369
  "aria-expanded": m.value,
50357
50370
  onClick: t[1] ||= (e) => m.value = !m.value
50358
- }, [q(_, { name: m.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[7] ||= J("协作房间", -1)], 8, yX), K("div", bX, [
50371
+ }, [q(_, { name: m.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), t[7] ||= J("协作房间", -1)], 8, bX), K("div", xX, [
50359
50372
  q(v, {
50360
50373
  items: d.value,
50361
50374
  content: {
@@ -50397,7 +50410,7 @@ var vq = /*#__PURE__*/ MH({
50397
50410
  onChange: p
50398
50411
  }, null, 544)
50399
50412
  ])]),
50400
- vr(K("nav", xX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50413
+ vr(K("nav", SX, [(U(!0), W(H, null, B(l.value, (e, s) => (U(), W("section", {
50401
50414
  key: e.order_id,
50402
50415
  class: "channel-folder-section",
50403
50416
  "data-room-folder": e.id,
@@ -50427,9 +50440,9 @@ var vq = /*#__PURE__*/ MH({
50427
50440
  }, [
50428
50441
  q(_, { name: h.value.has(e.id) ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
50429
50442
  q(_, { name: "i-lucide-folder" }),
50430
- K("span", wX, P(e.name), 1)
50431
- ], 40, CX),
50432
- K("div", TX, [q(v, {
50443
+ K("span", TX, P(e.name), 1)
50444
+ ], 40, wX),
50445
+ K("div", EX, [q(v, {
50433
50446
  items: g(e, s),
50434
50447
  content: {
50435
50448
  align: "start",
@@ -50463,12 +50476,12 @@ var vq = /*#__PURE__*/ MH({
50463
50476
  ])]),
50464
50477
  _: 2
50465
50478
  }, 1032, ["text"])]),
50466
- K("small", EX, P(e.pending ? "保存中" : e.rooms.length), 1)
50479
+ K("small", DX, P(e.pending ? "保存中" : e.rooms.length), 1)
50467
50480
  ], 2)) : Y("", !0), !e.id || !h.value.has(e.id) ? (U(), W("div", {
50468
50481
  key: 1,
50469
50482
  class: j(e.id ? "channel-folder-rooms" : "channel-root-rooms"),
50470
50483
  "data-drop-folder": e.id ? void 0 : ""
50471
- }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", OX, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(S, {
50484
+ }, [I(r).creating_room && (I(r).creating_room.folder_id || "") === e.id ? (U(), W("p", kX, "正在创建:" + P(I(r).creating_room.title), 1)) : Y("", !0), (U(!0), W(H, null, B(e.rooms, (s, c) => (U(), G(S, {
50472
50485
  key: s.id,
50473
50486
  items: b(s, c, s.folder_id || null, e.rooms.length),
50474
50487
  ui: { content: "channel-menu channel-topic-menu" }
@@ -50493,7 +50506,7 @@ var vq = /*#__PURE__*/ MH({
50493
50506
  direction: 1,
50494
50507
  folder_id: s.folder_id || null
50495
50508
  }), ["prevent"]), ["down"])]
50496
- }, [q(_, { name: "i-lucide-grip-vertical" })], 40, AX),
50509
+ }, [q(_, { name: "i-lucide-grip-vertical" })], 40, jX),
50497
50510
  K("button", {
50498
50511
  class: "channel-room-select",
50499
50512
  "data-drag-title": "",
@@ -50502,8 +50515,8 @@ var vq = /*#__PURE__*/ MH({
50502
50515
  "aria-current": s.id === I(r).room?.id ? "page" : void 0,
50503
50516
  onPointerdown: t[5] ||= (e) => !I(o) && I(i).start_drag(e),
50504
50517
  onClick: (e) => n("select", s.id)
50505
- }, [K("span", null, P(s.title), 1)], 40, jX),
50506
- K("div", MX, [q(x, {
50518
+ }, [K("span", null, P(s.title), 1)], 40, MX),
50519
+ K("div", NX, [q(x, {
50507
50520
  text: s.archived ? "恢复房间" : "存档房间",
50508
50521
  ui: { content: "channel-topic-tooltip" }
50509
50522
  }, {
@@ -50544,9 +50557,9 @@ var vq = /*#__PURE__*/ MH({
50544
50557
  }, null, 8, ["aria-label"])]),
50545
50558
  _: 2
50546
50559
  }, 1032, ["items"])])
50547
- ], 10, kX)]),
50560
+ ], 10, AX)]),
50548
50561
  _: 2
50549
- }, 1032, ["items"]))), 128))], 10, DX)) : Y("", !0)], 8, SX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", NX, "暂无协作房间"))], 512), [[Vc, m.value]]),
50562
+ }, 1032, ["items"]))), 128))], 10, OX)) : Y("", !0)], 8, CX))), 128)), s.value.length ? Y("", !0) : (U(), W("p", PX, "暂无协作房间"))], 512), [[Vc, m.value]]),
50550
50563
  vr(q(u, {
50551
50564
  icon: "i-lucide-archive",
50552
50565
  color: "neutral",
@@ -50555,48 +50568,48 @@ var vq = /*#__PURE__*/ MH({
50555
50568
  "aria-haspopup": "dialog",
50556
50569
  onClick: t[6] ||= (e) => n("archives")
50557
50570
  }, {
50558
- default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", PX, P(c.value), 1)) : Y("", !0)]),
50571
+ default: L(() => [t[8] ||= K("span", { class: "channel-archive-label" }, "已存档", -1), c.value ? (U(), W("small", FX, P(c.value), 1)) : Y("", !0)]),
50559
50572
  _: 1
50560
50573
  }, 512), [[Vc, m.value]]),
50561
- I(r).directory_notice ? (U(), W("p", FX, P(I(r).directory_notice), 1)) : Y("", !0),
50562
- I(r).directory_error ? (U(), W("p", IX, P(I(r).directory_error), 1)) : Y("", !0)
50574
+ I(r).directory_notice ? (U(), W("p", IX, P(I(r).directory_notice), 1)) : Y("", !0),
50575
+ I(r).directory_error ? (U(), W("p", LX, P(I(r).directory_error), 1)) : Y("", !0)
50563
50576
  ]);
50564
50577
  };
50565
50578
  }
50566
- }, RX = {
50579
+ }, zX = {
50567
50580
  key: 0,
50568
50581
  class: "pb-invite",
50569
50582
  "aria-label": "启动手动成员"
50570
- }, zX = { class: "pb-invite-lead" }, BX = {
50583
+ }, BX = { class: "pb-invite-lead" }, VX = {
50571
50584
  key: 0,
50572
50585
  role: "alert",
50573
50586
  class: "pb-free-note is-error"
50574
- }, VX = { class: "pb-invite-launches" }, HX = { class: "pb-invite-footer" }, UX = {
50587
+ }, HX = { class: "pb-invite-launches" }, UX = { class: "pb-invite-footer" }, WX = {
50575
50588
  class: "pb-invite-library",
50576
50589
  role: "group",
50577
50590
  "aria-label": "选择 AI(可多选)"
50578
- }, WX = [
50591
+ }, GX = [
50579
50592
  "aria-pressed",
50580
50593
  "title",
50581
50594
  "onClick"
50582
- ], GX = {
50595
+ ], KX = {
50583
50596
  key: 0,
50584
50597
  class: "pb-invite-cards"
50585
- }, KX = {
50598
+ }, qX = {
50586
50599
  key: 0,
50587
50600
  class: "fine-print"
50588
- }, qX = ["aria-hidden"], JX = {
50601
+ }, JX = ["aria-hidden"], YX = {
50589
50602
  key: 2,
50590
50603
  class: "pb-invite-empty"
50591
- }, YX = {
50604
+ }, XX = {
50592
50605
  key: 3,
50593
50606
  role: "alert",
50594
50607
  class: "fine-print"
50595
- }, XX = {
50608
+ }, ZX = {
50596
50609
  key: 4,
50597
50610
  role: "alert",
50598
50611
  class: "pb-free-note is-error"
50599
- }, ZX = { class: "pb-invite-footer" }, QX = 2e3, $X = /*#__PURE__*/ MH({
50612
+ }, QX = { class: "pb-invite-footer" }, $X = 2e3, eZ = /*#__PURE__*/ MH({
50600
50613
  __name: "InviteDialog",
50601
50614
  props: /*@__PURE__*/ Fa({ description: {
50602
50615
  type: String,
@@ -50614,7 +50627,7 @@ var vq = /*#__PURE__*/ MH({
50614
50627
  async function u(e) {
50615
50628
  clearTimeout(l), c.value = "", await i("copy_member_launch", e) && (c.value = e, l = setTimeout(() => {
50616
50629
  c.value = "";
50617
- }, QX));
50630
+ }, $X));
50618
50631
  }
50619
50632
  let d = /* @__PURE__ */ F([]), f = 0, p = /* @__PURE__ */ F([]), m = /* @__PURE__ */ F(!1), h = Z(() => Object.keys(r.launch_clients)), g = Z(() => (o.value.members || []).map((e) => e.name)), _ = (e) => g.value.filter((t) => r.platform_of(t) === e).length, v = Z(() => [...d.value.filter((e) => e.mode !== "manual"), ...d.value.filter((e) => e.mode === "manual")]), y = Z(() => {
50620
50633
  let e = [...g.value];
@@ -50667,7 +50680,7 @@ var vq = /*#__PURE__*/ MH({
50667
50680
  p.value = [...p.value, ...e], !d.value.length && !p.value.length && (t.value = !1);
50668
50681
  }
50669
50682
  return (i, o) => {
50670
- let l = pA, f = MA, g = YK;
50683
+ let l = pA, f = MA, g = XK;
50671
50684
  return U(), G(g, {
50672
50685
  open: t.value,
50673
50686
  "onUpdate:open": o[2] ||= (e) => t.value = e,
@@ -50678,10 +50691,10 @@ var vq = /*#__PURE__*/ MH({
50678
50691
  body: "dialog-body"
50679
50692
  }
50680
50693
  }, {
50681
- body: L(() => [p.value.length && !d.value.length ? (U(), W("div", RX, [
50682
- K("p", zX, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
50683
- I(n).access?.error ? (U(), W("p", BX, P(I(n).access.error), 1)) : Y("", !0),
50684
- K("ul", VX, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
50694
+ body: L(() => [p.value.length && !d.value.length ? (U(), W("div", zX, [
50695
+ K("p", BX, P(p.value.length > 1 ? `${p.value.length} 位手动成员已加入` : "手动成员已加入") + ",把启动指令交给各自的 AI 会话,注册后才算到场。", 1),
50696
+ I(n).access?.error ? (U(), W("p", VX, P(I(n).access.error), 1)) : Y("", !0),
50697
+ K("ul", HX, [(U(!0), W(H, null, B(p.value, (e) => (U(), W("li", { key: e }, [
50685
50698
  q(l, {
50686
50699
  src: I(r).identities[I(r).platform_of(e)]?.icon,
50687
50700
  text: I(r).identities[I(r).platform_of(e)]?.initials,
@@ -50716,7 +50729,7 @@ var vq = /*#__PURE__*/ MH({
50716
50729
  ])
50717
50730
  ]))), 128))]),
50718
50731
  o[3] ||= K("p", { class: "fine-print" }, "指令含该成员的凭证,只交给对应的会话;关闭后仍可在参与者列表中复制。", -1),
50719
- K("div", HX, [q(f, {
50732
+ K("div", UX, [q(f, {
50720
50733
  label: "完成",
50721
50734
  class: "channel-primary-button",
50722
50735
  onClick: o[0] ||= (e) => t.value = !1
@@ -50727,7 +50740,7 @@ var vq = /*#__PURE__*/ MH({
50727
50740
  "aria-label": "邀请专家",
50728
50741
  onSubmit: uu(w, ["prevent"])
50729
50742
  }, [
50730
- K("div", UX, [(U(!0), W(H, null, B(h.value, (e) => (U(), W("button", {
50743
+ K("div", WX, [(U(!0), W(H, null, B(h.value, (e) => (U(), W("button", {
50731
50744
  key: e,
50732
50745
  type: "button",
50733
50746
  "aria-pressed": d.value.some((t) => t.name === e),
@@ -50744,11 +50757,11 @@ var vq = /*#__PURE__*/ MH({
50744
50757
  "text",
50745
50758
  "alt",
50746
50759
  "class"
50747
- ]), J(P(e), 1)], 8, WX))), 128))]),
50748
- d.value.length ? (U(), W("div", GX, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
50760
+ ]), J(P(e), 1)], 8, GX))), 128))]),
50761
+ d.value.length ? (U(), W("div", KX, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("div", {
50749
50762
  key: e.id,
50750
50763
  class: "pb-invite-pick"
50751
- }, [q(bJ, {
50764
+ }, [q(xJ, {
50752
50765
  name: e.name,
50753
50766
  mode: e.mode,
50754
50767
  choices: ["cli", "manual"],
@@ -50765,15 +50778,15 @@ var vq = /*#__PURE__*/ MH({
50765
50778
  "onMode",
50766
50779
  "onSession",
50767
50780
  "onRemove"
50768
- ]), y.value.get(e) === e.name ? Y("", !0) : (U(), W("p", KX, "同一 AI 已有实例,将以 " + P(y.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
50781
+ ]), y.value.get(e) === e.name ? Y("", !0) : (U(), W("p", qX, "同一 AI 已有实例,将以 " + P(y.value.get(e)) + " 加入,使用独立会话。", 1))]))), 128))])) : Y("", !0),
50769
50782
  d.value.length ? (U(), W("p", {
50770
50783
  key: 1,
50771
50784
  class: j(["fine-print", { "pb-invite-reserved": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual")) }]),
50772
50785
  "aria-hidden": !(d.value.some((e) => e.mode === "manual") && d.value.some((e) => e.mode !== "manual"))
50773
- }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, qX)) : (U(), W("p", JX, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
50774
- d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", YX, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
50775
- m.value && I(n).free_error ? (U(), W("p", XX, P(I(n).free_error), 1)) : Y("", !0),
50776
- K("div", ZX, [q(f, {
50786
+ }, "手动启动的成员排在程序启动的成员之后加入队列。", 10, JX)) : (U(), W("p", YX, "选择一位或多位 AI(同一 AI 可重复添加),点卡片翻面设置软件、模型与项目权限。")),
50787
+ d.value.some((e) => e.mode === "cli") && !I(n).launch.available ? (U(), W("p", XX, "邀请需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0),
50788
+ m.value && I(n).free_error ? (U(), W("p", ZX, P(I(n).free_error), 1)) : Y("", !0),
50789
+ K("div", QX, [q(f, {
50777
50790
  label: "取消",
50778
50791
  color: "neutral",
50779
50792
  variant: "ghost",
@@ -50795,73 +50808,73 @@ var vq = /*#__PURE__*/ MH({
50795
50808
  }, 8, ["open", "description"]);
50796
50809
  };
50797
50810
  }
50798
- }, [["__scopeId", "data-v-3ca69064"]]), eZ = {
50811
+ }, [["__scopeId", "data-v-3ca69064"]]), tZ = {
50799
50812
  key: 0,
50800
50813
  class: "pb-header"
50801
- }, tZ = { class: "pb-mode" }, nZ = { class: "pb-status-line" }, rZ = { role: "status" }, iZ = {
50814
+ }, nZ = { class: "pb-mode" }, rZ = { class: "pb-status-line" }, iZ = { role: "status" }, aZ = {
50802
50815
  key: 0,
50803
50816
  class: "pb-mode"
50804
- }, aZ = {
50817
+ }, oZ = {
50805
50818
  key: 0,
50806
50819
  class: "pb-status-detail"
50807
- }, oZ = {
50820
+ }, sZ = {
50808
50821
  key: 1,
50809
50822
  class: "pb-status-detail"
50810
- }, sZ = { class: "pb-error-detail" }, cZ = {
50823
+ }, cZ = { class: "pb-error-detail" }, lZ = {
50811
50824
  key: 3,
50812
50825
  class: "pb-meters"
50813
- }, lZ = { class: "pb-meter-label" }, uZ = {
50826
+ }, uZ = { class: "pb-meter-label" }, dZ = {
50814
50827
  key: 0,
50815
50828
  class: "pb-bar"
50816
- }, dZ = {
50829
+ }, fZ = {
50817
50830
  key: 1,
50818
50831
  class: "pb-section",
50819
50832
  "aria-label": "当前焦点"
50820
- }, fZ = {
50833
+ }, pZ = {
50821
50834
  class: "pb-section",
50822
50835
  "aria-label": "参与者"
50823
- }, pZ = { class: "pb-heading" }, mZ = {
50836
+ }, mZ = { class: "pb-heading" }, hZ = {
50824
50837
  key: 0,
50825
50838
  class: "pb-status-detail pb-held"
50826
- }, hZ = { class: "pb-members" }, gZ = { class: "pb-member-body" }, _Z = { class: "pb-member-name" }, vZ = {
50839
+ }, gZ = { class: "pb-members" }, _Z = { class: "pb-member-body" }, vZ = { class: "pb-member-name" }, yZ = {
50827
50840
  key: 0,
50828
50841
  class: "pb-member-model",
50829
50842
  title: "本场启动配置;默认模型与默认强度由对应软件决定"
50830
- }, yZ = {
50843
+ }, bZ = {
50831
50844
  key: 1,
50832
50845
  class: "pb-member-model",
50833
50846
  title: "续接你已有的会话;它工作时请不要在原窗口继续操作"
50834
- }, bZ = { key: 0 }, xZ = {
50847
+ }, xZ = { key: 0 }, SZ = {
50835
50848
  key: 3,
50836
50849
  class: "pb-member-manual"
50837
- }, SZ = { key: 0 }, CZ = ["onClick"], wZ = { class: "pb-member-body" }, TZ = { class: "pb-member-name" }, EZ = {
50850
+ }, CZ = { key: 0 }, wZ = ["onClick"], TZ = { class: "pb-member-body" }, EZ = { class: "pb-member-name" }, DZ = {
50838
50851
  key: 1,
50839
50852
  role: "alert",
50840
50853
  class: "pb-free-note is-error"
50841
- }, DZ = {
50854
+ }, OZ = {
50842
50855
  key: 2,
50843
50856
  role: "status",
50844
50857
  class: "pb-free-note"
50845
- }, OZ = {
50858
+ }, kZ = {
50846
50859
  key: 2,
50847
50860
  class: "pb-actions",
50848
50861
  "aria-label": "操作"
50849
- }, kZ = {
50862
+ }, AZ = {
50850
50863
  key: 3,
50851
50864
  class: "pb-section",
50852
50865
  "aria-label": "阶段耗时"
50853
- }, AZ = { class: "pb-timing-heading" }, jZ = ["aria-label"], MZ = { class: "pb-timing-totals" }, NZ = ["title"], PZ = { class: "pb-timings" }, FZ = { class: "pb-timing-who" }, IZ = { class: "pb-timing-stages" }, LZ = ["title"], RZ = {
50866
+ }, jZ = { class: "pb-timing-heading" }, MZ = ["aria-label"], NZ = { class: "pb-timing-totals" }, PZ = ["title"], FZ = { class: "pb-timings" }, IZ = { class: "pb-timing-who" }, LZ = { class: "pb-timing-stages" }, RZ = ["title"], zZ = {
50854
50867
  key: 0,
50855
50868
  class: "pb-note"
50856
- }, zZ = { class: "pb-connection" }, BZ = { class: "fine-print" }, VZ = {
50869
+ }, BZ = { class: "pb-connection" }, VZ = { class: "fine-print" }, HZ = {
50857
50870
  key: 0,
50858
50871
  role: "status",
50859
50872
  class: "fine-print"
50860
- }, HZ = {
50873
+ }, UZ = {
50861
50874
  key: 2,
50862
50875
  role: "alert",
50863
50876
  class: "fine-print"
50864
- }, UZ = { key: 2 }, WZ = { class: "pb-invite-footer" }, GZ = { class: "pb-invite-footer" }, KZ = { class: "progress-ending pb-decision-summary" }, qZ = ["disabled"], JZ = { class: "progress-ending" }, YZ = ["disabled"], XZ = 2e3, ZZ = 90, QZ = 100, $Z = /*#__PURE__*/ MH({
50877
+ }, WZ = { key: 2 }, GZ = { class: "pb-invite-footer" }, KZ = { class: "pb-invite-footer" }, qZ = { class: "progress-ending pb-decision-summary" }, JZ = ["disabled"], YZ = { class: "progress-ending" }, XZ = ["disabled"], ZZ = 2e3, QZ = 90, $Z = 100, eQ = /*#__PURE__*/ MH({
50865
50878
  __name: "ProgressBoard",
50866
50879
  props: { docked: {
50867
50880
  type: Boolean,
@@ -50872,7 +50885,7 @@ var vq = /*#__PURE__*/ MH({
50872
50885
  async function l(e) {
50873
50886
  clearTimeout(c), s.value = "", await i("copy_member_launch", e) && (s.value = e, c = setTimeout(() => {
50874
50887
  s.value = "";
50875
- }, XZ));
50888
+ }, ZZ));
50876
50889
  }
50877
50890
  let u = /* @__PURE__ */ F(!1), d = /* @__PURE__ */ F(null), f = /* @__PURE__ */ F(!1), p = ["pending", "notified"], m = {
50878
50891
  dispatched: "已交付,等待开始",
@@ -50904,7 +50917,7 @@ var vq = /*#__PURE__*/ MH({
50904
50917
  R(() => _.value.id, () => {
50905
50918
  ye.value = !1;
50906
50919
  });
50907
- let be = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), xe = Z(() => be.value.length > ZZ), Se = Z(() => y.value.timings || {
50920
+ let be = Z(() => x.value?.question || _.value.focus || _.value.goal || ""), xe = Z(() => be.value.length > QZ), Se = Z(() => y.value.timings || {
50908
50921
  items: [],
50909
50922
  totals: {},
50910
50923
  count: 0
@@ -50938,7 +50951,7 @@ var vq = /*#__PURE__*/ MH({
50938
50951
  };
50939
50952
  let e = me.value;
50940
50953
  if (e) {
50941
- 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;
50954
+ let t = e.result.startsWith(e.name) ? e.result : `${r.display_name(e.name)} 执行失败:${e.result}`, n = t.split("\n")[0], i = n.length > $Z ? `${n.slice(0, $Z)}…` : n;
50942
50955
  return {
50943
50956
  tone: "error",
50944
50957
  title: "已暂停",
@@ -51083,20 +51096,20 @@ var vq = /*#__PURE__*/ MH({
51083
51096
  te.value?.settle(), await i("extend_rounds", ee.value) && (E.value = !1);
51084
51097
  }
51085
51098
  return (e, c) => {
51086
- let f = MA, p = sA, m = pA, v = TH, T = bH, ie = zV, me = YK;
51099
+ let f = MA, p = sA, m = pA, v = TH, T = bH, ie = zV, me = XK;
51087
51100
  return U(), W("div", { class: j(["progress-board", { "is-docked": t.docked }]) }, [
51088
- t.docked ? (U(), W("header", eZ, [c[23] ||= K("strong", null, "讨论进度", -1), K("span", tZ, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
51101
+ t.docked ? (U(), W("header", tZ, [c[23] ||= K("strong", null, "讨论进度", -1), K("span", nZ, P(b.value ? "全自动" : "手动"), 1)])) : Y("", !0),
51089
51102
  K("section", {
51090
51103
  class: j(["pb-status", `is-${we.value.tone}`]),
51091
51104
  "aria-label": "讨论状态"
51092
51105
  }, [
51093
- K("div", nZ, [
51106
+ K("div", rZ, [
51094
51107
  c[24] ||= K("span", { class: "pb-dot" }, null, -1),
51095
- K("strong", rZ, P(we.value.title), 1),
51096
- t.docked ? Y("", !0) : (U(), W("span", iZ, P(b.value ? "全自动" : "手动"), 1))
51108
+ K("strong", iZ, P(we.value.title), 1),
51109
+ t.docked ? Y("", !0) : (U(), W("span", aZ, P(b.value ? "全自动" : "手动"), 1))
51097
51110
  ]),
51098
- we.value.detail ? (U(), W("p", aZ, P(we.value.detail), 1)) : Y("", !0),
51099
- we.value.full_detail ? (U(), W("details", oZ, [c[25] ||= K("summary", null, "查看错误详情", -1), K("pre", sZ, P(we.value.full_detail), 1)])) : Y("", !0),
51111
+ we.value.detail ? (U(), W("p", oZ, P(we.value.detail), 1)) : Y("", !0),
51112
+ we.value.full_detail ? (U(), W("details", sZ, [c[25] ||= K("summary", null, "查看错误详情", -1), K("pre", cZ, P(we.value.full_detail), 1)])) : Y("", !0),
51100
51113
  ge.value && I(n).launch.available && !I(n).launch.remote ? (U(), G(f, {
51101
51114
  key: 2,
51102
51115
  icon: "i-lucide-arrow-left-right",
@@ -51108,12 +51121,12 @@ var vq = /*#__PURE__*/ MH({
51108
51121
  disabled: !!I(a),
51109
51122
  onClick: c[0] ||= (e) => ke(ge.value, "codex")
51110
51123
  }, null, 8, ["disabled"])) : Y("", !0),
51111
- Te.value.length ? (U(), W("div", cZ, [(U(!0), W(H, null, B(Te.value, (e) => (U(), W("div", {
51124
+ Te.value.length ? (U(), W("div", lZ, [(U(!0), W(H, null, B(Te.value, (e) => (U(), W("div", {
51112
51125
  key: e.label,
51113
51126
  class: "pb-meter"
51114
- }, [K("div", lZ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", uZ, [K("i", { style: pe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])) : Y("", !0)
51127
+ }, [K("div", uZ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", dZ, [K("i", { style: pe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])) : Y("", !0)
51115
51128
  ], 2),
51116
- be.value ? (U(), W("section", dZ, [
51129
+ be.value ? (U(), W("section", fZ, [
51117
51130
  c[26] ||= K("h4", null, "当前焦点", -1),
51118
51131
  K("p", { class: j(["pb-focus", { "is-expanded": u.value }]) }, P(be.value), 3),
51119
51132
  xe.value ? (U(), W("button", {
@@ -51123,15 +51136,15 @@ var vq = /*#__PURE__*/ MH({
51123
51136
  onClick: c[1] ||= (e) => u.value = !u.value
51124
51137
  }, P(u.value ? "收起" : "展开"), 1)) : Y("", !0)
51125
51138
  ])) : Y("", !0),
51126
- K("section", fZ, [
51127
- K("div", pZ, [c[28] ||= K("h4", null, "参与者", -1), ve.value ? (U(), W("button", {
51139
+ K("section", pZ, [
51140
+ K("div", mZ, [c[28] ||= K("h4", null, "参与者", -1), ve.value ? (U(), W("button", {
51128
51141
  key: 0,
51129
51142
  type: "button",
51130
51143
  class: "pb-link",
51131
51144
  onClick: Oe
51132
51145
  }, [q(p, { name: "i-lucide-plus" }), c[27] ||= J("邀请", -1)])) : Y("", !0)]),
51133
- _.value.held_since && x.value && !S.value ? (U(), W("p", mZ, "用户有新操作," + P(I(r).display_name(x.value.expert)) + " 说完后交给主持人", 1)) : Y("", !0),
51134
- K("ul", hZ, [(U(!0), W(H, null, B(A.value, (e) => (U(), W("li", {
51146
+ _.value.held_since && x.value && !S.value ? (U(), W("p", hZ, "用户有新操作," + P(I(r).display_name(x.value.expert)) + " 说完后交给主持人", 1)) : Y("", !0),
51147
+ K("ul", gZ, [(U(!0), W(H, null, B(A.value, (e) => (U(), W("li", {
51135
51148
  key: e.name,
51136
51149
  class: "pb-member"
51137
51150
  }, [
@@ -51147,8 +51160,8 @@ var vq = /*#__PURE__*/ MH({
51147
51160
  "alt",
51148
51161
  "class"
51149
51162
  ]),
51150
- K("div", gZ, [
51151
- K("div", _Z, [
51163
+ K("div", _Z, [
51164
+ K("div", vZ, [
51152
51165
  J(P(I(r).display_name(e.name)), 1),
51153
51166
  e.is_host ? (U(), G(p, {
51154
51167
  key: 0,
@@ -51157,22 +51170,22 @@ var vq = /*#__PURE__*/ MH({
51157
51170
  })) : Y("", !0),
51158
51171
  K("small", null, P(e.is_host ? `主持 · ${e.mode}` : e.mode), 1)
51159
51172
  ]),
51160
- e.model ? (U(), W("div", vZ, P(e.model), 1)) : Y("", !0),
51161
- M(e.name)?.session_mode === "borrowed" ? (U(), W("div", yZ, "借用已有会话")) : Y("", !0),
51173
+ e.model ? (U(), W("div", yZ, P(e.model), 1)) : Y("", !0),
51174
+ M(e.name)?.session_mode === "borrowed" ? (U(), W("div", bZ, "借用已有会话")) : Y("", !0),
51162
51175
  w.value ? Y("", !0) : (U(), W("div", {
51163
51176
  key: 2,
51164
51177
  class: j(["pb-member-status", `is-${e.tone}`])
51165
51178
  }, [
51166
51179
  c[29] ||= K("span", { class: "pb-dot" }, null, -1),
51167
51180
  J(P(e.text), 1),
51168
- e.failures ? (U(), W("small", bZ, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
51181
+ e.failures ? (U(), W("small", xZ, " · 失败 " + P(e.failures) + " 次", 1)) : Y("", !0)
51169
51182
  ], 2)),
51170
- e.manual && !w.value ? (U(), W("div", xZ, [!M(e.name)?.registered_at && !e.is_host ? (U(), W("span", SZ, "需在它的会话中注册,才算到场")) : Y("", !0), ce.value ? (U(), W("button", {
51183
+ e.manual && !w.value ? (U(), W("div", SZ, [!M(e.name)?.registered_at && !e.is_host ? (U(), W("span", CZ, "需在它的会话中注册,才算到场")) : Y("", !0), ce.value ? (U(), W("button", {
51171
51184
  key: 1,
51172
51185
  type: "button",
51173
51186
  class: "pb-link",
51174
51187
  onClick: (t) => l(e.name)
51175
- }, [q(p, { name: s.value === e.name ? "i-lucide-check" : "i-lucide-rocket" }, null, 8, ["name"]), J(P(s.value === e.name ? "已复制" : "复制启动指令"), 1)], 8, CZ)) : Y("", !0)])) : Y("", !0)
51188
+ }, [q(p, { name: s.value === e.name ? "i-lucide-check" : "i-lucide-rocket" }, null, 8, ["name"]), J(P(s.value === e.name ? "已复制" : "复制启动指令"), 1)], 8, wZ)) : Y("", !0)])) : Y("", !0)
51176
51189
  ]),
51177
51190
  De(e).length ? (U(), G(v, {
51178
51191
  key: 0,
@@ -51206,7 +51219,7 @@ var vq = /*#__PURE__*/ MH({
51206
51219
  "alt",
51207
51220
  "class"
51208
51221
  ]),
51209
- K("div", wZ, [K("div", TZ, [J(P(I(r).display_name(e.name)), 1), c[30] ||= K("small", null, "暂离", -1)]), c[31] ||= K("div", { class: "pb-member-status is-neutral" }, [K("span", { class: "pb-dot" }), J("保留位置和会话,不参与安排")], -1)]),
51222
+ K("div", TZ, [K("div", EZ, [J(P(I(r).display_name(e.name)), 1), c[30] ||= K("small", null, "暂离", -1)]), c[31] ||= K("div", { class: "pb-member-status is-neutral" }, [K("span", { class: "pb-dot" }), J("保留位置和会话,不参与安排")], -1)]),
51210
51223
  De({ name: e.name }).length ? (U(), G(v, {
51211
51224
  key: 0,
51212
51225
  items: De({ name: e.name }),
@@ -51224,9 +51237,9 @@ var vq = /*#__PURE__*/ MH({
51224
51237
  _: 2
51225
51238
  }, 1032, ["items"])) : Y("", !0)
51226
51239
  ]))), 128))]),
51227
- !ye.value && I(n).free_error && _.value.phase !== "paused" ? (U(), W("p", EZ, P(I(n).free_error), 1)) : I(n).free_notice ? (U(), W("p", DZ, P(I(n).free_notice), 1)) : Y("", !0)
51240
+ !ye.value && I(n).free_error && _.value.phase !== "paused" ? (U(), W("p", DZ, P(I(n).free_error), 1)) : I(n).free_notice ? (U(), W("p", OZ, P(I(n).free_notice), 1)) : Y("", !0)
51228
51241
  ]),
51229
- fe.value ? (U(), W("section", OZ, [
51242
+ fe.value ? (U(), W("section", kZ, [
51230
51243
  ue.value ? (U(), G(f, {
51231
51244
  key: 0,
51232
51245
  icon: "i-lucide-list-checks",
@@ -51320,8 +51333,8 @@ var vq = /*#__PURE__*/ MH({
51320
51333
  onClick: c[7] ||= (e) => o.value = !0
51321
51334
  }, null, 8, ["disabled"])) : Y("", !0)
51322
51335
  ])) : Y("", !0),
51323
- b.value && Se.value.count ? (U(), W("section", kZ, [
51324
- K("div", AZ, [c[32] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(Se.value.count) + " 次执行", 1)]),
51336
+ b.value && Se.value.count ? (U(), W("section", AZ, [
51337
+ K("div", jZ, [c[32] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(Se.value.count) + " 次执行", 1)]),
51325
51338
  K("div", {
51326
51339
  class: "pb-timing-bar",
51327
51340
  role: "img",
@@ -51330,18 +51343,18 @@ var vq = /*#__PURE__*/ MH({
51330
51343
  key: e.key,
51331
51344
  class: j(`is-${e.key}`),
51332
51345
  style: pe({ width: `${e.percent}%` })
51333
- }, null, 6))), 128))], 8, jZ),
51334
- K("dl", MZ, [(U(!0), W(H, null, B(je.value, (e) => (U(), W("div", {
51346
+ }, null, 6))), 128))], 8, MZ),
51347
+ K("dl", NZ, [(U(!0), W(H, null, B(je.value, (e) => (U(), W("div", {
51335
51348
  key: e.key,
51336
51349
  title: e.hint
51337
- }, [K("dt", null, [K("span", { class: j(`pb-timing-dot is-${e.key}`) }, null, 2), J(P(e.label), 1)]), K("dd", null, [J(P(Me(e.seconds)), 1), K("small", null, P(e.percent) + "%", 1)])], 8, NZ))), 128))]),
51338
- K("details", PZ, [
51350
+ }, [K("dt", null, [K("span", { class: j(`pb-timing-dot is-${e.key}`) }, null, 2), J(P(e.label), 1)]), K("dd", null, [J(P(Me(e.seconds)), 1), K("small", null, P(e.percent) + "%", 1)])], 8, PZ))), 128))]),
51351
+ K("details", FZ, [
51339
51352
  c[33] ||= K("summary", null, "查看每次执行", -1),
51340
- K("ol", null, [(U(!0), W(H, null, B(Se.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", IZ, [(U(), W(H, null, B(h, (t) => K("span", {
51353
+ K("ol", null, [(U(!0), W(H, null, B(Se.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", IZ, [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", LZ, [(U(), W(H, null, B(h, (t) => K("span", {
51341
51354
  key: t.key,
51342
51355
  title: t.hint
51343
- }, P(t.label) + " " + P(Me(e[t.key])), 9, LZ)), 64))])]))), 128))]),
51344
- Se.value.count > Se.value.items.length ? (U(), W("p", RZ, "只列出最近 " + P(Se.value.items.length) + " 次,共 " + P(Se.value.count) + " 次执行。", 1)) : Y("", !0)
51356
+ }, P(t.label) + " " + P(Me(e[t.key])), 9, RZ)), 64))])]))), 128))]),
51357
+ Se.value.count > Se.value.items.length ? (U(), W("p", zZ, "只列出最近 " + P(Se.value.items.length) + " 次,共 " + P(Se.value.count) + " 次执行。", 1)) : Y("", !0)
51345
51358
  ])
51346
51359
  ])) : Y("", !0),
51347
51360
  q(me, {
@@ -51354,7 +51367,7 @@ var vq = /*#__PURE__*/ MH({
51354
51367
  body: "dialog-body"
51355
51368
  }
51356
51369
  }, {
51357
- body: L(() => [K("div", zZ, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[34] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51370
+ body: L(() => [K("div", BZ, [y.value.status === "running" ? (U(), W(H, { key: 0 }, [c[34] ||= K("p", null, "切换前需要暂停讨论,当前执行会停止,原发言安排保留。", -1), q(f, {
51358
51371
  label: "暂停并读取配置",
51359
51372
  icon: "i-lucide-pause",
51360
51373
  class: "channel-primary-button",
@@ -51377,7 +51390,7 @@ var vq = /*#__PURE__*/ MH({
51377
51390
  }, null, 8, ["model-value", "disabled"])]),
51378
51391
  _: 1
51379
51392
  }),
51380
- K("p", BZ, P(N.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51393
+ K("p", VZ, P(N.value.adapter === "codex" ? "App 需保持运行,模型与权限沿用原聊天设置。" : "切回 CLI 前,需让 App 释放原聊天;仍被占用时无法执行。"), 1),
51381
51394
  q(f, {
51382
51395
  label: "保存接入方式",
51383
51396
  class: "channel-primary-button",
@@ -51385,7 +51398,7 @@ var vq = /*#__PURE__*/ MH({
51385
51398
  disabled: !!I(a),
51386
51399
  onClick: c[9] ||= (e) => I(i)("save_room_configuration")
51387
51400
  }, null, 8, ["loading", "disabled"]),
51388
- I(n).launch.repair?.notice ? (U(), W("p", VZ, P(I(n).launch.repair.notice), 1)) : Y("", !0),
51401
+ I(n).launch.repair?.notice ? (U(), W("p", HZ, P(I(n).launch.repair.notice), 1)) : Y("", !0),
51389
51402
  I(n).launch.repair?.applied && oe.value ? (U(), G(f, {
51390
51403
  key: 1,
51391
51404
  label: "重启讨论",
@@ -51405,10 +51418,10 @@ var vq = /*#__PURE__*/ MH({
51405
51418
  color: "neutral",
51406
51419
  loading: !!I(a),
51407
51420
  onClick: Ae
51408
- }, null, 8, ["loading"])), I(n).launch.repair_error ? (U(), W("p", HZ, P(I(n).launch.repair_error), 1)) : Y("", !0)], 64)) : (U(), W("p", UZ, "本场状态已变化,请关闭后重新核对。"))])]),
51421
+ }, null, 8, ["loading"])), I(n).launch.repair_error ? (U(), W("p", UZ, P(I(n).launch.repair_error), 1)) : Y("", !0)], 64)) : (U(), W("p", WZ, "本场状态已变化,请关闭后重新核对。"))])]),
51409
51422
  _: 1
51410
51423
  }, 8, ["open"]),
51411
- q($X, {
51424
+ q(eZ, {
51412
51425
  open: ye.value,
51413
51426
  "onUpdate:open": c[12] ||= (e) => ye.value = e,
51414
51427
  description: "新专家由程序按本机软件配置启动,或由你手动启动,加入本轮发言队列。"
@@ -51426,7 +51439,7 @@ var vq = /*#__PURE__*/ MH({
51426
51439
  body: L(() => [K("form", {
51427
51440
  class: "pb-reopen",
51428
51441
  onSubmit: uu(Pe, ["prevent"])
51429
- }, [q(Cq, {
51442
+ }, [q(wq, {
51430
51443
  ref_key: "reopen_limits",
51431
51444
  ref: O,
51432
51445
  rounds: ne.value,
@@ -51434,7 +51447,7 @@ var vq = /*#__PURE__*/ MH({
51434
51447
  minutes: re.value,
51435
51448
  "onUpdate:minutes": c[14] ||= (e) => re.value = e,
51436
51449
  execution: !1
51437
- }, null, 8, ["rounds", "minutes"]), K("div", WZ, [q(f, {
51450
+ }, null, 8, ["rounds", "minutes"]), K("div", GZ, [q(f, {
51438
51451
  label: "取消",
51439
51452
  color: "neutral",
51440
51453
  variant: "ghost",
@@ -51462,13 +51475,13 @@ var vq = /*#__PURE__*/ MH({
51462
51475
  body: L(() => [K("form", {
51463
51476
  class: "pb-reopen",
51464
51477
  onSubmit: uu(Ie, ["prevent"])
51465
- }, [q(vq, {
51478
+ }, [q(yq, {
51466
51479
  ref_key: "extend_picker",
51467
51480
  ref: te,
51468
51481
  rounds: ee.value,
51469
51482
  "onUpdate:rounds": c[17] ||= (e) => ee.value = e,
51470
51483
  append: ""
51471
- }, null, 8, ["rounds"]), K("div", GZ, [q(f, {
51484
+ }, null, 8, ["rounds"]), K("div", KZ, [q(f, {
51472
51485
  label: "取消",
51473
51486
  color: "neutral",
51474
51487
  variant: "ghost",
@@ -51480,12 +51493,12 @@ var vq = /*#__PURE__*/ MH({
51480
51493
  class: "channel-primary-button",
51481
51494
  loading: I(a) === "extend_rounds",
51482
51495
  disabled: !!I(a) || !(ee.value >= 1 && ee.value <= 100)
51483
- }, null, 8, ["loading", "disabled"])])], 32), K("div", KZ, [K("button", {
51496
+ }, null, 8, ["loading", "disabled"])])], 32), K("div", qZ, [K("button", {
51484
51497
  type: "button",
51485
51498
  class: "progress-ending-option",
51486
51499
  disabled: !!I(a),
51487
51500
  onClick: c[19] ||= (e) => Fe("end_room_discussion", "deciding")
51488
- }, [...c[35] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, qZ)])]),
51501
+ }, [...c[35] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, JZ)])]),
51489
51502
  _: 1
51490
51503
  }, 8, ["open"]),
51491
51504
  q(me, {
@@ -51498,18 +51511,18 @@ var vq = /*#__PURE__*/ MH({
51498
51511
  body: "dialog-body"
51499
51512
  }
51500
51513
  }, {
51501
- body: L(() => [K("div", JZ, [K("button", {
51514
+ body: L(() => [K("div", YZ, [K("button", {
51502
51515
  type: "button",
51503
51516
  class: "progress-ending-option",
51504
51517
  disabled: C.value || !!I(a),
51505
51518
  onClick: c[21] ||= (e) => Fe("end_room_discussion")
51506
- }, [...c[36] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,自动运行随之停止,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, YZ)])]),
51519
+ }, [...c[36] ||= [K("strong", null, "结束讨论", -1), K("span", null, "保留全部记录,自动运行随之停止,房间回到自由协作;需要总结时可直接请主持人写一份。", -1)]], 8, XZ)])]),
51507
51520
  _: 1
51508
51521
  }, 8, ["open"])
51509
51522
  ], 2);
51510
51523
  };
51511
51524
  }
51512
- }, [["__scopeId", "data-v-4bffe952"]]), eQ = { class: "progress-panel-anchor" }, tQ = ["aria-expanded", "aria-label"], nQ = { class: "progress-chip-text" }, rQ = { class: "progress-chip-rounds" }, iQ = {
51525
+ }, [["__scopeId", "data-v-4bffe952"]]), tQ = { class: "progress-panel-anchor" }, nQ = ["aria-expanded", "aria-label"], rQ = { class: "progress-chip-text" }, iQ = { class: "progress-chip-rounds" }, aQ = {
51513
51526
  __name: "ProgressPanel",
51514
51527
  setup(e) {
51515
51528
  let { view: t, bridge: n } = xr("discussion"), r = /* @__PURE__ */ F(!1), i = Z(() => t.value.room), a = Z(() => i.value.limits || {}), o = Z(() => {
@@ -51536,7 +51549,7 @@ var vq = /*#__PURE__*/ MH({
51536
51549
  }), 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}`);
51537
51550
  return (e, t) => {
51538
51551
  let n = $V, a = NV;
51539
- return U(), W("div", eQ, [q(n, { text: "查看讨论进度" }, {
51552
+ return U(), W("div", tQ, [q(n, { text: "查看讨论进度" }, {
51540
51553
  default: L(() => [K("button", {
51541
51554
  type: "button",
51542
51555
  class: j(["progress-chip", `is-${o.value.tone}`]),
@@ -51544,7 +51557,7 @@ var vq = /*#__PURE__*/ MH({
51544
51557
  "aria-expanded": r.value,
51545
51558
  "aria-label": `查看讨论进度:${c.value}`,
51546
51559
  onClick: t[0] ||= (e) => r.value = !0
51547
- }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", nQ, [J(P(o.value.title), 1), K("span", rQ, " · " + P(s.value), 1)])], 10, tQ)]),
51560
+ }, [t[2] ||= K("span", { class: "progress-dot" }, null, -1), K("span", rQ, [J(P(o.value.title), 1), K("span", iQ, " · " + P(s.value), 1)])], 10, nQ)]),
51548
51561
  _: 1
51549
51562
  }), q(a, {
51550
51563
  open: r.value,
@@ -51557,12 +51570,12 @@ var vq = /*#__PURE__*/ MH({
51557
51570
  body: "progress-drawer-body"
51558
51571
  }
51559
51572
  }, {
51560
- body: L(() => [q($Z)]),
51573
+ body: L(() => [q(eQ)]),
51561
51574
  _: 1
51562
51575
  }, 8, ["open", "description"])]);
51563
51576
  };
51564
51577
  }
51565
- }, aQ = { class: "start-discussion-footer" }, oQ = 3, sQ = /*#__PURE__*/ MH({
51578
+ }, oQ = { class: "start-discussion-footer" }, sQ = 3, cQ = /*#__PURE__*/ MH({
51566
51579
  __name: "StartDiscussionDialog",
51567
51580
  props: {
51568
51581
  open: {
@@ -51573,9 +51586,9 @@ var vq = /*#__PURE__*/ MH({
51573
51586
  },
51574
51587
  emits: ["update:open"],
51575
51588
  setup(e) {
51576
- let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(oQ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(""), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(null);
51589
+ let t = ro(e, "open"), { view: n, act: r, pending: i } = xr("discussion"), a = /* @__PURE__ */ F(""), o = /* @__PURE__ */ F(sQ), s = /* @__PURE__ */ F(0), c = /* @__PURE__ */ F(""), l = /* @__PURE__ */ F(!1), u = /* @__PURE__ */ F(null);
51577
51590
  R(t, (e) => {
51578
- e && (a.value = "", o.value = oQ, s.value = 0, c.value = "", l.value = !1);
51591
+ e && (a.value = "", o.value = sQ, s.value = 0, c.value = "", l.value = !1);
51579
51592
  });
51580
51593
  async function d() {
51581
51594
  u.value?.settle();
@@ -51589,7 +51602,7 @@ var vq = /*#__PURE__*/ MH({
51589
51602
  }) && (t.value = !1);
51590
51603
  }
51591
51604
  return (e, r) => {
51592
- let f = HV, p = zV, m = $K, h = MA, g = YK;
51605
+ let f = HV, p = zV, m = eq, h = MA, g = XK;
51593
51606
  return U(), G(g, {
51594
51607
  open: t.value,
51595
51608
  "onUpdate:open": r[6] ||= (e) => t.value = e,
@@ -51621,7 +51634,7 @@ var vq = /*#__PURE__*/ MH({
51621
51634
  }, null, 8, ["modelValue"])]),
51622
51635
  _: 1
51623
51636
  }),
51624
- q(Cq, {
51637
+ q(wq, {
51625
51638
  ref_key: "limits",
51626
51639
  ref: u,
51627
51640
  rounds: o.value,
@@ -51643,7 +51656,7 @@ var vq = /*#__PURE__*/ MH({
51643
51656
  "minutes",
51644
51657
  "execution_minutes"
51645
51658
  ]),
51646
- K("div", aQ, [q(h, {
51659
+ K("div", oQ, [q(h, {
51647
51660
  label: "取消",
51648
51661
  color: "neutral",
51649
51662
  variant: "ghost",
@@ -51661,55 +51674,58 @@ var vq = /*#__PURE__*/ MH({
51661
51674
  }, 8, ["open"]);
51662
51675
  };
51663
51676
  }
51664
- }, [["__scopeId", "data-v-dee972d6"]]), cQ = { class: "progress-board is-docked" }, lQ = { class: "pb-header" }, uQ = { class: "pb-mode" }, dQ = { class: "pb-status-line" }, fQ = { role: "status" }, pQ = {
51677
+ }, [["__scopeId", "data-v-dee972d6"]]), lQ = { class: "progress-board is-docked" }, uQ = { class: "pb-header" }, dQ = { class: "pb-mode" }, fQ = { class: "pb-status-line" }, pQ = { role: "status" }, mQ = {
51665
51678
  key: 0,
51666
51679
  class: "pb-status-detail"
51667
- }, mQ = { class: "pb-meters" }, hQ = { class: "pb-meter-label" }, gQ = {
51680
+ }, hQ = { class: "pb-meters" }, gQ = { class: "pb-meter-label" }, _Q = {
51668
51681
  key: 0,
51669
51682
  class: "pb-bar"
51670
- }, _Q = {
51683
+ }, vQ = {
51671
51684
  key: 0,
51672
51685
  class: "pb-section",
51673
51686
  "aria-label": "当前任务"
51674
- }, vQ = {
51687
+ }, yQ = {
51675
51688
  class: "pb-section",
51676
51689
  "aria-label": "成员"
51677
- }, yQ = { class: "pb-members" }, bQ = { class: "pb-member-body" }, xQ = { class: "pb-member-name" }, SQ = { class: "pb-member-model" }, CQ = {
51690
+ }, bQ = { class: "pb-members" }, xQ = { class: "pb-member-body" }, SQ = { class: "pb-member-name" }, CQ = {
51678
51691
  key: 0,
51692
+ class: "pb-member-model"
51693
+ }, wQ = {
51694
+ key: 1,
51679
51695
  class: "pb-member-model",
51680
51696
  title: "它工作时请不要在原窗口继续操作"
51681
- }, wQ = {
51697
+ }, TQ = {
51682
51698
  key: 0,
51683
51699
  role: "alert",
51684
51700
  class: "pb-free-note is-error"
51685
- }, TQ = {
51701
+ }, EQ = {
51686
51702
  key: 1,
51687
51703
  role: "status",
51688
51704
  class: "pb-free-note"
51689
- }, EQ = {
51705
+ }, DQ = {
51690
51706
  key: 2,
51691
51707
  role: "alert",
51692
51708
  class: "pb-free-note is-error"
51693
- }, DQ = {
51709
+ }, OQ = {
51694
51710
  key: 3,
51695
51711
  role: "status",
51696
51712
  class: "pb-free-note"
51697
- }, OQ = {
51713
+ }, kQ = {
51698
51714
  key: 1,
51699
51715
  class: "pb-section",
51700
51716
  "aria-label": "头脑风暴"
51701
- }, kQ = ["onClick"], AQ = {
51717
+ }, AQ = ["onClick"], jQ = {
51702
51718
  key: 2,
51703
51719
  class: "pb-actions",
51704
51720
  "aria-label": "操作"
51705
- }, jQ = {
51721
+ }, MQ = {
51706
51722
  key: 0,
51707
51723
  class: "pb-free-note"
51708
- }, MQ = {
51724
+ }, NQ = {
51709
51725
  key: 3,
51710
51726
  class: "pb-section",
51711
51727
  "aria-label": "执行耗时"
51712
- }, NQ = { class: "pb-timing-heading" }, PQ = { class: "pb-timings" }, FQ = { class: "pb-timing-who" }, IQ = { class: "pb-timing-stages" }, LQ = 90, RQ = /*#__PURE__*/ MH({
51728
+ }, PQ = { class: "pb-timing-heading" }, FQ = { class: "pb-timings" }, IQ = { class: "pb-timing-who" }, LQ = { class: "pb-timing-stages" }, RQ = 90, zQ = /*#__PURE__*/ MH({
51713
51729
  __name: "FreeBoard",
51714
51730
  setup(e) {
51715
51731
  let { view: t, bridge: n, act: r, pending: i } = xr("discussion"), a = ["dispatched", "started"], o = {
@@ -51728,12 +51744,12 @@ var vq = /*#__PURE__*/ MH({
51728
51744
  }
51729
51745
  function g(e) {
51730
51746
  if (e.status === "away") return "已离开:不会被唤醒,可请回";
51731
- if (m(e)) return "待注册:须在它的会话中注册,才算到场";
51747
+ if (m(e)) return "待注册";
51732
51748
  let t = e.execution;
51733
- return t && a.includes(t.status) ? t.stale ? "执行失联,停止未确认" : "正在处理" : e.pending ? `待投递 ${e.pending} 条` : t?.status === "failed" ? `上次失败:${t.result}` : t ? "空闲" : e.access === "manual" ? "已注册" : "尚未收到消息";
51749
+ return t && a.includes(t.status) ? t.stale ? "执行失联,停止未确认" : "正在处理" : e.pending ? `待投递 ${e.pending} 条` : t?.status === "failed" ? `上次失败:${t.result}` : !t && e.access === "manual" ? "已注册" : "空闲";
51734
51750
  }
51735
51751
  function _(e) {
51736
- return e.access === "online" ? "网页 AI · 回答由你代发" : e.access === "manual" ? "模型与强度在原会话设置" : n.participant_model(e.name, c.value, t.value.launch.room_models);
51752
+ return e.access === "runner" ? n.participant_model(e.name, c.value, t.value.launch.room_models) : "";
51737
51753
  }
51738
51754
  let v = Z(() => {
51739
51755
  if (c.value.archived) return {
@@ -51865,32 +51881,32 @@ var vq = /*#__PURE__*/ MH({
51865
51881
  ee.value = !1;
51866
51882
  }), (e, i) => {
51867
51883
  let a = pA, f = sA, m = MA, D = TH;
51868
- return U(), W("div", cQ, [
51869
- K("header", lQ, [i[5] ||= K("strong", null, "自由协作", -1), K("span", uQ, P(u.value ? `${I(n).display_name(u.value.name)} 主持` : "无主持人"), 1)]),
51884
+ return U(), W("div", lQ, [
51885
+ K("header", uQ, [i[5] ||= K("strong", null, "自由协作", -1), K("span", dQ, P(u.value ? `${I(n).display_name(u.value.name)} 主持` : "无主持人"), 1)]),
51870
51886
  K("section", {
51871
51887
  class: j(["pb-status", `is-${v.value.tone}`]),
51872
51888
  "aria-label": "房间状态"
51873
51889
  }, [
51874
- K("div", dQ, [i[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", fQ, P(v.value.title), 1)]),
51875
- v.value.detail ? (U(), W("p", pQ, P(v.value.detail), 1)) : Y("", !0),
51876
- K("div", mQ, [(U(!0), W(H, null, B(y.value, (e) => (U(), W("div", {
51890
+ K("div", fQ, [i[6] ||= K("span", { class: "pb-dot" }, null, -1), K("strong", pQ, P(v.value.title), 1)]),
51891
+ v.value.detail ? (U(), W("p", mQ, P(v.value.detail), 1)) : Y("", !0),
51892
+ K("div", hQ, [(U(!0), W(H, null, B(y.value, (e) => (U(), W("div", {
51877
51893
  key: e.label,
51878
51894
  class: "pb-meter"
51879
- }, [K("div", hQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", gQ, [K("i", { style: pe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51895
+ }, [K("div", gQ, [K("span", null, P(e.label), 1), K("b", null, P(e.text), 1)]), e.ratio === null ? Y("", !0) : (U(), W("div", _Q, [K("i", { style: pe({ width: `${Math.min(100, Math.round(e.ratio * 100))}%` }) }, null, 4)]))]))), 128))])
51880
51896
  ], 2),
51881
- b.value ? (U(), W("section", _Q, [
51897
+ b.value ? (U(), W("section", vQ, [
51882
51898
  i[7] ||= K("h4", null, "当前任务", -1),
51883
51899
  K("p", { class: j(["pb-focus", { "is-expanded": x.value }]) }, P(b.value), 3),
51884
- b.value.length > LQ ? (U(), W("button", {
51900
+ b.value.length > RQ ? (U(), W("button", {
51885
51901
  key: 0,
51886
51902
  type: "button",
51887
51903
  class: "pb-link",
51888
51904
  onClick: i[0] ||= (e) => x.value = !x.value
51889
51905
  }, P(x.value ? "收起" : "展开"), 1)) : Y("", !0)
51890
51906
  ])) : Y("", !0),
51891
- K("section", vQ, [
51907
+ K("section", yQ, [
51892
51908
  i[9] ||= K("h4", null, "成员", -1),
51893
- K("ul", yQ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("li", {
51909
+ K("ul", bQ, [(U(!0), W(H, null, B(d.value, (e) => (U(), W("li", {
51894
51910
  key: e.id,
51895
51911
  class: j(["pb-member", { "is-away": e.status === "away" }])
51896
51912
  }, [
@@ -51906,8 +51922,8 @@ var vq = /*#__PURE__*/ MH({
51906
51922
  "alt",
51907
51923
  "class"
51908
51924
  ]),
51909
- K("div", bQ, [
51910
- K("div", xQ, [
51925
+ K("div", xQ, [
51926
+ K("div", SQ, [
51911
51927
  J(P(I(n).display_name(e.name)), 1),
51912
51928
  e.role === "host" ? (U(), G(f, {
51913
51929
  key: 0,
@@ -51916,8 +51932,8 @@ var vq = /*#__PURE__*/ MH({
51916
51932
  })) : Y("", !0),
51917
51933
  K("small", null, P(e.role === "host" ? `主持 · ${s[e.access]}` : s[e.access]), 1)
51918
51934
  ]),
51919
- K("div", SQ, P(_(e)), 1),
51920
- e.session_mode === "borrowed" ? (U(), W("div", CQ, "借用已有会话")) : Y("", !0),
51935
+ _(e) ? (U(), W("div", CQ, P(_(e)), 1)) : Y("", !0),
51936
+ e.session_mode === "borrowed" ? (U(), W("div", wQ, "借用已有会话")) : Y("", !0),
51921
51937
  K("div", { class: j(["pb-member-status", `is-${h(e)}`]) }, [i[8] ||= K("span", { class: "pb-dot" }, null, -1), J(P(g(e)), 1)], 2)
51922
51938
  ]),
51923
51939
  q(D, {
@@ -51940,8 +51956,8 @@ var vq = /*#__PURE__*/ MH({
51940
51956
  key: e.executions.join("-"),
51941
51957
  class: "pb-free-note is-warning"
51942
51958
  }, "可能冲突:" + P(e.members.map((e) => I(n).display_name(e)).join(" 与 ")) + " 的重叠执行观察到 " + P(e.files.join("、")) + " 变化;修改者未确认。", 1))), 128)),
51943
- I(t).free_error ? (U(), W("p", wQ, P(I(t).free_error), 1)) : I(t).free_notice ? (U(), W("p", TQ, P(I(t).free_notice), 1)) : Y("", !0),
51944
- I(t).access?.error ? (U(), W("p", EQ, P(I(t).access.error), 1)) : I(t).access?.notice ? (U(), W("p", DQ, P(I(t).access.notice), 1)) : Y("", !0),
51959
+ I(t).free_error ? (U(), W("p", TQ, P(I(t).free_error), 1)) : I(t).free_notice ? (U(), W("p", EQ, P(I(t).free_notice), 1)) : Y("", !0),
51960
+ I(t).access?.error ? (U(), W("p", DQ, P(I(t).access.error), 1)) : I(t).access?.notice ? (U(), W("p", OQ, P(I(t).access.notice), 1)) : Y("", !0),
51945
51961
  c.value.archived ? Y("", !0) : (U(), G(m, {
51946
51962
  key: 4,
51947
51963
  icon: "i-lucide-plus",
@@ -51953,13 +51969,13 @@ var vq = /*#__PURE__*/ MH({
51953
51969
  onClick: i[1] ||= (e) => T.value = !0
51954
51970
  }))
51955
51971
  ]),
51956
- c.value.linked_rooms?.length ? (U(), W("section", OQ, [i[10] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
51972
+ c.value.linked_rooms?.length ? (U(), W("section", kQ, [i[10] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(c.value.linked_rooms, (e) => (U(), W("button", {
51957
51973
  key: e.id,
51958
51974
  type: "button",
51959
51975
  class: "pb-link pb-free-linked",
51960
51976
  onClick: (t) => I(r)("room", e.id)
51961
- }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, kQ))), 128))])) : Y("", !0),
51962
- c.value.archived ? Y("", !0) : (U(), W("section", AQ, [q(m, {
51977
+ }, [J(P(e.title), 1), K("small", null, P(I(n).phases[e.phase] || e.phase), 1)], 8, AQ))), 128))])) : Y("", !0),
51978
+ c.value.archived ? Y("", !0) : (U(), W("section", jQ, [q(m, {
51963
51979
  icon: "i-lucide-messages-square",
51964
51980
  label: "开启讨论",
51965
51981
  size: "sm",
@@ -51969,13 +51985,13 @@ var vq = /*#__PURE__*/ MH({
51969
51985
  title: "由主持人推进成员轮流发言,到上限或结束后房间回到自由协作",
51970
51986
  disabled: !E.value,
51971
51987
  onClick: i[2] ||= (e) => ee.value = !0
51972
- }, null, 8, ["disabled"]), E.value ? Y("", !0) : (U(), W("p", jQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])),
51973
- S.value.items.length ? (U(), W("section", MQ, [K("div", NQ, [i[11] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(S.value.items.length) + " 次执行 · " + P(C(S.value.total)), 1)]), K("details", PQ, [i[12] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(S.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", FQ, [J("#" + P(e.id) + " " + P(p(e.member_id)), 1), K("small", null, P(o[e.status] || e.status), 1)]), K("span", IQ, [K("span", null, "用时 " + P(C(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
51974
- q(sQ, {
51988
+ }, null, 8, ["disabled"]), E.value ? Y("", !0) : (U(), W("p", MQ, "开启讨论需要一位由本机唤醒的 AI 主持人。"))])),
51989
+ S.value.items.length ? (U(), W("section", NQ, [K("div", PQ, [i[11] ||= K("h4", null, "耗时", -1), K("small", null, "共 " + P(S.value.items.length) + " 次执行 · " + P(C(S.value.total)), 1)]), K("details", FQ, [i[12] ||= K("summary", null, "查看每次执行", -1), K("ol", null, [(U(!0), W(H, null, B(S.value.items, (e) => (U(), W("li", { key: e.id }, [K("span", IQ, [J("#" + P(e.id) + " " + P(p(e.member_id)), 1), K("small", null, P(o[e.status] || e.status), 1)]), K("span", LQ, [K("span", null, "用时 " + P(C(e.seconds)), 1)])]))), 128))])])])) : Y("", !0),
51990
+ q(cQ, {
51975
51991
  open: ee.value,
51976
51992
  "onUpdate:open": i[3] ||= (e) => ee.value = e
51977
51993
  }, null, 8, ["open"]),
51978
- q($X, {
51994
+ q(eZ, {
51979
51995
  open: T.value,
51980
51996
  "onUpdate:open": i[4] ||= (e) => T.value = e,
51981
51997
  description: "新成员加入后不打断其他成员;点卡片翻面可设置软件、模型、项目权限和要续接的已有会话。"
@@ -51983,47 +51999,47 @@ var vq = /*#__PURE__*/ MH({
51983
51999
  ]);
51984
52000
  };
51985
52001
  }
51986
- }, [["__scopeId", "data-v-4d27f349"]]), zQ = {
52002
+ }, [["__scopeId", "data-v-567c6ac8"]]), BQ = {
51987
52003
  id: "channel-sidebar",
51988
52004
  class: "channel-sidebar",
51989
52005
  "aria-label": "房间导航"
51990
- }, BQ = { class: "channel-sidebar-content" }, VQ = { class: "channel-directory-heading channel-tools-heading" }, HQ = ["aria-expanded"], UQ = { class: "channel-sidebar-footer" }, WQ = ["aria-label"], GQ = { class: "channel-self" }, KQ = ["title"], qQ = [
52006
+ }, VQ = { class: "channel-sidebar-content" }, HQ = { class: "channel-directory-heading channel-tools-heading" }, UQ = ["aria-expanded"], WQ = { class: "channel-sidebar-footer" }, GQ = ["aria-label"], KQ = { class: "channel-self" }, qQ = ["title"], JQ = [
51991
52007
  "aria-valuemax",
51992
52008
  "aria-valuenow",
51993
52009
  "aria-valuetext"
51994
- ], JQ = { class: "channel-main" }, YQ = { class: "channel-header" }, XQ = { class: "channel-title-icon" }, ZQ = { class: "channel-title" }, QQ = { class: "channel-title-copy" }, $Q = ["title"], e$ = {
52010
+ ], YQ = { class: "channel-main" }, XQ = { class: "channel-header" }, ZQ = { class: "channel-title-icon" }, QQ = { class: "channel-title" }, $Q = { class: "channel-title-copy" }, e$ = ["title"], t$ = {
51995
52011
  key: 0,
51996
52012
  class: "channel-header-context"
51997
- }, t$ = { class: "channel-header-actions" }, n$ = {
52013
+ }, n$ = { class: "channel-header-actions" }, r$ = {
51998
52014
  key: 0,
51999
52015
  class: "channel-launch-recovery",
52000
52016
  "aria-label": "未完成的创建或启动请求"
52001
- }, r$ = { role: "status" }, i$ = { class: "button-row" }, a$ = {
52017
+ }, i$ = { role: "status" }, a$ = { class: "button-row" }, o$ = {
52002
52018
  key: 1,
52003
52019
  class: "channel-tabbar"
52004
- }, o$ = { class: "channel-brief-inner" }, s$ = { class: "channel-brief-heading" }, c$ = ["aria-label", "aria-expanded"], l$ = {
52020
+ }, s$ = { class: "channel-brief-inner" }, c$ = { class: "channel-brief-heading" }, l$ = ["aria-label", "aria-expanded"], u$ = {
52005
52021
  key: 0,
52006
52022
  class: "channel-brief-preview"
52007
- }, u$ = {
52023
+ }, d$ = {
52008
52024
  id: "channel-brief-content",
52009
52025
  class: "channel-brief-content"
52010
- }, d$ = ["innerHTML"], f$ = { class: "channel-brief-footer" }, p$ = { class: "channel-brief-status" }, m$ = { class: "channel-content" }, h$ = {
52026
+ }, f$ = ["innerHTML"], p$ = { class: "channel-brief-footer" }, m$ = { class: "channel-brief-status" }, h$ = { class: "channel-content" }, g$ = {
52011
52027
  key: 0,
52012
52028
  class: "content-page channel-summary",
52013
52029
  role: "tabpanel",
52014
52030
  "aria-label": "共识"
52015
- }, g$ = { class: "page-heading" }, _$ = { class: "form-footer" }, v$ = {
52031
+ }, _$ = { class: "page-heading" }, v$ = { class: "form-footer" }, y$ = {
52016
52032
  key: 1,
52017
52033
  class: "channel-empty"
52018
- }, y$ = ["aria-valuenow", "aria-valuetext"], b$ = {
52034
+ }, b$ = ["aria-valuenow", "aria-valuetext"], x$ = {
52019
52035
  key: 2,
52020
52036
  id: "channel-member-rail",
52021
52037
  class: "channel-member-rail",
52022
52038
  "aria-label": "当前焦点与讨论进度"
52023
- }, x$ = { class: "channel-rail-board" }, S$ = {
52039
+ }, S$ = { class: "channel-rail-board" }, C$ = {
52024
52040
  key: 2,
52025
52041
  class: "progress-board is-docked"
52026
- }, C$ = { class: "channel-detail-title" }, w$ = { class: "info-section" }, T$ = "ai-codiscuss-channel-layout", E$ = 220, D$ = 440, O$ = 280, k$ = 16, A$ = 180, j$ = 400, M$ = 248, N$ = 16, P$ = 480, F$ = 1200, I$ = 0, L$ = {
52042
+ }, w$ = { class: "channel-detail-title" }, T$ = { class: "info-section" }, E$ = "ai-codiscuss-channel-layout", D$ = 220, O$ = 440, k$ = 280, A$ = 16, j$ = 180, M$ = 400, N$ = 248, P$ = 16, F$ = 480, I$ = 1200, L$ = 0, R$ = {
52027
52043
  __name: "ChannelWorkspace",
52028
52044
  setup(e) {
52029
52045
  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 = [{
@@ -52045,14 +52061,14 @@ var vq = /*#__PURE__*/ MH({
52045
52061
  label: "宽",
52046
52062
  width: 1240
52047
52063
  }
52048
- }, b = Te(), 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 >= F$), te = Z(() => t.value.tab === "discussion" && !D.value), ne = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), re = Z(() => {
52064
+ }, b = Te(), 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 >= I$), te = Z(() => t.value.tab === "discussion" && !D.value), ne = Z(() => O.value && t.value.tab === "discussion" ? D.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), re = Z(() => {
52049
52065
  let e = document.createElement("template");
52050
52066
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
52051
- }), ie = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(0), oe = null, k = /* @__PURE__ */ F(null), se = /* @__PURE__ */ F(null), ce = Z(() => Math.min(j$, Math.max(A$, T.value - P$ - I$))), le = Z(() => Math.min(w.value, ce.value)), ue = Z(() => ({
52067
+ }), ie = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(0), oe = null, k = /* @__PURE__ */ F(null), se = /* @__PURE__ */ F(null), ce = Z(() => Math.min(M$, Math.max(j$, T.value - F$ - L$))), le = Z(() => Math.min(w.value, ce.value)), ue = Z(() => ({
52052
52068
  "--channel-reading-width": `${y[x.value].width}px`,
52053
52069
  "--channel-rail-width": `${C.value}px`,
52054
52070
  "--channel-topbar-height": `${ae.value}px`,
52055
- "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${le.value}px ${I$}px minmax(0, 1fr)`
52071
+ "--channel-main-columns": ee.value ? "minmax(0, 1fr)" : `${le.value}px ${L$}px minmax(0, 1fr)`
52056
52072
  })), de = Object.entries(y).map(([e, t]) => ({
52057
52073
  value: e,
52058
52074
  label: t.label
@@ -52135,12 +52151,12 @@ var vq = /*#__PURE__*/ MH({
52135
52151
  }
52136
52152
  function Te() {
52137
52153
  try {
52138
- let e = JSON.parse(localStorage.getItem(T$)) || {};
52154
+ let e = JSON.parse(localStorage.getItem(E$)) || {};
52139
52155
  return {
52140
52156
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
52141
52157
  effects: e.effects === "reduced" ? "reduced" : "full",
52142
- rail: Number.isFinite(e.rail) ? Math.min(D$, Math.max(E$, e.rail)) : O$,
52143
- nav: Number.isFinite(e.nav) ? Math.min(j$, Math.max(A$, e.nav)) : Ee(),
52158
+ rail: Number.isFinite(e.rail) ? Math.min(O$, Math.max(D$, e.rail)) : k$,
52159
+ nav: Number.isFinite(e.nav) ? Math.min(M$, Math.max(j$, e.nav)) : Ee(),
52144
52160
  collapsed: e.collapsed === !0,
52145
52161
  brief_collapsed: e.brief_collapsed === !0,
52146
52162
  rail_collapsed: e.rail_collapsed === !0
@@ -52149,7 +52165,7 @@ var vq = /*#__PURE__*/ MH({
52149
52165
  return {
52150
52166
  reading: "default",
52151
52167
  effects: "full",
52152
- rail: O$,
52168
+ rail: k$,
52153
52169
  nav: Ee(),
52154
52170
  collapsed: !1,
52155
52171
  brief_collapsed: !1,
@@ -52158,11 +52174,11 @@ var vq = /*#__PURE__*/ MH({
52158
52174
  }
52159
52175
  }
52160
52176
  function Ee() {
52161
- return typeof window > "u" ? M$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : M$;
52177
+ return typeof window > "u" ? N$ : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : N$;
52162
52178
  }
52163
52179
  function De() {
52164
52180
  try {
52165
- localStorage.setItem(T$, JSON.stringify({
52181
+ localStorage.setItem(E$, JSON.stringify({
52166
52182
  reading: x.value,
52167
52183
  effects: S.value,
52168
52184
  rail: C.value,
@@ -52193,19 +52209,19 @@ var vq = /*#__PURE__*/ MH({
52193
52209
  }, e.currentTarget.setPointerCapture(e.pointerId));
52194
52210
  }
52195
52211
  function Ne(e) {
52196
- k.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(D$, Math.max(E$, k.value.width + k.value.x - e.clientX))));
52212
+ k.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(O$, Math.max(D$, k.value.width + k.value.x - e.clientX))));
52197
52213
  }
52198
52214
  function Pe(e) {
52199
52215
  k.value?.pointer === e.pointerId && (k.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), De());
52200
52216
  }
52201
52217
  function Fe(e) {
52202
52218
  let t = {
52203
- ArrowLeft: C.value + k$,
52204
- ArrowRight: C.value - k$,
52205
- Home: E$,
52206
- End: D$
52219
+ ArrowLeft: C.value + A$,
52220
+ ArrowRight: C.value - A$,
52221
+ Home: D$,
52222
+ End: O$
52207
52223
  };
52208
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(D$, Math.max(E$, t[e.key])), De());
52224
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(O$, Math.max(D$, t[e.key])), De());
52209
52225
  }
52210
52226
  function Ie(e) {
52211
52227
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), se.value = {
@@ -52215,19 +52231,19 @@ var vq = /*#__PURE__*/ MH({
52215
52231
  }, e.currentTarget.setPointerCapture(e.pointerId));
52216
52232
  }
52217
52233
  function Le(e) {
52218
- se.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(ce.value, Math.max(A$, se.value.width + e.clientX - se.value.x))));
52234
+ se.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(ce.value, Math.max(j$, se.value.width + e.clientX - se.value.x))));
52219
52235
  }
52220
52236
  function Re(e) {
52221
52237
  se.value?.pointer === e.pointerId && (se.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), De());
52222
52238
  }
52223
52239
  function ze(e) {
52224
52240
  let t = {
52225
- ArrowLeft: le.value - N$,
52226
- ArrowRight: le.value + N$,
52227
- Home: A$,
52241
+ ArrowLeft: le.value - P$,
52242
+ ArrowRight: le.value + P$,
52243
+ Home: j$,
52228
52244
  End: ce.value
52229
52245
  };
52230
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(ce.value, Math.max(A$, t[e.key])), De());
52246
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(ce.value, Math.max(j$, t[e.key])), De());
52231
52247
  }
52232
52248
  return (e, r) => {
52233
52249
  let y = sA, b = lH, w = pA, T = MA, D = $V, ae = WV, oe = YV, A = KV, Te = HV, Ee = zV, De = NV, ke = AV;
@@ -52239,10 +52255,10 @@ var vq = /*#__PURE__*/ MH({
52239
52255
  }]),
52240
52256
  style: pe(ue.value)
52241
52257
  }, [
52242
- K("aside", zQ, [
52258
+ K("aside", BQ, [
52243
52259
  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),
52244
- K("div", BQ, [
52245
- q(LX, {
52260
+ K("div", VQ, [
52261
+ q(RX, {
52246
52262
  onSelect: be,
52247
52263
  onManage: ve,
52248
52264
  onCreate: Se,
@@ -52251,12 +52267,12 @@ var vq = /*#__PURE__*/ MH({
52251
52267
  onDeleteFolder: we,
52252
52268
  onArchives: ye
52253
52269
  }),
52254
- K("div", VQ, [K("button", {
52270
+ K("div", HQ, [K("button", {
52255
52271
  type: "button",
52256
52272
  class: "channel-section-toggle",
52257
52273
  "aria-expanded": f.value,
52258
52274
  onClick: r[0] ||= (e) => f.value = !f.value
52259
- }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, HQ)]),
52275
+ }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[24] ||= J("频道工具", -1)], 8, UQ)]),
52260
52276
  f.value ? (U(), G(b, {
52261
52277
  key: 0,
52262
52278
  items: ge.value,
@@ -52272,7 +52288,7 @@ var vq = /*#__PURE__*/ MH({
52272
52288
  }
52273
52289
  }, null, 8, ["items"])) : Y("", !0)
52274
52290
  ]),
52275
- K("footer", UQ, [K("button", {
52291
+ K("footer", WQ, [K("button", {
52276
52292
  type: "button",
52277
52293
  class: "channel-self-button",
52278
52294
  "aria-label": `账号与设置:${I(n).display_name(I(_))}${_e.value ? "," + _e.value : ""}`,
@@ -52288,10 +52304,10 @@ var vq = /*#__PURE__*/ MH({
52288
52304
  "text",
52289
52305
  "alt",
52290
52306
  "class"
52291
- ]), K("span", GQ, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: j(["channel-connection", { "is-action": _e.value }]) }, [K("span", {
52307
+ ]), K("span", KQ, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: j(["channel-connection", { "is-action": _e.value }]) }, [K("span", {
52292
52308
  class: j({ connected: I(t).connected }),
52293
52309
  title: I(t).connected ? "网站已连接" : "网站未连接"
52294
- }, null, 10, KQ), J(P(_e.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, WQ), q(D, { text: "设置" }, {
52310
+ }, null, 10, qQ), J(P(_e.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, GQ), q(D, { text: "设置" }, {
52295
52311
  default: L(() => [q(T, {
52296
52312
  icon: "i-lucide-settings-2",
52297
52313
  color: "neutral",
@@ -52312,7 +52328,7 @@ var vq = /*#__PURE__*/ MH({
52312
52328
  "aria-label": "调整房间栏宽度",
52313
52329
  "aria-orientation": "vertical",
52314
52330
  "aria-controls": "channel-sidebar",
52315
- "aria-valuemin": A$,
52331
+ "aria-valuemin": j$,
52316
52332
  "aria-valuemax": ce.value,
52317
52333
  "aria-valuenow": le.value,
52318
52334
  "aria-valuetext": `${le.value} 像素`,
@@ -52323,13 +52339,13 @@ var vq = /*#__PURE__*/ MH({
52323
52339
  onPointercancel: Re,
52324
52340
  onLostpointercapture: Re,
52325
52341
  onKeydown: ze
52326
- }, null, 40, qQ)),
52327
- K("main", JQ, [K("div", {
52342
+ }, null, 40, JQ)),
52343
+ K("main", YQ, [K("div", {
52328
52344
  ref_key: "topbar",
52329
52345
  ref: ie,
52330
52346
  class: j(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
52331
52347
  }, [
52332
- K("header", YQ, [
52348
+ K("header", XQ, [
52333
52349
  q(D, { text: ee.value ? "展开房间栏" : "收起房间栏" }, {
52334
52350
  default: L(() => [q(T, {
52335
52351
  icon: "i-lucide-panel-left",
@@ -52354,8 +52370,8 @@ var vq = /*#__PURE__*/ MH({
52354
52370
  "aria-expanded": d.value,
52355
52371
  onClick: r[4] ||= (e) => d.value = !0
52356
52372
  }, null, 8, ["aria-expanded"]),
52357
- K("span", XQ, [q(y, { name: "i-lucide-hash" })]),
52358
- K("div", ZQ, [K("div", QQ, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, $Q)]), o.value?.archived ? (U(), G(ae, {
52373
+ K("span", ZQ, [q(y, { name: "i-lucide-hash" })]),
52374
+ K("div", QQ, [K("div", $Q, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, e$)]), o.value?.archived ? (U(), G(ae, {
52359
52375
  key: 0,
52360
52376
  color: "neutral",
52361
52377
  variant: "subtle",
@@ -52364,12 +52380,12 @@ var vq = /*#__PURE__*/ MH({
52364
52380
  default: L(() => [...r[26] ||= [J("已存档", -1)]]),
52365
52381
  _: 1
52366
52382
  })) : Y("", !0)]),
52367
- o.value ? (U(), W("span", e$, [
52383
+ o.value ? (U(), W("span", t$, [
52368
52384
  J(P(he.value.find((e) => e.value === I(t).tab)?.label), 1),
52369
52385
  r[27] ||= K("span", null, "·", -1),
52370
52386
  J(P(o.value.message_count) + " 条记录", 1)
52371
52387
  ])) : Y("", !0),
52372
- K("div", t$, [
52388
+ K("div", n$, [
52373
52389
  I(t).tab === "discussion" ? (U(), W("form", {
52374
52390
  key: 0,
52375
52391
  class: "channel-search",
@@ -52427,7 +52443,7 @@ var vq = /*#__PURE__*/ MH({
52427
52443
  ])]),
52428
52444
  _: 1
52429
52445
  })) : Y("", !0),
52430
- o.value && !(te.value && O.value) ? (U(), G(iQ, { key: 2 })) : Y("", !0)
52446
+ o.value && !(te.value && O.value) ? (U(), G(aQ, { key: 2 })) : Y("", !0)
52431
52447
  ]),
52432
52448
  q(D, { text: ne.value }, {
52433
52449
  default: L(() => [q(T, {
@@ -52448,12 +52464,12 @@ var vq = /*#__PURE__*/ MH({
52448
52464
  _: 1
52449
52465
  }, 8, ["text"])
52450
52466
  ]),
52451
- I(t).launch.recoveries.length ? (U(), W("section", n$, [
52467
+ I(t).launch.recoveries.length ? (U(), W("section", r$, [
52452
52468
  r[28] ||= K("h2", null, "继续未完成的请求", -1),
52453
52469
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
52454
52470
  K("strong", null, P(e.title), 1),
52455
- K("p", r$, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52456
- K("div", i$, [
52471
+ K("p", i$, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
52472
+ K("div", a$, [
52457
52473
  q(T, {
52458
52474
  label: e.direct ? "继续创建房间" : "继续本次启动",
52459
52475
  size: "sm",
@@ -52486,7 +52502,7 @@ var vq = /*#__PURE__*/ MH({
52486
52502
  ]))), 128)),
52487
52503
  r[29] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
52488
52504
  ])) : Y("", !0),
52489
- o.value ? (U(), W("div", a$, [q(A, {
52505
+ o.value ? (U(), W("div", o$, [q(A, {
52490
52506
  modelValue: fe.value,
52491
52507
  "onUpdate:modelValue": r[9] ||= (e) => fe.value = e,
52492
52508
  items: he.value,
@@ -52501,7 +52517,7 @@ var vq = /*#__PURE__*/ MH({
52501
52517
  key: 2,
52502
52518
  class: j(["channel-host-brief", { "is-collapsed": E.value }]),
52503
52519
  "aria-label": "主持简报"
52504
- }, [K("div", o$, [K("div", s$, [K("button", {
52520
+ }, [K("div", s$, [K("div", c$, [K("button", {
52505
52521
  type: "button",
52506
52522
  class: "channel-brief-toggle",
52507
52523
  "aria-label": E.value ? "展开主持简报" : "收起主持简报",
@@ -52511,8 +52527,8 @@ var vq = /*#__PURE__*/ MH({
52511
52527
  }, [
52512
52528
  q(y, { name: E.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
52513
52529
  K("strong", null, "主持简报" + P(E.value ? ":" : ""), 1),
52514
- E.value ? (U(), W("span", l$, P(re.value), 1)) : Y("", !0)
52515
- ], 8, c$), E.value ? Y("", !0) : (U(), G(T, {
52530
+ E.value ? (U(), W("span", u$, P(re.value), 1)) : Y("", !0)
52531
+ ], 8, l$), E.value ? Y("", !0) : (U(), G(T, {
52516
52532
  key: 0,
52517
52533
  label: "更新简报",
52518
52534
  color: "neutral",
@@ -52520,19 +52536,19 @@ var vq = /*#__PURE__*/ MH({
52520
52536
  size: "xs",
52521
52537
  class: "channel-brief-update",
52522
52538
  onClick: r[10] ||= (e) => I(i)("tab", "context")
52523
- }))]), vr(K("div", u$, [K("div", {
52539
+ }))]), vr(K("div", d$, [K("div", {
52524
52540
  class: "channel-brief-text markdown-body",
52525
52541
  innerHTML: o.value.rendered_brief
52526
- }, null, 8, d$), K("div", f$, [K("span", p$, 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)
52542
+ }, null, 8, f$), K("div", p$, [K("span", m$, 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)
52527
52543
  ], 2), o.value ? (U(), W("div", {
52528
52544
  key: 0,
52529
52545
  class: j(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
52530
- }, [K("div", m$, [
52531
- vr(q(TG, {
52546
+ }, [K("div", h$, [
52547
+ vr(q(EG, {
52532
52548
  onDetail: xe,
52533
52549
  onEdit: r[11] ||= (e) => s.value = "edit"
52534
52550
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
52535
- I(t).tab === "context" ? (U(), W("section", h$, [K("div", g$, [r[30] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ae, {
52551
+ I(t).tab === "context" ? (U(), W("section", g$, [K("div", _$, [r[30] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ae, {
52536
52552
  color: "neutral",
52537
52553
  variant: "outline"
52538
52554
  }, {
@@ -52573,7 +52589,7 @@ var vq = /*#__PURE__*/ MH({
52573
52589
  }, null, 8, ["modelValue"])]),
52574
52590
  _: 1
52575
52591
  }),
52576
- K("div", _$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52592
+ K("div", v$, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
52577
52593
  type: "submit",
52578
52594
  color: "neutral",
52579
52595
  icon: "i-lucide-check",
@@ -52582,12 +52598,12 @@ var vq = /*#__PURE__*/ MH({
52582
52598
  loading: I(a) === "save_context"
52583
52599
  }, null, 8, ["loading"])])
52584
52600
  ], 32)])) : Y("", !0),
52585
- I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(qK, {
52601
+ I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(JK, {
52586
52602
  key: I(t).tab,
52587
52603
  onOpen: r[15] ||= (e) => s.value = e,
52588
52604
  onDetail: xe
52589
52605
  })) : Y("", !0)
52590
- ])], 2)) : (U(), W("div", v$, [
52606
+ ])], 2)) : (U(), W("div", y$, [
52591
52607
  q(y, { name: "i-lucide-hash" }),
52592
52608
  r[31] ||= K("h2", null, "新建一个协作房间", -1),
52593
52609
  r[32] ||= K("p", null, "邀请 AI 一起协作,随时 @ 提问;需要时开启讨论,保留所有人的观点。", -1),
@@ -52606,8 +52622,8 @@ var vq = /*#__PURE__*/ MH({
52606
52622
  "aria-label": "调整右侧栏宽度",
52607
52623
  "aria-orientation": "vertical",
52608
52624
  "aria-controls": "channel-member-rail",
52609
- "aria-valuemin": E$,
52610
- "aria-valuemax": D$,
52625
+ "aria-valuemin": D$,
52626
+ "aria-valuemax": O$,
52611
52627
  "aria-valuenow": C.value,
52612
52628
  "aria-valuetext": `${C.value} 像素`,
52613
52629
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -52617,11 +52633,11 @@ var vq = /*#__PURE__*/ MH({
52617
52633
  onPointercancel: Pe,
52618
52634
  onLostpointercapture: Pe,
52619
52635
  onKeydown: Fe
52620
- }, null, 40, y$)) : Y("", !0),
52621
- te.value ? (U(), W("aside", b$, [K("section", x$, [o.value && me.value ? (U(), G(RQ, { key: 0 })) : o.value ? (U(), G($Z, {
52636
+ }, null, 40, b$)) : Y("", !0),
52637
+ te.value ? (U(), W("aside", x$, [K("section", S$, [o.value && me.value ? (U(), G(zQ, { key: 0 })) : o.value ? (U(), G(eQ, {
52622
52638
  key: 1,
52623
52639
  docked: ""
52624
- })) : (U(), W("div", S$, [...r[33] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52640
+ })) : (U(), W("div", C$, [...r[33] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
52625
52641
  q(De, {
52626
52642
  open: d.value,
52627
52643
  "onUpdate:open": r[18] ||= (e) => d.value = e,
@@ -52633,7 +52649,7 @@ var vq = /*#__PURE__*/ MH({
52633
52649
  body: "channel-drawer-body"
52634
52650
  }
52635
52651
  }, {
52636
- body: L(() => [q(LX, {
52652
+ body: L(() => [q(RX, {
52637
52653
  onSelect: be,
52638
52654
  onManage: ve,
52639
52655
  onCreate: Se,
@@ -52664,7 +52680,7 @@ var vq = /*#__PURE__*/ MH({
52664
52680
  }
52665
52681
  }, {
52666
52682
  body: L(() => [o.value ? (U(), W(H, { key: 0 }, [
52667
- K("div", C$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52683
+ K("div", w$, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
52668
52684
  (U(), W(H, null, B([
52669
52685
  {
52670
52686
  key: "goal",
@@ -52691,7 +52707,7 @@ var vq = /*#__PURE__*/ MH({
52691
52707
  class: "info-section"
52692
52708
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
52693
52709
  q(ke),
52694
- K("section", w$, [r[34] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(M.value, (e) => (U(), W("div", {
52710
+ K("section", T$, [r[34] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(M.value, (e) => (U(), W("div", {
52695
52711
  key: e.name,
52696
52712
  class: "expert-row"
52697
52713
  }, [
@@ -52724,7 +52740,7 @@ var vq = /*#__PURE__*/ MH({
52724
52740
  ], 64)) : Y("", !0)]),
52725
52741
  _: 1
52726
52742
  }, 8, ["open"]),
52727
- q(pX, {
52743
+ q(mX, {
52728
52744
  modelValue: s.value,
52729
52745
  "onUpdate:modelValue": r[21] ||= (e) => s.value = e,
52730
52746
  "reading-width": x.value,
@@ -52748,7 +52764,7 @@ var vq = /*#__PURE__*/ MH({
52748
52764
  ], 6);
52749
52765
  };
52750
52766
  }
52751
- }, R$ = {
52767
+ }, z$ = {
52752
52768
  __name: "App",
52753
52769
  setup(e) {
52754
52770
  return br("discussion", OV()), (e, t) => {
@@ -52759,7 +52775,7 @@ var vq = /*#__PURE__*/ MH({
52759
52775
  toaster: null
52760
52776
  }, {
52761
52777
  default: L(() => [q(I(Qz), { "reduced-motion": "user" }, {
52762
- default: L(() => [q(L$)]),
52778
+ default: L(() => [q(R$)]),
52763
52779
  _: 1
52764
52780
  })]),
52765
52781
  _: 1
@@ -52769,8 +52785,8 @@ var vq = /*#__PURE__*/ MH({
52769
52785
  };
52770
52786
  //#endregion
52771
52787
  //#region frontend/main.js
52772
- function z$() {
52773
- bu(R$).use(ph).mount("#modern-root");
52788
+ function B$() {
52789
+ bu(z$).use(ph).mount("#modern-root");
52774
52790
  }
52775
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", z$) : z$();
52791
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", B$) : B$();
52776
52792
  //#endregion