ai_co_discuss 0.2.89 → 0.2.91

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
@@ -53744,18 +53744,24 @@ var r$ = { class: "progress-board is-docked" }, i$ = { class: "pb-header" }, a$
53744
53744
  editing: "编辑",
53745
53745
  writing: "撰写"
53746
53746
  }, T1 = {
53747
+ thinking: "model",
53748
+ writing: "model",
53749
+ command: "tool",
53750
+ tool: "tool",
53751
+ editing: "tool"
53752
+ }, E1 = {
53747
53753
  running: "进行中",
53748
53754
  done: "完成",
53749
53755
  failed: "失败",
53750
53756
  cancelled: "已撤销"
53751
- }, E1 = 3e5, D1 = .03;
53752
- function O1(e) {
53757
+ }, D1 = 3e5, O1 = .03;
53758
+ function k1(e) {
53753
53759
  if (e < 1e3) return `${Math.max(0, Math.round(e))}ms`;
53754
53760
  if (e < 1e4) return `${(e / 1e3).toFixed(1)}s`;
53755
53761
  let t = Math.round(e / 1e3);
53756
53762
  return t < 60 ? `${t}s` : t < 3600 ? `${Math.floor(t / 60)}m ${String(t % 60).padStart(2, "0")}s` : `${Math.floor(t / 3600)}h ${String(Math.floor(t % 3600 / 60)).padStart(2, "0")}m`;
53757
53763
  }
53758
- function k1(e, t) {
53764
+ function A1(e, t) {
53759
53765
  let n = e.state === "running", r = e.finished_at ? e.finished_at * 1e3 : t, i = e.dispatched_at ? e.dispatched_at * 1e3 : 0, a = Math.min(e.queued_at ? e.queued_at * 1e3 : i || r, i || r), o = i ? e.segments.map((t, a) => {
53760
53766
  let o = n && a === e.segments.length - 1, s = Math.min(i + t.end_ms, r);
53761
53767
  return {
@@ -53781,8 +53787,8 @@ function k1(e, t) {
53781
53787
  notes: l
53782
53788
  };
53783
53789
  }
53784
- var A1 = 18e4;
53785
- function j1(e, t) {
53790
+ var j1 = 18e4;
53791
+ function M1(e, t) {
53786
53792
  let { item: n } = e;
53787
53793
  if (n.state === "failed") return {
53788
53794
  tone: "failed",
@@ -53806,10 +53812,10 @@ function j1(e, t) {
53806
53812
  let r = n.dispatched_at * 1e3, i = n.segments.at(-1), a = Math.max(n.activity_at ? n.activity_at * 1e3 : 0, i ? r + i.end_ms : 0, ...(n.notes || []).map((e) => e * 1e3)), o = a ? t - a : 0;
53807
53813
  return o >= 18e4 ? i?.phase === "command" ? {
53808
53814
  tone: "warn",
53809
- text: `命令已运行 ${O1(o)}`
53815
+ text: `命令已运行 ${k1(o)}`
53810
53816
  } : {
53811
53817
  tone: "warn",
53812
- text: `已 ${O1(o)} 无输出,可能卡住`
53818
+ text: `已 ${k1(o)} 无输出,可能卡住`
53813
53819
  } : n.last_note ? {
53814
53820
  tone: "live",
53815
53821
  text: n.last_note
@@ -53821,7 +53827,7 @@ function j1(e, t) {
53821
53827
  text: "处理中"
53822
53828
  };
53823
53829
  }
53824
- function M1(e, t) {
53830
+ function N1(e, t) {
53825
53831
  return [...e.segments.map((e) => ({
53826
53832
  at: e.start,
53827
53833
  kind: "phase",
@@ -53835,7 +53841,41 @@ function M1(e, t) {
53835
53841
  text: t?.[e.index] ?? (t ? "(未能读取)" : "读取中…")
53836
53842
  }))].sort((e, t) => e.at - t.at || (e.kind === "note") - (t.kind === "note"));
53837
53843
  }
53838
- function N1(e, t, n) {
53844
+ function P1(e, t, n = /* @__PURE__ */ new Map()) {
53845
+ let r = t / 1e3, i = [];
53846
+ for (let t of e.executions) {
53847
+ if ((t.queued_at || t.dispatched_at || Infinity) > r) continue;
53848
+ if (t.finished_at && t.finished_at <= r) {
53849
+ i.push(t);
53850
+ continue;
53851
+ }
53852
+ let e = t.dispatched_at && t.dispatched_at <= r ? t.dispatched_at : 0, a = e ? (r - e) * 1e3 : 0, o = (t.notes || []).filter((e) => e <= r);
53853
+ i.push({
53854
+ ...t,
53855
+ state: "running",
53856
+ status: "started",
53857
+ finished_at: 0,
53858
+ dispatched_at: e,
53859
+ started_at: t.started_at && t.started_at <= r ? t.started_at : 0,
53860
+ segments: e ? t.segments.filter((e) => e.start_ms <= a).map((e) => ({
53861
+ ...e,
53862
+ end_ms: Math.min(e.end_ms, a)
53863
+ })) : [],
53864
+ notes: o,
53865
+ last_note: o.length ? n.get(t.id)?.[o.length - 1] ?? null : null,
53866
+ activity_at: t.activity_at && t.activity_at <= r ? t.activity_at : 0,
53867
+ reason: "",
53868
+ result: null,
53869
+ answer_id: null,
53870
+ changes: null
53871
+ });
53872
+ }
53873
+ return {
53874
+ ...e,
53875
+ executions: i
53876
+ };
53877
+ }
53878
+ function F1(e, t, n) {
53839
53879
  let r = e.filter((e) => e.at >= t && e.at <= n);
53840
53880
  if (r.length) return {
53841
53881
  notes: r,
@@ -53847,13 +53887,13 @@ function N1(e, t, n) {
53847
53887
  earlier: !!i
53848
53888
  };
53849
53889
  }
53850
- function P1(e, t) {
53890
+ function I1(e, t) {
53851
53891
  let n = e.executions.map((n) => ({
53852
53892
  key: `${n.source}:${n.id}`,
53853
53893
  parent: n.parent_id ? `free:${n.parent_id}` : "",
53854
53894
  item: n,
53855
53895
  truncated: n.segments.length >= e.segment_limit,
53856
- ...k1(n, t)
53896
+ ...A1(n, t)
53857
53897
  })), r = new Map(n.map((e) => [e.key, e])), i = (e) => {
53858
53898
  let t = r.get(e.parent);
53859
53899
  for (let n = /* @__PURE__ */ new Set([e.key]); t?.item.member === e.item.member && !n.has(t.key); t = r.get(t.parent)) n.add(t.key);
@@ -53868,6 +53908,7 @@ function P1(e, t) {
53868
53908
  ...r,
53869
53909
  depth: t,
53870
53910
  ancestors: n,
53911
+ placed_parent: e,
53871
53912
  has_children: !!a.get(r.key)?.length
53872
53913
  }), c(r.key, t + 1, [...n, r.key]));
53873
53914
  };
@@ -53876,59 +53917,144 @@ function P1(e, t) {
53876
53917
  ...e,
53877
53918
  depth: 0,
53878
53919
  ancestors: [],
53920
+ placed_parent: "",
53879
53921
  has_children: !1
53880
53922
  });
53881
53923
  return o;
53882
53924
  }
53883
- function F1(e) {
53884
- let t = e.map((e) => [e.start, e.end]).sort((e, t) => e[0] - t[0]);
53885
- if (!t.length) return {
53925
+ function L1(e, t) {
53926
+ if (e.source === "discussion") return `run:${e.run_id || e.id}`;
53927
+ let n = e;
53928
+ for (let r = /* @__PURE__ */ new Set([e.id]); n.parent_id && t.has(n.parent_id) && !r.has(n.parent_id); n = t.get(n.parent_id)) r.add(n.parent_id);
53929
+ return n.task_id ? `task:${n.task_id}` : `exec:${n.id}`;
53930
+ }
53931
+ function R1(e, t) {
53932
+ let n = new Map(e.executions.filter((e) => e.source === "free").map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
53933
+ for (let a of e.executions) {
53934
+ let e = L1(a, n);
53935
+ i.set(`${a.source}:${a.id}`, e);
53936
+ let o = A1(a, t), s = r.get(e) || {
53937
+ key: e,
53938
+ source: a.source,
53939
+ start: o.start,
53940
+ end: o.end,
53941
+ count: 0,
53942
+ running: !1,
53943
+ failed: !1,
53944
+ task: "",
53945
+ first: Infinity
53946
+ };
53947
+ s.start = Math.min(s.start, o.start), s.end = Math.max(s.end, o.end), s.count += 1, s.running ||= a.state === "running", s.failed ||= a.state === "failed", a.task && o.start < s.first && (s.task = a.task, s.first = o.start), r.set(e, s);
53948
+ }
53949
+ return {
53950
+ list: [...r.values()].sort((e, t) => t.start - e.start),
53951
+ of: i
53952
+ };
53953
+ }
53954
+ function z1(e, t) {
53955
+ let n = new Map(e.map((e, t) => [e.key, t])), r = /* @__PURE__ */ new Map(), i = (e, t) => {
53956
+ r.has(e) || r.set(e, []), r.get(e).push(t);
53957
+ };
53958
+ return e.forEach((r, a) => {
53959
+ let o = n.get(r.placed_parent);
53960
+ if (o === void 0 || o >= a) return;
53961
+ let s = t.x(r.queue[0]), c = r.item.member;
53962
+ i(e[o].key, {
53963
+ x: s,
53964
+ part: "start",
53965
+ member: c
53966
+ });
53967
+ for (let t = o + 1; t < a; t += 1) i(e[t].key, {
53968
+ x: s,
53969
+ part: "through",
53970
+ member: c
53971
+ });
53972
+ i(r.key, {
53973
+ x: s,
53974
+ part: "end",
53975
+ member: c,
53976
+ to: t.x(r.queue[1] > r.queue[0] ? r.queue[0] : r.start)
53977
+ });
53978
+ }), r;
53979
+ }
53980
+ var B1 = [
53981
+ 5,
53982
+ 10,
53983
+ 15,
53984
+ 20,
53985
+ 30,
53986
+ 45,
53987
+ 60,
53988
+ 90,
53989
+ 120,
53990
+ 180,
53991
+ 300,
53992
+ 600,
53993
+ 900,
53994
+ 1200,
53995
+ 1800,
53996
+ 2700,
53997
+ 3600,
53998
+ 5400,
53999
+ 7200,
54000
+ 10800,
54001
+ 21600,
54002
+ 43200,
54003
+ 86400
54004
+ ].map((e) => e * 1e3), V1 = .75;
54005
+ function H1(e, t = !1) {
54006
+ let n = e.map((e) => [e.start, e.end]).sort((e, t) => e[0] - t[0]);
54007
+ if (!n.length) return {
53886
54008
  start: 0,
53887
54009
  end: 0,
53888
54010
  busy_ms: 0,
53889
54011
  folds: [],
54012
+ spans: [],
53890
54013
  x: () => 0
53891
54014
  };
53892
- let n = [];
53893
- for (let [e, r] of t) {
53894
- let t = n.at(-1);
53895
- t && e <= t[1] + 3e5 ? t[1] = Math.max(t[1], r) : n.push([e, r]);
53896
- }
53897
- let r = n.reduce((e, [t, n]) => e + (n - t), 0), i = Math.min(D1, .5 / Math.max(1, n.length - 1)), a = r ? (1 - i * (n.length - 1)) / r : 0, o = [], s = 0;
53898
- return n.forEach(([e, t], c) => {
53899
- if (c) {
53900
- let t = n[c - 1][1];
53901
- o.push({
54015
+ let r = [];
54016
+ for (let [e, t] of n) {
54017
+ let n = r.at(-1);
54018
+ n && e <= n[1] + 3e5 ? n[1] = Math.max(n[1], t) : r.push([e, t]);
54019
+ }
54020
+ let i = r.reduce((e, [t, n]) => e + (n - t), 0), a = i;
54021
+ t && i && (a = B1.find((e) => e >= i / V1) ?? Math.ceil(i / V1), r.at(-1)[1] += a - i);
54022
+ let o = Math.min(O1, .5 / Math.max(1, r.length - 1)), s = a ? (1 - o * (r.length - 1)) / a : 0, c = [], l = 0;
54023
+ return r.forEach(([e, t], n) => {
54024
+ if (n) {
54025
+ let t = r[n - 1][1];
54026
+ c.push({
53902
54027
  start: t,
53903
54028
  end: e,
53904
- from: s,
53905
- width: i,
54029
+ from: l,
54030
+ width: o,
53906
54031
  fold: !0
53907
- }), s += i;
54032
+ }), l += o;
53908
54033
  }
53909
- let l = r ? (t - e) * a : 1 / n.length;
53910
- o.push({
54034
+ let i = a ? (t - e) * s : 1 / r.length;
54035
+ c.push({
53911
54036
  start: e,
53912
54037
  end: t,
53913
- from: s,
53914
- width: l,
54038
+ from: l,
54039
+ width: i,
53915
54040
  fold: !1
53916
- }), s += l;
54041
+ }), l += i;
53917
54042
  }), {
53918
- start: n[0][0],
53919
- end: n.at(-1)[1],
53920
- busy_ms: r,
54043
+ start: r[0][0],
54044
+ end: r.at(-1)[1],
54045
+ busy_ms: i,
54046
+ total_ms: a,
53921
54047
  x: (e) => {
53922
- let t = o.find((t) => e <= t.end) || o.at(-1);
54048
+ let t = c.find((t) => e <= t.end) || c.at(-1);
53923
54049
  return e <= t.start ? t.from : t.from + (t.end > t.start ? Math.min(1, (e - t.start) / (t.end - t.start)) * t.width : 0);
53924
54050
  },
53925
- spans: o.filter((e) => !e.fold).map(({ start: e, end: t, from: n, width: r }) => ({
54051
+ spans: c.filter((e) => !e.fold).map(({ start: e, end: t, from: n, width: r }) => ({
53926
54052
  start: e,
53927
54053
  end: t,
53928
54054
  from: n,
53929
54055
  width: r
53930
54056
  })),
53931
- folds: o.filter((e) => e.fold).map(({ start: e, end: t, from: n, width: r }) => ({
54057
+ folds: c.filter((e) => e.fold).map(({ start: e, end: t, from: n, width: r }) => ({
53932
54058
  start: e,
53933
54059
  end: t,
53934
54060
  from: n,
@@ -53936,7 +54062,7 @@ function F1(e) {
53936
54062
  }))
53937
54063
  };
53938
54064
  }
53939
- var I1 = [
54065
+ var U1 = [
53940
54066
  1,
53941
54067
  2,
53942
54068
  5,
@@ -53955,23 +54081,24 @@ var I1 = [
53955
54081
  21600,
53956
54082
  43200,
53957
54083
  86400
53958
- ].map((e) => e * 1e3), L1 = .12;
53959
- function R1(e, t = 6) {
53960
- if (!e.busy_ms) return [];
53961
- let n = I1.find((n) => e.busy_ms / n <= t) ?? I1.at(-1), r = [];
53962
- for (let t of e.spans) for (let i = Math.ceil(t.start / n) * n; i <= t.end; i += n) {
53963
- let t = e.x(i);
53964
- (!r.length || t - r.at(-1).x >= L1) && r.push({
53965
- at: i,
54084
+ ].map((e) => e * 1e3), W1 = .12;
54085
+ function G1(e, t = 6) {
54086
+ let n = e.total_ms ?? e.busy_ms;
54087
+ if (!n) return [];
54088
+ let r = U1.find((e) => n / e <= t) ?? U1.at(-1), i = [];
54089
+ for (let t of e.spans) for (let n = Math.ceil(t.start / r) * r; n <= t.end; n += r) {
54090
+ let t = e.x(n);
54091
+ (!i.length || t - i.at(-1).x >= W1) && i.push({
54092
+ at: n,
53966
54093
  x: t
53967
54094
  });
53968
54095
  }
53969
- return r.map((e) => ({
54096
+ return i.map((e) => ({
53970
54097
  ...e,
53971
- seconds: n < 6e4
54098
+ seconds: r < 6e4
53972
54099
  }));
53973
54100
  }
53974
- function z1(e, t = Date.now()) {
54101
+ function K1(e, t = Date.now()) {
53975
54102
  let n = null;
53976
54103
  for (let t of e) for (let e of t.segments) (!n || e.seen - e.start > n.end - n.start) && (n = {
53977
54104
  ...e,
@@ -53983,7 +54110,7 @@ function z1(e, t = Date.now()) {
53983
54110
  executions: e.length,
53984
54111
  running: e.filter((e) => e.item.state === "running").length,
53985
54112
  failed: e.filter((e) => e.item.state === "failed").length,
53986
- stalled: e.filter((e) => e.item.state === "running" && j1(e, t).tone === "warn").length,
54113
+ stalled: e.filter((e) => e.item.state === "running" && M1(e, t).tone === "warn").length,
53987
54114
  tool_segments: e.reduce((e, t) => e + t.segments.filter((e) => [
53988
54115
  "command",
53989
54116
  "tool",
@@ -53994,270 +54121,483 @@ function z1(e, t = Date.now()) {
53994
54121
  }
53995
54122
  //#endregion
53996
54123
  //#region frontend/ExecutionTimeline.vue
53997
- var B1 = {
54124
+ var q1 = {
53998
54125
  class: "merged-section execution-timeline",
53999
54126
  "aria-label": "执行时间线"
54000
- }, V1 = {
54127
+ }, J1 = {
54001
54128
  key: 0,
54002
54129
  role: "alert",
54003
54130
  class: "fine-print wf-error"
54004
- }, H1 = {
54131
+ }, Y1 = {
54005
54132
  key: 1,
54006
54133
  class: "fine-print"
54007
- }, U1 = {
54134
+ }, X1 = {
54008
54135
  key: 2,
54009
54136
  class: "wf"
54010
- }, W1 = { class: "wf-head" }, G1 = {
54137
+ }, Z1 = { class: "wf-head" }, Q1 = { class: "wf-run" }, $1 = ["value"], e0 = {
54011
54138
  key: 0,
54012
54139
  class: "wf-headline"
54013
- }, K1 = { class: "wf-summary" }, q1 = ["title"], J1 = ["title"], Y1 = { title: "连续调用同一工具合并为一段" }, X1 = {
54140
+ }, t0 = { class: "wf-summary" }, n0 = ["title"], r0 = ["title"], i0 = { title: "连续调用同一工具合并为一段" }, a0 = {
54014
54141
  class: "wf-legend",
54015
54142
  "aria-label": "图例"
54016
- }, Z1 = { class: "wf-axis-label" }, Q1 = {
54143
+ }, o0 = {
54017
54144
  key: 0,
54018
- class: "wf-branch"
54019
- }, $1 = {
54020
- class: "wf-axis",
54021
- "aria-hidden": "true"
54022
- }, e0 = {
54145
+ class: "wf-legend-note"
54146
+ }, s0 = {
54147
+ key: 1,
54148
+ class: "wf-legend-note"
54149
+ }, c0 = { class: "wf-axis-label" }, l0 = {
54023
54150
  key: 0,
54024
- class: "wf-now"
54025
- }, t0 = {
54151
+ class: "wf-branch"
54152
+ }, u0 = ["title"], d0 = {
54026
54153
  key: 0,
54027
54154
  class: "wf-guides",
54028
54155
  "aria-hidden": "true"
54029
- }, n0 = [
54156
+ }, f0 = [
54030
54157
  "aria-expanded",
54031
54158
  "aria-label",
54032
54159
  "onClick"
54033
- ], r0 = {
54160
+ ], p0 = {
54034
54161
  key: 2,
54035
54162
  class: "wf-toggle-space"
54036
- }, i0 = [
54163
+ }, m0 = [
54037
54164
  "aria-expanded",
54038
54165
  "title",
54039
54166
  "onClick"
54040
- ], a0 = { class: "wf-name-line" }, o0 = {
54167
+ ], h0 = { class: "wf-name-line" }, g0 = {
54041
54168
  key: 0,
54169
+ class: "wf-spinner",
54170
+ "aria-hidden": "true"
54171
+ }, _0 = {
54172
+ key: 1,
54042
54173
  class: "wf-pill is-slowest"
54043
- }, s0 = {
54174
+ }, v0 = {
54044
54175
  key: 0,
54045
54176
  class: "wf-live-dot",
54046
54177
  "aria-hidden": "true"
54047
- }, c0 = ["aria-label", "onMouseleave"], l0 = { class: "wf-track" }, u0 = ["onMouseenter"], d0 = ["onMouseenter"], f0 = ["onMouseenter"], p0 = ["onMouseenter"], m0 = ["onMouseenter"], h0 = [
54178
+ }, y0 = ["aria-label", "onMouseleave"], b0 = { class: "wf-track" }, x0 = ["data-tone"], S0 = ["onMouseenter", "onClick"], C0 = ["onMouseenter", "onClick"], w0 = [
54179
+ "data-tone",
54180
+ "onMouseenter",
54181
+ "onClick"
54182
+ ], T0 = [
54183
+ "data-tone",
54184
+ "onMouseenter",
54185
+ "onClick"
54186
+ ], E0 = [
54187
+ "data-tone",
54188
+ "onMouseenter",
54189
+ "onClick"
54190
+ ], D0 = [
54048
54191
  "aria-label",
54049
54192
  "onMouseenter",
54193
+ "onClick",
54050
54194
  "onFocus",
54051
54195
  "onBlur"
54052
- ], g0 = { class: "wf-end" }, _0 = { key: 1 }, v0 = { key: 0 }, y0 = ["onClick"], b0 = { key: 1 }, x0 = { class: "is-failed" }, S0 = { key: 2 }, C0 = ["onClick"], w0 = { key: 3 }, T0 = {
54196
+ ], O0 = { class: "wf-end" }, k0 = { key: 1 }, A0 = { key: 0 }, j0 = ["onClick"], M0 = { key: 1 }, N0 = { class: "is-failed" }, P0 = { key: 2 }, F0 = ["onClick"], I0 = { key: 3 }, L0 = {
54053
54197
  key: 0,
54054
54198
  class: "wf-log",
54055
54199
  "aria-label": "过程"
54056
- }, E0 = {
54200
+ }, R0 = ["data-tone"], z0 = {
54057
54201
  key: 1,
54058
54202
  class: "wf-log-note"
54059
- }, D0 = {
54203
+ }, B0 = {
54060
54204
  key: 1,
54061
54205
  class: "fine-print"
54062
- }, O0 = {
54206
+ }, V0 = {
54063
54207
  key: 0,
54208
+ class: "wf-player"
54209
+ }, H0 = ["aria-label"], U0 = ["disabled"], W0 = { value: 0 }, G0 = ["value"], K0 = ["max", "value"], q0 = { class: "wf-player-time" }, J0 = {
54210
+ key: 1,
54064
54211
  class: "wf-foot"
54065
- }, k0 = { key: 0 }, A0 = { key: 1 }, j0 = {
54066
- key: 0,
54212
+ }, Y0 = { key: 0 }, X0 = { key: 1 }, Z0 = ["role"], Q0 = {
54213
+ key: 1,
54067
54214
  class: "wf-card-reason"
54068
- }, M0 = { class: "wf-card-label" }, N0 = 2e3, P0 = 6e4, F0 = 100, I0 = 5, L0 = 16, R0 = /*#__PURE__*/ XH({
54215
+ }, $0 = { class: "wf-card-label" }, e2 = 2e3, t2 = 6e4, n2 = 100, r2 = 60, i2 = 2e4, a2 = 600, o2 = 5, s2 = 16, c2 = 90, l2 = 2, u2 = 8, d2 = "latest", f2 = "all", p2 = 22, m2 = 5, h2 = 52, g2 = /*#__PURE__*/ XH({
54069
54216
  __name: "ExecutionTimeline",
54070
54217
  emits: ["detail"],
54071
54218
  setup(e, { emit: t }) {
54072
- let n = t, { view: r, bridge: i } = xr("discussion"), a = A1 / 6e4, o = Z(() => r.value.room?.id), s = /* @__PURE__ */ F(/* @__PURE__ */ new Map()), c = /* @__PURE__ */ F(null), l = /* @__PURE__ */ F(""), u = /* @__PURE__ */ F(Date.now()), d = /* @__PURE__ */ F(/* @__PURE__ */ new Set()), f = /* @__PURE__ */ F(/* @__PURE__ */ new Map()), p = /* @__PURE__ */ F(null), m = /* @__PURE__ */ F(""), h = 0, g = 0, _ = !1, v = 0, y = 0;
54073
- async function b(e = !1) {
54074
- let t = o.value;
54075
- if (!t || _) return;
54076
- _ = !0;
54077
- let n = e || !h || Date.now() - g >= P0 ? 0 : h - I0;
54219
+ let n = t, { view: r, bridge: i } = xr("discussion"), a = j1 / 6e4, o = [
54220
+ 1,
54221
+ 2,
54222
+ 4,
54223
+ 8,
54224
+ 16,
54225
+ 32
54226
+ ], s = typeof window < "u" && window.matchMedia?.("(hover: hover)").matches !== !1, c = /* @__PURE__ */ F(null), l = /* @__PURE__ */ F(0), u = null, d = Z(() => r.value.room?.id), f = /* @__PURE__ */ F(/* @__PURE__ */ new Map()), p = /* @__PURE__ */ F(null), m = /* @__PURE__ */ F(""), h = /* @__PURE__ */ F(Date.now()), g = /* @__PURE__ */ F(/* @__PURE__ */ new Set()), _ = /* @__PURE__ */ F(/* @__PURE__ */ new Map()), v = /* @__PURE__ */ F(null), y = /* @__PURE__ */ F(""), b = 0, x = 0, S = !1, C = 0, w = 0, T = 0, E = 0, D = /* @__PURE__ */ Yt({
54227
+ position: null,
54228
+ playing: !1,
54229
+ speed: 0
54230
+ }), O = 0;
54231
+ async function ee(e = !1) {
54232
+ let t = d.value;
54233
+ if (!t || S) return;
54234
+ S = !0;
54235
+ let n = e || !b || Date.now() - x >= t2 ? 0 : b - o2;
54078
54236
  try {
54079
54237
  let e = await i.request(`/api/rooms/${t}/timeline${n ? `?after=${n}` : ""}`);
54080
- if (t !== o.value) return;
54081
- let r = n ? new Map(s.value) : /* @__PURE__ */ new Map();
54238
+ if (t !== d.value) return;
54239
+ let r = n ? new Map(f.value) : /* @__PURE__ */ new Map();
54082
54240
  for (let t of e.executions) r.set(`${t.source}:${t.id}`, t);
54083
- s.value = r, c.value = {
54241
+ f.value = r, p.value = {
54084
54242
  execution_limit: e.execution_limit,
54085
54243
  segment_limit: e.segment_limit
54086
- }, h = e.now, n || (g = Date.now()), l.value = "";
54244
+ }, b = e.now, n || (x = Date.now()), m.value = "";
54087
54245
  } catch (e) {
54088
- l.value = `读取执行记录失败:${e.message}`;
54246
+ m.value = `读取执行记录失败:${e.message}`;
54089
54247
  } finally {
54090
- _ = !1;
54248
+ S = !1;
54091
54249
  }
54092
54250
  }
54093
- let x = Z(() => c.value && {
54094
- ...c.value,
54095
- executions: [...s.value.values()]
54096
- }), S = Z(() => x.value?.executions.some((e) => e.state === "running"));
54097
- R(S, (e) => {
54098
- clearInterval(v), clearInterval(y), e && (v = setInterval(() => {
54099
- document.hidden || b();
54100
- }, N0), y = setInterval(() => {
54101
- u.value = Date.now();
54102
- }, F0));
54103
- }, { immediate: !0 }), R(o, () => {
54104
- s.value = /* @__PURE__ */ new Map(), c.value = null, d.value = /* @__PURE__ */ new Set(), f.value = /* @__PURE__ */ new Map(), p.value = null, m.value = "", h = 0, b(!0);
54251
+ let k = Z(() => p.value && {
54252
+ ...p.value,
54253
+ executions: [...f.value.values()]
54254
+ });
54255
+ R(Z(() => k.value?.executions.some((e) => e.state === "running")), (e) => {
54256
+ clearInterval(C), e && (C = setInterval(() => {
54257
+ document.hidden || ee();
54258
+ }, e2));
54259
+ }, { immediate: !0 }), R(d, () => {
54260
+ f.value = /* @__PURE__ */ new Map(), p.value = null, g.value = /* @__PURE__ */ new Set(), _.value = /* @__PURE__ */ new Map(), v.value = null, y.value = "", b = 0, ee(!0);
54105
54261
  }, { immediate: !0 }), R(() => r.value.room, (e, t) => {
54106
- e?.id && e.id === t?.id && b();
54262
+ e?.id && e.id === t?.id && ee();
54263
+ });
54264
+ function te(e) {
54265
+ v.value && !e.target.closest?.(".wf-card, .wf-bar, .wf-note") && (v.value = null);
54266
+ }
54267
+ Qi(() => {
54268
+ document.addEventListener("pointerdown", te), u = new ResizeObserver(([e]) => {
54269
+ l.value = e.contentRect.width;
54270
+ });
54271
+ }), R(c, (e, t) => {
54272
+ t && u?.unobserve(t), e && u?.observe(e);
54107
54273
  }), ta(() => {
54108
- clearInterval(v), clearInterval(y);
54274
+ clearInterval(C), cancelAnimationFrame(w), document.removeEventListener("pointerdown", te), u?.disconnect();
54109
54275
  });
54110
- let C = Z(() => x.value ? P1(x.value, u.value) : []), w = Z(() => C.value.filter((e) => !e.ancestors.some((e) => d.value.has(e)))), T = Z(() => F1(C.value)), E = Z(() => R1(T.value)), D = Z(() => z1(C.value, u.value)), O = Z(() => C.value.filter((e) => e.has_children).map((e) => e.key)), ee = Z(() => C.value.find((e) => e.key === m.value)), k = Z(() => ee.value ? M1(ee.value, f.value.get(ee.value.item.id)) : []), te = [
54111
- ["queue", "排队"],
54112
- ["wake", "唤醒"],
54113
- ["work", "执行(无阶段明细)"],
54114
- ...Object.entries(w1)
54115
- ];
54116
- function ne(e) {
54117
- m.value = m.value === e.key ? "" : e.key, m.value && oe(e);
54276
+ let ne = /* @__PURE__ */ F(d2), re = Z(() => k.value ? R1(k.value, h.value) : {
54277
+ list: [],
54278
+ of: /* @__PURE__ */ new Map()
54279
+ }), ie = Z(() => ne.value === d2 ? re.value.list[0]?.key : ne.value === f2 || re.value.list.some((e) => e.key === ne.value) ? ne.value : re.value.list[0]?.key), A = Z(() => !k.value || ie.value === f2 ? k.value : {
54280
+ ...k.value,
54281
+ executions: k.value.executions.filter((e) => re.value.of.get(`${e.source}:${e.id}`) === ie.value)
54282
+ });
54283
+ R(d, () => {
54284
+ ne.value = d2;
54285
+ });
54286
+ let j = (e) => new Date(e).toLocaleString("zh-CN", {
54287
+ month: "numeric",
54288
+ day: "numeric",
54289
+ hour: "2-digit",
54290
+ minute: "2-digit",
54291
+ hour12: !1
54292
+ });
54293
+ function ae(e) {
54294
+ let t = e.task ? `${e.task.replace(/\s+/g, " ").slice(0, p2)}${e.task.length > p2 ? "…" : ""}` : e.source === "discussion" ? "讨论" : "执行";
54295
+ return `${j(e.start)} · ${t} · ${e.count} 次${e.running ? " · 进行中" : e.failed ? " · 有失败" : ""}`;
54296
+ }
54297
+ let oe = Z(() => A.value ? I1(A.value, h.value) : []), se = Z(() => oe.value.some((e) => e.item.state === "running")), ce = Z(() => {
54298
+ let e = Math.min(...oe.value.map((e) => e.start)), t = Math.max(...oe.value.map((e) => e.end));
54299
+ return Number.isFinite(e) ? {
54300
+ start: e,
54301
+ end: t,
54302
+ duration: Math.max(0, t - e)
54303
+ } : {
54304
+ start: 0,
54305
+ end: 0,
54306
+ duration: 0
54307
+ };
54308
+ }), le = Z(() => D.position !== null && !se.value), ue = Z(() => le.value ? ce.value.start + D.position : h.value), de = Z(() => le.value ? I1(P1(A.value, ue.value, _.value), ue.value) : oe.value), pe = Z(() => de.value.filter((e) => !e.ancestors.some((e) => g.value.has(e)))), me = Z(() => de.value.some((e) => e.item.state === "running")), he = Z(() => H1(de.value, me.value)), ge = Z(() => me.value ? he.value.x(ue.value) : null), N = Z(() => Math.max(1, ce.value.duration / i2)), _e = Z(() => D.speed || N.value);
54309
+ function ve(e) {
54310
+ let t = T ? Math.min(e - T, 250) : 0;
54311
+ T = e;
54312
+ let n = de.value.length <= r2 || e - E >= n2;
54313
+ D.playing && (O += t * _e.value, O >= ce.value.duration ? Object.assign(D, {
54314
+ position: null,
54315
+ playing: !1
54316
+ }) : n && (D.position = O)), se.value && n && (h.value = Date.now()), n && (E = e), w = se.value || D.playing ? requestAnimationFrame(ve) : 0, w || (T = 0);
54317
+ }
54318
+ R([se, () => D.playing], () => {
54319
+ !w && (se.value || D.playing) && (w = requestAnimationFrame(ve));
54320
+ }, { immediate: !0 });
54321
+ async function ye() {
54322
+ D.position === null ? (O = 0, Ee()) : O = D.position, Object.assign(D, {
54323
+ position: O,
54324
+ playing: !0
54325
+ }), be();
54118
54326
  }
54119
- R(() => ee.value?.notes.length, () => {
54120
- ee.value && oe(ee.value);
54327
+ function be() {
54328
+ for (let e of A.value?.executions || []) We({
54329
+ item: e,
54330
+ notes: e.notes || []
54331
+ });
54332
+ }
54333
+ function xe() {
54334
+ D.playing = !1;
54335
+ }
54336
+ function Se() {
54337
+ O = 0, Ee(), Object.assign(D, {
54338
+ position: 0,
54339
+ playing: !0
54340
+ });
54341
+ }
54342
+ function Ce(e) {
54343
+ O = Number(e.target.value), Object.assign(D, {
54344
+ position: O,
54345
+ playing: !1
54346
+ }), be();
54347
+ }
54348
+ R([ie, d], () => Object.assign(D, {
54349
+ position: null,
54350
+ playing: !1
54351
+ }));
54352
+ let we = /* @__PURE__ */ F(/* @__PURE__ */ new Set()), Te = null;
54353
+ function Ee() {
54354
+ Te = /* @__PURE__ */ new Set(), we.value = /* @__PURE__ */ new Set();
54355
+ }
54356
+ R(() => pe.value.map((e) => e.key).join(), () => {
54357
+ let e = pe.value.map((e) => e.key);
54358
+ if (!Te) {
54359
+ Te = new Set(e);
54360
+ return;
54361
+ }
54362
+ let t = e.filter((e) => !Te.has(e));
54363
+ t.forEach((e) => Te.add(e)), t.length && (we.value = /* @__PURE__ */ new Set([...we.value, ...t]), setTimeout(() => {
54364
+ we.value = new Set([...we.value].filter((e) => !t.includes(e)));
54365
+ }, a2));
54366
+ }), R([ie, d], () => {
54367
+ Te = null;
54121
54368
  });
54122
- function re(e) {
54123
- let t = new Set(d.value);
54124
- t.has(e) ? t.delete(e) : t.add(e), d.value = t;
54369
+ let De = Z(() => z1(pe.value, he.value)), Oe = Z(() => G1(he.value, Math.min(u2, Math.max(l2, Math.round((l.value || 540) / c2))))), ke = Z(() => K1(de.value, ue.value)), Ae = Z(() => de.value.filter((e) => e.has_children).map((e) => e.key)), je = Z(() => de.value.find((e) => e.key === y.value)), Me = Z(() => je.value ? N1(je.value, _.value.get(je.value.item.id)) : []), Ne = Z(() => {
54370
+ let e = de.value, t = new Set(e.flatMap((e) => e.segments.map((e) => T1[e.phase])));
54371
+ return [
54372
+ ...e.some((e) => e.queue[1] > e.queue[0]) ? [["queue", "排队"]] : [],
54373
+ ...e.some((e) => e.wake) ? [["wake", "唤醒"]] : [],
54374
+ ...t.has("model") ? [["model", "模型(思考、撰写)"]] : [],
54375
+ ...t.has("tool") ? [["tool", "工具(命令、工具、编辑)"]] : [],
54376
+ ...e.some((e) => e.work && !e.segments.length) ? [["work", "执行(无阶段明细)"]] : [],
54377
+ ...e.some((e) => e.placed_parent) ? [["handoff", "派活"]] : [],
54378
+ ...e.some((e) => e.notes.length) ? [["note-mark", "过程说明"]] : [],
54379
+ ...e.some((e) => e.item.state === "failed") ? [["failed-mark", "失败"]] : []
54380
+ ];
54381
+ }), Pe = Z(() => de.value.length > 0 && de.value.every((e) => !e.segments.length)), Fe = Z(() => {
54382
+ let e = /* @__PURE__ */ new Map();
54383
+ for (let t of [...de.value].sort((e, t) => e.start - t.start)) e.has(t.item.member) || e.set(t.item.member, e.size % m2 + 1);
54384
+ return e;
54385
+ }), Ie = Z(() => {
54386
+ let e = h2 / (l.value || 800);
54387
+ return Oe.value.filter((t) => !he.value.folds.some((n) => Math.abs(t.x - (n.from + n.width / 2)) < e));
54388
+ });
54389
+ function Le(e) {
54390
+ y.value = y.value === e.key ? "" : e.key, y.value && We(e);
54391
+ }
54392
+ R(() => je.value?.notes.length, () => {
54393
+ je.value && We(je.value);
54394
+ });
54395
+ function Re(e) {
54396
+ let t = new Set(g.value);
54397
+ t.has(e) ? t.delete(e) : t.add(e), g.value = t;
54125
54398
  }
54126
- function ie(e, t, n = !1) {
54127
- let r = T.value.x(e), i = Math.max(0, T.value.x(t) - r) * 100;
54399
+ function ze(e, t, n = !1) {
54400
+ let r = he.value.x(e), i = Math.max(0, he.value.x(t) - r) * 100;
54128
54401
  return {
54129
54402
  left: `${r * 100}%`,
54130
54403
  width: n ? `max(2px, calc(${i}% - 1px))` : `${i}%`
54131
54404
  };
54132
54405
  }
54133
- function A(e) {
54406
+ function Be(e) {
54134
54407
  let t = e.item.role === "host";
54135
54408
  return e.item.source === "discussion" ? t ? "讨论 · 主持" : "讨论 · 专家" : t ? "协作 · 主持" : "协作";
54136
54409
  }
54137
- let j = (e) => j1(e, u.value);
54138
- function ae(e) {
54410
+ function Ve(e) {
54411
+ return [...e.item.source === "discussion" ? ["讨论"] : [], ...e.item.role === "host" ? ["主持"] : []];
54412
+ }
54413
+ let He = (e) => M1(e, ue.value);
54414
+ function Ue(e) {
54139
54415
  let t = [
54140
54416
  i.display_name(e.item.member),
54141
- A(e),
54142
- T1[e.item.state],
54143
- `用时 ${O1(e.end - e.start)}`
54417
+ Be(e),
54418
+ E1[e.item.state],
54419
+ `用时 ${k1(e.end - e.start)}`
54144
54420
  ];
54145
- return e.wake && t.push(`唤醒 ${O1(e.wake[1] - e.wake[0])}${e.wake_approx ? "(约)" : ""}`), !e.segments.length && e.work && t.push("无阶段明细"), e.notes.length && t.push(`${e.notes.length} 段过程说明`), t.join(",");
54421
+ return e.wake && t.push(`唤醒 ${k1(e.wake[1] - e.wake[0])}${e.wake_approx ? "(约)" : ""}`), !e.segments.length && e.work && t.push("无阶段明细"), e.notes.length && t.push(`${e.notes.length} 段过程说明`), t.join(",");
54146
54422
  }
54147
- async function oe(e) {
54423
+ async function We(e) {
54148
54424
  let t = e.item.id;
54149
- if (!(e.item.source !== "free" || !e.notes.length || (f.value.get(t)?.length || 0) >= e.notes.length)) try {
54150
- let { notes: e } = await i.request(`/api/rooms/${o.value}/executions/${t}/notes`);
54151
- f.value = new Map(f.value).set(t, e.map((e) => e.text));
54425
+ if (!(e.item.source !== "free" || !e.notes.length || (_.value.get(t)?.length || 0) >= e.notes.length)) try {
54426
+ let { notes: e } = await i.request(`/api/rooms/${d.value}/executions/${t}/notes`);
54427
+ _.value = new Map(_.value).set(t, e.map((e) => e.text));
54152
54428
  } catch {}
54153
54429
  }
54154
- let se = (e) => new Date(e).toLocaleTimeString("zh-CN", {
54430
+ let Ge = (e) => new Date(e).toLocaleTimeString("zh-CN", {
54155
54431
  hour: "2-digit",
54156
54432
  minute: "2-digit",
54157
54433
  second: "2-digit",
54158
54434
  hour12: !1
54159
- }), ce = (e) => new Date(e.at).toLocaleTimeString("zh-CN", {
54435
+ }), Ke = (e) => new Date(e.at).toLocaleTimeString("zh-CN", {
54160
54436
  hour: "2-digit",
54161
54437
  minute: "2-digit",
54162
54438
  ...e.seconds ? { second: "2-digit" } : {},
54163
54439
  hour12: !1
54164
54440
  });
54165
- function le(e, t, n) {
54166
- let r = e.currentTarget.getBoundingClientRect(), i = n.note ? {
54441
+ function qe(e, t, n, r = !1) {
54442
+ let i = e.currentTarget.getBoundingClientRect(), a = n.note ? {
54167
54443
  notes: [n.note],
54168
54444
  earlier: !1
54169
- } : N1(t.notes, n.start, n.end);
54170
- p.value = {
54445
+ } : F1(t.notes, n.start, n.end), o = Math.min(360, window.innerWidth - 16), s = i.bottom + 6, c = s + 160 > window.innerHeight && i.top > 200 ? Math.max(8, i.top - 6 - 200) : s;
54446
+ v.value = {
54171
54447
  key: t.key,
54448
+ id: Je(t, n),
54172
54449
  row: t,
54173
54450
  piece: n,
54174
- related: i,
54175
- left: Math.max(8, Math.min(r.left, window.innerWidth - 380)),
54176
- top: r.bottom + 6
54177
- }, oe(t);
54178
- }
54179
- function ue(e) {
54180
- p.value?.key === e.key && (p.value = null);
54181
- }
54182
- let de = Z(() => {
54183
- let e = p.value?.piece;
54184
- return e ? e.note ? `过程说明 · ${se(e.note.at)}` : `${e.kind === "segment" ? `${w1[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${O1(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54185
- }), pe = Z(() => {
54186
- if (!p.value) return [];
54187
- let e = f.value.get(p.value.row.item.id);
54188
- return p.value.related.notes.map((t) => ({
54451
+ related: a,
54452
+ pinned: r,
54453
+ left: Math.max(8, Math.min(i.left, window.innerWidth - o - 8)),
54454
+ top: c
54455
+ }, We(t);
54456
+ }
54457
+ let Je = (e, t) => `${e.key}:${t.kind || t.label || "note"}:${t.start}`;
54458
+ function Ye(e, t, n) {
54459
+ s && qe(e, t, n);
54460
+ }
54461
+ function Xe(e, t, n) {
54462
+ s || (v.value?.id === Je(t, n) ? v.value = null : qe(e, t, n, !0));
54463
+ }
54464
+ function Ze(e) {
54465
+ v.value?.key === e.key && !v.value.pinned && (v.value = null);
54466
+ }
54467
+ let Qe = Z(() => {
54468
+ let e = v.value?.piece;
54469
+ return e ? e.note ? `过程说明 · ${Ge(e.note.at)}` : `${e.kind === "segment" ? `${w1[e.phase]}${e.tool ? ` · ${e.tool}` : ""}` : e.label} · ${k1(e.end - e.start)}${e.live ? " · 进行中" : ""}` : "";
54470
+ }), $e = Z(() => {
54471
+ if (!v.value) return [];
54472
+ let e = _.value.get(v.value.row.item.id);
54473
+ return v.value.related.notes.map((t) => ({
54189
54474
  at: t.at,
54190
54475
  text: e?.[t.index] ?? (e ? "(未能读取)" : "读取中…")
54191
54476
  }));
54192
54477
  });
54193
54478
  return (e, t) => {
54194
- let r = sA, o = pA;
54195
- return U(), W("section", B1, [
54196
- t[19] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "执行时间线"), K("p", null, "本机接入程序唤醒的每次执行,按时间排在同一条轴上;由主持人派出的执行缩进在主持人之下。阶段由接入程序从软件输出中识别,手动接入、在线 AI 与 Codex App 没有阶段明细;点名字展开详情,悬停条形或刻度看当时的过程说明(目前只有协作执行记录过程说明)。")])], -1),
54197
- l.value ? (U(), W("p", V1, P(l.value), 1)) : Y("", !0),
54198
- x.value && !C.value.length ? (U(), W("p", H1, "还没有执行记录。")) : Y("", !0),
54199
- C.value.length ? (U(), W("div", U1, [
54200
- K("header", W1, [
54201
- t[3] ||= K("span", { class: "wf-title" }, "执行瀑布", -1),
54202
- K("span", { class: M(["wf-state", { "is-live": D.value.running }]) }, P(D.value.running ? `${D.value.running} 个进行中` : "均已结束"), 3),
54203
- D.value.slowest ? (U(), W("span", G1, [
54204
- t[2] ||= J("最慢一步 ", -1),
54205
- K("b", null, [J(P(I(i).display_name(D.value.slowest.member)) + " · " + P(I(w1)[D.value.slowest.phase]), 1), D.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(D.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54206
- J(" · " + P(I(O1)(D.value.slowest.end - D.value.slowest.start)), 1)
54479
+ let r = sA, s = pA;
54480
+ return U(), W("section", q1, [
54481
+ t[25] ||= K("div", { class: "page-heading" }, [K("div", null, [K("h2", null, "执行时间线"), K("p", null, "本机接入程序唤醒的每次执行;点名字看详情,悬停条形看当时的过程说明。")])], -1),
54482
+ m.value ? (U(), W("p", J1, P(m.value), 1)) : Y("", !0),
54483
+ k.value && !de.value.length ? (U(), W("p", Y1, "还没有执行记录。")) : Y("", !0),
54484
+ de.value.length ? (U(), W("div", X1, [
54485
+ K("header", Z1, [
54486
+ t[8] ||= K("span", { class: "wf-title" }, "执行瀑布", -1),
54487
+ K("label", Q1, [
54488
+ t[6] ||= K("span", { class: "sr-only" }, "查看哪一轮", -1),
54489
+ vr(K("select", {
54490
+ "onUpdate:modelValue": t[0] ||= (e) => ne.value = e,
54491
+ class: "wf-run-select"
54492
+ }, [
54493
+ K("option", { value: d2 }, "最近一轮(自动跟随)"),
54494
+ (U(!0), W(H, null, B(re.value.list, (e) => (U(), W("option", {
54495
+ key: e.key,
54496
+ value: e.key
54497
+ }, P(ae(e)), 9, $1))), 128)),
54498
+ K("option", { value: f2 }, "全部执行")
54499
+ ], 512), [[$l, ne.value]]),
54500
+ q(r, {
54501
+ name: "i-lucide-chevrons-up-down",
54502
+ class: "wf-run-icon",
54503
+ "aria-hidden": "true"
54504
+ })
54505
+ ]),
54506
+ K("span", { class: M(["wf-state", { "is-live": ke.value.running }]) }, P(ke.value.running ? `${ke.value.running} 个进行中` : "均已结束"), 3),
54507
+ ke.value.slowest ? (U(), W("span", e0, [
54508
+ t[7] ||= J("最慢一步 ", -1),
54509
+ K("b", null, [J(P(I(i).display_name(ke.value.slowest.member)) + " · " + P(I(w1)[ke.value.slowest.phase]), 1), ke.value.slowest.tool ? (U(), W(H, { key: 0 }, [J(P(ke.value.slowest.tool), 1)], 64)) : Y("", !0)]),
54510
+ J(" · " + P(I(k1)(ke.value.slowest.end - ke.value.slowest.start)), 1)
54207
54511
  ])) : Y("", !0)
54208
54512
  ]),
54209
- K("dl", K1, [
54210
- K("div", null, [t[4] ||= K("dt", null, "执行", -1), K("dd", null, P(D.value.executions), 1)]),
54211
- K("div", null, [t[5] ||= K("dt", null, "进行中", -1), K("dd", { class: M({ "is-live": D.value.running }) }, P(D.value.running), 3)]),
54212
- K("div", null, [t[6] ||= K("dt", null, "失败", -1), K("dd", { class: M({ "is-failed": D.value.failed }) }, P(D.value.failed), 3)]),
54213
- K("div", { title: `超过 ${a} 分钟没有输出` }, [t[7] ||= K("dt", null, "可能卡住", -1), K("dd", { class: M({ "is-warn": D.value.stalled }) }, P(D.value.stalled), 3)], 8, q1),
54214
- K("div", { title: T.value.folds.length ? `已折叠 ${T.value.folds.length} 段超过 ${I(E1) / 6e4} 分钟的空闲` : void 0 }, [t[8] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(O1)(T.value.busy_ms)), 1)], 8, J1),
54215
- K("div", Y1, [t[9] ||= K("dt", null, "工具与命令", -1), K("dd", null, P(D.value.tool_segments) + " 段", 1)])
54513
+ K("dl", t0, [
54514
+ K("div", null, [t[9] ||= K("dt", null, "执行", -1), K("dd", null, [(U(), W("span", {
54515
+ key: ke.value.executions,
54516
+ class: "wf-roll"
54517
+ }, P(ke.value.executions), 1))])]),
54518
+ K("div", null, [t[10] ||= K("dt", null, "进行中", -1), K("dd", { class: M(ke.value.running ? "is-live" : "is-zero") }, [(U(), W("span", {
54519
+ key: ke.value.running,
54520
+ class: "wf-roll"
54521
+ }, P(ke.value.running), 1))], 2)]),
54522
+ K("div", null, [t[11] ||= K("dt", null, "失败", -1), K("dd", { class: M(ke.value.failed ? "is-failed" : "is-zero") }, [(U(), W("span", {
54523
+ key: ke.value.failed,
54524
+ class: "wf-roll"
54525
+ }, P(ke.value.failed), 1))], 2)]),
54526
+ K("div", { title: `超过 ${a} 分钟没有输出` }, [t[12] ||= K("dt", null, "可能卡住", -1), K("dd", { class: M(ke.value.stalled ? "is-warn" : "is-zero") }, [(U(), W("span", {
54527
+ key: ke.value.stalled,
54528
+ class: "wf-roll"
54529
+ }, P(ke.value.stalled), 1))], 2)], 8, n0),
54530
+ K("div", { title: he.value.folds.length ? `已折叠 ${he.value.folds.length} 段超过 ${I(D1) / 6e4} 分钟的空闲` : void 0 }, [t[13] ||= K("dt", null, "有效时长", -1), K("dd", null, P(I(k1)(he.value.busy_ms)), 1)], 8, r0),
54531
+ K("div", i0, [t[15] ||= K("dt", null, "工具与命令", -1), K("dd", { class: M({ "is-zero": !ke.value.tool_segments }) }, [(U(), W("span", {
54532
+ key: ke.value.tool_segments,
54533
+ class: "wf-roll"
54534
+ }, P(ke.value.tool_segments), 1)), t[14] ||= J(" 段", -1)], 2)])
54216
54535
  ]),
54217
- K("ul", X1, [
54218
- (U(), W(H, null, B(te, ([e, t]) => K("li", { key: e }, [K("i", { class: M(["wf-swatch", `is-${e}`]) }, null, 2), J(P(t), 1)])), 64)),
54219
- t[10] ||= K("li", null, [K("i", { class: "wf-swatch is-note-mark" }), J("过程说明")], -1),
54220
- t[11] ||= K("li", null, [K("i", { class: "wf-swatch is-failed-mark" }), J("失败")], -1)
54536
+ K("ul", a0, [
54537
+ (U(!0), W(H, null, B(Ne.value, ([e, t]) => (U(), W("li", { key: e }, [K("i", { class: M(["wf-swatch", `is-${e}`]) }, null, 2), J(P(t), 1)]))), 128)),
54538
+ Fe.value.size > 1 ? (U(), W("li", o0, "颜色区分成员,深浅区分模型与工具")) : Y("", !0),
54539
+ Pe.value ? (U(), W("li", s0, "这些执行都没有阶段明细:发生在接入程序上报阶段之前,或来自手动接入、在线 AI、Codex App")) : Y("", !0)
54221
54540
  ]),
54222
54541
  K("div", {
54223
54542
  class: "wf-grid",
54224
54543
  role: "list",
54225
- style: fe({ "--wf-depth-px": `${L0}px` })
54544
+ style: fe({ "--wf-depth-px": `${s2}px` })
54226
54545
  }, [
54227
- K("div", Z1, [K("span", null, "执行 · " + P(w.value.length) + "/" + P(C.value.length), 1), O.value.length ? (U(), W("span", Q1, [K("button", {
54546
+ K("div", c0, [K("span", null, "执行 · " + P(pe.value.length) + "/" + P(de.value.length), 1), Ae.value.length ? (U(), W("span", l0, [K("button", {
54228
54547
  type: "button",
54229
54548
  class: "wf-text-button",
54230
- onClick: t[0] ||= (e) => d.value = /* @__PURE__ */ new Set()
54549
+ onClick: t[1] ||= (e) => g.value = /* @__PURE__ */ new Set()
54231
54550
  }, "展开全部"), K("button", {
54232
54551
  type: "button",
54233
54552
  class: "wf-text-button",
54234
- onClick: t[1] ||= (e) => d.value = new Set(O.value)
54553
+ onClick: t[2] ||= (e) => g.value = new Set(Ae.value)
54235
54554
  }, "收起全部")])) : Y("", !0)]),
54236
- K("div", $1, [(U(!0), W(H, null, B(E.value, (e) => (U(), W("span", {
54237
- key: e.at,
54238
- class: "wf-tick",
54239
- style: fe({ left: `${e.x * 100}%` })
54240
- }, P(ce(e)), 5))), 128)), S.value ? (U(), W("span", e0, "现在")) : Y("", !0)]),
54241
- t[17] ||= K("span", { class: "wf-axis-end" }, "用时", -1),
54242
- (U(!0), W(H, null, B(w.value, (e) => (U(), W("div", {
54555
+ K("div", {
54556
+ ref_key: "axis_element",
54557
+ ref: c,
54558
+ class: "wf-axis",
54559
+ "aria-hidden": "true"
54560
+ }, [
54561
+ (U(!0), W(H, null, B(Ie.value, (e) => (U(), W("span", {
54562
+ key: e.at,
54563
+ class: "wf-tick",
54564
+ style: fe({ left: `${e.x * 100}%` })
54565
+ }, P(Ke(e)), 5))), 128)),
54566
+ (U(!0), W(H, null, B(he.value.folds, (e) => (U(), W("span", {
54567
+ key: `fold-${e.start}`,
54568
+ class: "wf-fold-label",
54569
+ style: fe({ left: `${(e.from + e.width / 2) * 100}%` }),
54570
+ title: `${Ge(e.start)} – ${Ge(e.end)} 没有执行,已折叠`
54571
+ }, "⋯ " + P(I(k1)(e.end - e.start)), 13, u0))), 128)),
54572
+ ge.value === null ? Y("", !0) : (U(), W("span", {
54573
+ key: 0,
54574
+ class: "wf-cursor-head",
54575
+ style: fe({ left: `${ge.value * 100}%` })
54576
+ }, null, 4))
54577
+ ], 512),
54578
+ t[21] ||= K("span", { class: "wf-axis-end" }, "用时", -1),
54579
+ (U(!0), W(H, null, B(pe.value, (e) => (U(), W("div", {
54243
54580
  key: e.key,
54244
54581
  role: "listitem",
54245
- class: M(["wf-row", [`is-${e.item.state}`, { "is-open": m.value === e.key }]])
54582
+ class: M(["wf-row", [`is-${e.item.state}`, {
54583
+ "is-open": y.value === e.key,
54584
+ "is-entering": we.value.has(e.key)
54585
+ }]])
54246
54586
  }, [
54247
54587
  K("div", {
54248
54588
  class: "wf-label",
54249
54589
  style: fe({ "--depth": e.depth })
54250
54590
  }, [
54251
- e.depth ? (U(), W("span", t0)) : Y("", !0),
54591
+ e.depth ? (U(), W("span", d0)) : Y("", !0),
54252
54592
  e.has_children ? (U(), W("button", {
54253
54593
  key: 1,
54254
54594
  type: "button",
54255
- class: M(["wf-toggle", { "is-open": !d.value.has(e.key) }]),
54256
- "aria-expanded": !d.value.has(e.key),
54257
- "aria-label": `${d.value.has(e.key) ? "展开" : "收起"} ${I(i).display_name(e.item.member)} 派出的执行`,
54258
- onClick: (t) => re(e.key)
54259
- }, [q(r, { name: "i-lucide-chevron-right" })], 10, n0)) : (U(), W("span", r0)),
54260
- q(o, {
54595
+ class: M(["wf-toggle", { "is-open": !g.value.has(e.key) }]),
54596
+ "aria-expanded": !g.value.has(e.key),
54597
+ "aria-label": `${g.value.has(e.key) ? "展开" : "收起"} ${I(i).display_name(e.item.member)} 派出的执行`,
54598
+ onClick: (t) => Re(e.key)
54599
+ }, [q(r, { name: "i-lucide-chevron-right" })], 10, f0)) : (U(), W("span", p0)),
54600
+ q(s, {
54261
54601
  src: I(i).identities[e.item.member]?.icon,
54262
54602
  text: I(i).identities[e.item.member]?.initials,
54263
54603
  alt: e.item.member,
@@ -54272,27 +54612,31 @@ var B1 = {
54272
54612
  K("button", {
54273
54613
  type: "button",
54274
54614
  class: "wf-names",
54275
- "aria-expanded": m.value === e.key,
54276
- title: j(e).text,
54277
- onClick: (t) => ne(e)
54278
- }, [K("span", a0, [
54615
+ "aria-expanded": y.value === e.key,
54616
+ title: He(e).text,
54617
+ onClick: (t) => Le(e)
54618
+ }, [K("span", h0, [
54619
+ e.item.state === "running" ? (U(), W("i", g0)) : Y("", !0),
54279
54620
  K("strong", null, P(I(i).display_name(e.item.member)), 1),
54280
- K("small", null, P(A(e)), 1),
54281
- D.value.slowest?.row === e.key ? (U(), W("em", o0, "最慢")) : Y("", !0)
54282
- ]), K("span", { class: M(["wf-status", `is-${j(e).tone}`]) }, [j(e).tone === "live" ? (U(), W("i", s0)) : Y("", !0), J(P(j(e).text), 1)], 2)], 8, i0)
54621
+ (U(!0), W(H, null, B(Ve(e), (e) => (U(), W("em", {
54622
+ key: e,
54623
+ class: "wf-pill is-role"
54624
+ }, P(e), 1))), 128)),
54625
+ ke.value.slowest?.row === e.key ? (U(), W("em", _0, "最慢")) : Y("", !0)
54626
+ ]), K("span", { class: M(["wf-status", `is-${He(e).tone}`]) }, [He(e).tone === "live" ? (U(), W("i", v0)) : Y("", !0), J(P(He(e).text), 1)], 2)], 8, m0)
54283
54627
  ], 4),
54284
54628
  K("div", {
54285
54629
  class: "wf-lane",
54286
54630
  role: "img",
54287
- "aria-label": ae(e),
54288
- onMouseleave: (t) => ue(e)
54289
- }, [K("div", l0, [
54290
- (U(!0), W(H, null, B(E.value, (e) => (U(), W("i", {
54631
+ "aria-label": Ue(e),
54632
+ onMouseleave: (t) => Ze(e)
54633
+ }, [K("div", b0, [
54634
+ (U(!0), W(H, null, B(Ie.value, (e) => (U(), W("i", {
54291
54635
  key: e.at,
54292
54636
  class: "wf-gridline",
54293
54637
  style: fe({ left: `${e.x * 100}%` })
54294
54638
  }, null, 4))), 128)),
54295
- (U(!0), W(H, null, B(T.value.folds, (e) => (U(), W("i", {
54639
+ (U(!0), W(H, null, B(he.value.folds, (e) => (U(), W("i", {
54296
54640
  key: e.start,
54297
54641
  class: "wf-fold",
54298
54642
  style: fe({
@@ -54300,200 +54644,290 @@ var B1 = {
54300
54644
  width: `${e.width * 100}%`
54301
54645
  })
54302
54646
  }, null, 4))), 128)),
54303
- t[12] ||= K("i", { class: "wf-well" }, null, -1),
54647
+ t[16] ||= K("i", { class: "wf-well" }, null, -1),
54648
+ (U(!0), W(H, null, B(De.value.get(e.key) || [], (e, t) => (U(), W("i", {
54649
+ key: `link-${t}`,
54650
+ class: M(["wf-link", `is-${e.part}`]),
54651
+ "data-tone": Fe.value.get(e.member),
54652
+ style: fe({ left: `${e.x * 100}%` })
54653
+ }, null, 14, x0))), 128)),
54654
+ ge.value === null ? Y("", !0) : (U(), W("i", {
54655
+ key: 0,
54656
+ class: "wf-cursor",
54657
+ style: fe({ left: `${ge.value * 100}%` })
54658
+ }, null, 4)),
54304
54659
  K("i", {
54305
54660
  class: "wf-bar is-queue",
54306
- style: fe(ie(...e.queue)),
54307
- onMouseenter: (t) => le(t, e, {
54661
+ style: fe(ze(...e.queue)),
54662
+ onMouseenter: (t) => Ye(t, e, {
54663
+ label: "排队",
54664
+ start: e.queue[0],
54665
+ end: e.queue[1]
54666
+ }),
54667
+ onClick: (t) => Xe(t, e, {
54308
54668
  label: "排队",
54309
54669
  start: e.queue[0],
54310
54670
  end: e.queue[1]
54311
54671
  })
54312
- }, null, 44, u0),
54672
+ }, null, 44, S0),
54313
54673
  e.wake ? (U(), W("i", {
54314
- key: 0,
54674
+ key: 1,
54315
54675
  class: "wf-bar is-wake",
54316
- style: fe(ie(...e.wake)),
54317
- onMouseenter: (t) => le(t, e, {
54676
+ style: fe(ze(...e.wake)),
54677
+ onMouseenter: (t) => Ye(t, e, {
54678
+ label: e.wake_approx ? "唤醒(约)" : "唤醒",
54679
+ start: e.wake[0],
54680
+ end: e.wake[1]
54681
+ }),
54682
+ onClick: (t) => Xe(t, e, {
54318
54683
  label: e.wake_approx ? "唤醒(约)" : "唤醒",
54319
54684
  start: e.wake[0],
54320
54685
  end: e.wake[1]
54321
54686
  })
54322
- }, null, 44, d0)) : Y("", !0),
54687
+ }, null, 44, C0)) : Y("", !0),
54323
54688
  e.work ? (U(), W("i", {
54324
- key: 1,
54689
+ key: 2,
54325
54690
  class: M(["wf-bar is-work", { "has-detail": e.segments.length }]),
54326
- style: fe(ie(...e.work)),
54327
- onMouseenter: (t) => le(t, e, {
54691
+ "data-tone": e.segments.length ? void 0 : Fe.value.get(e.item.member),
54692
+ style: fe(ze(...e.work)),
54693
+ onMouseenter: (t) => Ye(t, e, {
54694
+ label: e.segments.length ? "执行" : "执行 · 无阶段明细",
54695
+ start: e.work[0],
54696
+ end: e.work[1],
54697
+ live: e.item.state === "running"
54698
+ }),
54699
+ onClick: (t) => Xe(t, e, {
54328
54700
  label: e.segments.length ? "执行" : "执行 · 无阶段明细",
54329
54701
  start: e.work[0],
54330
54702
  end: e.work[1],
54331
54703
  live: e.item.state === "running"
54332
54704
  })
54333
- }, null, 46, f0)) : Y("", !0),
54705
+ }, null, 46, w0)) : Y("", !0),
54334
54706
  (U(!0), W(H, null, B(e.segments, (t) => (U(), W(H, { key: t.start + t.phase }, [K("i", {
54335
- class: M(["wf-bar wf-seg", [`is-${t.phase}`, { "is-live": t.live }]]),
54336
- style: fe(ie(t.start, t.seen, !0)),
54337
- onMouseenter: (n) => le(n, e, {
54707
+ class: M(["wf-bar wf-seg", [`is-${I(T1)[t.phase]}`, { "is-live": t.live }]]),
54708
+ "data-tone": Fe.value.get(e.item.member),
54709
+ style: fe(ze(t.start, t.seen, !0)),
54710
+ onMouseenter: (n) => Ye(n, e, {
54711
+ kind: "segment",
54712
+ ...t
54713
+ }),
54714
+ onClick: (n) => Xe(n, e, {
54338
54715
  kind: "segment",
54339
54716
  ...t
54340
54717
  })
54341
- }, null, 46, p0), t.end > t.seen ? (U(), W("i", {
54718
+ }, null, 46, T0), t.end > t.seen ? (U(), W("i", {
54342
54719
  key: 0,
54343
- class: M(["wf-bar wf-seg is-tail", `is-${t.phase}`]),
54344
- style: fe(ie(t.seen, t.end)),
54345
- onMouseenter: (n) => le(n, e, {
54720
+ class: M(["wf-bar wf-seg is-tail", `is-${I(T1)[t.phase]}`]),
54721
+ "data-tone": Fe.value.get(e.item.member),
54722
+ style: fe(ze(t.seen, t.end)),
54723
+ onMouseenter: (n) => Ye(n, e, {
54724
+ kind: "segment",
54725
+ ...t
54726
+ }),
54727
+ onClick: (n) => Xe(n, e, {
54346
54728
  kind: "segment",
54347
54729
  ...t
54348
54730
  })
54349
- }, null, 46, m0)) : Y("", !0)], 64))), 128)),
54731
+ }, null, 46, E0)) : Y("", !0)], 64))), 128)),
54350
54732
  (U(!0), W(H, null, B(e.notes, (t) => (U(), W("button", {
54351
54733
  key: `note-${t.index}`,
54352
54734
  type: "button",
54353
54735
  class: "wf-note",
54354
- style: fe({ left: `${T.value.x(t.at) * 100}%` }),
54355
- "aria-label": `${I(i).display_name(e.item.member)} 的第 ${t.index + 1} 段过程说明,${se(t.at)}`,
54356
- onMouseenter: (n) => le(n, e, {
54736
+ style: fe({ left: `${he.value.x(t.at) * 100}%` }),
54737
+ "aria-label": `${I(i).display_name(e.item.member)} 的第 ${t.index + 1} 段过程说明,${Ge(t.at)}`,
54738
+ onMouseenter: (n) => Ye(n, e, {
54357
54739
  note: t,
54358
54740
  start: t.at,
54359
54741
  end: t.at
54360
54742
  }),
54361
- onFocus: (n) => le(n, e, {
54743
+ onClick: (n) => Xe(n, e, {
54362
54744
  note: t,
54363
54745
  start: t.at,
54364
54746
  end: t.at
54365
54747
  }),
54366
- onBlur: (t) => ue(e)
54367
- }, null, 44, h0))), 128))
54368
- ])], 40, c0),
54369
- K("span", g0, [
54370
- J(P(I(O1)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54748
+ onFocus: (n) => Ye(n, e, {
54749
+ note: t,
54750
+ start: t.at,
54751
+ end: t.at
54752
+ }),
54753
+ onBlur: (t) => Ze(e)
54754
+ }, null, 44, D0))), 128))
54755
+ ])], 40, y0),
54756
+ K("span", O0, [
54757
+ J(P(I(k1)(e.end - e.start)) + P(e.wake_approx && e.wake ? "~" : ""), 1),
54371
54758
  e.item.state === "done" ? Y("", !0) : (U(), W("small", {
54372
54759
  key: 0,
54373
54760
  class: M(`is-${e.item.state}`)
54374
- }, P(I(T1)[e.item.state]), 3)),
54375
- e.truncated ? (U(), W("small", _0, "明细已截断")) : Y("", !0)
54761
+ }, P(I(E1)[e.item.state]), 3)),
54762
+ e.truncated ? (U(), W("small", k0, "明细已截断")) : Y("", !0)
54376
54763
  ]),
54377
- m.value === e.key ? (U(), W("div", {
54764
+ y.value === e.key ? (U(), W("div", {
54378
54765
  key: 0,
54379
54766
  class: "wf-detail",
54380
- style: fe({ marginLeft: `${e.depth * L0 + 44}px` })
54767
+ style: fe({ "--wf-indent": `${e.depth * s2 + 44}px` })
54381
54768
  }, [K("dl", null, [
54382
- e.item.task ? (U(), W("div", v0, [t[13] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(e.item.task), 1), e.item.task_id ? (U(), W("button", {
54769
+ e.item.task ? (U(), W("div", A0, [t[17] ||= K("dt", null, "任务", -1), K("dd", null, [J(P(e.item.task), 1), e.item.task_id ? (U(), W("button", {
54383
54770
  key: 0,
54384
54771
  type: "button",
54385
54772
  class: "subtle-link",
54386
54773
  onClick: (t) => n("detail", e.item.task_id)
54387
- }, "#" + P(e.item.task_id), 9, y0)) : Y("", !0)])])) : Y("", !0),
54388
- e.item.state === "failed" ? (U(), W("div", b0, [t[14] ||= K("dt", null, "失败原因", -1), K("dd", x0, P(e.item.reason || "执行失败"), 1)])) : e.item.result || e.item.answer_id ? (U(), W("div", S0, [t[15] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(e.item.result), 1), e.item.answer_id ? (U(), W("button", {
54774
+ }, "#" + P(e.item.task_id), 9, j0)) : Y("", !0)])])) : Y("", !0),
54775
+ e.item.state === "failed" ? (U(), W("div", M0, [t[18] ||= K("dt", null, "失败原因", -1), K("dd", N0, P(e.item.reason || "执行失败"), 1)])) : e.item.result || e.item.answer_id ? (U(), W("div", P0, [t[19] ||= K("dt", null, "结果", -1), K("dd", null, [J(P(e.item.result), 1), e.item.answer_id ? (U(), W("button", {
54389
54776
  key: 0,
54390
54777
  type: "button",
54391
54778
  class: "subtle-link",
54392
54779
  onClick: (t) => n("detail", e.item.answer_id)
54393
- }, "在消息中查看 #" + P(e.item.answer_id), 9, C0)) : Y("", !0)])])) : Y("", !0),
54394
- e.item.changes ? (U(), W("div", w0, [t[16] ||= K("dt", null, "改动", -1), K("dd", null, P(e.item.changes) + " 个文件", 1)])) : Y("", !0)
54395
- ]), k.value.length ? (U(), W("ol", T0, [(U(!0), W(H, null, B(k.value, (e) => (U(), W("li", {
54396
- key: `${e.kind}-${e.at}-${e.phase || ""}`,
54397
- class: M(`log-${e.kind}`)
54398
- }, [K("time", null, P(se(e.at)), 1), e.kind === "phase" ? (U(), W(H, { key: 0 }, [K("i", {
54399
- class: M(["wf-swatch", `is-${e.phase}`]),
54780
+ }, "在消息中查看 #" + P(e.item.answer_id), 9, F0)) : Y("", !0)])])) : Y("", !0),
54781
+ e.item.changes ? (U(), W("div", I0, [t[20] ||= K("dt", null, "改动", -1), K("dd", null, P(e.item.changes) + " 个文件", 1)])) : Y("", !0)
54782
+ ]), Me.value.length ? (U(), W("ol", L0, [(U(!0), W(H, null, B(Me.value, (t) => (U(), W("li", {
54783
+ key: `${t.kind}-${t.at}-${t.phase || ""}`,
54784
+ class: M(`log-${t.kind}`)
54785
+ }, [K("time", null, P(Ge(t.at)), 1), t.kind === "phase" ? (U(), W(H, { key: 0 }, [K("i", {
54786
+ class: M(["wf-swatch", `is-${I(T1)[t.phase]}`]),
54787
+ "data-tone": Fe.value.get(e.item.member),
54400
54788
  "aria-hidden": "true"
54401
- }, null, 2), K("span", null, [
54402
- J(P(I(w1)[e.phase]), 1),
54403
- e.tool ? (U(), W(H, { key: 0 }, [J(" · " + P(e.tool), 1)], 64)) : Y("", !0),
54404
- J(" · " + P(e.live ? "进行中" : I(O1)(e.duration)), 1)
54405
- ])], 64)) : (U(), W("span", E0, P(e.text), 1))], 2))), 128))])) : (U(), W("p", D0, "这次执行没有阶段明细或过程说明。"))], 4)) : Y("", !0)
54789
+ }, null, 10, R0), K("span", null, [
54790
+ J(P(I(w1)[t.phase]), 1),
54791
+ t.tool ? (U(), W(H, { key: 0 }, [J(" · " + P(t.tool), 1)], 64)) : Y("", !0),
54792
+ J(" · " + P(t.live ? "进行中" : I(k1)(t.duration)), 1)
54793
+ ])], 64)) : (U(), W("span", z0, P(t.text), 1))], 2))), 128))])) : (U(), W("p", B0, "这次执行没有阶段明细或过程说明。"))], 4)) : Y("", !0)
54406
54794
  ], 2))), 128))
54407
54795
  ], 4),
54408
- T.value.folds.length || x.value.executions.length >= x.value.execution_limit ? (U(), W("footer", O0, [T.value.folds.length ? (U(), W("span", k0, [t[18] ||= K("i", {
54796
+ ie.value === f2 ? Y("", !0) : (U(), W("div", V0, [se.value ? (U(), W(H, { key: 0 }, [t[22] ||= K("span", { class: "wf-state is-live" }, "实时", -1), t[23] ||= K("span", { class: "wf-player-note" }, "这一轮结束后可以回放", -1)], 64)) : (U(), W(H, { key: 1 }, [
54797
+ K("button", {
54798
+ type: "button",
54799
+ class: "wf-player-button",
54800
+ "aria-label": D.playing ? "暂停回放" : "回放这一轮",
54801
+ onClick: t[3] ||= (e) => D.playing ? xe() : ye()
54802
+ }, [q(r, { name: D.playing ? "i-lucide-pause" : "i-lucide-play" }, null, 8, ["name"])], 8, H0),
54803
+ K("button", {
54804
+ type: "button",
54805
+ class: "wf-player-button",
54806
+ "aria-label": "从头回放",
54807
+ disabled: !le.value,
54808
+ onClick: Se
54809
+ }, [q(r, { name: "i-lucide-rotate-ccw" })], 8, U0),
54810
+ vr(K("select", {
54811
+ "onUpdate:modelValue": t[4] ||= (e) => D.speed = e,
54812
+ class: "wf-speed",
54813
+ "aria-label": "回放速度"
54814
+ }, [K("option", W0, "自动 · " + P(Math.round(N.value)) + "×", 1), (U(), W(H, null, B(o, (e) => K("option", {
54815
+ key: e,
54816
+ value: e
54817
+ }, P(e) + "×", 9, G0)), 64))], 512), [[
54818
+ $l,
54819
+ D.speed,
54820
+ void 0,
54821
+ { number: !0 }
54822
+ ]]),
54823
+ K("input", {
54824
+ type: "range",
54825
+ class: "wf-scrub",
54826
+ min: "0",
54827
+ max: ce.value.duration,
54828
+ step: "100",
54829
+ value: le.value ? D.position : ce.value.duration,
54830
+ "aria-label": "回放位置",
54831
+ onInput: Ce
54832
+ }, null, 40, K0),
54833
+ K("span", q0, P(I(k1)(le.value ? D.position : ce.value.duration)) + " / " + P(I(k1)(ce.value.duration)), 1)
54834
+ ], 64))])),
54835
+ he.value.folds.length || k.value.executions.length >= k.value.execution_limit ? (U(), W("footer", J0, [he.value.folds.length ? (U(), W("span", Y0, [t[24] ||= K("i", {
54409
54836
  class: "wf-swatch is-fold",
54410
54837
  "aria-hidden": "true"
54411
- }, null, -1), J("已折叠 " + P(T.value.folds.length) + " 段超过 " + P(I(E1) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), x.value.executions.length >= x.value.execution_limit ? (U(), W("span", A0, "只列出最近 " + P(x.value.execution_limit) + " 次讨论执行与 " + P(x.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54838
+ }, null, -1), J("已折叠 " + P(he.value.folds.length) + " 段超过 " + P(I(D1) / 6e4) + " 分钟的空闲", 1)])) : Y("", !0), k.value.executions.length >= k.value.execution_limit ? (U(), W("span", X0, "只列出最近 " + P(k.value.execution_limit) + " 次讨论执行与 " + P(k.value.execution_limit) + " 次协作执行", 1)) : Y("", !0)])) : Y("", !0)
54412
54839
  ])) : Y("", !0),
54413
- p.value ? (U(), W("div", {
54840
+ v.value ? (U(), W("div", {
54414
54841
  key: 3,
54415
- class: "wf-card",
54416
- role: "tooltip",
54842
+ class: M(["wf-card", { "is-pinned": v.value.pinned }]),
54843
+ role: v.value.pinned ? "dialog" : "tooltip",
54417
54844
  style: fe({
54418
- left: `${p.value.left}px`,
54419
- top: `${p.value.top}px`
54845
+ left: `${v.value.left}px`,
54846
+ top: `${v.value.top}px`
54420
54847
  })
54421
54848
  }, [
54422
- K("strong", null, P(I(i).display_name(p.value.row.item.member)) + " · " + P(de.value), 1),
54423
- K("small", null, [J(P(se(p.value.piece.start)), 1), p.value.piece.end > p.value.piece.start ? (U(), W(H, { key: 0 }, [J(" – " + P(p.value.piece.live ? "现在" : se(p.value.piece.end)), 1)], 64)) : Y("", !0)]),
54424
- p.value.row.item.reason ? (U(), W("p", j0, P(p.value.row.item.reason), 1)) : Y("", !0),
54425
- pe.value.length ? (U(), W(H, { key: 1 }, [K("small", M0, P(p.value.related.earlier ? "此前的过程说明" : "过程说明"), 1), K("ol", null, [(U(!0), W(H, null, B(pe.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(se(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
54426
- ], 4)) : Y("", !0)
54849
+ K("strong", null, P(I(i).display_name(v.value.row.item.member)) + " · " + P(Qe.value), 1),
54850
+ v.value.pinned ? (U(), W("button", {
54851
+ key: 0,
54852
+ type: "button",
54853
+ class: "wf-card-close",
54854
+ "aria-label": "关闭",
54855
+ onClick: t[5] ||= (e) => v.value = null
54856
+ }, [q(r, { name: "i-lucide-x" })])) : Y("", !0),
54857
+ K("small", null, [J(P(Ge(v.value.piece.start)), 1), v.value.piece.end > v.value.piece.start ? (U(), W(H, { key: 0 }, [J(" – " + P(v.value.piece.live ? "现在" : Ge(v.value.piece.end)), 1)], 64)) : Y("", !0)]),
54858
+ v.value.row.item.reason ? (U(), W("p", Q0, P(v.value.row.item.reason), 1)) : Y("", !0),
54859
+ $e.value.length ? (U(), W(H, { key: 2 }, [K("small", $0, P(v.value.related.earlier ? "此前的过程说明" : "过程说明"), 1), K("ol", null, [(U(!0), W(H, null, B($e.value, (e) => (U(), W("li", { key: e.at + e.text }, [K("time", null, P(Ge(e.at)), 1), J(P(e.text), 1)]))), 128))])], 64)) : Y("", !0)
54860
+ ], 14, Z0)) : Y("", !0)
54427
54861
  ]);
54428
54862
  };
54429
54863
  }
54430
- }, [["__scopeId", "data-v-da1dcc16"]]), z0 = {
54864
+ }, [["__scopeId", "data-v-3db0325d"]]), _2 = {
54431
54865
  id: "channel-sidebar",
54432
54866
  class: "channel-sidebar",
54433
54867
  "aria-label": "房间导航"
54434
- }, B0 = { class: "channel-sidebar-content" }, V0 = { class: "channel-directory-heading channel-tools-heading" }, H0 = ["aria-expanded"], U0 = { class: "channel-sidebar-footer" }, W0 = ["aria-label"], G0 = { class: "channel-self" }, K0 = ["title"], q0 = [
54868
+ }, v2 = { class: "channel-sidebar-content" }, y2 = { class: "channel-directory-heading channel-tools-heading" }, b2 = ["aria-expanded"], x2 = { class: "channel-sidebar-footer" }, S2 = ["aria-label"], C2 = { class: "channel-self" }, w2 = ["title"], T2 = [
54435
54869
  "aria-valuemax",
54436
54870
  "aria-valuenow",
54437
54871
  "aria-valuetext"
54438
- ], J0 = { class: "channel-main" }, Y0 = { class: "channel-header" }, X0 = { class: "channel-title-icon" }, Z0 = { class: "channel-title" }, Q0 = { class: "channel-title-copy" }, $0 = ["title"], e2 = {
54872
+ ], E2 = { class: "channel-main" }, D2 = { class: "channel-header" }, O2 = { class: "channel-title-icon" }, k2 = { class: "channel-title" }, A2 = { class: "channel-title-copy" }, j2 = ["title"], M2 = {
54439
54873
  key: 0,
54440
54874
  class: "channel-header-context"
54441
- }, t2 = { class: "channel-header-actions" }, n2 = {
54875
+ }, N2 = { class: "channel-header-actions" }, P2 = {
54442
54876
  key: 0,
54443
54877
  class: "channel-launch-recovery",
54444
54878
  "aria-label": "未完成的创建或启动请求"
54445
- }, r2 = { role: "status" }, i2 = { class: "button-row" }, a2 = {
54879
+ }, F2 = { role: "status" }, I2 = { class: "button-row" }, L2 = {
54446
54880
  key: 1,
54447
54881
  class: "channel-tabbar"
54448
- }, o2 = { class: "channel-brief-inner" }, s2 = { class: "channel-brief-heading" }, c2 = ["aria-label", "aria-expanded"], l2 = {
54882
+ }, R2 = { class: "channel-brief-inner" }, z2 = { class: "channel-brief-heading" }, B2 = ["aria-label", "aria-expanded"], V2 = {
54449
54883
  key: 0,
54450
54884
  class: "channel-brief-preview"
54451
- }, u2 = {
54885
+ }, H2 = {
54452
54886
  id: "channel-brief-content",
54453
54887
  class: "channel-brief-content"
54454
- }, d2 = ["innerHTML"], f2 = { class: "channel-brief-footer" }, p2 = { class: "channel-brief-status" }, m2 = { class: "channel-content" }, h2 = {
54888
+ }, U2 = ["innerHTML"], W2 = { class: "channel-brief-footer" }, G2 = { class: "channel-brief-status" }, K2 = { class: "channel-content" }, q2 = {
54455
54889
  key: 0,
54456
54890
  class: "content-page merged-page",
54457
54891
  role: "tabpanel",
54458
54892
  "aria-label": "讨论"
54459
- }, g2 = {
54893
+ }, J2 = {
54460
54894
  key: 1,
54461
54895
  class: "merged-section",
54462
54896
  "aria-label": "当前讨论"
54463
- }, _2 = { class: "page-heading" }, v2 = {
54897
+ }, Y2 = { class: "page-heading" }, X2 = {
54464
54898
  key: 0,
54465
54899
  class: "fine-print"
54466
- }, y2 = {
54900
+ }, Z2 = {
54467
54901
  class: "merged-section channel-summary",
54468
54902
  "aria-label": "当前共识"
54469
- }, b2 = { class: "page-heading" }, x2 = { class: "form-footer" }, S2 = { class: "button-row" }, C2 = { class: "consensus-card is-brief" }, w2 = ["innerHTML"], T2 = {
54903
+ }, Q2 = { class: "page-heading" }, $2 = { class: "form-footer" }, e4 = { class: "button-row" }, t4 = { class: "consensus-card is-brief" }, n4 = ["innerHTML"], r4 = {
54470
54904
  key: 0,
54471
54905
  class: "consensus-card"
54472
- }, E2 = ["innerHTML"], D2 = {
54906
+ }, i4 = ["innerHTML"], a4 = {
54473
54907
  key: 2,
54474
54908
  class: "fine-print"
54475
- }, O2 = {
54909
+ }, o4 = {
54476
54910
  key: 1,
54477
54911
  class: "content-page merged-page",
54478
54912
  role: "tabpanel",
54479
54913
  "aria-label": "房间"
54480
- }, k2 = {
54914
+ }, s4 = {
54481
54915
  key: 2,
54482
54916
  class: "content-page merged-page",
54483
54917
  role: "tabpanel",
54484
54918
  "aria-label": "执行"
54485
- }, A2 = {
54919
+ }, c4 = {
54486
54920
  key: 1,
54487
54921
  class: "channel-empty"
54488
- }, j2 = ["aria-valuenow", "aria-valuetext"], M2 = {
54922
+ }, l4 = ["aria-valuenow", "aria-valuetext"], u4 = {
54489
54923
  key: 2,
54490
54924
  id: "channel-member-rail",
54491
54925
  class: "channel-member-rail",
54492
54926
  "aria-label": "当前焦点与讨论进度"
54493
- }, N2 = { class: "channel-rail-board" }, P2 = {
54927
+ }, d4 = { class: "channel-rail-board" }, f4 = {
54494
54928
  key: 2,
54495
54929
  class: "progress-board is-docked"
54496
- }, F2 = { class: "channel-detail-title" }, I2 = { class: "info-section" }, L2 = "ai-codiscuss-channel-layout", R2 = 220, z2 = 440, B2 = 280, V2 = 16, H2 = 180, U2 = 400, W2 = 248, G2 = 16, K2 = 480, q2 = 1200, J2 = 0, Y2 = {
54930
+ }, p4 = { class: "channel-detail-title" }, m4 = { class: "info-section" }, h4 = "ai-codiscuss-channel-layout", g4 = 220, _4 = 440, v4 = 280, y4 = 16, b4 = 180, x4 = 400, S4 = 248, C4 = 16, w4 = 480, T4 = 1200, E4 = 0, D4 = {
54497
54931
  __name: "ChannelWorkspace",
54498
54932
  setup(e) {
54499
54933
  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 = [{
@@ -54515,14 +54949,14 @@ var B1 = {
54515
54949
  label: "宽",
54516
54950
  width: 1240
54517
54951
  }
54518
- }, b = je(), 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), E = /* @__PURE__ */ F(b.collapsed), D = /* @__PURE__ */ F(!0), O = /* @__PURE__ */ F(b.rail_collapsed), ee = Z(() => T.value >= q2), k = Z(() => t.value.tab === "discussion" && !O.value), te = Z(() => ee.value && t.value.tab === "discussion" ? O.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ne = Z(() => {
54952
+ }, b = je(), 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), E = /* @__PURE__ */ F(b.collapsed), D = /* @__PURE__ */ F(!0), O = /* @__PURE__ */ F(b.rail_collapsed), ee = Z(() => T.value >= T4), k = Z(() => t.value.tab === "discussion" && !O.value), te = Z(() => ee.value && t.value.tab === "discussion" ? O.value ? "展开房间概览" : "收起房间概览" : "房间资料与参与者"), ne = Z(() => {
54519
54953
  let e = document.createElement("template");
54520
54954
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
54521
- }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), A = null, j = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(null), oe = Z(() => Math.min(U2, Math.max(H2, T.value - K2 - J2))), se = Z(() => Math.min(w.value, oe.value)), ce = Z(() => ({
54955
+ }), re = /* @__PURE__ */ F(null), ie = /* @__PURE__ */ F(0), A = null, j = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(null), oe = Z(() => Math.min(x4, Math.max(b4, T.value - w4 - E4))), se = Z(() => Math.min(w.value, oe.value)), ce = Z(() => ({
54522
54956
  "--channel-reading-width": `${y[x.value].width}px`,
54523
54957
  "--channel-rail-width": `${C.value}px`,
54524
54958
  "--channel-topbar-height": `${ie.value}px`,
54525
- "--channel-main-columns": E.value ? "minmax(0, 1fr)" : `${se.value}px ${J2}px minmax(0, 1fr)`
54959
+ "--channel-main-columns": E.value ? "minmax(0, 1fr)" : `${se.value}px ${E4}px minmax(0, 1fr)`
54526
54960
  })), le = Object.entries(y).map(([e, t]) => ({
54527
54961
  value: e,
54528
54962
  label: t.label
@@ -54543,6 +54977,11 @@ var B1 = {
54543
54977
  label: "消息",
54544
54978
  icon: "i-lucide-message-square"
54545
54979
  },
54980
+ {
54981
+ value: "timeline",
54982
+ label: "执行",
54983
+ icon: "i-lucide-chart-gantt"
54984
+ },
54546
54985
  {
54547
54986
  value: "history",
54548
54987
  label: "讨论",
@@ -54552,11 +54991,6 @@ var B1 = {
54552
54991
  value: "overview",
54553
54992
  label: "房间",
54554
54993
  icon: "i-lucide-sliders-horizontal"
54555
- },
54556
- {
54557
- value: "timeline",
54558
- label: "执行",
54559
- icon: "i-lucide-chart-gantt"
54560
54994
  }
54561
54995
  ], pe = {
54562
54996
  context: "history",
@@ -54616,12 +55050,12 @@ var B1 = {
54616
55050
  }
54617
55051
  function je() {
54618
55052
  try {
54619
- let e = JSON.parse(localStorage.getItem(L2)) || {};
55053
+ let e = JSON.parse(localStorage.getItem(h4)) || {};
54620
55054
  return {
54621
55055
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
54622
55056
  effects: e.effects === "reduced" ? "reduced" : "full",
54623
- rail: Number.isFinite(e.rail) ? Math.min(z2, Math.max(R2, e.rail)) : B2,
54624
- nav: Number.isFinite(e.nav) ? Math.min(U2, Math.max(H2, e.nav)) : Me(),
55057
+ rail: Number.isFinite(e.rail) ? Math.min(_4, Math.max(g4, e.rail)) : v4,
55058
+ nav: Number.isFinite(e.nav) ? Math.min(x4, Math.max(b4, e.nav)) : Me(),
54625
55059
  collapsed: e.collapsed === !0,
54626
55060
  brief_collapsed: e.brief_collapsed === !0,
54627
55061
  rail_collapsed: e.rail_collapsed === !0
@@ -54630,7 +55064,7 @@ var B1 = {
54630
55064
  return {
54631
55065
  reading: "default",
54632
55066
  effects: "full",
54633
- rail: B2,
55067
+ rail: v4,
54634
55068
  nav: Me(),
54635
55069
  collapsed: !1,
54636
55070
  brief_collapsed: !1,
@@ -54639,11 +55073,11 @@ var B1 = {
54639
55073
  }
54640
55074
  }
54641
55075
  function Me() {
54642
- return typeof window > "u" ? W2 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : W2;
55076
+ return typeof window > "u" ? S4 : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : S4;
54643
55077
  }
54644
55078
  function Ne() {
54645
55079
  try {
54646
- localStorage.setItem(L2, JSON.stringify({
55080
+ localStorage.setItem(h4, JSON.stringify({
54647
55081
  reading: x.value,
54648
55082
  effects: S.value,
54649
55083
  rail: C.value,
@@ -54674,19 +55108,19 @@ var B1 = {
54674
55108
  }, e.currentTarget.setPointerCapture(e.pointerId));
54675
55109
  }
54676
55110
  function ze(e) {
54677
- j.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(z2, Math.max(R2, j.value.width + j.value.x - e.clientX))));
55111
+ j.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(_4, Math.max(g4, j.value.width + j.value.x - e.clientX))));
54678
55112
  }
54679
55113
  function Be(e) {
54680
55114
  j.value?.pointer === e.pointerId && (j.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Ne());
54681
55115
  }
54682
55116
  function Ve(e) {
54683
55117
  let t = {
54684
- ArrowLeft: C.value + V2,
54685
- ArrowRight: C.value - V2,
54686
- Home: R2,
54687
- End: z2
55118
+ ArrowLeft: C.value + y4,
55119
+ ArrowRight: C.value - y4,
55120
+ Home: g4,
55121
+ End: _4
54688
55122
  };
54689
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(z2, Math.max(R2, t[e.key])), Ne());
55123
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(_4, Math.max(g4, t[e.key])), Ne());
54690
55124
  }
54691
55125
  function He(e) {
54692
55126
  e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), ae.value = {
@@ -54696,19 +55130,19 @@ var B1 = {
54696
55130
  }, e.currentTarget.setPointerCapture(e.pointerId));
54697
55131
  }
54698
55132
  function Ue(e) {
54699
- ae.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(oe.value, Math.max(H2, ae.value.width + e.clientX - ae.value.x))));
55133
+ ae.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(oe.value, Math.max(b4, ae.value.width + e.clientX - ae.value.x))));
54700
55134
  }
54701
55135
  function We(e) {
54702
55136
  ae.value?.pointer === e.pointerId && (ae.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Ne());
54703
55137
  }
54704
55138
  function Ge(e) {
54705
55139
  let t = {
54706
- ArrowLeft: se.value - G2,
54707
- ArrowRight: se.value + G2,
54708
- Home: H2,
55140
+ ArrowLeft: se.value - C4,
55141
+ ArrowRight: se.value + C4,
55142
+ Home: b4,
54709
55143
  End: oe.value
54710
55144
  };
54711
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(oe.value, Math.max(H2, t[e.key])), Ne());
55145
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(oe.value, Math.max(b4, t[e.key])), Ne());
54712
55146
  }
54713
55147
  return (e, r) => {
54714
55148
  let y = sA, b = lH, w = pA, T = MA, O = $V, ie = WV, A = YV, pe = KV, N = HV, je = zV, Me = NV, Ne = AV;
@@ -54720,9 +55154,9 @@ var B1 = {
54720
55154
  }]),
54721
55155
  style: fe(ce.value)
54722
55156
  }, [
54723
- K("aside", z0, [
55157
+ K("aside", _2, [
54724
55158
  r[30] ||= ws("<header class=\"channel-workspace-heading\"><span class=\"channel-brand-icon\" aria-hidden=\"true\"><svg class=\"channel-brand-dark\" viewBox=\"0 0 100 100\"><defs><linearGradient id=\"brand-d0\" gradientUnits=\"userSpaceOnUse\" x1=\"4.5\" y1=\"64\" x2=\"95.5\" y2=\"64\"><stop offset=\"0.0%\" stop-color=\"#e9ebed\"></stop><stop offset=\"6.3%\" stop-color=\"#e2e5e7\"></stop><stop offset=\"12.5%\" stop-color=\"#dcdee1\"></stop><stop offset=\"18.8%\" stop-color=\"#d5d8db\"></stop><stop offset=\"25.0%\" stop-color=\"#ced2d5\"></stop><stop offset=\"31.3%\" stop-color=\"#c8cbcf\"></stop><stop offset=\"37.5%\" stop-color=\"#c1c5ca\"></stop><stop offset=\"43.8%\" stop-color=\"#babfc4\"></stop><stop offset=\"50.0%\" stop-color=\"#b4b9be\"></stop><stop offset=\"56.3%\" stop-color=\"#a9aeb3\"></stop><stop offset=\"62.5%\" stop-color=\"#9ea3a9\"></stop><stop offset=\"68.8%\" stop-color=\"#93999f\"></stop><stop offset=\"75.0%\" stop-color=\"#888e95\"></stop><stop offset=\"81.3%\" stop-color=\"#7e848a\"></stop><stop offset=\"87.5%\" stop-color=\"#737a80\"></stop><stop offset=\"93.8%\" stop-color=\"#697077\"></stop><stop offset=\"100.0%\" stop-color=\"#5f666d\"></stop></linearGradient><linearGradient id=\"brand-d1\" gradientUnits=\"userSpaceOnUse\" x1=\"8.5\" y1=\"36\" x2=\"91.5\" y2=\"36\"><stop offset=\"0.0%\" stop-color=\"#3f86ff\"></stop><stop offset=\"6.3%\" stop-color=\"#5588ff\"></stop><stop offset=\"12.5%\" stop-color=\"#6889ff\"></stop><stop offset=\"18.8%\" stop-color=\"#788aff\"></stop><stop offset=\"25.0%\" stop-color=\"#878bff\"></stop><stop offset=\"31.3%\" stop-color=\"#958cff\"></stop><stop offset=\"37.5%\" stop-color=\"#a78aef\"></stop><stop offset=\"43.8%\" stop-color=\"#b986d7\"></stop><stop offset=\"50.0%\" stop-color=\"#ca80bf\"></stop><stop offset=\"56.3%\" stop-color=\"#da78a6\"></stop><stop offset=\"62.5%\" stop-color=\"#ea6e8c\"></stop><stop offset=\"68.8%\" stop-color=\"#f56d78\"></stop><stop offset=\"75.0%\" stop-color=\"#f77f72\"></stop><stop offset=\"81.3%\" stop-color=\"#f8906b\"></stop><stop offset=\"87.5%\" stop-color=\"#f9a163\"></stop><stop offset=\"93.8%\" stop-color=\"#fab058\"></stop><stop offset=\"100.0%\" stop-color=\"#fac04a\"></stop></linearGradient><linearGradient id=\"brand-d2\" gradientUnits=\"userSpaceOnUse\" x1=\"28.021\" y1=\"95.435\" x2=\"39.978\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#d06a49\"></stop><stop offset=\"6.3%\" stop-color=\"#d36f4f\"></stop><stop offset=\"12.5%\" stop-color=\"#d67456\"></stop><stop offset=\"18.8%\" stop-color=\"#d97a5c\"></stop><stop offset=\"25.0%\" stop-color=\"#dc7f62\"></stop><stop offset=\"31.3%\" stop-color=\"#df8468\"></stop><stop offset=\"37.5%\" stop-color=\"#e2896e\"></stop><stop offset=\"43.8%\" stop-color=\"#e58e74\"></stop><stop offset=\"50.0%\" stop-color=\"#e8937a\"></stop><stop offset=\"56.3%\" stop-color=\"#eb9d85\"></stop><stop offset=\"62.5%\" stop-color=\"#eea68f\"></stop><stop offset=\"68.8%\" stop-color=\"#f1b09a\"></stop><stop offset=\"75.0%\" stop-color=\"#f4baa4\"></stop><stop offset=\"81.3%\" stop-color=\"#f6c3af\"></stop><stop offset=\"87.5%\" stop-color=\"#f9cdb9\"></stop><stop offset=\"93.8%\" stop-color=\"#fbd6c4\"></stop><stop offset=\"100.0%\" stop-color=\"#fde0cf\"></stop></linearGradient><linearGradient id=\"brand-d3\" gradientUnits=\"userSpaceOnUse\" x1=\"71.978\" y1=\"95.435\" x2=\"60.021\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#4a5cff\"></stop><stop offset=\"6.3%\" stop-color=\"#5062ff\"></stop><stop offset=\"12.5%\" stop-color=\"#5768ff\"></stop><stop offset=\"18.8%\" stop-color=\"#5d6dff\"></stop><stop offset=\"25.0%\" stop-color=\"#6472ff\"></stop><stop offset=\"31.3%\" stop-color=\"#6b77ff\"></stop><stop offset=\"37.5%\" stop-color=\"#717cff\"></stop><stop offset=\"43.8%\" stop-color=\"#7881ff\"></stop><stop offset=\"50.0%\" stop-color=\"#7f86ff\"></stop><stop offset=\"56.3%\" stop-color=\"#8990ff\"></stop><stop offset=\"62.5%\" stop-color=\"#9399ff\"></stop><stop offset=\"68.8%\" stop-color=\"#9da2ff\"></stop><stop offset=\"75.0%\" stop-color=\"#a8abff\"></stop><stop offset=\"81.3%\" stop-color=\"#b3b4ff\"></stop><stop offset=\"87.5%\" stop-color=\"#bebdff\"></stop><stop offset=\"93.8%\" stop-color=\"#c9c5ff\"></stop><stop offset=\"100.0%\" stop-color=\"#d4ceff\"></stop></linearGradient><clipPath id=\"brand-d4\"><polygon points=\"16,46.5 84,46.5 84,25.5 16,25.5\"></polygon></clipPath><clipPath id=\"brand-d5\"><polygon points=\"16,48.5 84,48.5 84,23.5 16,23.5\"></polygon></clipPath><clipPath id=\"brand-d6\"><polygon points=\"81.410,86.630 71.410,10.630 50.589,13.369 60.589,89.369\"></polygon></clipPath><clipPath id=\"brand-d7\"><polygon points=\"83.393,86.369 73.393,10.369 48.606,13.630 58.606,89.630\"></polygon></clipPath><clipPath id=\"brand-d8\"><polygon points=\"12,74.5 88,74.5 88,53.5 12,53.5\"></polygon></clipPath><clipPath id=\"brand-d9\"><polygon points=\"12,76.5 88,76.5 88,51.5 12,51.5\"></polygon></clipPath><clipPath id=\"brand-d10\"><polygon points=\"39.410,89.369 49.410,13.369 28.589,10.630 18.589,86.630\"></polygon></clipPath><clipPath id=\"brand-d11\"><polygon points=\"41.393,89.630 51.393,13.630 26.606,10.369 16.606,86.369\"></polygon></clipPath></defs><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-d0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-d1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-d2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-d3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><g clip-path=\"url(#brand-d4)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d5)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-d2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d6)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d7)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-d1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d8)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d9)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-d3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d10)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"#202127\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-d11)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-d0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g></svg><svg class=\"channel-brand-light\" viewBox=\"0 0 100 100\"><defs><linearGradient id=\"brand-l0\" gradientUnits=\"userSpaceOnUse\" x1=\"4.5\" y1=\"64\" x2=\"95.5\" y2=\"64\"><stop offset=\"0.0%\" stop-color=\"#0b0d0f\"></stop><stop offset=\"6.3%\" stop-color=\"#101315\"></stop><stop offset=\"12.5%\" stop-color=\"#16191b\"></stop><stop offset=\"18.8%\" stop-color=\"#1c1f22\"></stop><stop offset=\"25.0%\" stop-color=\"#222529\"></stop><stop offset=\"31.3%\" stop-color=\"#282c2f\"></stop><stop offset=\"37.5%\" stop-color=\"#2e3237\"></stop><stop offset=\"43.8%\" stop-color=\"#34393e\"></stop><stop offset=\"50.0%\" stop-color=\"#3b4045\"></stop><stop offset=\"56.3%\" stop-color=\"#484d52\"></stop><stop offset=\"62.5%\" stop-color=\"#555a5f\"></stop><stop offset=\"68.8%\" stop-color=\"#62676d\"></stop><stop offset=\"75.0%\" stop-color=\"#70757b\"></stop><stop offset=\"81.3%\" stop-color=\"#7e8389\"></stop><stop offset=\"87.5%\" stop-color=\"#8c9297\"></stop><stop offset=\"93.8%\" stop-color=\"#9aa0a6\"></stop><stop offset=\"100.0%\" stop-color=\"#a9afb5\"></stop></linearGradient><linearGradient id=\"brand-l1\" gradientUnits=\"userSpaceOnUse\" x1=\"8.5\" y1=\"36\" x2=\"91.5\" y2=\"36\"><stop offset=\"0.0%\" stop-color=\"#2f7bff\"></stop><stop offset=\"6.3%\" stop-color=\"#487cff\"></stop><stop offset=\"12.5%\" stop-color=\"#5a7cff\"></stop><stop offset=\"18.8%\" stop-color=\"#6a7dff\"></stop><stop offset=\"25.0%\" stop-color=\"#797dff\"></stop><stop offset=\"31.3%\" stop-color=\"#877dff\"></stop><stop offset=\"37.5%\" stop-color=\"#997cee\"></stop><stop offset=\"43.8%\" stop-color=\"#ae79d3\"></stop><stop offset=\"50.0%\" stop-color=\"#c174b8\"></stop><stop offset=\"56.3%\" stop-color=\"#d36b9d\"></stop><stop offset=\"62.5%\" stop-color=\"#e56080\"></stop><stop offset=\"68.8%\" stop-color=\"#f15d69\"></stop><stop offset=\"75.0%\" stop-color=\"#f37162\"></stop><stop offset=\"81.3%\" stop-color=\"#f5835a\"></stop><stop offset=\"87.5%\" stop-color=\"#f79550\"></stop><stop offset=\"93.8%\" stop-color=\"#f8a542\"></stop><stop offset=\"100.0%\" stop-color=\"#f8b52c\"></stop></linearGradient><linearGradient id=\"brand-l2\" gradientUnits=\"userSpaceOnUse\" x1=\"28.021\" y1=\"95.435\" x2=\"39.978\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#b9502f\"></stop><stop offset=\"6.3%\" stop-color=\"#bd5534\"></stop><stop offset=\"12.5%\" stop-color=\"#c15a39\"></stop><stop offset=\"18.8%\" stop-color=\"#c55f3e\"></stop><stop offset=\"25.0%\" stop-color=\"#c96443\"></stop><stop offset=\"31.3%\" stop-color=\"#cd6848\"></stop><stop offset=\"37.5%\" stop-color=\"#d16d4d\"></stop><stop offset=\"43.8%\" stop-color=\"#d57252\"></stop><stop offset=\"50.0%\" stop-color=\"#d97757\"></stop><stop offset=\"56.3%\" stop-color=\"#dd8060\"></stop><stop offset=\"62.5%\" stop-color=\"#e08a69\"></stop><stop offset=\"68.8%\" stop-color=\"#e49372\"></stop><stop offset=\"75.0%\" stop-color=\"#e79c7b\"></stop><stop offset=\"81.3%\" stop-color=\"#eaa584\"></stop><stop offset=\"87.5%\" stop-color=\"#edae8d\"></stop><stop offset=\"93.8%\" stop-color=\"#f0b796\"></stop><stop offset=\"100.0%\" stop-color=\"#f3c09f\"></stop></linearGradient><linearGradient id=\"brand-l3\" gradientUnits=\"userSpaceOnUse\" x1=\"71.978\" y1=\"95.435\" x2=\"60.021\" y2=\"4.564\"><stop offset=\"0.0%\" stop-color=\"#2b33e6\"></stop><stop offset=\"6.3%\" stop-color=\"#3139e9\"></stop><stop offset=\"12.5%\" stop-color=\"#363fec\"></stop><stop offset=\"18.8%\" stop-color=\"#3c44ef\"></stop><stop offset=\"25.0%\" stop-color=\"#4249f3\"></stop><stop offset=\"31.3%\" stop-color=\"#484ef6\"></stop><stop offset=\"37.5%\" stop-color=\"#4e53f9\"></stop><stop offset=\"43.8%\" stop-color=\"#5457fc\"></stop><stop offset=\"50.0%\" stop-color=\"#5a5cff\"></stop><stop offset=\"56.3%\" stop-color=\"#6569ff\"></stop><stop offset=\"62.5%\" stop-color=\"#7075ff\"></stop><stop offset=\"68.8%\" stop-color=\"#7c80ff\"></stop><stop offset=\"75.0%\" stop-color=\"#888bff\"></stop><stop offset=\"81.3%\" stop-color=\"#9595ff\"></stop><stop offset=\"87.5%\" stop-color=\"#a29fff\"></stop><stop offset=\"93.8%\" stop-color=\"#afa9ff\"></stop><stop offset=\"100.0%\" stop-color=\"#bdb3ff\"></stop></linearGradient><clipPath id=\"brand-l4\"><polygon points=\"16,46.5 84,46.5 84,25.5 16,25.5\"></polygon></clipPath><clipPath id=\"brand-l5\"><polygon points=\"16,48.5 84,48.5 84,23.5 16,23.5\"></polygon></clipPath><clipPath id=\"brand-l6\"><polygon points=\"81.410,86.630 71.410,10.630 50.589,13.369 60.589,89.369\"></polygon></clipPath><clipPath id=\"brand-l7\"><polygon points=\"83.393,86.369 73.393,10.369 48.606,13.630 58.606,89.630\"></polygon></clipPath><clipPath id=\"brand-l8\"><polygon points=\"12,74.5 88,74.5 88,53.5 12,53.5\"></polygon></clipPath><clipPath id=\"brand-l9\"><polygon points=\"12,76.5 88,76.5 88,51.5 12,51.5\"></polygon></clipPath><clipPath id=\"brand-l10\"><polygon points=\"39.410,89.369 49.410,13.369 28.589,10.630 18.589,86.630\"></polygon></clipPath><clipPath id=\"brand-l11\"><polygon points=\"41.393,89.630 51.393,13.630 26.606,10.369 16.606,86.369\"></polygon></clipPath></defs><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-l0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-l1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-l2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-l3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line><g clip-path=\"url(#brand-l4)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l5)\"><line x1=\"29\" y1=\"88\" x2=\"39\" y2=\"12\" stroke=\"url(#brand-l2)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l6)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l7)\"><line x1=\"16\" y1=\"36\" x2=\"84\" y2=\"36\" stroke=\"url(#brand-l1)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l8)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l9)\"><line x1=\"71\" y1=\"88\" x2=\"61\" y2=\"12\" stroke=\"url(#brand-l3)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l10)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"#f6f6f6\" stroke-width=\"21\" stroke-linecap=\"round\"></line></g><g clip-path=\"url(#brand-l11)\"><line x1=\"12\" y1=\"64\" x2=\"88\" y2=\"64\" stroke=\"url(#brand-l0)\" stroke-width=\"15\" stroke-linecap=\"round\"></line></g></svg></span><span class=\"channel-brand-text\"><strong>共议</strong><span>AI CoDiscuss</span></span></header>", 1),
54725
- K("div", B0, [
55159
+ K("div", v2, [
54726
55160
  q(gZ, {
54727
55161
  onSelect: Te,
54728
55162
  onManage: Ce,
@@ -54732,12 +55166,12 @@ var B1 = {
54732
55166
  onDeleteFolder: Ae,
54733
55167
  onArchives: we
54734
55168
  }),
54735
- K("div", V0, [K("button", {
55169
+ K("div", y2, [K("button", {
54736
55170
  type: "button",
54737
55171
  class: "channel-section-toggle",
54738
55172
  "aria-expanded": f.value,
54739
55173
  onClick: r[0] ||= (e) => f.value = !f.value
54740
- }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[29] ||= J("频道工具", -1)], 8, H0)]),
55174
+ }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[29] ||= J("频道工具", -1)], 8, b2)]),
54741
55175
  f.value ? (U(), G(b, {
54742
55176
  key: 0,
54743
55177
  items: be.value,
@@ -54753,7 +55187,7 @@ var B1 = {
54753
55187
  }
54754
55188
  }, null, 8, ["items"])) : Y("", !0)
54755
55189
  ]),
54756
- K("footer", U0, [K("button", {
55190
+ K("footer", x2, [K("button", {
54757
55191
  type: "button",
54758
55192
  class: "channel-self-button",
54759
55193
  "aria-label": `账号与设置:${I(n).display_name(I(_))}${xe.value ? "," + xe.value : ""}`,
@@ -54769,10 +55203,10 @@ var B1 = {
54769
55203
  "text",
54770
55204
  "alt",
54771
55205
  "class"
54772
- ]), K("span", G0, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: M(["channel-connection", { "is-action": xe.value }]) }, [K("span", {
55206
+ ]), K("span", C2, [K("strong", null, P(I(n).display_name(I(_))), 1), K("span", { class: M(["channel-connection", { "is-action": xe.value }]) }, [K("span", {
54773
55207
  class: M({ connected: I(t).connected }),
54774
55208
  title: I(t).connected ? "网站已连接" : "网站未连接"
54775
- }, null, 10, K0), J(P(xe.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, W0), q(O, { text: "设置" }, {
55209
+ }, null, 10, w2), J(P(xe.value || (I(t).connected ? "网站已连接" : "网站未连接")), 1)], 2)])], 8, S2), q(O, { text: "设置" }, {
54776
55210
  default: L(() => [q(T, {
54777
55211
  icon: "i-lucide-settings-2",
54778
55212
  color: "neutral",
@@ -54793,7 +55227,7 @@ var B1 = {
54793
55227
  "aria-label": "调整房间栏宽度",
54794
55228
  "aria-orientation": "vertical",
54795
55229
  "aria-controls": "channel-sidebar",
54796
- "aria-valuemin": H2,
55230
+ "aria-valuemin": b4,
54797
55231
  "aria-valuemax": oe.value,
54798
55232
  "aria-valuenow": se.value,
54799
55233
  "aria-valuetext": `${se.value} 像素`,
@@ -54804,13 +55238,13 @@ var B1 = {
54804
55238
  onPointercancel: We,
54805
55239
  onLostpointercapture: We,
54806
55240
  onKeydown: Ge
54807
- }, null, 40, q0)),
54808
- K("main", J0, [K("div", {
55241
+ }, null, 40, T2)),
55242
+ K("main", E2, [K("div", {
54809
55243
  ref_key: "topbar",
54810
55244
  ref: re,
54811
55245
  class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
54812
55246
  }, [
54813
- K("header", Y0, [
55247
+ K("header", D2, [
54814
55248
  q(O, { text: E.value ? "展开房间栏" : "收起房间栏" }, {
54815
55249
  default: L(() => [q(T, {
54816
55250
  icon: "i-lucide-panel-left",
@@ -54835,8 +55269,8 @@ var B1 = {
54835
55269
  "aria-expanded": d.value,
54836
55270
  onClick: r[4] ||= (e) => d.value = !0
54837
55271
  }, null, 8, ["aria-expanded"]),
54838
- K("span", X0, [q(y, { name: "i-lucide-hash" })]),
54839
- K("div", Z0, [K("div", Q0, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, $0)]), o.value?.archived ? (U(), G(ie, {
55272
+ K("span", O2, [q(y, { name: "i-lucide-hash" })]),
55273
+ K("div", k2, [K("div", A2, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, j2)]), o.value?.archived ? (U(), G(ie, {
54840
55274
  key: 0,
54841
55275
  color: "neutral",
54842
55276
  variant: "subtle",
@@ -54845,12 +55279,12 @@ var B1 = {
54845
55279
  default: L(() => [...r[31] ||= [J("已存档", -1)]]),
54846
55280
  _: 1
54847
55281
  })) : Y("", !0)]),
54848
- o.value ? (U(), W("span", e2, [
55282
+ o.value ? (U(), W("span", M2, [
54849
55283
  J(P(de.find((e) => e.value === I(t).tab)?.label), 1),
54850
55284
  r[32] ||= K("span", null, "·", -1),
54851
55285
  J(P(o.value.message_count) + " 条记录", 1)
54852
55286
  ])) : Y("", !0),
54853
- K("div", t2, [
55287
+ K("div", N2, [
54854
55288
  I(t).tab === "discussion" ? (U(), W("form", {
54855
55289
  key: 0,
54856
55290
  class: "channel-search",
@@ -54929,12 +55363,12 @@ var B1 = {
54929
55363
  _: 1
54930
55364
  }, 8, ["text"])
54931
55365
  ]),
54932
- I(t).launch.recoveries.length ? (U(), W("section", n2, [
55366
+ I(t).launch.recoveries.length ? (U(), W("section", P2, [
54933
55367
  r[33] ||= K("h2", null, "继续未完成的请求", -1),
54934
55368
  (U(!0), W(H, null, B(I(t).launch.recoveries, (e) => (U(), W("article", { key: e.id }, [
54935
55369
  K("strong", null, P(e.title), 1),
54936
- K("p", r2, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
54937
- K("div", i2, [
55370
+ K("p", F2, P(e.error || "启动结果尚未确认;原请求已保存在此浏览器中。"), 1),
55371
+ K("div", I2, [
54938
55372
  q(T, {
54939
55373
  label: e.direct ? "继续创建房间" : "继续本次启动",
54940
55374
  size: "sm",
@@ -54967,7 +55401,7 @@ var B1 = {
54967
55401
  ]))), 128)),
54968
55402
  r[34] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
54969
55403
  ])) : Y("", !0),
54970
- o.value ? (U(), W("div", a2, [q(pe, {
55404
+ o.value ? (U(), W("div", L2, [q(pe, {
54971
55405
  modelValue: ue.value,
54972
55406
  "onUpdate:modelValue": r[9] ||= (e) => ue.value = e,
54973
55407
  items: de,
@@ -54982,7 +55416,7 @@ var B1 = {
54982
55416
  key: 2,
54983
55417
  class: M(["channel-host-brief", { "is-collapsed": D.value }]),
54984
55418
  "aria-label": "主持简报"
54985
- }, [K("div", o2, [K("div", s2, [K("button", {
55419
+ }, [K("div", R2, [K("div", z2, [K("button", {
54986
55420
  type: "button",
54987
55421
  class: "channel-brief-toggle",
54988
55422
  "aria-label": D.value ? "展开主持简报" : "收起主持简报",
@@ -54992,8 +55426,8 @@ var B1 = {
54992
55426
  }, [
54993
55427
  q(y, { name: D.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
54994
55428
  K("strong", null, "主持简报" + P(D.value ? ":" : ""), 1),
54995
- D.value ? (U(), W("span", l2, P(ne.value), 1)) : Y("", !0)
54996
- ], 8, c2), D.value ? Y("", !0) : (U(), G(T, {
55429
+ D.value ? (U(), W("span", V2, P(ne.value), 1)) : Y("", !0)
55430
+ ], 8, B2), D.value ? Y("", !0) : (U(), G(T, {
54997
55431
  key: 0,
54998
55432
  label: "更新简报",
54999
55433
  color: "neutral",
@@ -55001,20 +55435,20 @@ var B1 = {
55001
55435
  size: "xs",
55002
55436
  class: "channel-brief-update",
55003
55437
  onClick: r[10] ||= (e) => I(i)("tab", "context")
55004
- }))]), vr(K("div", u2, [K("div", {
55438
+ }))]), vr(K("div", H2, [K("div", {
55005
55439
  class: "channel-brief-text markdown-body",
55006
55440
  innerHTML: o.value.rendered_brief
55007
- }, null, 8, d2), K("div", f2, [K("span", p2, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !D.value]])])], 2)) : Y("", !0)
55441
+ }, null, 8, U2), K("div", W2, [K("span", G2, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !D.value]])])], 2)) : Y("", !0)
55008
55442
  ], 2), o.value ? (U(), W("div", {
55009
55443
  key: 0,
55010
55444
  class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
55011
- }, [K("div", m2, [
55445
+ }, [K("div", K2, [
55012
55446
  vr(q(lK, {
55013
55447
  onDetail: Ee,
55014
55448
  onEdit: r[11] ||= (e) => s.value = "edit"
55015
55449
  }, null, 512), [[Vc, I(t).tab === "discussion"]]),
55016
- I(t).tab === "history" ? (U(), W("div", h2, [
55017
- me.value ? (U(), W("section", g2, [K("div", _2, [r[35] ||= K("div", null, [K("h2", null, "当前讨论"), K("p", null, "没有进行中的讨论。开启后由主持人推进成员轮流发言,到上限或结束后房间回到自由协作,记录与结论保留。")], -1), q(T, {
55450
+ I(t).tab === "history" ? (U(), W("div", q2, [
55451
+ me.value ? (U(), W("section", J2, [K("div", Y2, [r[35] ||= K("div", null, [K("h2", null, "当前讨论"), K("p", null, "没有进行中的讨论。开启后由主持人推进成员轮流发言,到上限或结束后房间回到自由协作,记录与结论保留。")], -1), q(T, {
55018
55452
  icon: "i-lucide-messages-square",
55019
55453
  label: "开启讨论",
55020
55454
  variant: "outline",
@@ -55022,13 +55456,13 @@ var B1 = {
55022
55456
  class: "channel-surface-button",
55023
55457
  disabled: !_e.value,
55024
55458
  onClick: r[13] ||= (e) => he.value = !0
55025
- }, null, 8, ["disabled"])]), !_e.value && !o.value.archived ? (U(), W("p", v2, "开启讨论需要一位由本机唤醒的 AI 主持人,且本机服务在线。")) : Y("", !0)])) : (U(), G(kq, {
55459
+ }, null, 8, ["disabled"])]), !_e.value && !o.value.archived ? (U(), W("p", X2, "开启讨论需要一位由本机唤醒的 AI 主持人,且本机服务在线。")) : Y("", !0)])) : (U(), G(kq, {
55026
55460
  key: 0,
55027
55461
  section: "host",
55028
55462
  onOpen: r[12] ||= (e) => s.value = e,
55029
55463
  onDetail: Ee
55030
55464
  })),
55031
- K("section", y2, [K("div", b2, [r[36] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), ge.value ? Y("", !0) : (U(), G(T, {
55465
+ K("section", Z2, [K("div", Q2, [r[36] ||= K("div", null, [K("h2", null, "当前共识"), K("p", null, "主持人整理的结论、共识与分歧,用 #消息编号 保留依据;讨论结束时保存进下方记录。")], -1), ge.value ? Y("", !0) : (U(), G(T, {
55032
55466
  key: 0,
55033
55467
  icon: "i-lucide-pencil",
55034
55468
  label: "编辑",
@@ -55072,7 +55506,7 @@ var B1 = {
55072
55506
  }, null, 8, ["modelValue"])]),
55073
55507
  _: 1
55074
55508
  }),
55075
- K("div", x2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", S2, [q(T, {
55509
+ K("div", $2, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), K("div", e4, [q(T, {
55076
55510
  label: "取消",
55077
55511
  color: "neutral",
55078
55512
  variant: "ghost",
@@ -55085,7 +55519,7 @@ var B1 = {
55085
55519
  class: "channel-primary-button",
55086
55520
  loading: I(a) === "save_context"
55087
55521
  }, null, 8, ["loading"])])])
55088
- ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", C2, [K("h3", null, [r[37] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55522
+ ], 32)) : o.value.host_brief?.text || o.value.state_text ? (U(), W(H, { key: 1 }, [K("div", t4, [K("h3", null, [r[37] ||= J("主持简报", -1), o.value.state_until ? (U(), W("button", {
55089
55523
  key: 0,
55090
55524
  type: "button",
55091
55525
  class: "subtle-link",
@@ -55093,7 +55527,7 @@ var B1 = {
55093
55527
  }, "整理至 #" + P(o.value.state_until), 1)) : Y("", !0)]), K("div", {
55094
55528
  class: "markdown-body",
55095
55529
  innerHTML: o.value.rendered_brief
55096
- }, null, 8, w2)]), ve.value ? (U(), W("details", T2, [K("summary", null, [
55530
+ }, null, 8, n4)]), ve.value ? (U(), W("details", r4, [K("summary", null, [
55097
55531
  r[38] ||= K("h3", null, "详细共识与进度", -1),
55098
55532
  r[39] ||= K("span", null, "依据、已处理内容、未决问题与下一步", -1),
55099
55533
  q(y, {
@@ -55103,21 +55537,21 @@ var B1 = {
55103
55537
  ]), K("div", {
55104
55538
  class: "markdown-body consensus-state",
55105
55539
  innerHTML: ve.value
55106
- }, null, 8, E2)])) : Y("", !0)], 64)) : (U(), W("p", D2, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55540
+ }, null, 8, i4)])) : Y("", !0)], 64)) : (U(), W("p", a4, "还没有共识。主持人会在讨论中整理,也可以点“编辑”自己写。"))]),
55107
55541
  q(J$, { onDetail: Ee }),
55108
55542
  q($Q, {
55109
55543
  open: he.value,
55110
55544
  "onUpdate:open": r[19] ||= (e) => he.value = e
55111
55545
  }, null, 8, ["open"])
55112
55546
  ])) : Y("", !0),
55113
- I(t).tab === "overview" ? (U(), W("div", O2, [q(C1), me.value ? Y("", !0) : (U(), G(kq, {
55547
+ I(t).tab === "overview" ? (U(), W("div", o4, [q(C1), me.value ? Y("", !0) : (U(), G(kq, {
55114
55548
  key: 0,
55115
55549
  section: "access",
55116
55550
  onOpen: r[20] ||= (e) => s.value = e,
55117
55551
  onDetail: Ee
55118
55552
  }))])) : Y("", !0),
55119
- I(t).tab === "timeline" ? (U(), W("div", k2, [q(R0, { onDetail: Ee })])) : Y("", !0)
55120
- ])], 2)) : (U(), W("div", A2, [
55553
+ I(t).tab === "timeline" ? (U(), W("div", s4, [q(g2, { onDetail: Ee })])) : Y("", !0)
55554
+ ])], 2)) : (U(), W("div", c4, [
55121
55555
  q(y, { name: "i-lucide-hash" }),
55122
55556
  r[40] ||= K("h2", null, "新建一个协作房间", -1),
55123
55557
  r[41] ||= K("p", null, "邀请 AI 一起协作,随时 @ 提问;需要时开启讨论,保留所有人的观点。", -1),
@@ -55136,8 +55570,8 @@ var B1 = {
55136
55570
  "aria-label": "调整右侧栏宽度",
55137
55571
  "aria-orientation": "vertical",
55138
55572
  "aria-controls": "channel-member-rail",
55139
- "aria-valuemin": R2,
55140
- "aria-valuemax": z2,
55573
+ "aria-valuemin": g4,
55574
+ "aria-valuemax": _4,
55141
55575
  "aria-valuenow": C.value,
55142
55576
  "aria-valuetext": `${C.value} 像素`,
55143
55577
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
@@ -55147,11 +55581,11 @@ var B1 = {
55147
55581
  onPointercancel: Be,
55148
55582
  onLostpointercapture: Be,
55149
55583
  onKeydown: Ve
55150
- }, null, 40, j2)) : Y("", !0),
55151
- k.value ? (U(), W("aside", M2, [K("section", N2, [o.value && me.value ? (U(), G(N$, { key: 0 })) : o.value ? (U(), G(GQ, {
55584
+ }, null, 40, l4)) : Y("", !0),
55585
+ k.value ? (U(), W("aside", u4, [K("section", d4, [o.value && me.value ? (U(), G(N$, { key: 0 })) : o.value ? (U(), G(GQ, {
55152
55586
  key: 1,
55153
55587
  docked: ""
55154
- })) : (U(), W("div", P2, [...r[42] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55588
+ })) : (U(), W("div", f4, [...r[42] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无房间,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
55155
55589
  q(Me, {
55156
55590
  open: d.value,
55157
55591
  "onUpdate:open": r[23] ||= (e) => d.value = e,
@@ -55194,7 +55628,7 @@ var B1 = {
55194
55628
  }
55195
55629
  }, {
55196
55630
  body: L(() => [o.value ? (U(), W(H, { key: 0 }, [
55197
- K("div", F2, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
55631
+ K("div", p4, [q(y, { name: "i-lucide-hash" }), K("h2", null, P(o.value.title), 1)]),
55198
55632
  (U(), W(H, null, B([
55199
55633
  {
55200
55634
  key: "goal",
@@ -55221,7 +55655,7 @@ var B1 = {
55221
55655
  class: "info-section"
55222
55656
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
55223
55657
  q(Ne),
55224
- K("section", I2, [r[43] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(Se.value, (e) => (U(), W("div", {
55658
+ K("section", m4, [r[43] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(Se.value, (e) => (U(), W("div", {
55225
55659
  key: e.name,
55226
55660
  class: "expert-row"
55227
55661
  }, [
@@ -55278,7 +55712,7 @@ var B1 = {
55278
55712
  ], 6);
55279
55713
  };
55280
55714
  }
55281
- }, X2 = {
55715
+ }, O4 = {
55282
55716
  __name: "App",
55283
55717
  setup(e) {
55284
55718
  return br("discussion", OV()), (e, t) => {
@@ -55289,7 +55723,7 @@ var B1 = {
55289
55723
  toaster: null
55290
55724
  }, {
55291
55725
  default: L(() => [q(I(Qz), { "reduced-motion": "user" }, {
55292
- default: L(() => [q(Y2)]),
55726
+ default: L(() => [q(D4)]),
55293
55727
  _: 1
55294
55728
  })]),
55295
55729
  _: 1
@@ -55299,8 +55733,8 @@ var B1 = {
55299
55733
  };
55300
55734
  //#endregion
55301
55735
  //#region frontend/main.js
55302
- function Z2() {
55303
- bu(X2).use(ph).mount("#modern-root");
55736
+ function k4() {
55737
+ bu(O4).use(ph).mount("#modern-root");
55304
55738
  }
55305
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", Z2) : Z2();
55739
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", k4) : k4();
55306
55740
  //#endregion