@thenewlabs/entangle-serve 2.7.0 → 2.9.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.
@@ -4,24 +4,36 @@ const CLEAR = Buffer.from('\x1b[2J\x1b[3J\x1b[H', 'utf8');
4
4
  /** Hard cap on concurrent windows so a client can't spawn unbounded shells. */
5
5
  const DEFAULT_MAX_WINDOWS = 16;
6
6
  /**
7
- * A shared, tmux-style workspace of windows synced across every attached client.
7
+ * A shared, tmux-style workspace of windows with a PER-CONSUMER active window.
8
8
  *
9
- * The workspace holds N windows, each its own {@link SharedSession} PTY; every
10
- * window keeps running in the background but only the ONE global active window's
11
- * output is streamed to clients' viewports and to the host terminal. Client
12
- * keystrokes go to the active window; the host terminal size is authoritative
13
- * and every window is sized to it.
9
+ * The workspace holds N windows, each its own {@link SharedSession} PTY. Every
10
+ * window keeps running in the background and its output is tapped once (in
11
+ * {@link spawnWindow}); each chunk is routed only to the CONSUMERS whose active
12
+ * window is the one that emitted it. A "consumer" is either the HOST (the
13
+ * host-channel callbacks, with its own {@link hostActiveIndex}) or a viewport
14
+ * (each with its own active index tracked in {@link viewportActive}). This lets
15
+ * connected viewers work on different windows independently instead of all
16
+ * following a single global active window.
14
17
  *
15
18
  * The host terminal binds to a workspace exactly as it used to bind to a single
16
19
  * SharedSession — {@link onHostData}, {@link onViewersChange}, {@link onExit},
17
- * {@link resize}, {@link write}, {@link getReplay}, {@link viewerCount} so a
18
- * single-window workspace behaves identically to the old shared terminal.
20
+ * {@link resize}, {@link write}, {@link getReplay}, {@link viewerCount}, and the
21
+ * window ops {@link newWindow}/{@link selectWindow}/{@link nextWindow}/
22
+ * {@link prevWindow}/{@link closeWindow}/{@link renameWindow} — which now drive
23
+ * the HOST's own active window. So from the host's point of view a single-window
24
+ * workspace behaves identically to the old shared terminal.
25
+ *
26
+ * Window sizing stays global: the host terminal size is authoritative and every
27
+ * window is sized to it (per-viewport sizing is out of scope).
19
28
  */
20
29
  export class SharedWorkspace {
21
30
  output;
22
31
  windows = [];
23
- activeIndex = 0;
32
+ /** The HOST consumer's active window (host is just one consumer). */
33
+ hostActiveIndex = 0;
24
34
  viewports = new Map();
35
+ /** Per-viewport active window index, keyed by sid. Defaults to 0 on attach. */
36
+ viewportActive = new Map();
25
37
  exited = false;
26
38
  cwd;
27
39
  maxReplayBytes;
@@ -45,30 +57,29 @@ export class SharedWorkspace {
45
57
  // preserved when nobody ever creates a second one.
46
58
  const first = this.spawnWindow();
47
59
  this.windows.push(first);
48
- this.activeIndex = 0;
49
- this.bindActiveOutput();
60
+ this.hostActiveIndex = 0;
50
61
  this.output.info(`Shared workspace started: 1 window, cols=${this.cols}, rows=${this.rows}`);
51
62
  }
52
63
  // --- host-facing API (mirrors the old SharedSession surface) -------------
53
- /** Register the host's local rendering callback for the active window. */
64
+ /** Register the host's local rendering callback for the host's active window. */
54
65
  onHostData(cb) { this.hostDataCb = cb; }
55
66
  /** Register a callback fired once when the workspace ends (last window exits). */
56
67
  onExit(cb) { this.exitCb = cb; }
57
68
  /** Register a callback fired whenever the attached-viewport count changes. */
58
69
  onViewersChange(cb) { this.viewersChangedCb = cb; }
59
70
  /**
60
- * Register a host callback fired whenever the window set changes — create,
61
- * close, switch, or rename. Lets the host render its own tab bar in-process
62
- * (the analogue of the {@link Viewport.onWindowState} push sent to clients).
63
- * Fires with the current {@link windowState}.
71
+ * Register a host callback fired whenever the host's window view changes —
72
+ * create, close, switch, or rename. Lets the host render its own tab bar
73
+ * in-process (the analogue of the {@link Viewport.onWindowState} push sent to
74
+ * clients). Fires with the host's current {@link windowState}.
64
75
  */
65
76
  onWindowState(cb) { this.hostWindowStateCb = cb; }
66
77
  get hasExited() { return this.exited; }
67
- /** Merge input (from the host) into the ACTIVE window. */
78
+ /** Merge input (from the host) into the HOST's active window. */
68
79
  write(data) {
69
80
  if (this.exited)
70
81
  return;
71
- this.windows[this.activeIndex]?.write(data);
82
+ this.windows[this.hostActiveIndex]?.write(data);
72
83
  }
73
84
  /** Resize the workspace (host is authoritative) — every window is sized to it. */
74
85
  resize(cols, rows) {
@@ -79,9 +90,9 @@ export class SharedWorkspace {
79
90
  for (const w of this.windows)
80
91
  w.resize(cols, rows);
81
92
  }
82
- /** Recent-output snapshot of the ACTIVE window (host's initial paint). */
93
+ /** Recent-output snapshot of the HOST's active window (host's initial paint). */
83
94
  getReplay() {
84
- return this.windows[this.activeIndex]?.getReplay() ?? new Uint8Array(0);
95
+ return this.windows[this.hostActiveIndex]?.getReplay() ?? new Uint8Array(0);
85
96
  }
86
97
  /** Number of attached client viewports. */
87
98
  viewerCount() { return this.viewports.size; }
@@ -96,35 +107,38 @@ export class SharedWorkspace {
96
107
  }
97
108
  // --- viewport-facing API (clients) ---------------------------------------
98
109
  /**
99
- * Attach a client viewport. Returns the current active-window replay so the
100
- * caller can send it as the viewport's initial output. The caller should then
101
- * send the current {@link windowState} so the client's tab bar populates.
110
+ * Attach a client viewport. The viewport starts on window 0. Returns window
111
+ * 0's replay so the caller can send it as the viewport's initial output. The
112
+ * caller should then send {@link windowStateForViewport} so the client's tab
113
+ * bar populates with the viewport's own active index.
102
114
  */
103
115
  attachViewport(v) {
104
116
  this.viewports.set(v.sid, v);
117
+ this.viewportActive.set(v.sid, 0);
105
118
  this.output.info(`Viewport attached: ${v.sid} (${this.viewports.size} total)`);
106
119
  this.viewersChangedCb?.(this.viewports.size);
107
- return { replay: this.getReplay() };
120
+ return { replay: this.windows[0]?.getReplay() ?? new Uint8Array(0) };
108
121
  }
109
122
  /** Detach a client viewport (disconnect / stream close). */
110
123
  detachViewport(sid) {
111
124
  if (this.viewports.delete(sid)) {
125
+ this.viewportActive.delete(sid);
112
126
  this.output.info(`Viewport detached: ${sid} (${this.viewports.size} remaining)`);
113
127
  this.viewersChangedCb?.(this.viewports.size);
114
128
  }
115
129
  }
116
- /** Route a viewport's keystrokes to the ACTIVE window. */
130
+ /** Route a viewport's keystrokes to THAT viewport's active window. */
117
131
  writeFromViewport(sid, data) {
118
132
  if (this.exited || !this.viewports.has(sid))
119
133
  return;
120
- this.windows[this.activeIndex]?.write(data);
134
+ this.windows[this.viewportActive.get(sid) ?? 0]?.write(data);
121
135
  }
122
136
  /**
123
- * Repaint a SINGLE viewport with the ACTIVE window's screen (the same
124
- * clear + replay a window switch sends, scoped to one sid). The host stays
125
- * authoritative over the shell size, so when a remote viewer resizes we can't
126
- * resize the PTY under everyone else; instead we re-send the active window's
127
- * screen to that viewer so its locally-corrupted display is redrawn clean.
137
+ * 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
139
+ * host stays authoritative over the shell size, so when a remote viewer
140
+ * resizes we can't resize the PTY under everyone else; instead we re-send that
141
+ * viewer's active window's screen so its locally-corrupted display is redrawn.
128
142
  */
129
143
  repaintViewport(sid) {
130
144
  if (this.exited)
@@ -132,7 +146,7 @@ export class SharedWorkspace {
132
146
  const v = this.viewports.get(sid);
133
147
  if (!v)
134
148
  return;
135
- const active = this.windows[this.activeIndex];
149
+ const active = this.windows[this.viewportActive.get(sid) ?? 0];
136
150
  if (!active)
137
151
  return;
138
152
  const payload = Buffer.concat([CLEAR, Buffer.from(active.getReplay())]);
@@ -141,45 +155,110 @@ export class SharedWorkspace {
141
155
  }
142
156
  catch { }
143
157
  }
144
- // --- window operations (WINDOW_CTL client->server) -----------------------
145
- /** Create a new window and switch to it. */
158
+ /**
159
+ * Switch a viewport's active window to `index` and repaint just it (no-op if
160
+ * out of range or already there). Only the given viewport moves; the host and
161
+ * every other viewport keep their own active window.
162
+ */
163
+ selectWindowForViewport(sid, index) {
164
+ if (this.exited || !this.viewports.has(sid))
165
+ return;
166
+ if (index < 0 || index >= this.windows.length)
167
+ return;
168
+ if (index === (this.viewportActive.get(sid) ?? 0))
169
+ return;
170
+ this.viewportActive.set(sid, index);
171
+ this.repaintViewport(sid);
172
+ this.pushViewportWindowState(sid);
173
+ }
174
+ /** Switch a viewport to its next window (wraps). */
175
+ nextWindowForViewport(sid) {
176
+ if (this.exited || !this.viewports.has(sid) || this.windows.length < 2)
177
+ return;
178
+ const cur = this.viewportActive.get(sid) ?? 0;
179
+ this.selectWindowForViewport(sid, (cur + 1) % this.windows.length);
180
+ }
181
+ /** Switch a viewport to its previous window (wraps). */
182
+ prevWindowForViewport(sid) {
183
+ if (this.exited || !this.viewports.has(sid) || this.windows.length < 2)
184
+ return;
185
+ const cur = this.viewportActive.get(sid) ?? 0;
186
+ this.selectWindowForViewport(sid, (cur - 1 + this.windows.length) % this.windows.length);
187
+ }
188
+ /**
189
+ * Create a new (global) window and switch ONLY this viewport onto it. The
190
+ * window list changed, so broadcast window-state to every consumer (each gets
191
+ * its OWN active index); the creating viewport is also repainted onto the new
192
+ * window. Respects the {@link maxWindows} cap.
193
+ */
194
+ newWindowForViewport(sid) {
195
+ if (this.exited || !this.viewports.has(sid))
196
+ return;
197
+ const win = this.spawnAndAppend();
198
+ if (!win)
199
+ return;
200
+ this.viewportActive.set(sid, this.windows.length - 1);
201
+ this.repaintViewport(sid);
202
+ this.broadcastWindowState();
203
+ }
204
+ /**
205
+ * Close the (global) window at `index` on behalf of a viewport. Killing its
206
+ * PTY drives the shared exit path, which removes the window and re-homes every
207
+ * consumer's active index. Closing the last window ends the whole workspace.
208
+ */
209
+ closeWindowFromViewport(sid, index) {
210
+ if (this.exited || !this.viewports.has(sid))
211
+ return;
212
+ if (index < 0 || index >= this.windows.length)
213
+ return;
214
+ try {
215
+ this.windows[index].kill();
216
+ }
217
+ catch { }
218
+ }
219
+ /** Current window state as seen by a viewport (shared list + its own active). */
220
+ windowStateForViewport(sid) {
221
+ const windows = this.windows.map((w) => ({ id: w.id, title: w.title }));
222
+ return { v: 1, kind: 'window-state', windows, activeIndex: this.viewportActive.get(sid) ?? 0 };
223
+ }
224
+ // --- window operations (drive the HOST's active window) ------------------
225
+ /** Create a new window and switch the HOST to it. */
146
226
  newWindow() {
147
227
  if (this.exited)
148
228
  return;
149
- if (this.windows.length >= this.maxWindows) {
150
- this.output.warn(`Window cap reached (${this.maxWindows}); ignoring new-window`);
229
+ const win = this.spawnAndAppend();
230
+ if (!win)
151
231
  return;
152
- }
153
- const win = this.spawnWindow();
154
- this.windows.push(win);
155
- this.setActive(this.windows.length - 1);
232
+ this.hostActiveIndex = this.windows.length - 1;
233
+ this.repaintHost();
156
234
  this.broadcastWindowState();
157
235
  }
158
- /** Switch the global active window to `index` (no-op if out of range/current). */
236
+ /** Switch the HOST's active window to `index` (no-op if out of range/current). */
159
237
  selectWindow(index) {
160
238
  if (this.exited)
161
239
  return;
162
- if (index < 0 || index >= this.windows.length || index === this.activeIndex)
240
+ if (index < 0 || index >= this.windows.length || index === this.hostActiveIndex)
163
241
  return;
164
- this.setActive(index);
165
- this.broadcastWindowState();
242
+ this.hostActiveIndex = index;
243
+ this.repaintHost();
244
+ this.sendHostWindowState();
166
245
  }
167
- /** Switch to the next window (wraps). */
246
+ /** Switch the HOST to the next window (wraps). */
168
247
  nextWindow() {
169
248
  if (this.windows.length < 2)
170
249
  return;
171
- this.selectWindow((this.activeIndex + 1) % this.windows.length);
250
+ this.selectWindow((this.hostActiveIndex + 1) % this.windows.length);
172
251
  }
173
- /** Switch to the previous window (wraps). */
252
+ /** Switch the HOST to the previous window (wraps). */
174
253
  prevWindow() {
175
254
  if (this.windows.length < 2)
176
255
  return;
177
- this.selectWindow((this.activeIndex - 1 + this.windows.length) % this.windows.length);
256
+ this.selectWindow((this.hostActiveIndex - 1 + this.windows.length) % this.windows.length);
178
257
  }
179
258
  /**
180
259
  * Close the window at `index`. Killing its PTY drives the shared exit path,
181
- * which removes the window, re-homes the active index, and broadcasts. Closing
182
- * the last window ends the whole workspace.
260
+ * which removes the window, re-homes every consumer's active index, and
261
+ * broadcasts. Closing the last window ends the whole workspace.
183
262
  */
184
263
  closeWindow(index) {
185
264
  if (this.exited)
@@ -201,10 +280,10 @@ export class SharedWorkspace {
201
280
  win.title = title;
202
281
  this.broadcastWindowState();
203
282
  }
204
- /** Current window state (the `msg` body of a window-state frame). */
283
+ /** Current window state from the HOST's point of view (activeIndex = host's). */
205
284
  windowState() {
206
285
  const windows = this.windows.map((w) => ({ id: w.id, title: w.title }));
207
- return { v: 1, kind: 'window-state', windows, activeIndex: this.activeIndex };
286
+ return { v: 1, kind: 'window-state', windows, activeIndex: this.hostActiveIndex };
208
287
  }
209
288
  // --- internals -----------------------------------------------------------
210
289
  spawnWindow() {
@@ -215,77 +294,94 @@ export class SharedWorkspace {
215
294
  ...(this.maxReplayBytes !== undefined ? { maxReplayBytes: this.maxReplayBytes } : {}),
216
295
  });
217
296
  win.onExit((code, signal) => this.handleWindowExit(win, code, signal));
297
+ // Tap EVERY window once, for its whole lifetime; the router delivers each
298
+ // chunk only to the consumers whose active window is this one.
299
+ win.onHostData((chunk) => this.routeWindowOutput(win, chunk));
300
+ return win;
301
+ }
302
+ /** Spawn + append a window, honoring the cap. Returns undefined at the cap. */
303
+ spawnAndAppend() {
304
+ if (this.windows.length >= this.maxWindows) {
305
+ this.output.warn(`Window cap reached (${this.maxWindows}); ignoring new-window`);
306
+ return undefined;
307
+ }
308
+ const win = this.spawnWindow();
309
+ this.windows.push(win);
218
310
  return win;
219
311
  }
220
312
  /**
221
- * Tap the active window's output and fan it out to the host + every viewport.
222
- * Only the active window is tapped; background windows keep running silently.
313
+ * Route one window's output to the consumers currently viewing it: the host
314
+ * (if its active window is `win`) and each viewport whose active window is
315
+ * `win`. Background windows keep running; a consumer only sees its own active.
223
316
  */
224
- bindActiveOutput() {
225
- const active = this.windows[this.activeIndex];
226
- if (!active)
317
+ routeWindowOutput(win, chunk) {
318
+ if (this.exited)
227
319
  return;
228
- active.onHostData((chunk) => {
320
+ if (this.windows[this.hostActiveIndex] === win)
229
321
  this.hostDataCb?.(chunk);
230
- if (this.viewports.size === 0)
231
- return;
232
- const bytes = new Uint8Array(chunk);
233
- for (const v of this.viewports.values()) {
322
+ if (this.viewports.size === 0)
323
+ return;
324
+ let bytes;
325
+ for (const [sid, v] of this.viewports) {
326
+ if (this.windows[this.viewportActive.get(sid) ?? 0] === win) {
327
+ if (bytes === undefined)
328
+ bytes = new Uint8Array(chunk);
234
329
  try {
235
330
  v.onData(bytes);
236
331
  }
237
332
  catch { }
238
333
  }
239
- });
240
- }
241
- /**
242
- * Switch the active window: detach the old window's output tap, tap the new
243
- * one, and repaint the host + every viewport (clear + new window's replay).
244
- * Does NOT broadcast window-state — callers pair this with broadcastWindowState.
245
- */
246
- setActive(index) {
247
- const prev = this.windows[this.activeIndex];
248
- if (prev)
249
- prev.onHostData(() => { }); // stop tapping the now-background window
250
- this.activeIndex = index;
251
- this.bindActiveOutput();
252
- this.repaintAll();
334
+ }
253
335
  }
254
- /** Repaint the host + every viewport with a clear + the active window's replay. */
255
- repaintAll() {
256
- const active = this.windows[this.activeIndex];
336
+ /** Repaint the HOST with a clear + its active window's replay. */
337
+ repaintHost() {
338
+ const active = this.windows[this.hostActiveIndex];
257
339
  if (!active)
258
340
  return;
259
341
  const payload = Buffer.concat([CLEAR, Buffer.from(active.getReplay())]);
260
342
  this.hostDataCb?.(payload);
261
- if (this.viewports.size > 0) {
262
- const bytes = new Uint8Array(payload);
263
- for (const v of this.viewports.values()) {
264
- try {
265
- v.onData(bytes);
266
- }
267
- catch { }
268
- }
269
- }
270
343
  }
271
- /** Notify the host + every attached client of the current window-state. */
272
- broadcastWindowState() {
273
- const state = this.windowState();
274
- this.hostWindowStateCb?.(state);
275
- if (this.viewports.size === 0)
344
+ /** Push the host its own window-state (host's active index). */
345
+ sendHostWindowState() {
346
+ this.hostWindowStateCb?.(this.windowState());
347
+ }
348
+ /** Push a single viewport its own window-state (its active index). */
349
+ pushViewportWindowState(sid) {
350
+ const v = this.viewports.get(sid);
351
+ if (!v)
276
352
  return;
277
- for (const v of this.viewports.values()) {
278
- try {
279
- v.onWindowState(state);
280
- }
281
- catch { }
353
+ try {
354
+ v.onWindowState(this.windowStateForViewport(sid));
282
355
  }
356
+ catch { }
357
+ }
358
+ /**
359
+ * Notify EVERY consumer of the current window-state: the host with its own
360
+ * active index, and each viewport with its own. Called when the shared window
361
+ * list changes (create / close / rename).
362
+ */
363
+ broadcastWindowState() {
364
+ this.sendHostWindowState();
365
+ for (const sid of this.viewports.keys())
366
+ this.pushViewportWindowState(sid);
367
+ }
368
+ /**
369
+ * Re-home one consumer's active index after the window at `idx` was removed.
370
+ * `len` is the post-removal window count. Returns the new active index and
371
+ * whether the consumer must be repainted (only when its active window was the
372
+ * one that vanished).
373
+ */
374
+ rehomeAfterClose(active, idx, len) {
375
+ if (active === idx)
376
+ return { active: Math.min(idx, len - 1), repaint: true };
377
+ if (active > idx)
378
+ return { active: active - 1, repaint: false };
379
+ return { active, repaint: false };
283
380
  }
284
381
  handleWindowExit(win, code, signal) {
285
382
  const idx = this.windows.indexOf(win);
286
383
  if (idx === -1)
287
384
  return;
288
- const wasActive = idx === this.activeIndex;
289
385
  this.windows.splice(idx, 1);
290
386
  // Last window gone: the whole workspace ends. Tell every viewport and the
291
387
  // host so the client streams and host process wind down.
@@ -298,18 +394,24 @@ export class SharedWorkspace {
298
394
  catch { }
299
395
  }
300
396
  this.viewports.clear();
397
+ this.viewportActive.clear();
301
398
  this.exitCb?.(code, signal);
302
399
  return;
303
400
  }
304
- if (wasActive) {
305
- // Re-home the active index onto a surviving neighbor and repaint everyone.
306
- this.activeIndex = Math.min(idx, this.windows.length - 1);
307
- this.bindActiveOutput();
308
- this.repaintAll();
309
- }
310
- else if (idx < this.activeIndex) {
311
- // A window before the active one vanished; keep pointing at the same window.
312
- this.activeIndex -= 1;
401
+ const len = this.windows.length;
402
+ // Re-home the HOST: if it was viewing the closed window, move it onto a
403
+ // surviving neighbor and repaint it; if it was after the closed one, shift
404
+ // down to keep pointing at the same window.
405
+ const host = this.rehomeAfterClose(this.hostActiveIndex, idx, len);
406
+ this.hostActiveIndex = host.active;
407
+ if (host.repaint)
408
+ this.repaintHost();
409
+ // Re-home every viewport the same way, each independently.
410
+ for (const sid of this.viewports.keys()) {
411
+ const r = this.rehomeAfterClose(this.viewportActive.get(sid) ?? 0, idx, len);
412
+ this.viewportActive.set(sid, r.active);
413
+ if (r.repaint)
414
+ this.repaintViewport(sid);
313
415
  }
314
416
  this.broadcastWindowState();
315
417
  }
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thenewlabs/entangle-serve",
3
- "version": "2.7.0",
3
+ "version": "2.9.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {
@@ -17,9 +17,9 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
20
- "@thenewlabs/entangle-crypto": "^2.7.0",
21
- "@thenewlabs/entangle-protocol": "^2.7.0",
22
- "@thenewlabs/entangle-utils": "^2.7.0",
20
+ "@thenewlabs/entangle-crypto": "^2.9.0",
21
+ "@thenewlabs/entangle-protocol": "^2.9.0",
22
+ "@thenewlabs/entangle-utils": "^2.9.0",
23
23
  "cborg": "^4.5.8",
24
24
  "commander": "^15.0.0",
25
25
  "ws": "^8.21.0"