@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.
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkK/C"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA2L/C"}
package/dist/daemon.js CHANGED
@@ -99,50 +99,56 @@ export async function runDaemon() {
99
99
  };
100
100
  process.on('SIGTERM', () => shutdown(0));
101
101
  process.on('SIGINT', () => shutdown(0));
102
- // Subscribe ONCE to the session and fan each event out to every client.
103
- localSession.onHostData((chunk) => broadcast({ t: 'data', chunk: encodeChunk(chunk) }));
104
- localSession.onWindowState((state) => broadcast({ t: 'window-state', state }));
102
+ // Subscribe ONCE to the SESSION-GLOBAL streams and fan each out to every
103
+ // client. Terminal output and window-state are NOT global anymore: each client
104
+ // gets its own workspace viewport (see onConnection) so it can sit on its own
105
+ // active window, so we deliberately do NOT broadcast onHostData/onWindowState.
105
106
  localSession.onViewersChange((n) => broadcast({ t: 'viewers', n }));
106
107
  localSession.onLog((line) => broadcast({ t: 'log', line }));
107
108
  localSession.onUrl((url) => broadcast({ t: 'url', url }));
108
109
  // Workspace ended (last window's shell exited) → tear the daemon down.
109
110
  localSession.onExit((code) => shutdown(code));
110
111
  // --- inbound client handling ---------------------------------------------
111
- const handleClientMessage = (msg, socket) => {
112
+ // A client's messages drive ITS OWN workspace viewport (keyed by `vpId`), so
113
+ // input/window ops only move that client's active window. Sizing stays global
114
+ // (the host/workspace size is authoritative), so hello/resize resize the whole
115
+ // workspace as before.
116
+ const handleClientMessage = (msg, socket, vpId) => {
112
117
  switch (msg.t) {
113
118
  case 'hello':
114
- localSession.resize(msg.cols, msg.rows);
119
+ workspace.resize(msg.cols, msg.rows);
115
120
  break;
116
121
  case 'input':
117
- localSession.write(decodeChunk(msg.data));
122
+ workspace.writeFromViewport(vpId, decodeChunk(msg.data));
118
123
  break;
119
124
  case 'resize':
120
- localSession.resize(msg.cols, msg.rows);
125
+ workspace.resize(msg.cols, msg.rows);
121
126
  break;
122
127
  case 'win':
123
128
  switch (msg.op) {
124
129
  case 'new':
125
- localSession.newWindow();
130
+ workspace.newWindowForViewport(vpId);
126
131
  break;
127
132
  case 'next':
128
- localSession.nextWindow();
133
+ workspace.nextWindowForViewport(vpId);
129
134
  break;
130
135
  case 'prev':
131
- localSession.prevWindow();
136
+ workspace.prevWindowForViewport(vpId);
132
137
  break;
133
138
  case 'select':
134
139
  if (msg.index !== undefined)
135
- localSession.selectWindow(msg.index);
140
+ workspace.selectWindowForViewport(vpId, msg.index);
136
141
  break;
137
142
  case 'close':
138
143
  if (msg.index !== undefined)
139
- localSession.closeWindow(msg.index);
144
+ workspace.closeWindowFromViewport(vpId, msg.index);
140
145
  break;
141
146
  }
142
147
  break;
143
148
  case 'detach':
144
- // Drop just this client; the daemon (and session) keep running.
149
+ // Drop just this client's viewport; the daemon (and session) keep running.
145
150
  clients.delete(socket);
151
+ workspace.detachViewport(vpId);
146
152
  try {
147
153
  socket.end();
148
154
  }
@@ -150,16 +156,40 @@ export async function runDaemon() {
150
156
  break;
151
157
  }
152
158
  };
159
+ let nextVpId = 0;
153
160
  const onConnection = (socket) => {
161
+ // Each connection is its own workspace viewport with an independent active
162
+ // window; reuse the connection counter as the viewport key.
163
+ const vpId = `client-${nextVpId++}`;
154
164
  clients.add(socket);
155
- const remove = () => { clients.delete(socket); };
165
+ const remove = () => {
166
+ clients.delete(socket);
167
+ workspace.detachViewport(vpId);
168
+ };
156
169
  socket.on('close', remove);
157
170
  socket.on('error', remove);
171
+ // Attach this client's viewport: the workspace multiplexes ITS active
172
+ // window's output onto this socket and pushes ITS own window-state.
173
+ const { replay } = workspace.attachViewport({
174
+ sid: vpId,
175
+ onData: (chunk) => { try {
176
+ writeMessage(socket, { t: 'data', chunk: encodeChunk(chunk) });
177
+ }
178
+ catch { /* dropped */ } },
179
+ onWindowState: (state) => { try {
180
+ writeMessage(socket, { t: 'window-state', state });
181
+ }
182
+ catch { /* dropped */ } },
183
+ onExit: (code) => { try {
184
+ writeMessage(socket, { t: 'exit', code });
185
+ }
186
+ catch { /* dropped */ } },
187
+ });
158
188
  createMessageReader(socket, (msg) => {
159
189
  // Only ClientToDaemon frames are expected inbound; a single bad message
160
190
  // must not take down the daemon.
161
191
  try {
162
- handleClientMessage(msg, socket);
192
+ handleClientMessage(msg, socket, vpId);
163
193
  }
164
194
  catch (err) {
165
195
  output.warn('Client message failed', err instanceof Error ? err.message : String(err));
@@ -168,16 +198,18 @@ export async function runDaemon() {
168
198
  socket.destroy();
169
199
  }
170
200
  catch { /* already gone */ } });
171
- // Push the current state immediately so the client's UI populates fast.
201
+ // Push this viewport's current state immediately so the client's UI
202
+ // populates fast. Sent synchronously (no await) right after attach, so live
203
+ // onData frames can't slip in before the replay.
172
204
  try {
173
205
  const url = localSession.getUrl();
174
206
  if (url)
175
207
  writeMessage(socket, { t: 'url', url });
176
- writeMessage(socket, { t: 'window-state', state: localSession.windowState() });
177
- writeMessage(socket, { t: 'viewers', n: localSession.viewerCount() });
208
+ writeMessage(socket, { t: 'window-state', state: workspace.windowStateForViewport(vpId) });
209
+ writeMessage(socket, { t: 'viewers', n: workspace.viewerCount() });
178
210
  for (const line of localSession.getLogBuffer())
179
211
  writeMessage(socket, { t: 'log', line });
180
- writeMessage(socket, { t: 'replay', chunk: encodeChunk(localSession.getReplay()) });
212
+ writeMessage(socket, { t: 'replay', chunk: encodeChunk(replay) });
181
213
  }
182
214
  catch {
183
215
  remove();
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"host-terminal.d.ts","sourceRoot":"","sources":["../src/host-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAU3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkBrD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAWpF"}
1
+ {"version":3,"file":"host-terminal.d.ts","sourceRoot":"","sources":["../src/host-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAU3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA8DrD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAWpF"}
@@ -10,6 +10,48 @@ const BAR_BG = '\x1b[48;5;25m'; // base blue background
10
10
  const BAR_ACTIVE_BG = '\x1b[48;5;33m'; // brighter blue for the active tab
11
11
  const BAR_FG = '\x1b[97m'; // bright white text
12
12
  const RESET = '\x1b[0m';
13
+ /** SGR mouse reporting: enable/disable click reporting for the status bar. */
14
+ const MOUSE_ENABLE = '\x1b[?1000h\x1b[?1006h';
15
+ const MOUSE_DISABLE = '\x1b[?1000l\x1b[?1006l';
16
+ /**
17
+ * Try to parse a well-formed SGR mouse sequence at `i` in `d`. Returns null for
18
+ * anything that isn't a complete `\x1b[<b;x;y(M|m)` so it passes through as
19
+ * ordinary input (including partial sequences split across chunks).
20
+ */
21
+ function matchMouse(d, i) {
22
+ if (d[i] !== 0x1b || d[i + 1] !== 0x5b /* [ */ || d[i + 2] !== 0x3c /* < */)
23
+ return null;
24
+ let j = i + 3;
25
+ const readNum = () => {
26
+ let n = 0;
27
+ let any = false;
28
+ while (j < d.length && d[j] >= 0x30 && d[j] <= 0x39) {
29
+ n = n * 10 + (d[j] - 0x30);
30
+ j++;
31
+ any = true;
32
+ }
33
+ return any ? n : null;
34
+ };
35
+ const button = readNum();
36
+ if (button === null)
37
+ return null;
38
+ if (d[j] !== 0x3b /* ; */)
39
+ return null;
40
+ j++;
41
+ const col = readNum();
42
+ if (col === null)
43
+ return null;
44
+ if (d[j] !== 0x3b)
45
+ return null;
46
+ j++;
47
+ const row = readNum();
48
+ if (row === null)
49
+ return null;
50
+ const fin = d[j];
51
+ if (fin !== 0x4d /* M */ && fin !== 0x6d /* m */)
52
+ return null;
53
+ return { length: j - i + 1, button, col, row, press: fin === 0x4d };
54
+ }
13
55
  /**
14
56
  * Wire the host's own terminal to the {@link HostSession}.
15
57
  *
@@ -39,9 +81,12 @@ export function attachHostTerminal(session, output) {
39
81
  * Blue-bottom-bar UI (the normal interactive host experience).
40
82
  *
41
83
  * 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).
84
+ * clear again, set the scroll region, size the shell to rows-1, enable SGR mouse
85
+ * reporting for the clickable bar, and go live on the WELCOME/log view (the
86
+ * pinned banner header + live event-log tail). The shell keeps running in the
87
+ * background; the host reaches it by clicking a window tab or Ctrl-B <digit>/n,
88
+ * which repaints it from the replay. The `⧉ entangle` bar label doubles as the
89
+ * button back to the welcome/log view.
45
90
  */
46
91
  function attachBarTerminal(session, output, initialCols, initialRows) {
47
92
  const stdout = process.stdout;
@@ -59,39 +104,72 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
59
104
  let live = false; // true once the URL is known and we're in pass-through
60
105
  let viewers = session.viewerCount();
61
106
  let barDirty = false;
62
- // Which surface fills the shell area (rows 1..rows-1). 'shell' is the normal
63
- // raw pass-through; 'debug' shows the captured agent-log tail (Ctrl-B l).
64
- let viewMode = 'shell';
107
+ // Which surface fills the shell area (rows 1..rows-1). 'shell' is the raw
108
+ // pass-through; 'debug' is the welcome/log view (pinned banner + event-log
109
+ // tail). We DEFAULT to 'debug' so the first thing the host sees on go-live is
110
+ // the welcome screen with the shareable URL; a window tab/Ctrl-B digit or n
111
+ // reveals the shell.
112
+ let viewMode = 'debug';
65
113
  // 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.
114
+ // the OutputHandler sink); the welcome/log view renders the tail of that
115
+ // buffer and marks itself dirty when a new line arrives while it's showing.
68
116
  let debugDirty = false;
117
+ // Clickable segments of the bar (rebuilt each buildBar), mapping a 1-based
118
+ // column span on the bar row to an action (the entangle label → welcome/log
119
+ // view; each window tab → switch to that window).
120
+ let clickTargets = [];
121
+ // Which DEC mouse-tracking modes the SHELL app has enabled, scanned from its
122
+ // output. When any is on, the app (vim/htop) wants mouse events, so we forward
123
+ // raw off-bar mouse sequences to it; otherwise we swallow them so bash doesn't
124
+ // receive click garbage. Mode 1006 is just SGR encoding, not a tracking mode.
125
+ const appMouseModes = new Set();
126
+ const appMouseOn = () => appMouseModes.has('1000') || appMouseModes.has('1002') || appMouseModes.has('1003');
127
+ const MOUSE_MODE_RE = /\x1b\[\?(1000|1002|1003|1006)(h|l)/g;
128
+ const scanAppMouse = (buf) => {
129
+ const s = Buffer.from(buf).toString('latin1');
130
+ MOUSE_MODE_RE.lastIndex = 0;
131
+ let m;
132
+ while ((m = MOUSE_MODE_RE.exec(s)) !== null) {
133
+ if (m[2] === 'h')
134
+ appMouseModes.add(m[1]);
135
+ else
136
+ appMouseModes.delete(m[1]);
137
+ }
138
+ };
69
139
  // Local mirror of the session's window set, kept in sync via onWindowState
70
140
  // and rendered as the tab row of the bar. Seeded with the current state.
71
141
  const initialState = session.windowState();
72
142
  let windows = initialState.windows;
73
143
  let activeIndex = initialState.activeIndex;
74
144
  /**
75
- * Compose the status bar for the bottom row: ` ⧉ entangle ` then 1-based
145
+ * Compose the status bar for the bottom row: ` ⧉ entangle ` (which doubles as
146
+ * the welcome/log button — brighter blue while the log view shows) then 1-based
76
147
  * window tabs (the active one in brighter blue) and a right-aligned viewer
77
148
  * count, all on blue and padded/truncated to exactly `cols` visible columns.
149
+ * Side effect: records each clickable segment's column span into clickTargets.
78
150
  */
79
151
  const buildBar = () => {
152
+ const targets = [];
80
153
  const segs = [
81
- { text: ' entangle ', active: false },
154
+ // The brand label is the welcome/log button; active while in that view.
155
+ { text: ' ⧉ entangle ', active: viewMode === 'debug', action: () => enterDebug() },
82
156
  ];
83
157
  for (let i = 0; i < windows.length; i++) {
84
158
  const title = (windows[i].title || '').replace(/[\x00-\x1f\x7f]/g, '');
85
- segs.push({ text: ` ${i + 1}:${title} `, active: viewMode === 'shell' && i === activeIndex });
159
+ const idx = i;
160
+ segs.push({
161
+ text: ` ${i + 1}:${title} `,
162
+ active: viewMode === 'shell' && i === activeIndex,
163
+ action: () => { enterShell(); session.selectWindow(idx); },
164
+ });
86
165
  }
87
- // A distinct logs tab after the window tabs; active while in the log view.
88
- segs.push({ text: ' logs ', active: viewMode === 'debug' });
89
166
  const viewerSeg = ` ${viewers} viewer${viewers === 1 ? '' : 's'} `;
90
167
  // Reserve room on the right for the viewer count when it fits.
91
168
  const showViewer = viewerSeg.length + 1 <= cols;
92
169
  const leftBudget = showViewer ? cols - viewerSeg.length : cols;
93
170
  // Emit the left segments up to leftBudget visible columns, truncating the
94
171
  // last one that overflows (each active segment is wrapped in its own bg).
172
+ // Record the on-screen column span of each clickable segment for hit-testing.
95
173
  let left = '';
96
174
  let leftVis = 0;
97
175
  for (const s of segs) {
@@ -99,11 +177,14 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
99
177
  break;
100
178
  const room = leftBudget - leftVis;
101
179
  const text = s.text.length > room ? s.text.slice(0, room) : s.text;
180
+ if (s.action)
181
+ targets.push({ start: leftVis + 1, end: leftVis + text.length, action: s.action });
102
182
  left += s.active ? `${BAR_ACTIVE_BG}${text}${BAR_BG}` : text;
103
183
  leftVis += text.length;
104
184
  }
105
185
  const fill = ' '.repeat(Math.max(0, cols - leftVis - (showViewer ? viewerSeg.length : 0)));
106
186
  const right = showViewer ? viewerSeg : '';
187
+ clickTargets = targets;
107
188
  return `${BAR_BG}${BAR_FG}${left}${fill}${right}${RESET}`;
108
189
  };
109
190
  // Draw the bar on the bottom row without disturbing the shell: save the cursor
@@ -115,26 +196,30 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
115
196
  barDirty = false;
116
197
  write(`\x1b7\x1b[${rows};1H\x1b[2K${buildBar()}\x1b8`);
117
198
  };
118
- // The info banner lines (brand, share URL, key hint), shared by the launch
119
- // banner printed on go-live and the debug view's pinned header so they match
120
- // exactly. Shows `connecting…` for the URL until it's known.
199
+ // The welcome banner lines (brand, intro, share URL, key hint) the pinned
200
+ // header of the welcome/log view. Shows `connecting…` for the URL until known.
121
201
  const bannerLines = (link) => [
122
202
  `${BAR_FG}⧉ entangle${RESET} — live shared session`,
203
+ `A shared terminal others can join at the URL below.`,
204
+ ``,
123
205
  `Share this live session:`,
124
206
  ` ${BAR_FG}${link ?? 'connecting…'}${RESET}`,
125
- `Ctrl-B d=detach l=logs c=new n/p=win 1-9=select x=close`,
207
+ ``,
208
+ `Ctrl-B d=detach l=logs c=new n/p=win 1-9=select x=close · or click the bar`,
126
209
  ];
127
- // Render the debug tab: a PINNED HEADER (the info banner: brand, share URL,
128
- // key hint) at the top so the URL is always findable, then a blank separator,
129
- // then the tail of the log buffer that fits, then repaint the bar. No
130
- // scrollback just the last rows.
210
+ // Render the welcome/log view: a PINNED HEADER (brand, intro, share URL, key
211
+ // hint) at the top so the URL is always findable, a "Recent activity:"
212
+ // separator, then the tail of the event-log buffer that fits (viewer
213
+ // connect/disconnect lines land here), then repaint the bar. No scrollback —
214
+ // just the last rows.
131
215
  const renderDebug = () => {
132
216
  if (!live)
133
217
  return;
134
218
  debugDirty = false;
135
219
  const shellRows = Math.max(1, rows - 1);
136
220
  const header = bannerLines(session.getUrl());
137
- const headerRows = header.length + 1; // banner lines + one blank separator
221
+ const sep = `${BAR_FG}Recent activity:${RESET}`;
222
+ const headerRows = header.length + 1; // banner lines + the separator line
138
223
  const tailRows = Math.max(0, shellRows - headerRows);
139
224
  const lines = tailRows > 0 ? session.getLogBuffer().slice(-tailRows) : [];
140
225
  let out = '';
@@ -143,9 +228,9 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
143
228
  out += `\x1b[${r + 1};1H\x1b[2K${header[r]}`; // header lines print as-is
144
229
  }
145
230
  if (r < shellRows) {
146
- out += `\x1b[${r + 1};1H\x1b[2K`;
231
+ out += `\x1b[${r + 1};1H\x1b[2K${sep}`;
147
232
  r++;
148
- } // blank separator
233
+ } // separator
149
234
  for (let i = 0; r < shellRows; r++, i++) {
150
235
  out += `\x1b[${r + 1};1H\x1b[2K`; // move to row, clear it
151
236
  const line = lines[i];
@@ -170,6 +255,9 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
170
255
  if (replay.length > 0)
171
256
  writeRaw(replay);
172
257
  drawBar();
258
+ // The replay may have re-disabled mouse (e.g. it ends after a full-screen
259
+ // app quit); re-assert our bar-click reporting so the bar stays clickable.
260
+ write(MOUSE_ENABLE);
173
261
  };
174
262
  const enterDebug = () => {
175
263
  if (viewMode === 'debug')
@@ -199,10 +287,18 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
199
287
  session.onHostData((chunk) => {
200
288
  if (!live)
201
289
  return; // pre-live output is captured in the replay; painted on go-live
202
- if (viewMode === 'debug')
203
- return; // still buffered in replay; not shown while in debug
204
- writeRaw(chunk);
205
- barDirty = true;
290
+ // Track the shell app's mouse mode even while the welcome/log view is up, so
291
+ // off-bar mouse passthrough is correct the moment we switch back to the shell.
292
+ const mouseWasOn = appMouseOn();
293
+ scanAppMouse(chunk);
294
+ if (viewMode !== 'debug') { // in the welcome/log view the shell is still buffered in replay
295
+ writeRaw(chunk);
296
+ barDirty = true;
297
+ // A full-screen app quitting turns mouse OFF, which also kills OUR bar-click
298
+ // reporting; re-assert it after the app's disable bytes have been written.
299
+ if (mouseWasOn && !appMouseOn())
300
+ write(MOUSE_ENABLE);
301
+ }
206
302
  });
207
303
  session.onViewersChange((n) => { viewers = n; drawBar(); });
208
304
  session.onWindowState((state) => {
@@ -259,14 +355,38 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
259
355
  session.selectWindow(digit === 0 ? 9 : digit - 1);
260
356
  }
261
357
  };
358
+ // Handle a parsed SGR mouse event. A left-button PRESS on the bar row (rows)
359
+ // is hit-tested against the recorded clickTargets and its action run — never
360
+ // forwarded to the shell. Any other event: if the shell app wants mouse, the
361
+ // ORIGINAL escape bytes are forwarded so vim/htop still get it; otherwise it's
362
+ // swallowed so bash doesn't receive click garbage.
363
+ const handleMouse = (m, raw) => {
364
+ if (m.row >= rows) { // on (or below) the bar row — the bar owns these
365
+ // button bits: 0/1 = button number, 32 = motion, 64 = wheel, 128 = extra;
366
+ // modifiers (shift/meta/ctrl, bits 2-4) are ignored. Left press = 0.
367
+ if (m.press && (m.button & 0xe3) === 0) {
368
+ for (const t of clickTargets) {
369
+ if (m.col >= t.start && m.col <= t.end) {
370
+ t.action();
371
+ break;
372
+ }
373
+ }
374
+ }
375
+ return; // never forward bar-row mouse events to the shell
376
+ }
377
+ if (appMouseOn())
378
+ session.write(new Uint8Array(raw)); // shell wants mouse
379
+ // else swallow: bash gets no garbage clicks
380
+ };
262
381
  // Ctrl-B prefix state machine: a lone Ctrl-B arms the prefix; the next byte is
263
- // a command (Ctrl-B again = a literal Ctrl-B to the active window). All other
264
- // bytes forward to the active window, flushed around each prefix boundary so
265
- // ordering across a window switch is preserved.
382
+ // a command (Ctrl-B again = a literal Ctrl-B to the active window). Well-formed
383
+ // SGR mouse sequences are intercepted (bar click / passthrough / swallow). All
384
+ // other bytes forward to the active window, flushed around each prefix or mouse
385
+ // boundary so ordering across a window switch is preserved.
266
386
  let pendingPrefix = false;
267
387
  const onInput = (d) => {
268
388
  let start = 0;
269
- for (let i = 0; i < d.length; i++) {
389
+ for (let i = 0; i < d.length;) {
270
390
  const byte = d[i];
271
391
  if (pendingPrefix) {
272
392
  pendingPrefix = false;
@@ -274,15 +394,28 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
274
394
  session.write(new Uint8Array([PREFIX]));
275
395
  else
276
396
  runCommand(byte);
277
- start = i + 1;
397
+ i++;
398
+ start = i;
399
+ continue;
400
+ }
401
+ const mouse = matchMouse(d, i);
402
+ if (mouse) {
403
+ if (i > start)
404
+ session.write(new Uint8Array(d.subarray(start, i)));
405
+ handleMouse(mouse, d.subarray(i, i + mouse.length));
406
+ i += mouse.length;
407
+ start = i;
278
408
  continue;
279
409
  }
280
410
  if (byte === PREFIX) {
281
411
  if (i > start)
282
412
  session.write(new Uint8Array(d.subarray(start, i)));
283
413
  pendingPrefix = true;
284
- start = i + 1;
414
+ i++;
415
+ start = i;
416
+ continue;
285
417
  }
418
+ i++;
286
419
  }
287
420
  if (d.length > start)
288
421
  session.write(new Uint8Array(d.subarray(start)));
@@ -318,6 +451,7 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
318
451
  session.dispose(); // release the log sink so any final logs print to stdout normally
319
452
  stdin.removeListener('data', onInput);
320
453
  stdout.removeListener('resize', onResize);
454
+ write(MOUSE_DISABLE); // stop SGR mouse reporting we enabled for the bar
321
455
  write('\x1b[r'); // reset scroll region
322
456
  write('\x1b[2J\x1b[H'); // clear screen + home, so no stale bar/shell is left behind
323
457
  write('\x1b[?25h'); // show cursor
@@ -337,16 +471,11 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
337
471
  });
338
472
  process.on('exit', restore);
339
473
  process.on('SIGINT', () => { restore(); process.exit(130); });
340
- // Info banner shown at the top when the session goes live. `\r\n` because raw
341
- // mode does not translate a bare `\n` into a carriage return. Reuses the same
342
- // `bannerLines` the debug view pins so the two always match.
343
- const writeBanner = (link) => {
344
- write(bannerLines(link).map((l) => `${l}\r\n`).join(''));
345
- };
346
474
  // 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) => {
475
+ // we react to it arriving. The first URL drives the go-live launch sequence
476
+ // (which lands on the welcome/log view); a later refresh just marks the
477
+ // bar/pinned-header dirty.
478
+ session.onUrl(() => {
350
479
  if (live) { // URL refresh after we're already live
351
480
  barDirty = true;
352
481
  if (viewMode === 'debug')
@@ -357,14 +486,14 @@ function attachBarTerminal(session, output, initialCols, initialRows) {
357
486
  rows = stdout.rows || rows;
358
487
  const shellRows = Math.max(1, rows - 1);
359
488
  write('\x1b[2J\x1b[H');
360
- writeBanner(link);
361
489
  write(`\x1b[1;${shellRows}r`); // reserve the bottom row for the bar
362
490
  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);
491
+ scanAppMouse(session.getReplay()); // seed app-mouse state from the shell's screen
492
+ write(MOUSE_ENABLE); // enable SGR mouse reporting for the clickable bar
366
493
  live = true;
367
- drawBar();
494
+ // Start on the welcome/log view (viewMode defaults to 'debug'): the pinned
495
+ // banner + event-log tail. The shell keeps running in the background.
496
+ renderDebug();
368
497
  });
369
498
  // Connecting screen until the relay hands us the capability URL.
370
499
  write('\x1b[2J\x1b[H');
@@ -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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"}