@thenewlabs/entangle-serve 2.6.1 → 2.7.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.
@@ -1,11 +1,8 @@
1
- import { OutputHandler } from '@thenewlabs/entangle-utils';
2
1
  /** Minimum terminal size that can hold the shell plus a bottom status bar. */
3
2
  const MIN_COLS = 20;
4
3
  const MIN_ROWS = 6;
5
4
  /** Repaint cadence for the status bar: coalesce shell output into ~30ms frames. */
6
5
  const FRAME_MS = 30;
7
- /** Cap on the host's captured-log ring buffer backing the debug tab. */
8
- const DEBUG_MAX_LINES = 1000;
9
6
  /** Host window-management prefix (Ctrl-B), tmux-style. */
10
7
  const PREFIX = 0x02;
11
8
  /** Status-bar palette (tmux-style blue). */
@@ -14,7 +11,7 @@ const BAR_ACTIVE_BG = '\x1b[48;5;33m'; // brighter blue for the active tab
14
11
  const BAR_FG = '\x1b[97m'; // bright white text
15
12
  const RESET = '\x1b[0m';
16
13
  /**
17
- * Wire the host's own terminal to the shared workspace.
14
+ * Wire the host's own terminal to the {@link HostSession}.
18
15
  *
19
16
  * On a real, big-enough terminal the host sees their shell rendered RAW at full
20
17
  * width, using rows 1..(rows-1), with a blue tmux-style status bar pinned to the
@@ -22,26 +19,31 @@ const RESET = '\x1b[0m';
22
19
  * region keeps its scrolling clear of the bar; because output is passed through
23
20
  * byte-for-byte (no VtGrid), resizes stay clean. Elsewhere (too small, or not a
24
21
  * TTY) it falls back to raw pass-through.
22
+ *
23
+ * The session URL is only known once the relay assigns the capability, so the
24
+ * host subscribes to {@link HostSession.onUrl} and shows a brief "connecting…"
25
+ * screen until it arrives (index.ts sets it on the session).
25
26
  */
26
- export function attachHostTerminal(shared, output) {
27
+ export function attachHostTerminal(session, output) {
27
28
  const stdout = process.stdout;
28
29
  const stdin = process.stdin;
29
30
  const cols = stdout.columns || 0;
30
31
  const rows = stdout.rows || 0;
31
32
  const barCapable = !!stdout.isTTY && !!stdin.isTTY && cols >= MIN_COLS && rows >= MIN_ROWS;
32
- return barCapable
33
- ? attachBarTerminal(shared, output, cols, rows)
34
- : attachRawTerminal(shared, output);
33
+ if (barCapable)
34
+ attachBarTerminal(session, output, cols, rows);
35
+ else
36
+ attachRawTerminal(session, output);
35
37
  }
36
38
  /**
37
39
  * Blue-bottom-bar UI (the normal interactive host experience).
38
40
  *
39
- * Launch sequence: clear + "connecting…" on attach; then on setUrl clear again,
40
- * print an info banner (brand, share URL, key hint) at the top, set the scroll
41
- * region, size the shell to rows-1, paint its current screen from the replay,
42
- * draw the bar, and go live (raw pass-through + status bar).
41
+ * Launch sequence: clear + "connecting…" on attach; then on the URL arriving
42
+ * clear again, print an info banner (brand, share URL, key hint) at the top, set
43
+ * the scroll region, size the shell to rows-1, paint its current screen from the
44
+ * replay, draw the bar, and go live (raw pass-through + status bar).
43
45
  */
44
- function attachBarTerminal(shared, output, initialCols, initialRows) {
46
+ function attachBarTerminal(session, output, initialCols, initialRows) {
45
47
  const stdout = process.stdout;
46
48
  const stdin = process.stdin;
47
49
  const write = (s) => { try {
@@ -55,41 +57,18 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
55
57
  let cols = initialCols;
56
58
  let rows = initialRows;
57
59
  let live = false; // true once the URL is known and we're in pass-through
58
- let viewers = shared.viewerCount();
60
+ let viewers = session.viewerCount();
59
61
  let barDirty = false;
60
- // The capability URL, once the relay assigns it. Stored so the debug view's
61
- // pinned header can always show it (and refresh on a later setUrl).
62
- let url = null;
63
62
  // Which surface fills the shell area (rows 1..rows-1). 'shell' is the normal
64
- // raw pass-through; 'debug' shows the captured agent-log tail (Ctrl-B d).
63
+ // raw pass-through; 'debug' shows the captured agent-log tail (Ctrl-B l).
65
64
  let viewMode = 'shell';
66
- // Capped ring of captured agent logs. While the host owns stdout, agent logs
67
- // are redirected here (via the OutputHandler sink) instead of trampling the
68
- // terminal; the debug tab renders the tail of this buffer.
69
- const debugBuf = [];
65
+ // The captured agent logs live in the session's ring buffer (the session owns
66
+ // the OutputHandler sink); the debug tab renders the tail of that buffer and
67
+ // marks itself dirty when a new line arrives while it's showing.
70
68
  let debugDirty = false;
71
- const pushLog = (level, message, data) => {
72
- let line = `[${level}] ${message}`;
73
- if (data !== undefined && data !== null) {
74
- let extra;
75
- try {
76
- extra = typeof data === 'string' ? data : JSON.stringify(data);
77
- }
78
- catch {
79
- extra = String(data);
80
- }
81
- if (extra)
82
- line += ` ${extra}`;
83
- }
84
- debugBuf.push(line);
85
- if (debugBuf.length > DEBUG_MAX_LINES)
86
- debugBuf.splice(0, debugBuf.length - DEBUG_MAX_LINES);
87
- if (viewMode === 'debug')
88
- debugDirty = true;
89
- };
90
- // Local mirror of the workspace's window set, kept in sync via onWindowState
69
+ // Local mirror of the session's window set, kept in sync via onWindowState
91
70
  // and rendered as the tab row of the bar. Seeded with the current state.
92
- const initialState = shared.windowState();
71
+ const initialState = session.windowState();
93
72
  let windows = initialState.windows;
94
73
  let activeIndex = initialState.activeIndex;
95
74
  /**
@@ -105,8 +84,8 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
105
84
  const title = (windows[i].title || '').replace(/[\x00-\x1f\x7f]/g, '');
106
85
  segs.push({ text: ` ${i + 1}:${title} `, active: viewMode === 'shell' && i === activeIndex });
107
86
  }
108
- // A distinct debug tab after the window tabs; active while in debug view.
109
- segs.push({ text: ' debug ', active: viewMode === 'debug' });
87
+ // A distinct logs tab after the window tabs; active while in the log view.
88
+ segs.push({ text: ' logs ', active: viewMode === 'debug' });
110
89
  const viewerSeg = ` ${viewers} viewer${viewers === 1 ? '' : 's'} `;
111
90
  // Reserve room on the right for the viewer count when it fits.
112
91
  const showViewer = viewerSeg.length + 1 <= cols;
@@ -143,7 +122,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
143
122
  `${BAR_FG}⧉ entangle${RESET} — live shared session`,
144
123
  `Share this live session:`,
145
124
  ` ${BAR_FG}${link ?? 'connecting…'}${RESET}`,
146
- `Windows: Ctrl-B then c=new n/p=prev/next 1-9=select x=close d=debug`,
125
+ `Ctrl-B d=detach l=logs c=new n/p=win 1-9=select x=close`,
147
126
  ];
148
127
  // Render the debug tab: a PINNED HEADER (the info banner: brand, share URL,
149
128
  // key hint) at the top so the URL is always findable, then a blank separator,
@@ -154,10 +133,10 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
154
133
  return;
155
134
  debugDirty = false;
156
135
  const shellRows = Math.max(1, rows - 1);
157
- const header = bannerLines(url);
136
+ const header = bannerLines(session.getUrl());
158
137
  const headerRows = header.length + 1; // banner lines + one blank separator
159
138
  const tailRows = Math.max(0, shellRows - headerRows);
160
- const lines = tailRows > 0 ? debugBuf.slice(-tailRows) : [];
139
+ const lines = tailRows > 0 ? session.getLogBuffer().slice(-tailRows) : [];
161
140
  let out = '';
162
141
  let r = 0;
163
142
  for (; r < header.length && r < shellRows; r++) {
@@ -187,7 +166,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
187
166
  out += `\x1b[${r};1H\x1b[2K`;
188
167
  out += '\x1b[H';
189
168
  write(out);
190
- const replay = shared.getReplay();
169
+ const replay = session.getReplay();
191
170
  if (replay.length > 0)
192
171
  writeRaw(replay);
193
172
  drawBar();
@@ -217,7 +196,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
217
196
  drawBar();
218
197
  }, FRAME_MS);
219
198
  timer.unref?.();
220
- shared.onHostData((chunk) => {
199
+ session.onHostData((chunk) => {
221
200
  if (!live)
222
201
  return; // pre-live output is captured in the replay; painted on go-live
223
202
  if (viewMode === 'debug')
@@ -225,50 +204,59 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
225
204
  writeRaw(chunk);
226
205
  barDirty = true;
227
206
  });
228
- shared.onViewersChange((n) => { viewers = n; drawBar(); });
229
- shared.onWindowState((state) => {
207
+ session.onViewersChange((n) => { viewers = n; drawBar(); });
208
+ session.onWindowState((state) => {
230
209
  windows = state.windows;
231
210
  activeIndex = state.activeIndex;
232
211
  drawBar();
233
212
  });
234
- // Redirect all agent text-mode logs into the debug ring buffer instead of
235
- // stdout (which this bar UI owns). This both stops the logs from trampling
236
- // the terminal / scrolling the banner away and feeds the debug tab.
237
- OutputHandler.setLogSink(pushLog);
213
+ // The session captures agent logs into its ring buffer (it owns the
214
+ // OutputHandler sink); we only need to know when a new line arrives so the
215
+ // debug tab repaints its tail while it's the visible surface.
216
+ session.onLog(() => { if (viewMode === 'debug')
217
+ debugDirty = true; });
238
218
  const wasRaw = !!stdin.isRaw;
239
219
  stdin.setRawMode(true);
240
220
  stdin.resume();
241
221
  // Window-management commands after a Ctrl-B prefix. Unknown keys are swallowed.
242
- // `d` opens the debug view; every workspace op returns to (and repaints) the
243
- // shell view before running, so acting on a window always shows its output.
222
+ // `d` detaches (leaving the daemon session running; a no-op for an in-process
223
+ // session that has no detach), `l` opens the logs view; every workspace op
224
+ // returns to (and repaints) the shell view before running, so acting on a
225
+ // window always shows its output.
244
226
  const runCommand = (byte) => {
245
227
  const ch = String.fromCharCode(byte);
228
+ // Detach fires the session's onExit path, which runs restore()+exit below;
229
+ // don't force an exit here that would race it.
246
230
  if (ch === 'd') {
231
+ session.detach?.();
232
+ return;
233
+ }
234
+ if (ch === 'l') {
247
235
  enterDebug();
248
236
  return;
249
237
  }
250
238
  if (ch === 'c') {
251
239
  enterShell();
252
- shared.newWindow();
240
+ session.newWindow();
253
241
  }
254
242
  else if (ch === 'n') {
255
243
  enterShell();
256
- shared.nextWindow();
244
+ session.nextWindow();
257
245
  }
258
246
  else if (ch === 'p') {
259
247
  enterShell();
260
- shared.prevWindow();
248
+ session.prevWindow();
261
249
  }
262
250
  else if (ch === 'x') {
263
251
  enterShell();
264
- shared.closeWindow(activeIndex);
252
+ session.closeWindow(activeIndex);
265
253
  }
266
254
  else if (ch >= '0' && ch <= '9') {
267
255
  // Tabs are labelled 1-based ("1:shell" = index 0), so digit 1..9 selects
268
256
  // window 0..8 and 0 selects window 9 (ignored if out of range).
269
257
  enterShell();
270
258
  const digit = byte - 0x30;
271
- shared.selectWindow(digit === 0 ? 9 : digit - 1);
259
+ session.selectWindow(digit === 0 ? 9 : digit - 1);
272
260
  }
273
261
  };
274
262
  // Ctrl-B prefix state machine: a lone Ctrl-B arms the prefix; the next byte is
@@ -283,7 +271,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
283
271
  if (pendingPrefix) {
284
272
  pendingPrefix = false;
285
273
  if (byte === PREFIX)
286
- shared.write(new Uint8Array([PREFIX]));
274
+ session.write(new Uint8Array([PREFIX]));
287
275
  else
288
276
  runCommand(byte);
289
277
  start = i + 1;
@@ -291,13 +279,13 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
291
279
  }
292
280
  if (byte === PREFIX) {
293
281
  if (i > start)
294
- shared.write(new Uint8Array(d.subarray(start, i)));
282
+ session.write(new Uint8Array(d.subarray(start, i)));
295
283
  pendingPrefix = true;
296
284
  start = i + 1;
297
285
  }
298
286
  }
299
287
  if (d.length > start)
300
- shared.write(new Uint8Array(d.subarray(start)));
288
+ session.write(new Uint8Array(d.subarray(start)));
301
289
  };
302
290
  stdin.on('data', onInput);
303
291
  // Clean resize: drop the scroll region, clear, re-arm the region one row short,
@@ -312,7 +300,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
312
300
  write('\x1b[r');
313
301
  write('\x1b[2J\x1b[H');
314
302
  write(`\x1b[1;${shellRows}r`);
315
- shared.resize(cols, shellRows);
303
+ session.resize(cols, shellRows);
316
304
  // In debug view the shell won't redraw itself, so re-render the tail for the
317
305
  // new size; in shell view the shell's own SIGWINCH redraw fills the screen.
318
306
  if (viewMode === 'debug')
@@ -327,7 +315,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
327
315
  return;
328
316
  restored = true;
329
317
  clearInterval(timer);
330
- OutputHandler.setLogSink(null); // let any final logs print to stdout normally
318
+ session.dispose(); // release the log sink so any final logs print to stdout normally
331
319
  stdin.removeListener('data', onInput);
332
320
  stdout.removeListener('resize', onResize);
333
321
  write('\x1b[r'); // reset scroll region
@@ -341,7 +329,7 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
341
329
  }
342
330
  stdin.pause();
343
331
  };
344
- shared.onExit((code) => {
332
+ session.onExit((code) => {
345
333
  restore();
346
334
  write('\n');
347
335
  output.info('Shared session ended.');
@@ -355,48 +343,52 @@ function attachBarTerminal(shared, output, initialCols, initialRows) {
355
343
  const writeBanner = (link) => {
356
344
  write(bannerLines(link).map((l) => `${l}\r\n`).join(''));
357
345
  };
346
+ // The session URL is stored on the session (its pinned-header/getUrl source);
347
+ // we react to it arriving. The first URL drives the go-live launch sequence; a
348
+ // later refresh just marks the bar/pinned-header dirty.
349
+ session.onUrl((link) => {
350
+ if (live) { // URL refresh after we're already live
351
+ barDirty = true;
352
+ if (viewMode === 'debug')
353
+ debugDirty = true; // repaint the pinned header
354
+ return;
355
+ }
356
+ cols = stdout.columns || cols;
357
+ rows = stdout.rows || rows;
358
+ const shellRows = Math.max(1, rows - 1);
359
+ write('\x1b[2J\x1b[H');
360
+ writeBanner(link);
361
+ write(`\x1b[1;${shellRows}r`); // reserve the bottom row for the bar
362
+ session.resize(cols, shellRows); // shell is authoritative-sized to rows-1
363
+ const replay = session.getReplay(); // paint the shell's current screen below the banner
364
+ if (replay.length > 0)
365
+ writeRaw(replay);
366
+ live = true;
367
+ drawBar();
368
+ });
358
369
  // Connecting screen until the relay hands us the capability URL.
359
370
  write('\x1b[2J\x1b[H');
360
371
  write(`${BAR_FG}⧉ entangle — connecting…${RESET}`);
361
- return {
362
- setUrl(link) {
363
- url = link; // stored so the debug view's pinned header can always show it
364
- if (live) { // URL refresh after we're already live
365
- barDirty = true;
366
- if (viewMode === 'debug')
367
- debugDirty = true; // repaint the pinned header
368
- return;
369
- }
370
- cols = stdout.columns || cols;
371
- rows = stdout.rows || rows;
372
- const shellRows = Math.max(1, rows - 1);
373
- write('\x1b[2J\x1b[H');
374
- writeBanner(link);
375
- write(`\x1b[1;${shellRows}r`); // reserve the bottom row for the bar
376
- shared.resize(cols, shellRows); // shell is authoritative-sized to rows-1
377
- const replay = shared.getReplay(); // paint the shell's current screen below the banner
378
- if (replay.length > 0)
379
- writeRaw(replay);
380
- live = true;
381
- drawBar();
382
- },
383
- };
384
372
  }
385
373
  /**
386
374
  * Raw pass-through: mirror the shell byte-for-byte and forward keystrokes, with
387
375
  * no status bar. Used when the terminal is too small for a bar (or not a TTY).
388
376
  */
389
- function attachRawTerminal(shared, output) {
377
+ function attachRawTerminal(session, output) {
390
378
  const stdin = process.stdin;
391
379
  const stdout = process.stdout;
392
- const initial = shared.getReplay();
380
+ // No status bar and no debug tab here, so there's nowhere to surface captured
381
+ // logs — release the session's log sink so agent logs print to stdout as they
382
+ // did before this UI existed (the bar path keeps the sink for its debug tab).
383
+ session.dispose();
384
+ const initial = session.getReplay();
393
385
  if (initial.length > 0) {
394
386
  try {
395
387
  stdout.write(Buffer.from(initial));
396
388
  }
397
389
  catch { }
398
390
  }
399
- shared.onHostData((chunk) => { try {
391
+ session.onHostData((chunk) => { try {
400
392
  stdout.write(chunk);
401
393
  }
402
394
  catch { } });
@@ -404,15 +396,16 @@ function attachRawTerminal(shared, output) {
404
396
  if (stdin.isTTY)
405
397
  stdin.setRawMode(true);
406
398
  stdin.resume();
407
- const onInput = (d) => shared.write(new Uint8Array(d));
399
+ const onInput = (d) => session.write(new Uint8Array(d));
408
400
  stdin.on('data', onInput);
409
- const onResize = () => shared.resize(stdout.columns || 80, stdout.rows || 24);
401
+ const onResize = () => session.resize(stdout.columns || 80, stdout.rows || 24);
410
402
  stdout.on('resize', onResize);
411
403
  let restored = false;
412
404
  const restore = () => {
413
405
  if (restored)
414
406
  return;
415
407
  restored = true;
408
+ session.dispose(); // release the log sink so any final logs print to stdout normally
416
409
  stdin.removeListener('data', onInput);
417
410
  stdout.removeListener('resize', onResize);
418
411
  if (stdin.isTTY) {
@@ -423,16 +416,15 @@ function attachRawTerminal(shared, output) {
423
416
  }
424
417
  stdin.pause();
425
418
  };
426
- shared.onExit((code) => {
419
+ session.onExit((code) => {
427
420
  restore();
428
421
  output.info(`Shared session ended (code=${code ?? 0}).`);
429
422
  process.exit(code ?? 0);
430
423
  });
431
424
  process.on('exit', restore);
432
- return {
433
- setUrl(link) {
434
- output.info(`⧉ entangle session shared — open to collaborate:\n ${link}\n`);
435
- },
436
- };
425
+ // The relay hands us the capability URL after attach; print it once it arrives.
426
+ session.onUrl((link) => {
427
+ output.info(`⧉ entangle session shared — open to collaborate:\n ${link}\n`);
428
+ });
437
429
  }
438
430
  //# sourceMappingURL=host-terminal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-terminal.js","sourceRoot":"","sources":["../src/host-terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-terminal.js","sourceRoot":"","sources":["../src/host-terminal.ts"],"names":[],"mappings":"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"}