@gjczone/pi-swarm 0.3.4 → 0.4.1

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.
Files changed (60) hide show
  1. package/README.md +11 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +8 -6
  4. package/dist/index.js.map +1 -1
  5. package/dist/shared/controller.d.ts +1 -0
  6. package/dist/shared/controller.d.ts.map +1 -1
  7. package/dist/shared/controller.js +60 -2
  8. package/dist/shared/controller.js.map +1 -1
  9. package/dist/shared/spawner.d.ts.map +1 -1
  10. package/dist/shared/spawner.js +320 -78
  11. package/dist/shared/spawner.js.map +1 -1
  12. package/dist/shared/types.d.ts +28 -0
  13. package/dist/shared/types.d.ts.map +1 -1
  14. package/dist/shared/types.js +4 -1
  15. package/dist/shared/types.js.map +1 -1
  16. package/dist/shared/worktree.d.ts +81 -0
  17. package/dist/shared/worktree.d.ts.map +1 -0
  18. package/dist/shared/worktree.js +417 -0
  19. package/dist/shared/worktree.js.map +1 -0
  20. package/dist/state/persistence.d.ts +5 -0
  21. package/dist/state/persistence.d.ts.map +1 -1
  22. package/dist/state/persistence.js +1 -1
  23. package/dist/state/persistence.js.map +1 -1
  24. package/dist/state/recovery.d.ts.map +1 -1
  25. package/dist/state/recovery.js +13 -6
  26. package/dist/state/recovery.js.map +1 -1
  27. package/dist/swarm/command.d.ts +0 -4
  28. package/dist/swarm/command.d.ts.map +1 -1
  29. package/dist/swarm/command.js +1 -19
  30. package/dist/swarm/command.js.map +1 -1
  31. package/dist/swarm/tool.d.ts.map +1 -1
  32. package/dist/swarm/tool.js +59 -14
  33. package/dist/swarm/tool.js.map +1 -1
  34. package/dist/team/command.d.ts.map +1 -1
  35. package/dist/team/command.js +0 -8
  36. package/dist/team/command.js.map +1 -1
  37. package/dist/team/mailbox.d.ts +5 -0
  38. package/dist/team/mailbox.d.ts.map +1 -1
  39. package/dist/team/mailbox.js +46 -5
  40. package/dist/team/mailbox.js.map +1 -1
  41. package/dist/team/supervisor.d.ts +27 -2
  42. package/dist/team/supervisor.d.ts.map +1 -1
  43. package/dist/team/supervisor.js +84 -23
  44. package/dist/team/supervisor.js.map +1 -1
  45. package/dist/team/task-graph.d.ts +5 -2
  46. package/dist/team/task-graph.d.ts.map +1 -1
  47. package/dist/team/task-graph.js +27 -1
  48. package/dist/team/task-graph.js.map +1 -1
  49. package/dist/team/tool.d.ts.map +1 -1
  50. package/dist/team/tool.js +56 -8
  51. package/dist/team/tool.js.map +1 -1
  52. package/dist/tui/progress.d.ts +6 -43
  53. package/dist/tui/progress.d.ts.map +1 -1
  54. package/dist/tui/progress.js +101 -165
  55. package/dist/tui/progress.js.map +1 -1
  56. package/dist/tui/team-dashboard.d.ts +5 -22
  57. package/dist/tui/team-dashboard.d.ts.map +1 -1
  58. package/dist/tui/team-dashboard.js +87 -132
  59. package/dist/tui/team-dashboard.js.map +1 -1
  60. package/package.json +1 -1
@@ -2,56 +2,45 @@
2
2
  * tui/progress — AgentSwarm live progress panel.
3
3
  *
4
4
  * Renders a real-time progress display above the input area when
5
- * an AgentSwarm batch is running. Each subagent gets a braille
6
- * progress bar with status labels.
5
+ * an AgentSwarm batch is running. Each subagent gets a compact braille
6
+ * spinner with status and item description.
7
7
  *
8
8
  * Ported from MoonshotAI/kimi-code's AgentSwarmProgressComponent.
9
9
  */
10
10
  // ---------------------------------------------------------------------------
11
- // Constants (from kimi-code)
11
+ // Constants
12
12
  // ---------------------------------------------------------------------------
13
- /** Preferred width for the item text column. */
14
- const TEXT_CELL_PREFERRED_WIDTH = 30;
15
- /** Gap between columns. */
16
- const CELL_GAP = " ";
17
- /** Braille bar max width in characters. */
18
- const BRAILLE_BAR_MAX_WIDTH = 8;
19
- /** Minimum braille bar width. */
20
- const TEXT_BRAILLE_BAR_MIN_WIDTH = 6;
13
+ /** Max item description length to display. */
14
+ const MAX_ITEM_LABEL_LEN = 40;
15
+ /** Compact braille spinner frames for running agents. */
16
+ const BRAILLE_SPINNER = [
17
+ "\u28BF",
18
+ "\u28FB",
19
+ "\u28FD",
20
+ "\u28FE",
21
+ "\u28F7",
22
+ "\u28EF",
23
+ "\u28DF",
24
+ "\u287F",
25
+ ];
21
26
  /** Animation frame interval in ms. */
22
27
  const FRAME_INTERVAL_MS = 80;
23
- /** How long the completion-fill animation lasts in ms. */
24
- const COMPLETE_FILL_MS = 360;
25
- /** Braille characters representing fill levels 0-6 dots. */
28
+ /** Braille characters representing fill levels 0-6 dots for completed bar. */
26
29
  const BRAILLE_LEVELS = [
27
- "\u28C0", // 0 dots (empty)
28
- "\u28C4", // 1 dot
29
- "\u28E4", // 2 dots
30
- "\u28E6", // 3 dots
31
- "\u28F6", // 4 dots
32
- "\u28F7", // 5 dots
33
- "\u28FF", // 6 dots (full)
30
+ "\u28C0",
31
+ "\u28C4",
32
+ "\u28E4",
33
+ "\u28E6",
34
+ "\u28F6",
35
+ "\u28F7",
36
+ "\u28FF",
34
37
  ];
35
38
  const BRAILLE_EMPTY = BRAILLE_LEVELS[0];
36
39
  const BRAILLE_FULL = BRAILLE_LEVELS[6];
37
- /** Status labels for each phase. */
38
- const ORCHESTRATING_LABEL = "Orchestrating...";
39
- const WORKING_LABEL = "Working...";
40
- const COMPLETED_LABEL = "Completed.";
41
- const FAILED_LABEL = "Failed.";
42
- const ABORTED_LABEL = "Aborted.";
43
- const QUEUED_LABEL = "Queued...";
40
+ const COMPLETED_BAR_WIDTH = 4;
44
41
  // ---------------------------------------------------------------------------
45
- // Snapshot conversion (controller snapshot -> component state)
42
+ // Snapshot conversion
46
43
  // ---------------------------------------------------------------------------
47
- /**
48
- * Convert a BatchProgressSnapshot from the concurrency controller into
49
- * the SwarmProgressState expected by AgentSwarmProgressComponent.
50
- *
51
- * Maps the controller's coarse member phases onto the component's
52
- * richer MemberPhase set, attaching a phaseStartedAt timestamp so the
53
- * braille animation can run for working/suspended members.
54
- */
55
44
  export function snapshotToProgressState(snapshot, title) {
56
45
  const now = Date.now();
57
46
  const members = snapshot.members.map((m) => ({
@@ -69,6 +58,8 @@ export function snapshotToProgressState(snapshot, title) {
69
58
  active: snapshot.active,
70
59
  queued: snapshot.queued,
71
60
  members,
61
+ totalUsage: snapshot.totalUsage,
62
+ startedAt: snapshot.startedAt ?? now,
72
63
  };
73
64
  }
74
65
  function mapMemberPhase(phase) {
@@ -94,36 +85,20 @@ function isAnimatedPhase(phase) {
94
85
  export class AgentSwarmProgressComponent {
95
86
  state_ = null;
96
87
  animationFrame;
97
- startTime = Date.now();
98
88
  renderedWidth;
99
89
  cachedLines;
100
90
  onRequestRender;
101
- /**
102
- * @param onRequestRender Optional callback to request a TUI re-render.
103
- * When provided, called on every animation tick so the braille bars
104
- * animate. Without it the component still renders correctly but the
105
- * animation won't be visible to the user.
106
- *
107
- * 业务说明:TUI 框架不会自动轮询组件;需要通过 requestRender() 主动
108
- * 触发重绘才能使 braille 进度条动起来。此回调由 setWidget 工厂函数
109
- * 在捕获 tui 引用后传入。
110
- */
91
+ frameIndex = 0;
111
92
  constructor(onRequestRender) {
112
93
  this.onRequestRender = onRequestRender;
113
94
  this.startAnimation();
114
95
  }
115
- // -------------------------------------------------------------------
116
- // Public API
117
- // -------------------------------------------------------------------
118
- /** Update the progress state from the tool execution. */
119
96
  update(state) {
120
97
  this.state_ = state;
121
98
  this.invalidate();
122
99
  }
123
- /** Mark the swarm as completed (triggers completion animation). */
124
100
  complete() {
125
101
  if (this.state_) {
126
- // Mark all non-terminal members as completed
127
102
  for (const m of this.state_.members) {
128
103
  if (m.phase !== "completed" &&
129
104
  m.phase !== "failed" &&
@@ -135,28 +110,22 @@ export class AgentSwarmProgressComponent {
135
110
  this.state_.active = 0;
136
111
  this.state_.queued = 0;
137
112
  this.state_.completed = this.state_.total - this.state_.failed;
138
- this.state_.status = COMPLETED_LABEL;
139
113
  }
140
114
  this.invalidate();
141
115
  }
142
- /** Stop the animation loop. */
143
116
  dispose() {
144
117
  if (this.animationFrame !== undefined) {
145
118
  clearInterval(this.animationFrame);
146
119
  this.animationFrame = undefined;
147
120
  }
148
- // 断开与 TUI 框架的连接,防止内存泄漏
149
121
  this.onRequestRender = undefined;
150
122
  }
151
- // -------------------------------------------------------------------
152
- // Component interface
153
- // -------------------------------------------------------------------
154
123
  invalidate() {
155
124
  this.renderedWidth = undefined;
156
125
  this.cachedLines = undefined;
157
126
  }
158
127
  render(width) {
159
- const safeWidth = Math.max(10, width);
128
+ const safeWidth = Math.max(20, width);
160
129
  if (this.cachedLines && this.renderedWidth === safeWidth) {
161
130
  return this.cachedLines;
162
131
  }
@@ -165,40 +134,45 @@ export class AgentSwarmProgressComponent {
165
134
  return this.cachedLines;
166
135
  }
167
136
  const state = this.state_;
137
+ const contentWidth = safeWidth - 4;
168
138
  const lines = [];
169
- // Title bar
139
+ // Header: title
170
140
  const title = state.title ?? "Agent Swarm";
171
- lines.push(borderTop(title, safeWidth));
172
- // Overall status
173
- const statusLabel = state.status ?? resolveOverallStatus(state);
174
- const statusBar = buildStatusBar(state, safeWidth);
175
- lines.push(` ${statusLabel}`);
176
- lines.push(` ${statusBar}`);
141
+ lines.push(` ${truncateText(title, contentWidth)}`);
142
+ // Overall progress bar
143
+ const barWidth = Math.max(1, contentWidth);
144
+ const total = state.total || 1;
145
+ const doneRatio = (state.completed + state.failed) / total;
146
+ const doneChars = Math.round(doneRatio * barWidth);
147
+ const done = "\u2501".repeat(doneChars);
148
+ const remaining = "\u2501".repeat(barWidth - doneChars);
149
+ lines.push(` ${done}${remaining}`);
177
150
  // Member rows
178
- const maxMembers = Math.min(state.members.length, 20); // Cap for performance
151
+ const maxMembers = Math.min(state.members.length, 20);
179
152
  for (let i = 0; i < maxMembers; i += 1) {
180
153
  const member = state.members[i];
181
154
  if (!member)
182
155
  continue;
183
- const row = renderMemberRow(member, safeWidth - 4);
156
+ const row = renderMemberRow(member, contentWidth, this.frameIndex);
184
157
  lines.push(` ${row}`);
185
158
  }
186
- // Summary
187
- const summary = buildSummary(state, safeWidth - 4);
188
- lines.push(` ${summary}`);
159
+ // Separator
160
+ const sep = "\u2500".repeat(contentWidth);
161
+ lines.push(` ${sep}`);
162
+ // Footer: counts + tokens + elapsed
163
+ const footer = buildFooter(state, contentWidth);
164
+ lines.push(` ${footer}`);
189
165
  // Bottom border
190
- lines.push(borderBottom(safeWidth));
166
+ const bottom = `\u2514${"\u2500".repeat(contentWidth)}\u2518`;
167
+ lines.push(bottom);
191
168
  this.cachedLines = lines;
192
169
  this.renderedWidth = safeWidth;
193
170
  return this.cachedLines;
194
171
  }
195
- // -------------------------------------------------------------------
196
- // Animation
197
- // -------------------------------------------------------------------
198
172
  startAnimation() {
199
173
  this.animationFrame = setInterval(() => {
174
+ this.frameIndex = (this.frameIndex + 1) % BRAILLE_SPINNER.length;
200
175
  this.invalidate();
201
- // 通知 TUI 框架重绘,使 braille 动画可见
202
176
  this.onRequestRender?.();
203
177
  }, FRAME_INTERVAL_MS);
204
178
  }
@@ -206,134 +180,96 @@ export class AgentSwarmProgressComponent {
206
180
  // ---------------------------------------------------------------------------
207
181
  // Rendering helpers
208
182
  // ---------------------------------------------------------------------------
209
- function borderTop(title, width) {
210
- const inner = ` ${title} `;
211
- // Reserve 2 chars for corner symbols ( and ┐), 1 for the leading dash
212
- const minLen = inner.length + 3;
213
- if (minLen > width) {
214
- const maxInner = Math.max(0, width - 2);
215
- const truncated = inner.slice(0, maxInner);
216
- return `\u250C${truncated}\u2510`;
217
- }
218
- const dashes = width - inner.length - 3;
219
- return `\u250C${inner}\u2500${"\u2500".repeat(Math.max(0, dashes))}\u2510`;
220
- }
221
- function borderBottom(width) {
222
- return `\u2514${"\u2500".repeat(Math.max(0, width - 2))}\u2518`;
223
- }
224
- function resolveOverallStatus(state) {
225
- if (state.queued === 0 && state.active === 0) {
226
- if (state.failed > 0)
227
- return FAILED_LABEL;
228
- return COMPLETED_LABEL;
229
- }
230
- if (state.active > 0)
231
- return WORKING_LABEL;
232
- return ORCHESTRATING_LABEL;
233
- }
234
- function buildStatusBar(state, width) {
235
- const barWidth = Math.max(1, width - 4);
236
- const total = state.total || 1;
237
- const doneRatio = (state.completed + state.failed) / total;
238
- const doneChars = Math.round(doneRatio * barWidth);
239
- const remainingChars = barWidth - doneChars;
240
- const done = "\u2501".repeat(doneChars);
241
- const remaining = "\u2501".repeat(remainingChars);
242
- return done + remaining;
243
- }
244
- function renderMemberRow(member, width) {
245
- const indexLabel = `#${String(member.index)}`;
246
- const brailleBar = renderBrailleBar(member, BRAILLE_BAR_MAX_WIDTH);
247
- const statusLabel = memberPhaseLabel(member.phase);
248
- const itemLabel = (member.item ?? "").slice(0, TEXT_CELL_PREFERRED_WIDTH);
249
- // Layout: #N [braille] Status item
250
- const fixed = `${indexLabel} ${brailleBar} ${statusLabel}`;
183
+ function renderMemberRow(member, width, frameIndex) {
184
+ const indexLabel = `#${String(member.index).padStart(2, "0")}`;
185
+ const icon = memberIcon(member, frameIndex);
186
+ const statusLabel = shortPhaseLabel(member.phase);
187
+ const itemLabel = member.item ?? "";
188
+ // Layout: #NN [icon] status item
189
+ const fixed = `${indexLabel} ${icon} ${statusLabel}`;
251
190
  const fixedLen = visibleLen(fixed);
252
- // If the fixed part alone exceeds width, truncate it
253
191
  if (fixedLen >= width) {
254
- return fixed.slice(0, width);
192
+ return truncateText(fixed, width);
255
193
  }
256
194
  const itemSpace = Math.max(0, width - fixedLen - 2);
257
195
  const truncatedItem = truncateText(itemLabel, itemSpace);
258
196
  return `${fixed} ${truncatedItem}`;
259
197
  }
260
- function renderBrailleBar(member, maxWidth) {
261
- const phase = member.phase;
262
- const elapsed = member.phaseStartedAt
263
- ? Date.now() - member.phaseStartedAt
264
- : 0;
265
- switch (phase) {
198
+ function memberIcon(member, frameIndex) {
199
+ switch (member.phase) {
266
200
  case "completed":
267
- return BRAILLE_FULL.repeat(maxWidth);
201
+ return BRAILLE_FULL.repeat(2);
268
202
  case "failed":
269
203
  case "cancelled":
204
+ return "\u2717 ";
270
205
  case "pending":
271
206
  case "queued":
272
- return BRAILLE_EMPTY.repeat(maxWidth);
207
+ return "\u25CB ";
273
208
  case "prompting":
274
209
  case "working":
275
210
  case "suspended":
276
- return animatedBrailleBar(maxWidth, elapsed);
211
+ return BRAILLE_SPINNER[frameIndex % BRAILLE_SPINNER.length] + " ";
277
212
  }
278
213
  }
279
- function animatedBrailleBar(maxWidth, elapsedMs) {
280
- const cycleMs = 800; // One full animation cycle
281
- const progress = (elapsedMs % cycleMs) / cycleMs; // 0..1
282
- // Fill from left to right
283
- const totalDots = maxWidth * 6; // 6 dots per braille char
284
- const filledDots = Math.floor(progress * totalDots);
285
- let result = "";
286
- for (let i = 0; i < maxWidth; i += 1) {
287
- const cellStart = i * 6;
288
- const dotsInCell = Math.max(0, Math.min(6, filledDots - cellStart));
289
- result += dotsInCell === 0 ? BRAILLE_EMPTY : BRAILLE_LEVELS[dotsInCell];
290
- }
291
- return result;
292
- }
293
- function memberPhaseLabel(phase) {
214
+ function shortPhaseLabel(phase) {
294
215
  switch (phase) {
295
216
  case "pending":
296
217
  case "queued":
297
- return QUEUED_LABEL;
218
+ return "wait";
298
219
  case "prompting":
299
- return "Prompting...";
220
+ return "init";
300
221
  case "working":
301
- return WORKING_LABEL;
222
+ return "work";
302
223
  case "completed":
303
- return COMPLETED_LABEL;
224
+ return "done";
304
225
  case "failed":
305
- return FAILED_LABEL;
226
+ return "fail";
306
227
  case "cancelled":
307
- return ABORTED_LABEL;
228
+ return "abort";
308
229
  case "suspended":
309
- return "Rate limited...";
230
+ return "retry";
310
231
  }
311
232
  }
312
- function buildSummary(state, width) {
313
- const parts = [];
314
- if (state.completed > 0)
315
- parts.push(`completed: ${state.completed}`);
233
+ function buildFooter(state, width) {
234
+ const usage = state.totalUsage ?? {
235
+ input: 0,
236
+ output: 0,
237
+ cacheRead: 0,
238
+ cacheWrite: 0,
239
+ totalTokens: 0,
240
+ };
241
+ const counts = `${state.completed + state.failed}/${state.total} ag`;
242
+ const tokens = `${Math.round(usage.input)}in/${Math.round(usage.output)}out`;
243
+ const elapsed = formatElapsed(Date.now() - state.startedAt);
244
+ const parts = [counts, tokens, elapsed];
316
245
  if (state.failed > 0)
317
- parts.push(`failed: ${state.failed}`);
246
+ parts.splice(1, 0, `${state.failed}fail`);
318
247
  if (state.active > 0)
319
- parts.push(`active: ${state.active}`);
320
- if (state.queued > 0)
321
- parts.push(`queued: ${state.queued}`);
322
- const full = parts.join(", ");
248
+ parts.splice(1, 0, `${state.active}act`);
249
+ const full = parts.join(" | ");
323
250
  if (full.length <= width)
324
251
  return full;
325
- return full.slice(0, width);
252
+ return truncateText(full, width);
253
+ }
254
+ function formatElapsed(ms) {
255
+ const totalSec = Math.floor(ms / 1000);
256
+ if (totalSec < 60)
257
+ return `${totalSec}s`;
258
+ const m = Math.floor(totalSec / 60);
259
+ const s = totalSec % 60;
260
+ return `${m}m${s}s`;
326
261
  }
327
262
  // ---------------------------------------------------------------------------
328
- // Text utilities (no external dependency — avoids import issues)
263
+ // Text utilities
329
264
  // ---------------------------------------------------------------------------
330
265
  function visibleLen(text) {
331
- // Simple implementation: count characters, stripping ANSI escapes
332
266
  return text.replace(/\x1b\[[0-9;]*m/g, "").length;
333
267
  }
334
268
  function truncateText(text, maxLen) {
335
269
  if (text.length <= maxLen)
336
270
  return text;
271
+ if (maxLen <= 1)
272
+ return text.slice(0, 1);
337
273
  return text.slice(0, Math.max(0, maxLen - 1)) + "\u2026";
338
274
  }
339
275
  //# sourceMappingURL=progress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,11 @@
2
2
  * tui/team-dashboard — SwarmTeam live phase progress dashboard.
3
3
  *
4
4
  * Renders a real-time dashboard above the input area when a SwarmTeam
5
- * run is in progress. Shows phase statuses with braille animation for
6
- * the active phase, mailbox message count, and elapsed time.
7
- *
8
- * Follows the same wiring pattern as AgentSwarmProgressComponent:
9
- * supervisor emits snapshots -> tool converts -> pushes to widget.
5
+ * run is in progress. Shows phase statuses with compact braille spinner
6
+ * for active phases, mailbox message count, token usage, and elapsed time.
10
7
  */
11
8
  import type { Component } from "@earendil-works/pi-tui";
12
- import type { TeamProgressSnapshot } from "../shared/types.js";
13
- /** Dashboard state for the team progress widget. */
9
+ import type { TeamProgressSnapshot, SubagentUsage } from "../shared/types.js";
14
10
  export interface TeamDashboardState {
15
11
  title: string;
16
12
  goal: string;
@@ -22,6 +18,7 @@ export interface TeamDashboardState {
22
18
  currentRoles?: string[];
23
19
  phases: TeamPhaseStatusWithMeta[];
24
20
  mailboxCount: number;
21
+ totalUsage: SubagentUsage;
25
22
  startedAt: number;
26
23
  }
27
24
  interface TeamPhaseStatusWithMeta {
@@ -29,13 +26,8 @@ interface TeamPhaseStatusWithMeta {
29
26
  role: string;
30
27
  status: "queued" | "running" | "completed" | "failed" | "skipped";
31
28
  error?: string;
32
- /** Timestamp when this phase entered its current status. */
33
29
  phaseStartedAt: number;
34
30
  }
35
- /**
36
- * Convert a TeamProgressSnapshot from the supervisor into the
37
- * TeamDashboardState expected by TeamDashboardComponent.
38
- */
39
31
  export declare function snapshotToDashboardState(snapshot: TeamProgressSnapshot): TeamDashboardState;
40
32
  export declare class TeamDashboardComponent implements Component {
41
33
  private state_;
@@ -43,16 +35,7 @@ export declare class TeamDashboardComponent implements Component {
43
35
  private renderedWidth;
44
36
  private cachedLines;
45
37
  private onRequestRender;
46
- /**
47
- * @param onRequestRender Optional callback to request a TUI re-render.
48
- * When provided, called on every animation tick so the braille bars
49
- * animate. Without it the component still renders correctly but the
50
- * animation won't be visible to the user.
51
- *
52
- * 业务说明:TUI 框架不会自动轮询组件;需要通过 requestRender() 主动
53
- * 触发重绘才能使 braille 进度条动起来。此回调由 setWidget 工厂函数
54
- * 在捕获 tui 引用后传入。
55
- */
38
+ private frameIndex;
56
39
  constructor(onRequestRender?: () => void);
57
40
  update(state: TeamDashboardState): void;
58
41
  complete(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"team-dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/team-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,oBAAoB,CAAC;AA2BhF,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,GAC7B,kBAAkB,CAoCpB;AAMD,qBAAa,sBAAuB,YAAW,SAAS;IACtD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAA2B;IAElD;;;;;;;;;OASG;gBACS,eAAe,CAAC,EAAE,MAAM,IAAI;IASxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKvC,QAAQ,IAAI,IAAI;IAgBhB,OAAO,IAAI,IAAI;IAaf,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAoD/B,OAAO,CAAC,cAAc;CAOvB"}
1
+ {"version":3,"file":"team-dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/team-dashboard.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EACV,oBAAoB,EAEpB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAyB5B,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,GAC7B,kBAAkB,CAoCpB;AAMD,qBAAa,sBAAuB,YAAW,SAAS;IACtD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,UAAU,CAAK;gBAEX,eAAe,CAAC,EAAE,MAAM,IAAI;IAKxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKvC,QAAQ,IAAI,IAAI;IAgBhB,OAAO,IAAI,IAAI;IAQf,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAsD/B,OAAO,CAAC,cAAc;CAOvB"}