@thenewlabs/entangle-serve 2.9.0 → 2.11.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 (46) hide show
  1. package/dist/agent.d.ts +2 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +12 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/capability.d.ts +1 -0
  6. package/dist/capability.d.ts.map +1 -1
  7. package/dist/capability.js +1 -1
  8. package/dist/capability.js.map +1 -1
  9. package/dist/daemon.d.ts.map +1 -1
  10. package/dist/daemon.js +21 -0
  11. package/dist/daemon.js.map +1 -1
  12. package/dist/host-session.d.ts +44 -3
  13. package/dist/host-session.d.ts.map +1 -1
  14. package/dist/host-session.js +11 -1
  15. package/dist/host-session.js.map +1 -1
  16. package/dist/host-terminal.d.ts.map +1 -1
  17. package/dist/host-terminal.js +360 -14
  18. package/dist/host-terminal.js.map +1 -1
  19. package/dist/ipc.d.ts +24 -0
  20. package/dist/ipc.d.ts.map +1 -1
  21. package/dist/ipc.js.map +1 -1
  22. package/dist/multi-session.d.ts +2 -1
  23. package/dist/multi-session.d.ts.map +1 -1
  24. package/dist/multi-session.js +10 -3
  25. package/dist/multi-session.js.map +1 -1
  26. package/dist/remote-host-session.d.ts +11 -1
  27. package/dist/remote-host-session.d.ts.map +1 -1
  28. package/dist/remote-host-session.js +24 -2
  29. package/dist/remote-host-session.js.map +1 -1
  30. package/dist/session.d.ts +3 -2
  31. package/dist/session.d.ts.map +1 -1
  32. package/dist/session.js +3 -1
  33. package/dist/session.js.map +1 -1
  34. package/dist/shared-session.d.ts +50 -13
  35. package/dist/shared-session.d.ts.map +1 -1
  36. package/dist/shared-session.js +110 -25
  37. package/dist/shared-session.js.map +1 -1
  38. package/dist/shared-workspace.d.ts +59 -7
  39. package/dist/shared-workspace.d.ts.map +1 -1
  40. package/dist/shared-workspace.js +97 -15
  41. package/dist/shared-workspace.js.map +1 -1
  42. package/dist/stream-manager.d.ts +15 -2
  43. package/dist/stream-manager.d.ts.map +1 -1
  44. package/dist/stream-manager.js +96 -1
  45. package/dist/stream-manager.js.map +1 -1
  46. package/package.json +6 -4
@@ -1,28 +1,51 @@
1
1
  import * as pty from '@homebridge/node-pty-prebuilt-multiarch';
2
2
  import { randomBytes } from 'crypto';
3
+ // @xterm/headless + @xterm/addon-serialize are CommonJS. Under Node's ESM loader
4
+ // (how the published serve/dist runs) only their default export (module.exports)
5
+ // is reliably visible — a named `import { Terminal }` throws at runtime — so we
6
+ // import the default for the runtime VALUES and a type-only named import (erased
7
+ // at compile time) for the TYPES. esbuild's CJS bundle handles this the same.
8
+ import xtermHeadless from '@xterm/headless';
9
+ import xtermAddonSerialize from '@xterm/addon-serialize';
3
10
  import { getConfig, buildChildEnv } from '@thenewlabs/entangle-utils';
11
+ const XtermTerminal = xtermHeadless.Terminal;
12
+ const XtermSerializeAddon = xtermAddonSerialize.SerializeAddon;
13
+ /** Scrollback the per-window emulator retains (lines of history for serialize). */
14
+ const EMULATOR_SCROLLBACK = 5000;
15
+ /** Default scrollback lines a fresh attach/repaint replays (see shared-workspace). */
16
+ const DEFAULT_SCROLLBACK_LINES = 1000;
4
17
  /**
5
18
  * A single shared PTY — the per-window unit of a {@link SharedWorkspace}.
6
19
  *
7
20
  * Unlike the per-stream shells the StreamManager spawns, there is exactly ONE
8
21
  * shell here: its output fans out to the host renderer and all viewers, and its
9
22
  * input is merged from the host and all viewers (collaborative). Late joiners
10
- * get a bounded replay of recent output so their screen syncs on attach.
23
+ * are synced with a SERIALIZED current frame produced by an authoritative
24
+ * headless xterm emulator that consumes the PTY byte stream in lockstep.
25
+ *
26
+ * The emulator (one per window) is what makes window-switch repaints and attach
27
+ * syncs correct: instead of replaying a truncated ring of raw bytes — which
28
+ * cannot reconstruct a full-screen (alt-screen) app's current frame — we ask
29
+ * {@link SerializeAddon} for the terminal's current screen (plus optional
30
+ * scrollback). Replaying that reproduces exactly what the app is showing now,
31
+ * alt-screen and all (serialize emits the `\x1b[?1049h` + alt content when the
32
+ * app is on the alt buffer, or just the restored primary once it has quit).
11
33
  *
12
34
  * The host terminal size is authoritative — the shell is sized to the host's
13
35
  * (inner) region and viewers render that stream in their own terminals.
14
36
  *
15
37
  * In the multi-window model a SharedWorkspace owns N of these (one per window)
16
- * and taps the ACTIVE one via {@link onHostData} + {@link getReplay}; `id` and
38
+ * and taps the ACTIVE one via {@link onHostData} + {@link snapshot}; `id` and
17
39
  * `title` identify the window in the WINDOW_CTL window-state broadcast.
18
40
  */
19
41
  export class SharedSession {
20
42
  output;
21
43
  ptyProcess;
22
44
  viewers = new Map();
23
- replay = [];
24
- replayBytes = 0;
25
- maxReplayBytes;
45
+ /** Authoritative emulator fed the PTY stream; source of serialized frames. */
46
+ term;
47
+ serializeAddon;
48
+ termDisposed = false;
26
49
  exited = false;
27
50
  hostDataCb;
28
51
  exitCb;
@@ -38,9 +61,18 @@ export class SharedSession {
38
61
  const config = getConfig();
39
62
  this.cols = Math.max(1, opts.cols);
40
63
  this.rows = Math.max(1, opts.rows);
41
- this.maxReplayBytes = opts.maxReplayBytes ?? 256 * 1024;
42
64
  this.id = opts.id ?? randomBytes(6).toString('base64url');
43
65
  this.title = opts.title ?? 'shell';
66
+ // Authoritative headless emulator: fed every PTY byte so a snapshot can
67
+ // reconstruct the current frame. SerializeAddon requires allowProposedApi.
68
+ this.term = new XtermTerminal({
69
+ cols: this.cols,
70
+ rows: this.rows,
71
+ scrollback: EMULATOR_SCROLLBACK,
72
+ allowProposedApi: true,
73
+ });
74
+ this.serializeAddon = new XtermSerializeAddon();
75
+ this.term.loadAddon(this.serializeAddon);
44
76
  const env = buildChildEnv(config.agentEnvPassthrough, {});
45
77
  env.TERM = 'xterm-256color';
46
78
  this.ptyProcess = pty.spawn(config.agentShell, [], {
@@ -52,7 +84,15 @@ export class SharedSession {
52
84
  });
53
85
  this.ptyProcess.onData((data) => {
54
86
  const buf = Buffer.from(data, 'utf8');
55
- this.appendReplay(buf);
87
+ // Feed the emulator so a later snapshot reflects this output. xterm parses
88
+ // writes asynchronously (on a microtask), so a snapshot taken in the SAME
89
+ // tick as a write can miss the last chunk; that's fine here because
90
+ // snapshots only ever happen on a window switch or an attach — a different
91
+ // tick than the last live write — by which time the parse has drained. The
92
+ // live fan-out below is unchanged and byte-exact (streaming is not routed
93
+ // through the emulator).
94
+ if (!this.termDisposed)
95
+ this.term.write(buf);
56
96
  this.hostDataCb?.(buf);
57
97
  const bytes = new Uint8Array(buf);
58
98
  for (const v of this.viewers.values()) {
@@ -73,6 +113,7 @@ export class SharedSession {
73
113
  catch { }
74
114
  }
75
115
  this.viewers.clear();
116
+ this.disposeTerm();
76
117
  this.exitCb?.(code, signal);
77
118
  });
78
119
  this.output.info(`Shared session started: shell=${config.agentShell}, cols=${this.cols}, rows=${this.rows}`);
@@ -90,7 +131,7 @@ export class SharedSession {
90
131
  return;
91
132
  this.ptyProcess.write(typeof data === 'string' ? data : Buffer.from(data).toString('utf8'));
92
133
  }
93
- /** Resize the shared shell (host is authoritative). */
134
+ /** Resize the shared shell (host is authoritative) and its emulator. */
94
135
  resize(cols, rows) {
95
136
  if (this.exited || cols < 1 || rows < 1)
96
137
  return;
@@ -100,16 +141,23 @@ export class SharedSession {
100
141
  this.ptyProcess.resize(cols, rows);
101
142
  }
102
143
  catch { }
144
+ if (!this.termDisposed) {
145
+ try {
146
+ this.term.resize(cols, rows);
147
+ }
148
+ catch { }
149
+ }
103
150
  }
104
151
  /**
105
- * Attach a viewer. Returns the current replay snapshot so the caller can send
106
- * it to the viewer as the initial output and sync its screen.
152
+ * Attach a viewer. Returns the current serialized frame (with a page of
153
+ * scrollback) so the caller can send it as the viewer's initial output and
154
+ * sync its screen — including recent history — to the window's current state.
107
155
  */
108
156
  attach(viewer) {
109
157
  this.viewers.set(viewer.sid, viewer);
110
158
  this.output.info(`Viewer attached: ${viewer.sid} (${this.viewers.size} total)`);
111
159
  this.viewersChangedCb?.(this.viewers.size);
112
- return { replay: this.replaySnapshot() };
160
+ return { replay: this.snapshot({ scrollback: DEFAULT_SCROLLBACK_LINES }) };
113
161
  }
114
162
  /** Detach a viewer (disconnect / stream close). */
115
163
  detach(sid) {
@@ -119,28 +167,65 @@ export class SharedSession {
119
167
  }
120
168
  }
121
169
  viewerCount() { return this.viewers.size; }
122
- /** Current replay snapshot (recent output), e.g. for the host's initial paint. */
123
- getReplay() { return this.replaySnapshot(); }
170
+ /**
171
+ * A serialized snapshot of the window's CURRENT frame (what the emulator is
172
+ * showing right now), optionally prefixed with `opts.scrollback` lines of
173
+ * history. Replaying these bytes into a fresh/cleared terminal reproduces the
174
+ * window's screen — full-screen/alt-buffer apps included. Callers are sync, so
175
+ * this is sync; see the {@link ptyProcess} onData comment on why the emulator
176
+ * is guaranteed to be flushed by the time a switch/attach takes a snapshot.
177
+ */
178
+ snapshot(opts) {
179
+ if (this.termDisposed)
180
+ return new Uint8Array(0);
181
+ const text = this.serializeAddon.serialize({ scrollback: opts?.scrollback ?? 0 });
182
+ return new Uint8Array(Buffer.from(text, 'utf8'));
183
+ }
184
+ /** Back-compat alias for {@link snapshot} (host's initial paint / repaints). */
185
+ getReplay(opts) { return this.snapshot(opts); }
186
+ /**
187
+ * All buffer lines of the emulator — scrollback history plus the current
188
+ * screen, oldest first — each trimmed of trailing whitespace. This is the
189
+ * source for the host's copy-mode/scrollback pager: unlike {@link snapshot}
190
+ * (which serializes SGR-styled bytes for a terminal to REPLAY), this returns
191
+ * PLAIN TEXT for a pager to render. Colour/SGR reconstruction is an explicit
192
+ * non-goal here; the pager shows history text only.
193
+ *
194
+ * `buf.length` includes scrollback. If a full-screen (alt-screen) app is
195
+ * active the active buffer is the alt buffer, which has no scrollback — so the
196
+ * lines are just its current screen; that edge case is acceptable and not
197
+ * special-cased.
198
+ */
199
+ scrollbackLines() {
200
+ if (this.termDisposed)
201
+ return [];
202
+ const buf = this.term.buffer.active;
203
+ const lines = [];
204
+ for (let i = 0; i < buf.length; i++)
205
+ lines.push(buf.getLine(i)?.translateToString(true) ?? '');
206
+ return lines;
207
+ }
124
208
  kill() {
125
- if (this.exited)
209
+ if (this.exited) {
210
+ this.disposeTerm();
126
211
  return;
212
+ }
127
213
  try {
128
214
  this.ptyProcess.kill();
129
215
  }
130
216
  catch { }
217
+ // The emulator is released on the onExit path; if the PTY never reports exit
218
+ // the double-dispose guard makes an eventual dispose idempotent.
131
219
  }
132
- appendReplay(buf) {
133
- this.replay.push(buf);
134
- this.replayBytes += buf.length;
135
- // Drop oldest chunks once the bounded buffer is exceeded. Keep at least one
136
- // chunk so a single large burst still replays something.
137
- while (this.replayBytes > this.maxReplayBytes && this.replay.length > 1) {
138
- const dropped = this.replay.shift();
139
- this.replayBytes -= dropped.length;
220
+ /** Release the emulator's resources exactly once. */
221
+ disposeTerm() {
222
+ if (this.termDisposed)
223
+ return;
224
+ this.termDisposed = true;
225
+ try {
226
+ this.term.dispose();
140
227
  }
141
- }
142
- replaySnapshot() {
143
- return new Uint8Array(Buffer.concat(this.replay, this.replayBytes));
228
+ catch { }
144
229
  }
145
230
  }
146
231
  //# sourceMappingURL=shared-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-session.js","sourceRoot":"","sources":["../src/shared-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-session.js","sourceRoot":"","sources":["../src/shared-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,yCAAyC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,4BAA4B,CAAC;AAErF,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC7C,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,cAAc,CAAC;AAE/D,mFAAmF;AACnF,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,sFAAsF;AACtF,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAYtC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,aAAa;IAsBd;IArBF,UAAU,CAAW;IACrB,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,8EAA8E;IAC7D,IAAI,CAAW;IACf,cAAc,CAAiB;IACxC,YAAY,GAAG,KAAK,CAAC;IACrB,MAAM,GAAG,KAAK,CAAC;IAEf,UAAU,CAA2B;IACrC,MAAM,CAAwD;IAC9D,gBAAgB,CAA2B;IAE5C,IAAI,CAAS;IACb,IAAI,CAAS;IAEpB,2EAA2E;IAC3D,EAAE,CAAS;IAC3B,yEAAyE;IAClE,KAAK,CAAS;IAErB,YACU,MAAqB,EAC7B,IAA+E;QADvE,WAAM,GAAN,MAAM,CAAe;QAG7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;QAEnC,wEAAwE;QACxE,2EAA2E;QAC3E,IAAI,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAE5B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE;YACjD,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,eAAe;YACvC,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,2EAA2E;YAC3E,0EAA0E;YAC1E,oEAAoE;YACpE,2EAA2E;YAC3E,2EAA2E;YAC3E,0EAA0E;YAC1E,yBAAyB;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC;oBAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC;oBAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,UAAU,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,8EAA8E;IAC9E,UAAU,CAAC,EAA2B,IAAU,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;IAEvE,kEAAkE;IAClE,MAAM,CAAC,EAAwD,IAAU,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAE5F,4EAA4E;IAC5E,eAAe,CAAC,EAA2B,IAAU,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;IAElF,IAAI,SAAS,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,iEAAiE;IACjE,KAAK,CAAC,IAAyB;QAC7B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAAC,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,GAAW;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;YAC7E,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,WAAW,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAA8B;QACrC,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,gFAAgF;IAChF,SAAS,CAAC,IAA8B,IAAgB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErF;;;;;;;;;;;;OAYG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAChD,IAAI,CAAC;YAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACxC,6EAA6E;QAC7E,iEAAiE;IACnE,CAAC;IAED,qDAAqD;IAC7C,WAAW;QACjB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACvC,CAAC;CACF"}
@@ -7,7 +7,7 @@ import type { WindowStateBody } from '@thenewlabs/entangle-protocol';
7
7
  * window of its own choosing — its "active" window. The workspace multiplexes
8
8
  * that window's output onto the stream via {@link onData}, repaints it on a
9
9
  * per-viewport window switch (also via {@link onData}: a clear + the new
10
- * window's replay), and pushes that viewport's own {@link WindowStateBody} to
10
+ * window's serialized frame), and pushes that viewport's own {@link WindowStateBody} to
11
11
  * it via {@link onWindowState} on every change. Different viewports can sit on
12
12
  * different windows independently (or share one by being on the same window).
13
13
  * `onExit` fires only when the workspace as a whole ends (its last window
@@ -20,6 +20,16 @@ export interface Viewport {
20
20
  onExit: (code: number | null, signal: string | null) => void;
21
21
  onWindowState: (state: WindowStateBody) => void;
22
22
  }
23
+ /**
24
+ * Repaint bytes for an IN-PLACE redraw (e.g. a viewer resize): leave the alt
25
+ * buffer, home, clear the screen — but NOT the scrollback (no `\x1b[3J`), so the
26
+ * consumer keeps its accumulated history — then the serialized frame.
27
+ *
28
+ * Exported as the canonical in-place-repaint sequence; host-terminal replicates
29
+ * these same bytes inline for its alt-screen-exit repaint (it deliberately does
30
+ * not import this module, staying decoupled from the concrete workspace).
31
+ */
32
+ export declare function screenPayload(frame: Uint8Array): Buffer;
23
33
  /**
24
34
  * A shared, tmux-style workspace of windows with a PER-CONSUMER active window.
25
35
  *
@@ -53,7 +63,6 @@ export declare class SharedWorkspace {
53
63
  private viewportActive;
54
64
  private exited;
55
65
  private readonly cwd?;
56
- private readonly maxReplayBytes?;
57
66
  private readonly maxWindows;
58
67
  private hostDataCb?;
59
68
  private exitCb?;
@@ -65,7 +74,6 @@ export declare class SharedWorkspace {
65
74
  cols: number;
66
75
  rows: number;
67
76
  cwd?: string;
68
- maxReplayBytes?: number;
69
77
  maxWindows?: number;
70
78
  });
71
79
  /** Register the host's local rendering callback for the host's active window. */
@@ -86,8 +94,20 @@ export declare class SharedWorkspace {
86
94
  write(data: Uint8Array | string): void;
87
95
  /** Resize the workspace (host is authoritative) — every window is sized to it. */
88
96
  resize(cols: number, rows: number): void;
89
- /** Recent-output snapshot of the HOST's active window (host's initial paint). */
90
- getReplay(): Uint8Array;
97
+ /**
98
+ * Serialized current frame of the HOST's active window (host's initial paint).
99
+ * Defaults to no scrollback so the host's real terminal isn't flooded with
100
+ * history on go-live; the host-terminal passes `{ scrollback: 0 }` explicitly.
101
+ */
102
+ getReplay(opts?: {
103
+ scrollback?: number;
104
+ }): Uint8Array;
105
+ /**
106
+ * All buffer lines (scrollback history + current screen, oldest first) of the
107
+ * HOST's active window — the source for the host's own scrollback pager. Plain
108
+ * text only (see {@link SharedSession.scrollbackLines}).
109
+ */
110
+ scrollbackLines(): string[];
91
111
  /** Number of attached client viewports. */
92
112
  viewerCount(): number;
93
113
  /** Kill every window (which drives the workspace to exit). */
@@ -107,12 +127,25 @@ export declare class SharedWorkspace {
107
127
  writeFromViewport(sid: string, data: Uint8Array | string): void;
108
128
  /**
109
129
  * Repaint a SINGLE viewport with ITS OWN active window's screen (the same
110
- * clear + replay a per-viewport window switch sends, scoped to one sid). The
130
+ * switch payload — clear + serialized frame — a per-viewport window switch
131
+ * sends, scoped to one sid). The
111
132
  * host stays authoritative over the shell size, so when a remote viewer
112
133
  * resizes we can't resize the PTY under everyone else; instead we re-send that
113
134
  * viewer's active window's screen so its locally-corrupted display is redrawn.
114
135
  */
115
136
  repaintViewport(sid: string): void;
137
+ /**
138
+ * Redraw a SINGLE viewport's VISIBLE screen in place, PRESERVING its scrollback
139
+ * (a {@link screenPayload}: clear the screen but NOT the consumer's history — no
140
+ * `\x1b[3J`). Unlike {@link repaintViewport}'s switch payload, this is for a
141
+ * VIEWER RESIZE: the web client keeps its own accumulated xterm scrollback, so
142
+ * we must only redraw the current screen at the new size and must NOT wipe the
143
+ * history the client is holding. The host stays authoritative over the shell
144
+ * size, so a remote resize can't reshape the PTY under everyone else; instead we
145
+ * re-send just this viewer's active-window screen so its locally-reflowed
146
+ * display is redrawn clean.
147
+ */
148
+ repaintViewportScreen(sid: string): void;
116
149
  /**
117
150
  * Switch a viewport's active window to `index` and repaint just it (no-op if
118
151
  * out of range or already there). Only the given viewport moves; the host and
@@ -136,6 +169,21 @@ export declare class SharedWorkspace {
136
169
  * consumer's active index. Closing the last window ends the whole workspace.
137
170
  */
138
171
  closeWindowFromViewport(sid: string, index: number): void;
172
+ /**
173
+ * A FRESH serialized frame of THAT viewport's active window (mirrors
174
+ * {@link windowStateForViewport} but for the frame). Used by the daemon to
175
+ * answer a client's on-demand `refresh` with the window's live screen, rather
176
+ * than the single post-attach replay cached client-side.
177
+ */
178
+ snapshotForViewport(sid: string, opts?: {
179
+ scrollback?: number;
180
+ }): Uint8Array;
181
+ /**
182
+ * All buffer lines (scrollback history + current screen, oldest first) of
183
+ * THAT viewport's active window — the source for a client/host scrollback
184
+ * pager. Plain text only (see {@link SharedSession.scrollbackLines}).
185
+ */
186
+ scrollbackLinesForViewport(sid: string): string[];
139
187
  /** Current window state as seen by a viewport (shared list + its own active). */
140
188
  windowStateForViewport(sid: string): WindowStateBody;
141
189
  /** Create a new window and switch the HOST to it. */
@@ -165,7 +213,11 @@ export declare class SharedWorkspace {
165
213
  * `win`. Background windows keep running; a consumer only sees its own active.
166
214
  */
167
215
  private routeWindowOutput;
168
- /** Repaint the HOST with a clear + its active window's replay. */
216
+ /**
217
+ * Repaint the HOST with a switch payload + its active window's frame. No
218
+ * scrollback: the host's real terminal shouldn't be flooded with history on a
219
+ * window switch (its own scrollback is the terminal's, not the window's).
220
+ */
169
221
  private repaintHost;
170
222
  /** Push the host its own window-state (host's active index). */
171
223
  private sendHostWindowState;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-workspace.d.ts","sourceRoot":"","sources":["../src/shared-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGjF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,aAAa,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAe;IAsBxB,OAAO,CAAC,MAAM;IArBhB,OAAO,CAAC,OAAO,CAAuB;IACtC,qEAAqE;IACrE,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,+EAA+E;IAC/E,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAuD;IACtE,OAAO,CAAC,gBAAgB,CAAC,CAA0B;IACnD,OAAO,CAAC,iBAAiB,CAAC,CAAmC;IAEtD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;gBAGV,MAAM,EAAE,aAAa,EAC7B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBlG,iFAAiF;IACjF,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAE7C,kFAAkF;IAClF,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAEtE,8EAA8E;IAC9E,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAElD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAEzD,IAAI,SAAS,IAAI,OAAO,CAAwB;IAEhD,iEAAiE;IACjE,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAKtC,kFAAkF;IAClF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAOxC,iFAAiF;IACjF,SAAS,IAAI,UAAU;IAIvB,2CAA2C;IAC3C,WAAW,IAAI,MAAM;IAErB,8DAA8D;IAC9D,IAAI,IAAI,IAAI;IAQZ;;;;;OAKG;IACH,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE;IAQnD,4DAA4D;IAC5D,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQjC,sEAAsE;IACtE,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAK/D;;;;;;OAMG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUlC;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASzD,oDAAoD;IACpD,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMxC,wDAAwD;IACxD,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMxC;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASvC;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMzD,iFAAiF;IACjF,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAOpD,qDAAqD;IACrD,SAAS,IAAI,IAAI;IASjB,kFAAkF;IAClF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjC,kDAAkD;IAClD,UAAU,IAAI,IAAI;IAKlB,sDAAsD;IACtD,UAAU,IAAI,IAAI;IAKlB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,6DAA6D;IAC7D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhD,iFAAiF;IACjF,WAAW,IAAI,eAAe;IAO9B,OAAO,CAAC,WAAW;IAcnB,+EAA+E;IAC/E,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB,kEAAkE;IAClE,OAAO,CAAC,WAAW;IAOnB,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAI3B,sEAAsE;IACtE,OAAO,CAAC,uBAAuB;IAM/B;;;;OAIG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,gBAAgB;CAoCzB"}
1
+ {"version":3,"file":"shared-workspace.d.ts","sourceRoot":"","sources":["../src/shared-workspace.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,33 @@
1
1
  import { SharedSession } from './shared-session.js';
2
- /** Screen clear + home used to repaint a viewport/host on a window switch. */
3
- const CLEAR = Buffer.from('\x1b[2J\x1b[3J\x1b[H', 'utf8');
2
+ /** Default scrollback lines a viewport/attach repaint replays with its frame. */
3
+ const DEFAULT_SCROLLBACK_LINES = 1000;
4
4
  /** Hard cap on concurrent windows so a client can't spawn unbounded shells. */
5
5
  const DEFAULT_MAX_WINDOWS = 16;
6
+ /**
7
+ * Repaint bytes for a WINDOW SWITCH: leave any alt buffer (`\x1b[?1049l`), home,
8
+ * clear the screen AND scrollback (`\x1b[2J\x1b[3J`), then the serialized frame.
9
+ *
10
+ * The `\x1b[3J` (erase scrollback) is retained here ONLY because it is paired
11
+ * atomically with a serialize that REBUILDS the target window's own scrollback:
12
+ * we wipe the consumer's history and immediately repopulate it with the window
13
+ * we're switching to. That's why it no longer loses history the way the old raw
14
+ * `CLEAR` + truncated-ring replay did — the frame carries the history with it.
15
+ */
16
+ function switchPayload(frame) {
17
+ return Buffer.concat([Buffer.from('\x1b[?1049l\x1b[H\x1b[2J\x1b[3J'), Buffer.from(frame)]);
18
+ }
19
+ /**
20
+ * Repaint bytes for an IN-PLACE redraw (e.g. a viewer resize): leave the alt
21
+ * buffer, home, clear the screen — but NOT the scrollback (no `\x1b[3J`), so the
22
+ * consumer keeps its accumulated history — then the serialized frame.
23
+ *
24
+ * Exported as the canonical in-place-repaint sequence; host-terminal replicates
25
+ * these same bytes inline for its alt-screen-exit repaint (it deliberately does
26
+ * not import this module, staying decoupled from the concrete workspace).
27
+ */
28
+ export function screenPayload(frame) {
29
+ return Buffer.concat([Buffer.from('\x1b[?1049l\x1b[H\x1b[2J'), Buffer.from(frame)]);
30
+ }
6
31
  /**
7
32
  * A shared, tmux-style workspace of windows with a PER-CONSUMER active window.
8
33
  *
@@ -36,7 +61,6 @@ export class SharedWorkspace {
36
61
  viewportActive = new Map();
37
62
  exited = false;
38
63
  cwd;
39
- maxReplayBytes;
40
64
  maxWindows;
41
65
  hostDataCb;
42
66
  exitCb;
@@ -50,8 +74,6 @@ export class SharedWorkspace {
50
74
  this.rows = Math.max(1, opts.rows);
51
75
  if (opts.cwd !== undefined)
52
76
  this.cwd = opts.cwd;
53
- if (opts.maxReplayBytes !== undefined)
54
- this.maxReplayBytes = opts.maxReplayBytes;
55
77
  this.maxWindows = opts.maxWindows ?? DEFAULT_MAX_WINDOWS;
56
78
  // Start with a single window so the existing single-shell behavior is
57
79
  // preserved when nobody ever creates a second one.
@@ -90,9 +112,21 @@ export class SharedWorkspace {
90
112
  for (const w of this.windows)
91
113
  w.resize(cols, rows);
92
114
  }
93
- /** Recent-output snapshot of the HOST's active window (host's initial paint). */
94
- getReplay() {
95
- return this.windows[this.hostActiveIndex]?.getReplay() ?? new Uint8Array(0);
115
+ /**
116
+ * Serialized current frame of the HOST's active window (host's initial paint).
117
+ * Defaults to no scrollback so the host's real terminal isn't flooded with
118
+ * history on go-live; the host-terminal passes `{ scrollback: 0 }` explicitly.
119
+ */
120
+ getReplay(opts) {
121
+ return this.windows[this.hostActiveIndex]?.snapshot({ scrollback: opts?.scrollback ?? 0 }) ?? new Uint8Array(0);
122
+ }
123
+ /**
124
+ * All buffer lines (scrollback history + current screen, oldest first) of the
125
+ * HOST's active window — the source for the host's own scrollback pager. Plain
126
+ * text only (see {@link SharedSession.scrollbackLines}).
127
+ */
128
+ scrollbackLines() {
129
+ return this.windows[this.hostActiveIndex]?.scrollbackLines() ?? [];
96
130
  }
97
131
  /** Number of attached client viewports. */
98
132
  viewerCount() { return this.viewports.size; }
@@ -117,7 +151,9 @@ export class SharedWorkspace {
117
151
  this.viewportActive.set(v.sid, 0);
118
152
  this.output.info(`Viewport attached: ${v.sid} (${this.viewports.size} total)`);
119
153
  this.viewersChangedCb?.(this.viewports.size);
120
- return { replay: this.windows[0]?.getReplay() ?? new Uint8Array(0) };
154
+ // No clear prefix: the client's terminal is fresh, so just the serialized
155
+ // frame (with a page of scrollback) syncs its screen and history.
156
+ return { replay: this.windows[0]?.snapshot({ scrollback: DEFAULT_SCROLLBACK_LINES }) ?? new Uint8Array(0) };
121
157
  }
122
158
  /** Detach a client viewport (disconnect / stream close). */
123
159
  detachViewport(sid) {
@@ -135,7 +171,8 @@ export class SharedWorkspace {
135
171
  }
136
172
  /**
137
173
  * Repaint a SINGLE viewport with ITS OWN active window's screen (the same
138
- * clear + replay a per-viewport window switch sends, scoped to one sid). The
174
+ * switch payload — clear + serialized frame — a per-viewport window switch
175
+ * sends, scoped to one sid). The
139
176
  * host stays authoritative over the shell size, so when a remote viewer
140
177
  * resizes we can't resize the PTY under everyone else; instead we re-send that
141
178
  * viewer's active window's screen so its locally-corrupted display is redrawn.
@@ -149,7 +186,33 @@ export class SharedWorkspace {
149
186
  const active = this.windows[this.viewportActive.get(sid) ?? 0];
150
187
  if (!active)
151
188
  return;
152
- const payload = Buffer.concat([CLEAR, Buffer.from(active.getReplay())]);
189
+ const payload = switchPayload(active.snapshot({ scrollback: DEFAULT_SCROLLBACK_LINES }));
190
+ try {
191
+ v.onData(new Uint8Array(payload));
192
+ }
193
+ catch { }
194
+ }
195
+ /**
196
+ * Redraw a SINGLE viewport's VISIBLE screen in place, PRESERVING its scrollback
197
+ * (a {@link screenPayload}: clear the screen but NOT the consumer's history — no
198
+ * `\x1b[3J`). Unlike {@link repaintViewport}'s switch payload, this is for a
199
+ * VIEWER RESIZE: the web client keeps its own accumulated xterm scrollback, so
200
+ * we must only redraw the current screen at the new size and must NOT wipe the
201
+ * history the client is holding. The host stays authoritative over the shell
202
+ * size, so a remote resize can't reshape the PTY under everyone else; instead we
203
+ * re-send just this viewer's active-window screen so its locally-reflowed
204
+ * display is redrawn clean.
205
+ */
206
+ repaintViewportScreen(sid) {
207
+ if (this.exited)
208
+ return;
209
+ const v = this.viewports.get(sid);
210
+ if (!v)
211
+ return;
212
+ const active = this.windows[this.viewportActive.get(sid) ?? 0];
213
+ if (!active)
214
+ return;
215
+ const payload = screenPayload(active.snapshot({ scrollback: 0 }));
153
216
  try {
154
217
  v.onData(new Uint8Array(payload));
155
218
  }
@@ -216,6 +279,23 @@ export class SharedWorkspace {
216
279
  }
217
280
  catch { }
218
281
  }
282
+ /**
283
+ * A FRESH serialized frame of THAT viewport's active window (mirrors
284
+ * {@link windowStateForViewport} but for the frame). Used by the daemon to
285
+ * answer a client's on-demand `refresh` with the window's live screen, rather
286
+ * than the single post-attach replay cached client-side.
287
+ */
288
+ snapshotForViewport(sid, opts) {
289
+ return this.windows[this.viewportActive.get(sid) ?? 0]?.snapshot(opts) ?? new Uint8Array(0);
290
+ }
291
+ /**
292
+ * All buffer lines (scrollback history + current screen, oldest first) of
293
+ * THAT viewport's active window — the source for a client/host scrollback
294
+ * pager. Plain text only (see {@link SharedSession.scrollbackLines}).
295
+ */
296
+ scrollbackLinesForViewport(sid) {
297
+ return this.windows[this.viewportActive.get(sid) ?? 0]?.scrollbackLines() ?? [];
298
+ }
219
299
  /** Current window state as seen by a viewport (shared list + its own active). */
220
300
  windowStateForViewport(sid) {
221
301
  const windows = this.windows.map((w) => ({ id: w.id, title: w.title }));
@@ -291,7 +371,6 @@ export class SharedWorkspace {
291
371
  cols: this.cols,
292
372
  rows: this.rows,
293
373
  ...(this.cwd !== undefined ? { cwd: this.cwd } : {}),
294
- ...(this.maxReplayBytes !== undefined ? { maxReplayBytes: this.maxReplayBytes } : {}),
295
374
  });
296
375
  win.onExit((code, signal) => this.handleWindowExit(win, code, signal));
297
376
  // Tap EVERY window once, for its whole lifetime; the router delivers each
@@ -333,13 +412,16 @@ export class SharedWorkspace {
333
412
  }
334
413
  }
335
414
  }
336
- /** Repaint the HOST with a clear + its active window's replay. */
415
+ /**
416
+ * Repaint the HOST with a switch payload + its active window's frame. No
417
+ * scrollback: the host's real terminal shouldn't be flooded with history on a
418
+ * window switch (its own scrollback is the terminal's, not the window's).
419
+ */
337
420
  repaintHost() {
338
421
  const active = this.windows[this.hostActiveIndex];
339
422
  if (!active)
340
423
  return;
341
- const payload = Buffer.concat([CLEAR, Buffer.from(active.getReplay())]);
342
- this.hostDataCb?.(payload);
424
+ this.hostDataCb?.(switchPayload(active.snapshot({ scrollback: 0 })));
343
425
  }
344
426
  /** Push the host its own window-state (host's active index). */
345
427
  sendHostWindowState() {
@@ -1 +1 @@
1
- {"version":3,"file":"shared-workspace.js","sourceRoot":"","sources":["../src/shared-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-workspace.js","sourceRoot":"","sources":["../src/shared-workspace.ts"],"names":[],"mappings":"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"}