mindweave 3.2.8 → 3.4.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 (107) hide show
  1. package/dist/cli/App.js +410 -38
  2. package/dist/cli/App.js.map +1 -1
  3. package/dist/cli/altScreen.js +6 -0
  4. package/dist/cli/altScreen.js.map +1 -1
  5. package/dist/cli/blockHeights.js +3 -0
  6. package/dist/cli/blockHeights.js.map +1 -1
  7. package/dist/cli/chatAnchor.js +17 -0
  8. package/dist/cli/chatAnchor.js.map +1 -1
  9. package/dist/cli/components/BlockView.js +10 -1
  10. package/dist/cli/components/BlockView.js.map +1 -1
  11. package/dist/cli/components/FadeText.js +47 -0
  12. package/dist/cli/components/FadeText.js.map +1 -0
  13. package/dist/cli/components/KeyManager.js +63 -7
  14. package/dist/cli/components/KeyManager.js.map +1 -1
  15. package/dist/cli/components/Picker.js +31 -5
  16. package/dist/cli/components/Picker.js.map +1 -1
  17. package/dist/cli/components/PromptInput.js +62 -9
  18. package/dist/cli/components/PromptInput.js.map +1 -1
  19. package/dist/cli/components/ToolLine.js +11 -3
  20. package/dist/cli/components/ToolLine.js.map +1 -1
  21. package/dist/cli/components/WorkGroup.js +27 -10
  22. package/dist/cli/components/WorkGroup.js.map +1 -1
  23. package/dist/cli/diffRows.js +16 -0
  24. package/dist/cli/diffRows.js.map +1 -1
  25. package/dist/cli/entrance.js +95 -0
  26. package/dist/cli/entrance.js.map +1 -0
  27. package/dist/cli/framebuffer/parse.js +99 -16
  28. package/dist/cli/framebuffer/parse.js.map +1 -1
  29. package/dist/cli/framebuffer/writer.js +75 -34
  30. package/dist/cli/framebuffer/writer.js.map +1 -1
  31. package/dist/cli/help.js +7 -0
  32. package/dist/cli/help.js.map +1 -1
  33. package/dist/cli/messageQueue.js +7 -2
  34. package/dist/cli/messageQueue.js.map +1 -1
  35. package/dist/cli/pickerSearch.js +59 -0
  36. package/dist/cli/pickerSearch.js.map +1 -0
  37. package/dist/cli/selectionGrow.js +86 -3
  38. package/dist/cli/selectionGrow.js.map +1 -1
  39. package/dist/cli/toolDisplay.js +20 -5
  40. package/dist/cli/toolDisplay.js.map +1 -1
  41. package/dist/cli/transcript.js +24 -7
  42. package/dist/cli/transcript.js.map +1 -1
  43. package/dist/cli/wheelStep.js +2 -2
  44. package/dist/cli/workLines.js +26 -7
  45. package/dist/cli/workLines.js.map +1 -1
  46. package/dist/core/turnRunner.js +7 -1
  47. package/dist/core/turnRunner.js.map +1 -1
  48. package/dist/drivers/anthropic/client.js +16 -3
  49. package/dist/drivers/anthropic/client.js.map +1 -1
  50. package/dist/drivers/anthropic/manifest.js +10 -0
  51. package/dist/drivers/anthropic/manifest.js.map +1 -1
  52. package/dist/drivers/glm/manifest.js +9 -0
  53. package/dist/drivers/glm/manifest.js.map +1 -1
  54. package/dist/drivers/groq/manifest.js +5 -0
  55. package/dist/drivers/groq/manifest.js.map +1 -1
  56. package/dist/drivers/mistral/client.js +3 -0
  57. package/dist/drivers/mistral/client.js.map +1 -1
  58. package/dist/drivers/openai/client.js +3 -0
  59. package/dist/drivers/openai/client.js.map +1 -1
  60. package/dist/drivers/openai/manifest.js +5 -0
  61. package/dist/drivers/openai/manifest.js.map +1 -1
  62. package/dist/drivers/openaiCompat/wire.js +7 -2
  63. package/dist/drivers/openaiCompat/wire.js.map +1 -1
  64. package/dist/drivers/openrouter/client.js +6 -0
  65. package/dist/drivers/openrouter/client.js.map +1 -1
  66. package/dist/drivers/xai/client.js +9 -0
  67. package/dist/drivers/xai/client.js.map +1 -1
  68. package/dist/dynamo/contextWindow.js +64 -12
  69. package/dist/dynamo/contextWindow.js.map +1 -1
  70. package/dist/dynamo/engine.js +72 -22
  71. package/dist/dynamo/engine.js.map +1 -1
  72. package/dist/dynamo/prompt.js +9 -0
  73. package/dist/dynamo/prompt.js.map +1 -1
  74. package/dist/memory/compaction.js +17 -3
  75. package/dist/memory/compaction.js.map +1 -1
  76. package/dist/memory/localCommand.js +165 -0
  77. package/dist/memory/localCommand.js.map +1 -0
  78. package/dist/memory/session.js +4 -0
  79. package/dist/memory/session.js.map +1 -1
  80. package/dist/memory/store.js +4 -1
  81. package/dist/memory/store.js.map +1 -1
  82. package/dist/memory/types.js.map +1 -1
  83. package/dist/tools/backgroundShells.js +35 -7
  84. package/dist/tools/backgroundShells.js.map +1 -1
  85. package/dist/tools/deferredNative.js +24 -0
  86. package/dist/tools/deferredNative.js.map +1 -1
  87. package/dist/tools/detail.js +2 -0
  88. package/dist/tools/detail.js.map +1 -1
  89. package/dist/tools/mcpSearch.js +8 -2
  90. package/dist/tools/mcpSearch.js.map +1 -1
  91. package/dist/tools/rebuildDetail.js +49 -1
  92. package/dist/tools/rebuildDetail.js.map +1 -1
  93. package/dist/tools/registry.js +12 -12
  94. package/dist/tools/registry.js.map +1 -1
  95. package/dist/tools/runCommand.js +17 -6
  96. package/dist/tools/runCommand.js.map +1 -1
  97. package/dist/tools/shellTools.js +10 -23
  98. package/dist/tools/shellTools.js.map +1 -1
  99. package/dist/tools/untrusted.js +31 -0
  100. package/dist/tools/untrusted.js.map +1 -1
  101. package/dist/tools/userCommand.js +52 -0
  102. package/dist/tools/userCommand.js.map +1 -0
  103. package/dist/tools/viewImage.js +14 -2
  104. package/dist/tools/viewImage.js.map +1 -1
  105. package/dist/tools/webSearch.js +42 -20
  106. package/dist/tools/webSearch.js.map +1 -1
  107. package/package.json +3 -3
@@ -109,4 +109,20 @@ export function markChangedWords(rows) {
109
109
  }
110
110
  return marks;
111
111
  }
112
+ /**
113
+ * A line with its tabs written out as spaces, to the next stop (pure).
114
+ *
115
+ * A tab moves the cursor without painting anything, so in a tinted row it left a hole in the
116
+ * colour wherever code was indented with tabs, and the terminal's idea of the row's width no
117
+ * longer matched the one the layout had measured, which made the right edge of the band ragged
118
+ * and cut lines at the wrong place.
119
+ */
120
+ export function expandTabs(line, stop = 4) {
121
+ if (!line.includes("\t"))
122
+ return line;
123
+ let out = "";
124
+ for (const ch of line)
125
+ out += ch === "\t" ? " ".repeat(stop - (out.length % stop)) : ch;
126
+ return out;
127
+ }
112
128
  //# sourceMappingURL=diffRows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diffRows.js","sourceRoot":"","sources":["../../src/cli/diffRows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diffRows.js","sourceRoot":"","sources":["../../src/cli/diffRows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * entrance.ts — how a tool row arrives on screen (pure, apart from one switch).
3
+ *
4
+ * A row used to pop: the dot, the name and the whole result in one frame. The speed is right and
5
+ * stays, and so does the row appearing whole. What was missing is the arrival, the short settling a row
6
+ * does as it takes its place, like a window opening rather than appearing. So a row that is made while you
7
+ * are watching comes up from faint to full over a fraction of a second: the same row, in the same place,
8
+ * drawn more strongly each frame. Nothing is revealed in parts and nothing moves.
9
+ *
10
+ * Only for a row that arrives live, with the view following the bottom. A row scrolled into sight, a
11
+ * resumed chat and a chat read back do not animate: movement there would be the screen changing under
12
+ * the reader, with nothing arriving.
13
+ */
14
+ /** How long a result takes to come up to full, in milliseconds. */
15
+ export const ENTRANCE_MS = 140;
16
+ /** How long the name takes. */
17
+ export const HEAD_FADE_MS = 140;
18
+ /**
19
+ * Rows already seen, by block id. Kept outside the component because the screen moves a row between two
20
+ * lists as it is measured, which remounts it; an arrival that lived in the component would restart or be
21
+ * lost at the first measurement, a frame after it began. Oldest forgotten past this many.
22
+ */
23
+ const ARRIVALS_KEPT = 300;
24
+ const arrivals = new Map();
25
+ /**
26
+ * The arrival of the row with this id, created the first time the row is seen and updated when its
27
+ * result lands (pure apart from the store). A row is arriving only if it is first seen while its turn is
28
+ * running and motion is allowed; a row first seen any other way (a resumed chat, a view scrolled back)
29
+ * is recorded as not arriving, so it can never animate later.
30
+ */
31
+ export function arrivalOf(id, fallback, live, branchShown, now) {
32
+ const mayMove = live && motionAllowed();
33
+ let a = id === undefined ? fallback.current : arrivals.get(id) ?? null;
34
+ if (!a) {
35
+ a = { headFrom: mayMove ? now : null, branchFrom: mayMove && branchShown ? now : null, shown: branchShown };
36
+ if (id === undefined)
37
+ fallback.current = a;
38
+ else {
39
+ arrivals.set(id, a);
40
+ if (arrivals.size > ARRIVALS_KEPT)
41
+ arrivals.delete(arrivals.keys().next().value);
42
+ }
43
+ }
44
+ else if (!a.shown && branchShown) {
45
+ if (mayMove)
46
+ a.branchFrom = now;
47
+ a.shown = true;
48
+ }
49
+ return a;
50
+ }
51
+ /** Forget every arrival (a new conversation, and tests). */
52
+ export function forgetArrivals() {
53
+ arrivals.clear();
54
+ }
55
+ /** Set by the screen each frame: false while the view is scrolled back or something covers it. */
56
+ export const motion = { enabled: true };
57
+ /** Whether rows may animate right now. `MINDWEAVE_NO_MOTION=1` turns it off everywhere. */
58
+ export function motionAllowed() {
59
+ return motion.enabled && process.env["MINDWEAVE_NO_MOTION"] !== "1";
60
+ }
61
+ /** 0 at the start, 1 at the end, slowing as it goes: a quick start that settles. */
62
+ export function ease(progress) {
63
+ const t = Math.min(1, Math.max(0, progress));
64
+ return 1 - (1 - t) ** 2;
65
+ }
66
+ /** How far through an animation that began at `start` we are, from 0 to 1. No start means finished. */
67
+ export function progressOf(start, now, durationMs) {
68
+ if (start === null)
69
+ return 1;
70
+ return Math.min(1, Math.max(0, (now - start) / durationMs));
71
+ }
72
+ /**
73
+ * How faint a row starts. High enough that it never reads as black or as nothing there: a row that begins
74
+ * near the ground looks like a gap that then fills in, which is worse than no animation.
75
+ */
76
+ const FLOOR = 0.5;
77
+ /** How strongly a row is drawn at `progress`: dimmed to begin with, never close to the ground, full at the end. */
78
+ export function visibilityOf(progress) {
79
+ return progress >= 1 ? 1 : FLOOR + (1 - FLOOR) * ease(progress);
80
+ }
81
+ /** The colour text has when it was given none: what the terminal draws it in on a dark ground. */
82
+ export const DEFAULT_TEXT = "#d8d8d8";
83
+ /** The ground rows are mixed toward, the same dark the working dot fades into. */
84
+ const GROUND = [0x16, 0x1a, 0x18];
85
+ /** A `#rrggbb` colour mixed toward the ground by `visibility` (1 is the colour itself). Anything else is returned as it was. */
86
+ export function fadeHex(color, visibility) {
87
+ const m = /^#([0-9a-f]{6})$/i.exec(color);
88
+ if (!m || visibility >= 1)
89
+ return color;
90
+ const n = parseInt(m[1], 16);
91
+ const v = Math.min(1, Math.max(0, visibility));
92
+ const mix = [(n >> 16) & 255, (n >> 8) & 255, n & 255].map((c, i) => Math.round(GROUND[i] + (c - GROUND[i]) * v));
93
+ return "#" + mix.map((c) => c.toString(16).padStart(2, "0")).join("");
94
+ }
95
+ //# sourceMappingURL=entrance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrance.js","sourceRoot":"","sources":["../../src/cli/entrance.ts"],"names":[],"mappings":"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"}
@@ -150,20 +150,20 @@ function blank(screen, from, to) {
150
150
  screen.attrs.fill(0, lo, hi);
151
151
  }
152
152
  /**
153
- * Draw `frame` into `screen`, starting at row `top`.
153
+ * Interpret one line of a frame: text and SGR styling, written at the cursor.
154
154
  *
155
- * The screen is NOT cleared first — the caller decides that, because a resize
156
- * wants a clean grid while an ordinary frame is a complete repaint of the rows it
157
- * covers and clearing would be redundant work. Rows the frame does not reach are
158
- * left alone.
155
+ * Returns whether the line was PURE: nothing but printable characters and SGR sequences, so that what it
156
+ * leaves in the grid depends only on the line itself, the pen it started with and the grid's width. Only a
157
+ * pure line may be remembered (see `parseFrame`); anything that moves the cursor, erases, or is a control
158
+ * character makes the result depend on more than the text.
159
159
  */
160
- export function parseFrame(screen, frame, top = 0) {
161
- const pen = { fg: DEFAULT_COLOR, bg: DEFAULT_COLOR, attrs: 0 };
162
- let x = 0;
163
- let y = top;
160
+ function parseLine(screen, frame, pen, cursor, top) {
161
+ let pure = true;
162
+ let x = cursor.x;
163
+ let y = cursor.y;
164
164
  for (let i = 0; i < frame.length;) {
165
165
  const ch = frame[i];
166
- if (ch === "") {
166
+ if (ch === "\x1b") {
167
167
  // CSI: ESC [ params... final-byte
168
168
  if (frame[i + 1] === "[") {
169
169
  let j = i + 2;
@@ -182,18 +182,22 @@ export function parseFrame(screen, frame, top = 0) {
182
182
  applySgr(pen, params);
183
183
  }
184
184
  else if (final === "H" || final === "f") {
185
+ pure = false;
185
186
  // Absolute cursor position, 1-based on the real screen. `top` is where
186
187
  // row 0 of this grid sits, so it comes back off to get a grid row.
187
188
  y = (params[0] ?? 1) - 1 + top;
188
189
  x = (params[1] ?? 1) - 1;
189
190
  }
190
191
  else if (final === "C") {
192
+ pure = false;
191
193
  x += Math.max(1, params[0] ?? 1);
192
194
  }
193
195
  else if (final === "D") {
196
+ pure = false;
194
197
  x = Math.max(0, x - Math.max(1, params[0] ?? 1));
195
198
  }
196
199
  else if (final === "J") {
200
+ pure = false;
197
201
  // Erase display. A real terminal blanks the cells; skipping it left this
198
202
  // parser believing text was still there that the terminal had already wiped,
199
203
  // which is a difference that only shows up on a resize (the one time the
@@ -204,6 +208,7 @@ export function parseFrame(screen, frame, top = 0) {
204
208
  blank(screen, from, to);
205
209
  }
206
210
  else if (final === "K") {
211
+ pure = false;
207
212
  // Erase in line, same three modes but bounded to the current row.
208
213
  const mode = params[0] ?? 0;
209
214
  const rowStart = y * screen.width;
@@ -211,10 +216,14 @@ export function parseFrame(screen, frame, top = 0) {
211
216
  const to = mode === 1 ? rowStart + x + 1 : rowStart + screen.width;
212
217
  blank(screen, from, to);
213
218
  }
219
+ else {
220
+ pure = false;
221
+ }
214
222
  // Every other CSI is skipped whole — see the file header.
215
223
  i = j + 1;
216
224
  continue;
217
225
  }
226
+ pure = false;
218
227
  const introducer = frame[i + 1];
219
228
  if (introducer === "]" || introducer === "P" || introducer === "X" || introducer === "^" || introducer === "_") {
220
229
  // A STRING sequence: OSC, DCS, SOS, PM, APC. What follows the introducer is
@@ -253,18 +262,14 @@ export function parseFrame(screen, frame, top = 0) {
253
262
  i = j;
254
263
  continue;
255
264
  }
256
- if (ch === "\n") {
257
- y++;
258
- x = 0;
259
- i += 1;
260
- continue;
261
- }
262
265
  if (ch === "\r") {
266
+ pure = false;
263
267
  x = 0;
264
268
  i += 1;
265
269
  continue;
266
270
  }
267
271
  if (ch === "\t") {
272
+ pure = false;
268
273
  // Tab stops every eight columns. Stamping the tab itself would put a character in
269
274
  // the model that `paint` then writes back out, and the terminal would advance the
270
275
  // cursor for it — knocking the rest of the row, and everything the diff believes
@@ -275,6 +280,7 @@ export function parseFrame(screen, frame, top = 0) {
275
280
  }
276
281
  const control = frame.charCodeAt(i);
277
282
  if (control < 0x20 || control === 0x7f) {
283
+ pure = false;
278
284
  // Every remaining C0 control and DEL. A terminal acts on these; none of them leave
279
285
  // a glyph behind, so neither may the model.
280
286
  if (control === 0x08)
@@ -318,5 +324,82 @@ export function parseFrame(screen, frame, top = 0) {
318
324
  }
319
325
  x += w;
320
326
  }
327
+ cursor.x = x;
328
+ cursor.y = y;
329
+ return pure;
330
+ }
331
+ /** Remembered lines. Most of a frame is the same lines as the one before it, and reading a line is the cost. */
332
+ const ROW_MEMO_MAX = 800;
333
+ const rowMemo = new Map();
334
+ /**
335
+ * Draw `frame` into `screen`, starting at row `top`.
336
+ *
337
+ * The screen is NOT cleared first — the caller decides that, because a resize
338
+ * wants a clean grid while an ordinary frame is a complete repaint of the rows it
339
+ * covers and clearing would be redundant work. Rows the frame does not reach are
340
+ * left alone.
341
+ *
342
+ * A frame is its lines, and between two frames nearly all of them are the same, so a line that has been
343
+ * read before (same text, same starting pen, same grid width) is copied in from memory instead of being
344
+ * read again. Only lines that are pure (see `parseLine`) are remembered, and the copy writes exactly the
345
+ * cells reading would have written. `memo: false` reads everything, for comparing the two.
346
+ */
347
+ export function parseFrame(screen, frame, top = 0, memo = true) {
348
+ const pen = { fg: DEFAULT_COLOR, bg: DEFAULT_COLOR, attrs: 0 };
349
+ const cursor = { x: 0, y: top };
350
+ let at = 0;
351
+ for (;;) {
352
+ const nl = frame.indexOf("\n", at);
353
+ const line = nl === -1 ? frame.slice(at) : frame.slice(at, nl);
354
+ if (line !== "")
355
+ readLine(screen, line, pen, cursor, top, memo);
356
+ if (nl === -1)
357
+ return;
358
+ cursor.y++;
359
+ cursor.x = 0;
360
+ at = nl + 1;
361
+ }
362
+ }
363
+ function readLine(screen, line, pen, cursor, top, memo) {
364
+ const y = cursor.y;
365
+ const inRange = y >= 0 && y < screen.height;
366
+ // Only a line read from the start of its row, which is every line of a frame.
367
+ if (!memo || cursor.x !== 0) {
368
+ parseLine(screen, line, pen, cursor, top);
369
+ return;
370
+ }
371
+ const key = `${screen.width}\u0001${pen.fg}\u0001${pen.bg}\u0001${pen.attrs}\u0001${line}`;
372
+ const known = rowMemo.get(key);
373
+ if (known) {
374
+ if (inRange) {
375
+ const base = y * screen.width;
376
+ screen.chars.set(known.chars, base);
377
+ screen.fg.set(known.fg, base);
378
+ screen.bg.set(known.bg, base);
379
+ screen.attrs.set(known.attrs, base);
380
+ }
381
+ pen.fg = known.endFg;
382
+ pen.bg = known.endBg;
383
+ pen.attrs = known.endAttrs;
384
+ cursor.x = known.endX;
385
+ return;
386
+ }
387
+ const pure = parseLine(screen, line, pen, cursor, top);
388
+ if (!pure || !inRange || cursor.y !== y)
389
+ return;
390
+ const base = y * screen.width;
391
+ const extent = Math.min(cursor.x, screen.width);
392
+ if (rowMemo.size >= ROW_MEMO_MAX)
393
+ rowMemo.delete(rowMemo.keys().next().value);
394
+ rowMemo.set(key, {
395
+ chars: screen.chars.slice(base, base + extent),
396
+ fg: screen.fg.slice(base, base + extent),
397
+ bg: screen.bg.slice(base, base + extent),
398
+ attrs: screen.attrs.slice(base, base + extent),
399
+ endFg: pen.fg,
400
+ endBg: pen.bg,
401
+ endAttrs: pen.attrs,
402
+ endX: cursor.x,
403
+ });
321
404
  }
322
405
  //# sourceMappingURL=parse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/cli/framebuffer/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/cli/framebuffer/parse.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,21 @@ const IDLE_REPAINT_MS = 400;
103
103
  * that flips screen modes, which has no access to it.
104
104
  */
105
105
  let enabled = true;
106
+ /**
107
+ * Whether the screen has been handed back for good.
108
+ *
109
+ * Set by the exit path once the alternate screen has been left. Everything written after
110
+ * that point would land in the user's own terminal, not in the buffer this app drew in:
111
+ * Ink's exit hook runs AFTER ours and flushes a pending frame and renders a last one, and
112
+ * each of those was written into the shell, leaving the whole conversation, the input box
113
+ * and an open menu printed over the scrollback, with the shell's prompt on top of them.
114
+ * Once closed, nothing more reaches the terminal through this stream.
115
+ */
116
+ let closed = false;
117
+ /** Stop (or, for tests, resume) writing to the terminal. See `closed`. */
118
+ export function setFramebufferClosed(on) {
119
+ closed = on;
120
+ }
106
121
  /**
107
122
  * Set to force the NEXT frame to repaint every cell, not just the diff.
108
123
  *
@@ -177,6 +192,14 @@ function caretTail() {
177
192
  return cell ? parkAt(cell) : HIDE;
178
193
  }
179
194
  export function framebufferStdout(real, onFrame) {
195
+ /** Every write to the real stream goes through here, so closing it stops all of them. */
196
+ const send = (data, callback) => {
197
+ if (closed) {
198
+ callback?.(null);
199
+ return true;
200
+ }
201
+ return real.write(data, callback);
202
+ };
180
203
  // The grid currently on the terminal, and the one being built for this frame. Two
181
204
  // long-lived buffers, swapped — never reallocated per frame, which is the whole
182
205
  // reason the cell data is in typed arrays.
@@ -211,6 +234,12 @@ export function framebufferStdout(real, onFrame) {
211
234
  /** When every cell was last written, which is what bounds how long a disagreement
212
235
  * with the real terminal can survive. */
213
236
  let lastFull = 0;
237
+ /**
238
+ * The body of the last frame that was painted onto a clean screen, or null when the screen may no
239
+ * longer show it (anything repainted it, or a selection tinted it). A frame with the same body has
240
+ * nothing to parse or diff: it would change no cell.
241
+ */
242
+ let lastBody = null;
214
243
  /** The pending after-the-burst repaint, cancelled and re-armed by each frame. */
215
244
  let idle;
216
245
  /**
@@ -263,6 +292,7 @@ export function framebufferStdout(real, onFrame) {
263
292
  function invalidate() {
264
293
  onScreen.invalidate();
265
294
  lastFull = Date.now();
295
+ lastBody = null;
266
296
  }
267
297
  // Coming back from the inline shell: the terminal has been scrolling and printing on
268
298
  // its own, so nothing the model believes about the screen is still true. Forget all of
@@ -343,7 +373,7 @@ export function framebufferStdout(real, onFrame) {
343
373
  lastShown = lastCursor;
344
374
  const painted = escape === "" ? lastCursor : SYNC_START + escape + lastCursor + SYNC_END;
345
375
  if (painted !== "")
346
- real.write(painted);
376
+ send(painted);
347
377
  }
348
378
  /**
349
379
  * Re-tint the frame already on screen and write the difference.
@@ -376,6 +406,7 @@ export function framebufferStdout(real, onFrame) {
376
406
  clean.copyFrom(onScreen);
377
407
  cleanValid = true;
378
408
  }
409
+ lastBody = null;
379
410
  pending.copyFrom(clean);
380
411
  applyFrameOverlay(pending);
381
412
  const escape = paint(onScreen, pending, 1);
@@ -395,7 +426,7 @@ export function framebufferStdout(real, onFrame) {
395
426
  lastShown = lastCursor;
396
427
  const painted = escape === "" ? lastCursor : SYNC_START + escape + lastCursor + SYNC_END;
397
428
  if (painted !== "")
398
- real.write(painted);
429
+ send(painted);
399
430
  }
400
431
  setOverlayRepaint(refreshOverlay);
401
432
  /**
@@ -428,7 +459,7 @@ export function framebufferStdout(real, onFrame) {
428
459
  return;
429
460
  lastShown = parked;
430
461
  lastCursor = parked;
431
- real.write(parked);
462
+ send(parked);
432
463
  });
433
464
  });
434
465
  /** Arm the after-the-burst repaint. Unref'd: a screen touch-up must never be the
@@ -490,7 +521,7 @@ export function framebufferStdout(real, onFrame) {
490
521
  // Only writes that carry cells — a bare control sequence is not a frame.
491
522
  if (data.replace(ANY_ESCAPE, "").trim() !== "")
492
523
  lastFrameData = data;
493
- return real.write(data, callback);
524
+ return send(data, callback);
494
525
  }
495
526
  // A write that is NOTHING BUT AN ERASE. Swallowed, and this is the whole reason a
496
527
  // narrowing resize used to flicker.
@@ -523,7 +554,7 @@ export function framebufferStdout(real, onFrame) {
523
554
  // hidden, and frames wrapped in synchronized-update markers, none of which we may
524
555
  // swallow.
525
556
  if (bare === "")
526
- return real.write(data, callback);
557
+ return send(data, callback);
527
558
  // Escapes plus nothing but CONTROL characters — in practice a stray newline.
528
559
  //
529
560
  // This used to pass through with the case above, because the test trimmed before
@@ -555,38 +586,48 @@ export function framebufferStdout(real, onFrame) {
555
586
  return true;
556
587
  }
557
588
  heldFrame = null;
558
- if (syncSize() || repaintRequested || Date.now() - lastFull >= repaintEvery)
589
+ const invalidated = syncSize() || repaintRequested || Date.now() - lastFull >= repaintEvery;
590
+ if (invalidated)
559
591
  invalidate();
560
592
  repaintRequested = false;
561
- // Build the new frame. Cleared first because a frame is a complete statement
562
- // about the rows it covers: a line that got shorter must leave blanks behind,
563
- // not the tail of what used to be there.
564
- pending.clear();
565
- parseFrame(pending, body);
566
- // A selection highlight is added HERE, to the finished frame, and never reaches
567
- // React. `clean` keeps the untinted frame so the highlight can be moved without a
568
- // re-render (see `refreshOverlay`); it is only maintained while something is
569
- // actually tinting, so a session that never drags pays nothing for it.
570
- if (hasFrameOverlay()) {
571
- if (clean.width !== pending.width || clean.height !== pending.height) {
572
- clean.resize(pending.width, pending.height);
593
+ // The same picture as the one already drawn: nothing to parse and nothing to diff. In the
594
+ // full-screen layout Ink repeats a frame it has already written, so a screen that is not
595
+ // changing still arrives as a frame many times a second, and most of the work of a frame is
596
+ // reading it. Never with a selection showing, which tints the screen on top of the frame.
597
+ const same = !invalidated && lastBody === body && !hasFrameOverlay();
598
+ let escape = "";
599
+ if (!same) {
600
+ // Build the new frame. Cleared first because a frame is a complete statement
601
+ // about the rows it covers: a line that got shorter must leave blanks behind,
602
+ // not the tail of what used to be there.
603
+ pending.clear();
604
+ parseFrame(pending, body);
605
+ // A selection highlight is added HERE, to the finished frame, and never reaches
606
+ // React. `clean` keeps the untinted frame so the highlight can be moved without a
607
+ // re-render (see `refreshOverlay`); it is only maintained while something is
608
+ // actually tinting, so a session that never drags pays nothing for it.
609
+ if (hasFrameOverlay()) {
610
+ if (clean.width !== pending.width || clean.height !== pending.height) {
611
+ clean.resize(pending.width, pending.height);
612
+ }
613
+ clean.copyFrom(pending);
614
+ cleanValid = true;
615
+ applyFrameOverlay(pending);
573
616
  }
574
- clean.copyFrom(pending);
575
- cleanValid = true;
576
- applyFrameOverlay(pending);
577
- }
578
- else {
579
- cleanValid = false;
617
+ else {
618
+ cleanValid = false;
619
+ }
620
+ escape = paint(onScreen, pending, 1);
621
+ // Swap rather than copy. Both grids are the same shape and `pending` is fully
622
+ // rewritten at the start of every frame, so the old on-screen grid is free to
623
+ // become the next scratch buffer — no allocation, no memcpy.
624
+ const previous = onScreen;
625
+ onScreen = pending;
626
+ pending = previous;
627
+ publishScreen(onScreen);
628
+ lastBody = hasFrameOverlay() ? null : body;
580
629
  }
581
- const escape = paint(onScreen, pending, 1);
582
- // Swap rather than copy. Both grids are the same shape and `pending` is fully
583
- // rewritten at the start of every frame, so the old on-screen grid is free to
584
- // become the next scratch buffer — no allocation, no memcpy.
585
- const previous = onScreen;
586
- onScreen = pending;
587
- pending = previous;
588
- publishScreen(onScreen);
589
- onFrame?.({ inBytes: data.length, outBytes: escape.length });
630
+ onFrame?.({ inBytes: data.length, outBytes: escape.length, unchanged: same });
590
631
  // Put the screen beyond doubt once this burst of frames stops. During a burst it
591
632
  // is only ever cancelled and re-armed, so it costs nothing until things settle.
592
633
  armIdleRepaint();
@@ -616,7 +657,7 @@ export function framebufferStdout(real, onFrame) {
616
657
  callback?.(null);
617
658
  return true;
618
659
  }
619
- return real.write(out, callback);
660
+ return send(out, callback);
620
661
  };
621
662
  return new Proxy(real, {
622
663
  get(target, prop, receiver) {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/cli/framebuffer/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/cli/framebuffer/writer.ts"],"names":[],"mappings":"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"}