@esso0428/pi-subagents 0.15.17 → 0.17.0

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 (96) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +10 -12
  3. package/dist/agent-history-list.d.ts.map +1 -1
  4. package/dist/agent-history-list.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +20 -40
  7. package/dist/index.js.map +1 -1
  8. package/dist/output-file.js +3 -3
  9. package/dist/output-file.js.map +1 -1
  10. package/dist/settings.d.ts +1 -8
  11. package/dist/settings.d.ts.map +1 -1
  12. package/dist/settings.js +0 -5
  13. package/dist/settings.js.map +1 -1
  14. package/dist/ui/agent-widget.d.ts +66 -28
  15. package/dist/ui/agent-widget.d.ts.map +1 -1
  16. package/dist/ui/agent-widget.js +325 -134
  17. package/dist/ui/agent-widget.js.map +1 -1
  18. package/dist/ui/ccstyle/diff/ansi-utils.js +2 -2
  19. package/dist/ui/ccstyle/diff/ansi-utils.js.map +1 -1
  20. package/dist/ui/ccstyle/diff/diff-presentation.d.ts.map +1 -1
  21. package/dist/ui/ccstyle/diff/diff-presentation.js +0 -1
  22. package/dist/ui/ccstyle/diff/diff-presentation.js.map +1 -1
  23. package/dist/ui/ccstyle/diff/diff-renderer.d.ts +1 -1
  24. package/dist/ui/ccstyle/diff/diff-renderer.d.ts.map +1 -1
  25. package/dist/ui/ccstyle/diff/diff-renderer.js +15 -10
  26. package/dist/ui/ccstyle/diff/diff-renderer.js.map +1 -1
  27. package/dist/ui/ccstyle/diff/line-width-safety.d.ts.map +1 -1
  28. package/dist/ui/ccstyle/diff/line-width-safety.js +1 -2
  29. package/dist/ui/ccstyle/diff/line-width-safety.js.map +1 -1
  30. package/dist/ui/ccstyle/diff/shiki-highlight.d.ts +19 -0
  31. package/dist/ui/ccstyle/diff/shiki-highlight.d.ts.map +1 -0
  32. package/dist/ui/ccstyle/diff/shiki-highlight.js +85 -0
  33. package/dist/ui/ccstyle/diff/shiki-highlight.js.map +1 -0
  34. package/dist/ui/ccstyle/tool-renderer.d.ts +1 -1
  35. package/dist/ui/ccstyle/tool-renderer.d.ts.map +1 -1
  36. package/dist/ui/ccstyle/tool-renderer.js +1 -1
  37. package/dist/ui/ccstyle/tool-renderer.js.map +1 -1
  38. package/dist/ui/ccstyle/tool-result.d.ts +9 -1
  39. package/dist/ui/ccstyle/tool-result.d.ts.map +1 -1
  40. package/dist/ui/ccstyle/tool-result.js +137 -5
  41. package/dist/ui/ccstyle/tool-result.js.map +1 -1
  42. package/dist/ui/conversation-blocks.d.ts.map +1 -1
  43. package/dist/ui/conversation-blocks.js +14 -13
  44. package/dist/ui/conversation-blocks.js.map +1 -1
  45. package/dist/ui/conversation-role.d.ts +1 -1
  46. package/dist/ui/conversation-role.d.ts.map +1 -1
  47. package/dist/ui/conversation-search.js +4 -4
  48. package/dist/ui/conversation-search.js.map +1 -1
  49. package/dist/ui/conversation-timeline.d.ts +17 -1
  50. package/dist/ui/conversation-timeline.d.ts.map +1 -1
  51. package/dist/ui/conversation-timeline.js +116 -43
  52. package/dist/ui/conversation-timeline.js.map +1 -1
  53. package/dist/ui/conversation-viewer.d.ts +5 -1
  54. package/dist/ui/conversation-viewer.d.ts.map +1 -1
  55. package/dist/ui/conversation-viewer.js +67 -26
  56. package/dist/ui/conversation-viewer.js.map +1 -1
  57. package/dist/write-execution.d.ts.map +1 -1
  58. package/dist/write-execution.js +1 -1
  59. package/dist/write-execution.js.map +1 -1
  60. package/package.json +6 -5
  61. package/src/agent-history-list.ts +1 -1
  62. package/src/index.ts +19 -73
  63. package/src/output-file.ts +3 -3
  64. package/src/settings.ts +1 -12
  65. package/src/ui/agent-widget.ts +264 -114
  66. package/src/ui/ccstyle/diff/ansi-utils.ts +2 -2
  67. package/src/ui/ccstyle/diff/diff-presentation.ts +0 -1
  68. package/src/ui/ccstyle/diff/diff-renderer.ts +22 -21
  69. package/src/ui/ccstyle/diff/line-width-safety.ts +1 -2
  70. package/src/ui/ccstyle/diff/shiki-highlight.ts +97 -0
  71. package/src/ui/ccstyle/tool-renderer.ts +3 -3
  72. package/src/ui/ccstyle/tool-result.ts +175 -7
  73. package/src/ui/conversation-role.ts +1 -1
  74. package/src/ui/conversation-search.ts +4 -4
  75. package/src/ui/conversation-timeline.ts +7 -7
  76. package/src/ui/conversation-viewer.ts +16 -7
  77. package/src/write-execution.ts +2 -2
  78. package/dist/ui/fleet-list.d.ts +0 -122
  79. package/dist/ui/fleet-list.d.ts.map +0 -1
  80. package/dist/ui/fleet-list.js +0 -375
  81. package/dist/ui/fleet-list.js.map +0 -1
  82. package/src/ui/deferred-ui-refresh.ts +0 -72
  83. package/src/ui/fleet-list.ts +0 -585
  84. package/test/agent-history-list.test.ts +0 -121
  85. package/test/agent-manager-history.test.ts +0 -88
  86. package/test/agent-menu-history-navigation.test.ts +0 -86
  87. package/test/output-file-history.test.ts +0 -50
  88. package/test/ui/agent-widget.test.ts +0 -172
  89. package/test/ui/conversation-blocks.test.ts +0 -103
  90. package/test/ui/conversation-diff.test.ts +0 -91
  91. package/test/ui/conversation-search.test.ts +0 -55
  92. package/test/ui/conversation-viewer.test.ts +0 -438
  93. package/test/ui/deferred-ui-refresh.test.ts +0 -55
  94. package/test/ui/fleet-list.test.ts +0 -389
  95. package/test/write-execution.test.ts +0 -83
  96. package/tsconfig.json +0 -16
@@ -1,10 +1,10 @@
1
1
  import * as CodingAgent from "@earendil-works/pi-coding-agent";
2
- import { Markdown, Text, truncateToWidth, } from "@earendil-works/pi-tui";
3
2
  import { getMarkdownTheme } from "@earendil-works/pi-coding-agent";
3
+ import { Markdown, Text, truncateToWidth, } from "@earendil-works/pi-tui";
4
+ import { showMoreHintText } from "./ccstyle/diff/render-utils.js";
5
+ import { createViewerCcstyleTool, } from "./ccstyle/tool-renderer.js";
4
6
  import { renderConversationRoleHeader } from "./conversation-role.js";
5
7
  import { stripAnsi } from "./conversation-search.js";
6
- import { createViewerCcstyleTool, } from "./ccstyle/tool-renderer.js";
7
- import { showMoreHintText } from "./ccstyle/diff/render-utils.js";
8
8
  function safeWidth(width) {
9
9
  return Math.max(1, Math.floor(Number.isFinite(width) ? width : 1));
10
10
  }
@@ -86,6 +86,7 @@ export class ConversationTimeline {
86
86
  expandedTools = new Set();
87
87
  hoveredToolCallId;
88
88
  hoveredIoView;
89
+ hoveredIoToolCallId;
89
90
  hoveredIoSection = null;
90
91
  lastClickedToolCallId;
91
92
  lastClickedPoint;
@@ -111,6 +112,12 @@ export class ConversationTimeline {
111
112
  this.focusedToolCallId = undefined;
112
113
  if (this.hoveredToolCallId && !ids.has(this.hoveredToolCallId))
113
114
  this.hoveredToolCallId = undefined;
115
+ if (this.hoveredIoToolCallId && !ids.has(this.hoveredIoToolCallId)) {
116
+ this.hoveredIoView?.setHoveredSection?.(null);
117
+ this.hoveredIoView = undefined;
118
+ this.hoveredIoToolCallId = undefined;
119
+ this.hoveredIoSection = null;
120
+ }
114
121
  for (const id of this.expandedTools)
115
122
  if (!ids.has(id))
116
123
  this.expandedTools.delete(id);
@@ -126,6 +133,10 @@ export class ConversationTimeline {
126
133
  if (!show) {
127
134
  this.focusedToolCallId = undefined;
128
135
  this.hoveredToolCallId = undefined;
136
+ this.hoveredIoView?.setHoveredSection?.(null);
137
+ this.hoveredIoView = undefined;
138
+ this.hoveredIoToolCallId = undefined;
139
+ this.hoveredIoSection = null;
129
140
  }
130
141
  this.invalidate();
131
142
  }
@@ -133,8 +144,11 @@ export class ConversationTimeline {
133
144
  return this.showTools;
134
145
  }
135
146
  setFocusedToolCallId(id) {
147
+ // Focus changes are view state. The rendered rows do not change, so keep
148
+ // the snapshot and its Markdown/tool output cache intact.
149
+ if (this.focusedToolCallId === id)
150
+ return;
136
151
  this.focusedToolCallId = id;
137
- this.invalidate();
138
152
  }
139
153
  getFocusedToolCallId() {
140
154
  return this.focusedToolCallId;
@@ -153,8 +167,7 @@ export class ConversationTimeline {
153
167
  ? direction > 0 ? 0 : ids.length - 1
154
168
  : (current + direction + ids.length) % ids.length;
155
169
  this.focusedToolCallId = ids[next];
156
- this.invalidate();
157
- this.options.onChange?.();
170
+ this.options.onChange?.({ kind: "interaction" });
158
171
  return true;
159
172
  }
160
173
  toggleFocusedTool() {
@@ -166,7 +179,7 @@ export class ConversationTimeline {
166
179
  else
167
180
  this.expandedTools.add(id);
168
181
  this.invalidate();
169
- this.options.onChange?.();
182
+ this.options.onChange?.({ kind: "content" });
170
183
  return true;
171
184
  }
172
185
  isToolFocused() {
@@ -174,19 +187,23 @@ export class ConversationTimeline {
174
187
  }
175
188
  render(width) {
176
189
  const requestedWidth = safeWidth(width);
190
+ if (this.lastWidth === requestedWidth)
191
+ return this.snapshot.lines.map((line) => line.text);
177
192
  const lines = [];
178
193
  const messageStarts = [];
179
194
  const messageBlocks = [];
180
195
  const interactiveToolIds = [];
181
196
  const blockSpans = [];
182
197
  const toolSpans = [];
183
- const visibleBlocks = this.blocks.filter((block) => this.showTools || block.kind !== "tool");
184
- if (visibleBlocks.length === 0) {
198
+ if (this.blocks.length === 0 || (!this.showTools && this.blocks.every((block) => block.kind === "tool"))) {
185
199
  const text = this.blocks.length === 0 ? "(waiting for first message...)" : "(tools hidden)";
186
200
  lines.push({ text: this.theme.fg("dim", text), plain: text, blockIndex: -1 });
187
201
  }
188
- for (const block of visibleBlocks) {
189
- const blockIndex = this.blocks.indexOf(block);
202
+ for (let sourceBlockIndex = 0; sourceBlockIndex < this.blocks.length; sourceBlockIndex++) {
203
+ const block = this.blocks[sourceBlockIndex];
204
+ if (!this.showTools && block.kind === "tool")
205
+ continue;
206
+ const blockIndex = sourceBlockIndex;
190
207
  if (lines.length > 0) {
191
208
  const separator = this.theme.fg("border", " " + "─ ".repeat(Math.max(1, Math.floor((requestedWidth - 6) / 2))).trimEnd());
192
209
  lines.push({ text: truncateToWidth(separator, requestedWidth), plain: stripAnsi(separator), blockIndex });
@@ -204,36 +221,11 @@ export class ConversationTimeline {
204
221
  const id = block.toolCallId;
205
222
  if (id)
206
223
  interactiveToolIds.push(id);
207
- let component;
208
- if (id) {
209
- const existing = this.toolComponents.get(id);
210
- if (existing) {
211
- applyToolComponentState(existing, block, this.expandedTools.has(id));
212
- component = existing;
213
- }
214
- else {
215
- component = createToolComponent(block, this.tui, this.options.cwd ?? process.cwd(), this.expandedTools.has(id), () => this.hoveredToolCallId === id);
216
- if (component)
217
- this.toolComponents.set(id, component);
218
- }
219
- }
220
- let rendered;
221
- try {
222
- rendered = component?.render(requestedWidth) ?? fallbackToolLines(block, requestedWidth, id ? this.expandedTools.has(id) : false, id ? this.hoveredToolCallId === id : false, this.theme);
223
- }
224
- catch {
225
- rendered = fallbackToolLines(block, requestedWidth, id ? this.expandedTools.has(id) : false, id ? this.hoveredToolCallId === id : false, this.theme);
226
- }
224
+ const { rendered, hintLine } = this.renderToolLines(block, requestedWidth);
227
225
  for (const line of rendered) {
228
226
  lines.push({ text: truncateToWidth(line, requestedWidth), plain: stripAnsi(line), blockIndex, railable: true });
229
227
  }
230
228
  if (id) {
231
- const hintLine = !this.expandedTools.has(id)
232
- ? rendered.findIndex((line) => {
233
- const plain = stripAnsi(line);
234
- return plain.includes(showMoreHintText()) || plain.includes("Enter to expand");
235
- })
236
- : -1;
237
229
  const blockHeight = lines.length - blockStartLine;
238
230
  blockSpans.push({ blockIndex: snapshotBlockIndex, startLine: blockStartLine, height: blockHeight });
239
231
  toolSpans.push({
@@ -275,6 +267,62 @@ export class ConversationTimeline {
275
267
  this.snapshot = { lines, messageStarts, messageBlocks, interactiveToolIds, blockSpans, toolSpans };
276
268
  return lines.map((line) => line.text);
277
269
  }
270
+ renderToolLines(block, width) {
271
+ const id = block.toolCallId;
272
+ let component;
273
+ if (id) {
274
+ const existing = this.toolComponents.get(id);
275
+ if (existing) {
276
+ applyToolComponentState(existing, block, this.expandedTools.has(id));
277
+ component = existing;
278
+ }
279
+ else {
280
+ component = createToolComponent(block, this.tui, this.options.cwd ?? process.cwd(), this.expandedTools.has(id), () => this.hoveredToolCallId === id);
281
+ if (component)
282
+ this.toolComponents.set(id, component);
283
+ }
284
+ }
285
+ let rendered;
286
+ try {
287
+ rendered = component?.render(width) ?? fallbackToolLines(block, width, id ? this.expandedTools.has(id) : false, id ? this.hoveredToolCallId === id : false, this.theme);
288
+ }
289
+ catch {
290
+ rendered = fallbackToolLines(block, width, id ? this.expandedTools.has(id) : false, id ? this.hoveredToolCallId === id : false, this.theme);
291
+ }
292
+ const hintLine = id && !this.expandedTools.has(id)
293
+ ? rendered.findIndex((line) => {
294
+ const plain = stripAnsi(line);
295
+ return plain.includes(showMoreHintText()) || plain.includes("Enter to expand");
296
+ })
297
+ : -1;
298
+ return { rendered, hintLine };
299
+ }
300
+ /**
301
+ * Hover only changes styling in a tool card. Re-render those rows in place
302
+ * and leave the Markdown rows and their spans untouched.
303
+ */
304
+ refreshToolSpan(span) {
305
+ const block = this.snapshot.messageBlocks[span.blockIndex];
306
+ if (!block || block.kind !== "tool")
307
+ return false;
308
+ const { rendered, hintLine } = this.renderToolLines(block, this.lastWidth);
309
+ if (rendered.length + (block.role === "user" || block.role === "assistant" ? 1 : 0) !== span.height)
310
+ return false;
311
+ const headerOffset = block.role === "user" || block.role === "assistant" ? 1 : 0;
312
+ const sourceBlockIndex = this.snapshot.lines[span.startLine]?.blockIndex ?? -1;
313
+ for (let index = 0; index < rendered.length; index++) {
314
+ const line = rendered[index];
315
+ this.snapshot.lines[span.startLine + headerOffset + index] = {
316
+ text: truncateToWidth(line, this.lastWidth),
317
+ plain: stripAnsi(line),
318
+ blockIndex: sourceBlockIndex,
319
+ railable: true,
320
+ };
321
+ }
322
+ span.clickStartLine = hintLine >= 0 ? span.startLine + headerOffset + hintLine : undefined;
323
+ span.clickHeight = hintLine >= 0 ? 1 : undefined;
324
+ return true;
325
+ }
278
326
  handleMouse(event) {
279
327
  if (event.type === "move") {
280
328
  const hovered = this.snapshot.toolSpans.find((span) => span.clickStartLine !== undefined &&
@@ -301,13 +349,34 @@ export class ConversationTimeline {
301
349
  if (this.hoveredIoView && this.hoveredIoView !== nextIoView && typeof this.hoveredIoView.setHoveredSection === "function") {
302
350
  this.hoveredIoView.setHoveredSection(null);
303
351
  }
352
+ const previousHoveredToolCallId = this.hoveredToolCallId;
353
+ const previousIoToolCallId = this.hoveredIoToolCallId;
354
+ const nextIoToolCallId = nextIoView ? fullSpan?.toolCallId : undefined;
304
355
  this.hoveredToolCallId = hovered;
305
356
  this.hoveredIoView = nextIoView;
357
+ this.hoveredIoToolCallId = nextIoToolCallId;
306
358
  this.hoveredIoSection = nextIoSection;
307
359
  if (nextIoView)
308
360
  nextIoView.setHoveredSection(nextIoSection);
309
- this.invalidate();
310
- this.options.onChange?.();
361
+ const changedIds = new Set([previousHoveredToolCallId, hovered, previousIoToolCallId, nextIoToolCallId]
362
+ .filter((id) => id !== undefined));
363
+ const changedRanges = [];
364
+ let patched = true;
365
+ for (const id of changedIds) {
366
+ const span = this.snapshot.toolSpans.find((candidate) => candidate.toolCallId === id);
367
+ if (!span || !this.refreshToolSpan(span)) {
368
+ patched = false;
369
+ break;
370
+ }
371
+ changedRanges.push({ startLine: span.startLine, height: span.height });
372
+ }
373
+ if (!patched) {
374
+ this.invalidate();
375
+ this.options.onChange?.({ kind: "content" });
376
+ }
377
+ else {
378
+ this.options.onChange?.({ kind: "interaction", changedRanges });
379
+ }
311
380
  return { handled: true, render: true };
312
381
  }
313
382
  if (event.type !== "click" && event.type !== "press")
@@ -354,8 +423,13 @@ export class ConversationTimeline {
354
423
  // A missing/older Pi mouse implementation must not break the viewer.
355
424
  }
356
425
  }
357
- this.invalidate();
358
- this.options.onChange?.();
426
+ if (shouldExpand || shouldCollapse) {
427
+ this.invalidate();
428
+ this.options.onChange?.({ kind: "content" });
429
+ }
430
+ else {
431
+ this.options.onChange?.({ kind: "interaction" });
432
+ }
359
433
  return { handled: true, render: shouldExpand || shouldCollapse, focusedBlockIndex: span.blockIndex };
360
434
  }
361
435
  // A message click intentionally drops any stale tool focus so Enter cannot
@@ -363,8 +437,7 @@ export class ConversationTimeline {
363
437
  this.focusedToolCallId = undefined;
364
438
  this.lastClickedToolCallId = undefined;
365
439
  this.lastClickedPoint = undefined;
366
- this.invalidate();
367
- this.options.onChange?.();
440
+ this.options.onChange?.({ kind: "interaction" });
368
441
  return { handled: true, render: true, focusedBlockIndex: target.blockIndex };
369
442
  }
370
443
  invalidate() {
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-timeline.js","sourceRoot":"","sources":["../../src/ui/conversation-timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-timeline.js","sourceRoot":"","sources":["../../src/ui/conversation-timeline.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * The viewer deliberately keeps rendering state separate from the transcript:
5
5
  * blocks are formatted data, while Markdown/ANSI lines are a bounded cache.
6
6
  */
7
- import type { ExtensionAPI, ExtensionContext, AgentSession } from "@earendil-works/pi-coding-agent";
7
+ import type { AgentSession, ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
8
8
  import { type Component, type TUI, type TuiMouseEvent } from "@earendil-works/pi-tui";
9
9
  import type { AgentRecord } from "../types.js";
10
10
  import type { Theme } from "./agent-widget.js";
@@ -43,6 +43,8 @@ export declare class ConversationViewer implements Component {
43
43
  private cachedMessageBlocks;
44
44
  private cacheVersion;
45
45
  private cachedVersion;
46
+ private sessionRefreshQueued;
47
+ private selectedBlockId;
46
48
  private scrollOffset;
47
49
  private autoScroll;
48
50
  private unsubscribe;
@@ -75,6 +77,8 @@ export declare class ConversationViewer implements Component {
75
77
  private isCloseButtonHit;
76
78
  render(width: number): string[];
77
79
  invalidate(): void;
80
+ private scheduleSessionRefresh;
81
+ private handleTimelineChange;
78
82
  dispose(): void;
79
83
  private viewportHeight;
80
84
  private chromeLines;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-viewer.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-viewer.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-viewer.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,13 @@ import { copyToClipboard } from "@earendil-works/pi-coding-agent";
8
8
  import { Input, Key, matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
9
9
  import { getLifetimeTotal, getSessionContextPercent } from "../usage.js";
10
10
  import { buildInvocationTags, describeActivity, fgPreservingNestedStyles, formatDuration, formatSessionTokens, getDisplayName, getPromptModeLabel } from "./agent-widget.js";
11
+ import { createViewerCcstyleResult } from "./ccstyle/tool-result.js";
11
12
  import { formatConversationMessages } from "./conversation-blocks.js";
12
- import { ConversationTimeline } from "./conversation-timeline.js";
13
- import { renderConversationRoleHeader } from "./conversation-role.js";
14
13
  import { editLiveAssistantBlockInNvim, viewConversationBlockInNvim } from "./conversation-nvim.js";
14
+ import { renderConversationRoleHeader } from "./conversation-role.js";
15
15
  import { findConversationMatches, highlightConversationLine, nearestConversationMatchAfter, nearestConversationMatchBefore, stripAnsi } from "./conversation-search.js";
16
+ import { ConversationTimeline } from "./conversation-timeline.js";
16
17
  import { createViewerKeys } from "./viewer-keys.js";
17
- import { createViewerCcstyleResult } from "./ccstyle/tool-result.js";
18
18
  /** Base lines consumed by the overlay: borders, header, separator and footer. */
19
19
  const CHROME_LINES_BASE = 6;
20
20
  const MIN_VIEWPORT = 3;
@@ -146,6 +146,8 @@ export class ConversationViewer {
146
146
  cachedMessageBlocks = [];
147
147
  cacheVersion = 0;
148
148
  cachedVersion = -1;
149
+ sessionRefreshQueued = false;
150
+ selectedBlockId;
149
151
  scrollOffset = 0;
150
152
  autoScroll = true;
151
153
  unsubscribe;
@@ -183,22 +185,10 @@ export class ConversationViewer {
183
185
  this.timeline = new ConversationTimeline(tui, theme, {
184
186
  cwd: operations?.ctx.cwd,
185
187
  record,
186
- onChange: () => {
187
- this.cacheVersion++;
188
- this.invalidate();
189
- this.tui.requestRender();
190
- },
188
+ onChange: (change) => this.handleTimelineChange(change),
191
189
  });
192
190
  this.timeline.setBlocks(this.blocks);
193
- this.unsubscribe = session.subscribe(() => {
194
- if (this.closed)
195
- return;
196
- this.blocks = formatConversationMessages(this.session.messages);
197
- this.timeline.setBlocks(this.blocks);
198
- this.cacheVersion++;
199
- this.invalidate();
200
- this.tui.requestRender();
201
- });
191
+ this.unsubscribe = session.subscribe(() => this.scheduleSessionRefresh());
202
192
  }
203
193
  handleInput(data) {
204
194
  if (this.composer) {
@@ -382,7 +372,6 @@ export class ConversationViewer {
382
372
  this.setFocusFromMessageIndex(selected);
383
373
  this.autoScroll = false;
384
374
  this.scrollTargetIntoView(selected);
385
- this.invalidate();
386
375
  this.tui.requestRender();
387
376
  }
388
377
  }
@@ -527,6 +516,42 @@ export class ConversationViewer {
527
516
  this.cachedMessageBlocks = [];
528
517
  this.cachedVersion = -1;
529
518
  }
519
+ scheduleSessionRefresh() {
520
+ if (this.closed || this.sessionRefreshQueued)
521
+ return;
522
+ this.sessionRefreshQueued = true;
523
+ queueMicrotask(() => {
524
+ this.sessionRefreshQueued = false;
525
+ if (this.closed)
526
+ return;
527
+ if (this.hasFocusedBlock)
528
+ this.selectedBlockId = this.currentBlock()?.id;
529
+ this.blocks = formatConversationMessages(this.session.messages);
530
+ this.timeline.setBlocks(this.blocks);
531
+ this.cacheVersion++;
532
+ this.invalidate();
533
+ this.tui.requestRender();
534
+ });
535
+ }
536
+ handleTimelineChange(change) {
537
+ if (change.kind === "content") {
538
+ this.cacheVersion++;
539
+ this.invalidate();
540
+ }
541
+ else if (change.changedRanges && this.cachedWidth > 0 && this.cachedVersion === this.cacheVersion) {
542
+ const snapshotLines = this.timeline.getSnapshot().lines;
543
+ for (const range of change.changedRanges) {
544
+ const start = Math.max(0, range.startLine);
545
+ const end = Math.min(this.cachedLines.length, start + Math.max(0, range.height));
546
+ for (let index = start; index < end; index++) {
547
+ const line = snapshotLines[index];
548
+ if (line)
549
+ this.cachedLines[index] = { ...line };
550
+ }
551
+ }
552
+ }
553
+ this.tui.requestRender();
554
+ }
530
555
  dispose() {
531
556
  this.closed = true;
532
557
  this.unsubscribe?.();
@@ -568,9 +593,31 @@ export class ConversationViewer {
568
593
  this.timeline.setShowTools(this.showTools);
569
594
  this.timeline.render(width);
570
595
  const timelineSnapshot = this.timeline.getSnapshot();
571
- const lines = timelineSnapshot.lines.map((line) => ({ ...line }));
596
+ const lines = timelineSnapshot.lines.map((line) => {
597
+ const rawText = typeof line?.text === "string" ? line.text : "";
598
+ const text = truncateToWidth(rawText, width, "", true);
599
+ return {
600
+ text,
601
+ plain: stripAnsi(text),
602
+ blockIndex: typeof line?.blockIndex === "number" ? line.blockIndex : -1,
603
+ ...(line?.railable ? { railable: true } : {}),
604
+ };
605
+ });
572
606
  this.cachedMessageStarts = [...timelineSnapshot.messageStarts];
573
607
  this.cachedMessageBlocks = [...timelineSnapshot.messageBlocks];
608
+ if (this.hasFocusedBlock) {
609
+ const selectedIndex = this.selectedBlockId
610
+ ? this.cachedMessageBlocks.findIndex((block) => block.id === this.selectedBlockId)
611
+ : -1;
612
+ const focusedToolIndex = this.timeline.getFocusedToolCallId()
613
+ ? this.cachedMessageBlocks.findIndex((block) => block.toolCallId === this.timeline.getFocusedToolCallId())
614
+ : -1;
615
+ const restoredIndex = selectedIndex >= 0 ? selectedIndex : focusedToolIndex;
616
+ if (restoredIndex >= 0) {
617
+ this.selectedMessageIdx = restoredIndex;
618
+ this.selectedBlockId = this.cachedMessageBlocks[restoredIndex]?.id;
619
+ }
620
+ }
574
621
  if (this.record.status === "running" && this.activity) {
575
622
  const act = describeActivity(this.activity.activeTools, this.activity.responseText);
576
623
  const text = `▍ ${act}`;
@@ -593,6 +640,7 @@ export class ConversationViewer {
593
640
  this.selectedMessageIdx = index;
594
641
  this.hasFocusedBlock = true;
595
642
  const block = this.cachedMessageBlocks[index];
643
+ this.selectedBlockId = block.id;
596
644
  this.timeline.setFocusedToolCallId(block.kind === "tool" ? block.toolCallId : undefined);
597
645
  return true;
598
646
  }
@@ -638,7 +686,6 @@ export class ConversationViewer {
638
686
  this.setFocusFromMessageIndex(target);
639
687
  this.scrollOffset = Math.min(this.cachedMessageStarts[target], Math.max(0, this.cachedLines.length - this.viewportHeight()));
640
688
  this.autoScroll = false;
641
- this.invalidate();
642
689
  this.tui.requestRender();
643
690
  }
644
691
  moveToolFocus(direction) {
@@ -652,7 +699,6 @@ export class ConversationViewer {
652
699
  this.autoScroll = false;
653
700
  this.scrollTargetIntoView(index);
654
701
  }
655
- this.invalidate();
656
702
  this.tui.requestRender();
657
703
  }
658
704
  focusNearbyTool(direction) {
@@ -673,7 +719,6 @@ export class ConversationViewer {
673
719
  this.setFocusFromMessageIndex(resolvedTarget);
674
720
  this.autoScroll = false;
675
721
  this.scrollTargetIntoView(resolvedTarget);
676
- this.invalidate();
677
722
  this.tui.requestRender();
678
723
  }
679
724
  scrollTargetIntoView(index) {
@@ -715,21 +760,18 @@ export class ConversationViewer {
715
760
  const selected = this.messageIndexForOffset(this.scrollOffset);
716
761
  this.setFocusFromMessageIndex(selected);
717
762
  this.autoScroll = this.scrollOffset >= max;
718
- this.invalidate();
719
763
  this.tui.requestRender();
720
764
  }
721
765
  scrollToTop() {
722
766
  this.scrollOffset = 0;
723
767
  this.setFocusFromMessageIndex(0);
724
768
  this.autoScroll = false;
725
- this.invalidate();
726
769
  this.tui.requestRender();
727
770
  }
728
771
  scrollToBottom() {
729
772
  this.scrollOffset = Math.max(0, this.cachedLines.length - this.viewportHeight());
730
773
  this.setFocusFromMessageIndex(Math.max(0, this.cachedMessageStarts.length - 1));
731
774
  this.autoScroll = true;
732
- this.invalidate();
733
775
  this.tui.requestRender();
734
776
  }
735
777
  enterSearch() {
@@ -782,7 +824,6 @@ export class ConversationViewer {
782
824
  this.scrollOffset = Math.max(0, Math.min(max, match.lineIdx - Math.floor(this.viewportHeight() / 2)));
783
825
  this.setFocusFromMessageIndex(this.messageIndexForOffset(this.scrollOffset));
784
826
  this.autoScroll = false;
785
- this.invalidate();
786
827
  }
787
828
  async copyCurrentMessage() {
788
829
  const block = this.currentBlock();