@av-pi-studio/server 0.0.67 → 0.0.69

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,10 +4,16 @@ import { type PtyBackend } from "./pty-backend.js";
4
4
  * Workspace-scoped PTY terminal manager (features/terminals.md § Behavior, § PTY size ownership,
5
5
  * § Output coalescing). PTYs are multiplexed over the binary terminal stream protocol by `slot`.
6
6
  *
7
- * Size ownership is **last-interacting-client-wins** and is a client concern: the manager only
8
- * resizes the PTY when a client explicitly sends a Resize (genuine viewport change / focus). It
9
- * NEVER resizes on subscribe/attach, and never broadcasts resize ownership — a resized PTY simply
10
- * redraws via normal Output, which every attached client renders in its own viewport.
7
+ * Size ownership is **last-interacting-client-wins** and which client may claim is a client concern.
8
+ * The manager resizes only when told to explicitly, never as a side effect of subscribe/attach, and
9
+ * never broadcasts resize ownership — a resized PTY simply redraws via normal Output, which every
10
+ * attached client renders in its own viewport. (`subscribe_terminal_request` in `terminal-rpc.ts`
11
+ * does resize before it calls `subscribe()`, using the size the attaching client sent; that is the
12
+ * handler's decision, not something this class does on its own.)
13
+ *
14
+ * Every requested size is validated here — see `isValidGrid`. This is the single choke point every
15
+ * path funnels through (create, binary Resize frame, subscribe payload), and a client is not a
16
+ * trusted source of dimensions.
11
17
  */
12
18
  /** A subscriber sink receives fully-encoded binary terminal frames. */
13
19
  export type TerminalFrameSink = (frame: Uint8Array) => void;
@@ -45,6 +51,22 @@ export interface TerminalManagerOptions {
45
51
  /** Operational logger: terminal opened/killed/exited (info), spawn failures (error). */
46
52
  logger?: Logger;
47
53
  }
54
+ /**
55
+ * Whether a client-supplied grid may be applied to a real PTY. Rejects rather than clamps: a clamp
56
+ * silently invents a size neither side asked for, and the client's own belief would then disagree
57
+ * with the PTY forever. A rejected resize is visible (`resize()` returns `false`) and the client's
58
+ * next genuine change still reports.
59
+ *
60
+ * Takes the pair as one object so it narrows both fields for the caller — the values arrive from the
61
+ * wire as `unknown`/possibly-`NaN` numbers, and no caller should have to assert them afterwards.
62
+ */
63
+ export declare function isValidGrid(grid: {
64
+ cols?: unknown;
65
+ rows?: unknown;
66
+ } | undefined): grid is {
67
+ cols: number;
68
+ rows: number;
69
+ };
48
70
  export declare class TerminalManager {
49
71
  private readonly backend;
50
72
  private readonly coalesceMs;
@@ -76,8 +98,13 @@ export declare class TerminalManager {
76
98
  /** Forward input bytes to the PTY. */
77
99
  input(slot: number, bytes: Uint8Array): boolean;
78
100
  /**
79
- * Explicit, client-initiated resize (genuine viewport change / focus). The only path that claims
80
- * PTY size. Never called from subscribe/attach.
101
+ * Apply a client-requested size. Returns `false` and does nothing for an unknown/closed slot or an
102
+ * invalid grid the binary `Resize` frame path reaches this with whatever bytes were on the wire,
103
+ * so this is where a hostile or malformed size is stopped rather than handed to a real PTY.
104
+ *
105
+ * The PTY and screen model are updated **before** `entry`, so a throw from either leaves the entry
106
+ * describing the size the terminal actually has instead of one that was only requested — `entry` is
107
+ * what `list()`/the subscribe echo report, and a lying entry propagates to every client.
81
108
  */
82
109
  resize(slot: number, cols: number, rows: number): boolean;
83
110
  /** One-shot current screen text (for CLI/MCP capture). Does not subscribe. Screen-accurate. */
@@ -93,4 +120,16 @@ export declare class TerminalManager {
93
120
  private flush;
94
121
  private onExit;
95
122
  }
123
+ /**
124
+ * Index of the first byte in `buffer` at or after `from` that can safely start a replay — i.e.
125
+ * not inside an incomplete escape/CSI/OSC/DCS/SOS/PM/APC sequence and not a UTF-8 continuation
126
+ * byte split off from its lead byte. Parses from the start of `buffer`, not from `from`, because
127
+ * whether `from` lands inside a sequence depends on where that sequence began, which may be
128
+ * before `from` — the exact case a raw byte-offset cut produces.
129
+ *
130
+ * Bounded: if the sequence straddling `from` never terminates before `buffer.length`, drops to
131
+ * `buffer.length` (nothing left of that unterminated tail is safe to replay) rather than scanning
132
+ * past the buffer or emitting a partial sequence.
133
+ */
134
+ export declare function safeReplayStart(buffer: Uint8Array, from: number): number;
96
135
  //# sourceMappingURL=terminal-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,40 @@
1
1
  import { encodeTerminalFrame, nextFreeSlot, SLOT_SPACE } from "@av-pi-studio/protocol";
2
2
  import { createDefaultPtyBackend, resolveExecutable, } from "./pty-backend.js";
3
3
  import { ScreenBuffer } from "./screen-buffer.js";
4
+ /**
5
+ * Grid bounds for any client-supplied size (`terminals.md` § PTY size ownership: "the daemon MUST
6
+ * validate every requested size, whatever path it arrives on").
7
+ *
8
+ * The floor is `ScreenBuffer`'s own minimum. The ceiling is far past any real display — a 5120px
9
+ * ultrawide at a 6px cell is ~850 columns — and exists to bound what one frame can make the headless
10
+ * grid allocate: cells scale with `cols * rows`, so an unchecked `1e9` is an instant OOM.
11
+ */
12
+ const MIN_GRID_COLS = 2;
13
+ const MIN_GRID_ROWS = 1;
14
+ const MAX_GRID_COLS = 1000;
15
+ const MAX_GRID_ROWS = 1000;
16
+ /**
17
+ * Whether a client-supplied grid may be applied to a real PTY. Rejects rather than clamps: a clamp
18
+ * silently invents a size neither side asked for, and the client's own belief would then disagree
19
+ * with the PTY forever. A rejected resize is visible (`resize()` returns `false`) and the client's
20
+ * next genuine change still reports.
21
+ *
22
+ * Takes the pair as one object so it narrows both fields for the caller — the values arrive from the
23
+ * wire as `unknown`/possibly-`NaN` numbers, and no caller should have to assert them afterwards.
24
+ */
25
+ export function isValidGrid(grid) {
26
+ if (grid === undefined)
27
+ return false;
28
+ const { cols, rows } = grid;
29
+ return (typeof cols === "number" &&
30
+ Number.isInteger(cols) &&
31
+ cols >= MIN_GRID_COLS &&
32
+ cols <= MAX_GRID_COLS &&
33
+ typeof rows === "number" &&
34
+ Number.isInteger(rows) &&
35
+ rows >= MIN_GRID_ROWS &&
36
+ rows <= MAX_GRID_ROWS);
37
+ }
4
38
  export class TerminalManager {
5
39
  backend;
6
40
  coalesceMs;
@@ -37,8 +71,10 @@ export class TerminalManager {
37
71
  if (slot === null)
38
72
  throw new Error("no free terminal slot (256 terminals already open)");
39
73
  this.slotCursor = (slot + 1) % SLOT_SPACE;
40
- const cols = options.cols ?? 80;
41
- const rows = options.rows ?? 24;
74
+ // An invalid client-supplied grid falls back to the 80×24 default rather than failing the spawn:
75
+ // the caller merely loses its size claim, and its first real measurement will reconcile. The
76
+ // response echoes what the PTY actually got, so the client never believes the size it asked for.
77
+ const { cols, rows } = isValidGrid(options) ? options : { cols: 80, rows: 24 };
42
78
  const shell = options.shell ?? this.defaultShell;
43
79
  let pty;
44
80
  try {
@@ -85,7 +121,7 @@ export class TerminalManager {
85
121
  entry,
86
122
  pty,
87
123
  subscribers: new Set(),
88
- screen: new Uint8Array(0),
124
+ screen: new SnapshotRing(this.snapshotBytes),
89
125
  screenModel: new ScreenBuffer(cols, rows),
90
126
  pending: [],
91
127
  flushTimer: null,
@@ -104,7 +140,7 @@ export class TerminalManager {
104
140
  if (!managed)
105
141
  throw new Error(`no terminal in slot ${slot}`);
106
142
  // Snapshot first (rebuilds screen state), then live output.
107
- sink(encodeTerminalFrame({ opcode: "Snapshot", slot, data: managed.screen.slice() }));
143
+ sink(encodeTerminalFrame({ opcode: "Snapshot", slot, data: managed.screen.bytes() }));
108
144
  managed.subscribers.add(sink);
109
145
  return () => {
110
146
  managed.subscribers.delete(sink);
@@ -126,17 +162,26 @@ export class TerminalManager {
126
162
  return true;
127
163
  }
128
164
  /**
129
- * Explicit, client-initiated resize (genuine viewport change / focus). The only path that claims
130
- * PTY size. Never called from subscribe/attach.
165
+ * Apply a client-requested size. Returns `false` and does nothing for an unknown/closed slot or an
166
+ * invalid grid the binary `Resize` frame path reaches this with whatever bytes were on the wire,
167
+ * so this is where a hostile or malformed size is stopped rather than handed to a real PTY.
168
+ *
169
+ * The PTY and screen model are updated **before** `entry`, so a throw from either leaves the entry
170
+ * describing the size the terminal actually has instead of one that was only requested — `entry` is
171
+ * what `list()`/the subscribe echo report, and a lying entry propagates to every client.
131
172
  */
132
173
  resize(slot, cols, rows) {
133
174
  const managed = this.terminals.get(slot);
134
175
  if (!managed || managed.entry.closed)
135
176
  return false;
136
- managed.entry.cols = cols;
137
- managed.entry.rows = rows;
177
+ if (!isValidGrid({ cols, rows }))
178
+ return false;
179
+ if (managed.entry.cols === cols && managed.entry.rows === rows)
180
+ return true;
138
181
  managed.pty.resize(cols, rows);
139
182
  managed.screenModel.resize(cols, rows);
183
+ managed.entry.cols = cols;
184
+ managed.entry.rows = rows;
140
185
  return true;
141
186
  }
142
187
  /** One-shot current screen text (for CLI/MCP capture). Does not subscribe. Screen-accurate. */
@@ -168,7 +213,7 @@ export class TerminalManager {
168
213
  // ─── Internals ───────────────────────────────────────────────────────────
169
214
  onOutput(managed, data) {
170
215
  // Append to the transient screen snapshot (bounded ring) for binary client replay.
171
- managed.screen = appendBounded(managed.screen, data, this.snapshotBytes);
216
+ managed.screen.append(data);
172
217
  // Feed the headless grid for screen-accurate text capture.
173
218
  managed.screenModel.write(data);
174
219
  // Coalesce before broadcast.
@@ -203,9 +248,153 @@ export class TerminalManager {
203
248
  managed.subscribers.clear();
204
249
  }
205
250
  }
206
- function appendBounded(buffer, data, max) {
207
- const combined = concat([buffer, data]);
208
- return combined.length <= max ? combined : combined.slice(combined.length - max);
251
+ /**
252
+ * Escape-safe trim: cutting the retained ring at a raw byte offset frequently lands
253
+ * mid-escape-sequence (`terminals.md` § Restore / snapshot, tier 1). The bytes after such a cut are
254
+ * the sequence's tail — parameter digits, an SGR/cursor final byte, an OSC payload — which the
255
+ * emulator on replay consumes as garbage input instead of the printable text it actually is,
256
+ * corrupting everything after it. `safeReplayStart` finds the nearest safe boundary at or after the
257
+ * naive cut instead; `SnapshotRing.compact` is its only caller.
258
+ */
259
+ const ESC = 0x1b;
260
+ const BEL = 0x07;
261
+ function isCsiFinalByte(byte) {
262
+ return byte >= 0x40 && byte <= 0x7e;
263
+ }
264
+ function isUtf8ContinuationByte(byte) {
265
+ return byte >= 0x80 && byte <= 0xbf;
266
+ }
267
+ /** DCS (`P`), SOS (`X`), PM (`^`), APC (`_`) — all string-typed, all terminated by ST (`ESC \`). */
268
+ function startsStringSequence(byte) {
269
+ return byte === 0x50 || byte === 0x58 || byte === 0x5e || byte === 0x5f;
270
+ }
271
+ /**
272
+ * Index of the first byte in `buffer` at or after `from` that can safely start a replay — i.e.
273
+ * not inside an incomplete escape/CSI/OSC/DCS/SOS/PM/APC sequence and not a UTF-8 continuation
274
+ * byte split off from its lead byte. Parses from the start of `buffer`, not from `from`, because
275
+ * whether `from` lands inside a sequence depends on where that sequence began, which may be
276
+ * before `from` — the exact case a raw byte-offset cut produces.
277
+ *
278
+ * Bounded: if the sequence straddling `from` never terminates before `buffer.length`, drops to
279
+ * `buffer.length` (nothing left of that unterminated tail is safe to replay) rather than scanning
280
+ * past the buffer or emitting a partial sequence.
281
+ */
282
+ export function safeReplayStart(buffer, from) {
283
+ if (from <= 0)
284
+ return 0;
285
+ if (from >= buffer.length)
286
+ return buffer.length;
287
+ let state = "normal";
288
+ for (let i = 0; i < buffer.length; i++) {
289
+ if (state === "normal" && i >= from && !isUtf8ContinuationByte(buffer[i]))
290
+ return i;
291
+ const byte = buffer[i];
292
+ switch (state) {
293
+ case "normal":
294
+ if (byte === ESC)
295
+ state = "esc";
296
+ break;
297
+ case "esc":
298
+ if (byte === 0x5b /* [ */)
299
+ state = "csi";
300
+ else if (byte === 0x5d /* ] */)
301
+ state = "osc";
302
+ else if (startsStringSequence(byte))
303
+ state = "string";
304
+ else
305
+ state = "normal"; // two-byte ESC form: this byte was its own terminator
306
+ break;
307
+ case "csi":
308
+ if (isCsiFinalByte(byte))
309
+ state = "normal";
310
+ break;
311
+ case "osc":
312
+ if (byte === BEL)
313
+ state = "normal";
314
+ else if (byte === ESC)
315
+ state = "osc-esc";
316
+ break;
317
+ case "osc-esc":
318
+ if (byte === 0x5c /* \ */)
319
+ state = "normal";
320
+ else if (byte !== ESC)
321
+ state = "osc";
322
+ break;
323
+ case "string":
324
+ if (byte === ESC)
325
+ state = "string-esc";
326
+ break;
327
+ case "string-esc":
328
+ if (byte === 0x5c)
329
+ state = "normal";
330
+ else if (byte !== ESC)
331
+ state = "string";
332
+ break;
333
+ }
334
+ }
335
+ // Ran off the end still inside an unterminated sequence (or a run of continuation bytes with no
336
+ // following lead byte) — nothing from `from` onward is a safe start.
337
+ return buffer.length;
338
+ }
339
+ /**
340
+ * Fraction of the cap the ring keeps when it compacts. The reclaimed headroom (the remaining
341
+ * quarter) is what makes both costs below amortized rather than per-chunk.
342
+ */
343
+ const RING_LOW_WATER = 0.75;
344
+ /**
345
+ * Bounded, contiguous byte ring holding the transient replay snapshot for one terminal.
346
+ *
347
+ * This sits on the daemon's hottest path — every byte of every terminal passes through `append` —
348
+ * so the two O(ring) costs are deliberately amortized. The naive version rebuilt the whole buffer
349
+ * per chunk (`concat`) *and* re-ran the escape-safe scan per chunk once full, which on a build
350
+ * spewing megabytes meant tens of thousands of full-ring copies and scans.
351
+ *
352
+ * - **Append is O(chunk).** Bytes are memcpy'd into spare capacity behind a write cursor; nothing
353
+ * else moves. Only when the cap would be exceeded does a compaction run.
354
+ * - **Compaction is O(ring) but rare.** It reclaims down to `RING_LOW_WATER`, so the next one is a
355
+ * whole quarter-cap of output away instead of one chunk away.
356
+ *
357
+ * The bytes stay contiguous because `safeReplayStart` must parse from the start of the retained
358
+ * region — whether an offset sits mid-sequence depends on where that sequence began, which a
359
+ * chunk-list representation could not answer without flattening first.
360
+ */
361
+ class SnapshotRing {
362
+ max;
363
+ buf;
364
+ lowWater;
365
+ len = 0;
366
+ constructor(max) {
367
+ this.max = max;
368
+ this.buf = new Uint8Array(max);
369
+ // `max` can be tiny in tests; never let the target reclaim the entire ring.
370
+ this.lowWater = Math.max(1, Math.floor(max * RING_LOW_WATER));
371
+ }
372
+ /** The retained bytes. A view, not a copy — `encodeTerminalFrame` copies into the frame it builds. */
373
+ bytes() {
374
+ return this.buf.subarray(0, this.len);
375
+ }
376
+ append(data) {
377
+ // A single chunk at least as large as the whole ring replaces it outright: everything currently
378
+ // retained is older than bytes we are about to drop anyway.
379
+ if (data.length >= this.max) {
380
+ const start = safeReplayStart(data, data.length - this.lowWater);
381
+ this.len = data.length - start;
382
+ this.buf.set(data.subarray(start), 0);
383
+ return;
384
+ }
385
+ if (this.len + data.length > this.max) {
386
+ // Drop enough that the post-append length lands on the low-water mark.
387
+ this.compact(this.len + data.length - this.lowWater);
388
+ }
389
+ this.buf.set(data, this.len);
390
+ this.len += data.length;
391
+ }
392
+ /** Discard the oldest `drop` bytes, rounded forward to the next escape-safe boundary. */
393
+ compact(drop) {
394
+ const start = safeReplayStart(this.bytes(), drop);
395
+ this.buf.copyWithin(0, start, this.len);
396
+ this.len -= start;
397
+ }
209
398
  }
210
399
  function concat(parts) {
211
400
  const total = parts.reduce((n, p) => n + p.length, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-rpc.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-rpc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,0EAA0E;IAC1E,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wFAAwF;IACxF,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,eAAe,EACrB,iBAAiB,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,GACzC,IAAI,CAsHN;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAOjF"}
1
+ {"version":3,"file":"terminal-rpc.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-rpc.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,0EAA0E;IAC1E,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wFAAwF;IACxF,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,eAAe,EACrB,iBAAiB,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,GACzC,IAAI,CAkJN;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAOjF"}
@@ -46,9 +46,37 @@ export function registerTerminalHandlers(registry, deps, getActiveSessions) {
46
46
  const restoreMode = deps.restoreModesEnabled && clientReflowable ? (requestedMode ?? "basic") : "basic";
47
47
  streamUnsubs.get(key(session, slot))?.(); // replace existing subscription
48
48
  try {
49
+ // Resize BEFORE subscribing, using the grid the attaching client sent (if any).
50
+ //
51
+ // The basic Snapshot is a raw byte ring, so it reproduces the wrapping and absolute cursor
52
+ // positioning of whatever width the PTY had when those bytes were written (`terminals.md`
53
+ // § Restore / snapshot: "replaying at a different width is approximate by construction").
54
+ // For a full-screen app that paints by absolute position — htop, vim — replaying an 80-column
55
+ // stream into a 190-column emulator is not approximate, it is scrambled.
56
+ //
57
+ // A client-side resize after attaching cannot fix this: `subscribe` emits the snapshot
58
+ // synchronously below, long before any client Resize frame could arrive, so the mangled bytes
59
+ // are already on the wire. Resizing first means the PTY sees SIGWINCH and the app repaints at
60
+ // the right width, and that repaint arrives as live Output right behind the snapshot — which
61
+ // is exactly why manually dragging the pane "fixed" it before.
62
+ //
63
+ // Validation and the same-size no-op both live in `manager.resize` — the one choke point every
64
+ // size path funnels through — so this passes the raw values straight through rather than
65
+ // growing a second, drifting copy of those rules here.
66
+ manager.resize(slot, Number(ctx.message.cols), Number(ctx.message.rows));
49
67
  const unsub = manager.subscribe(slot, (frame) => session.sendBinary(frame));
50
68
  streamUnsubs.set(key(session, slot), unsub);
51
- return { type: "subscribe_terminal_response", slot, ok: true, restoreMode };
69
+ // Echo the PTY's real size so the client can seed its belief instead of guessing. Without
70
+ // this a reattaching client cannot know what it is attaching to, and has to send a blind
71
+ // reconcile that is either redundant or, worse, indistinguishable from a stale claim.
72
+ const entry = manager.get(slot);
73
+ return {
74
+ type: "subscribe_terminal_response",
75
+ slot,
76
+ ok: true,
77
+ restoreMode,
78
+ ...(entry ? { cols: entry.cols, rows: entry.rows } : {}),
79
+ };
52
80
  }
53
81
  catch {
54
82
  return { type: "subscribe_terminal_response", slot, ok: false, error: "no_such_terminal" };
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-rpc.js","sourceRoot":"","sources":["../../src/terminal/terminal-rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-rpc.js","sourceRoot":"","sources":["../../src/terminal/terminal-rpc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@av-pi-studio/server",
3
- "version": "0.0.67",
3
+ "version": "0.0.69",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -22,9 +22,9 @@
22
22
  "clean": "rm -rf dist *.tsbuildinfo"
23
23
  },
24
24
  "dependencies": {
25
- "@av-pi-studio/highlight": "^0.0.67",
26
- "@av-pi-studio/protocol": "^0.0.67",
27
- "@av-pi-studio/relay": "^0.0.67",
25
+ "@av-pi-studio/highlight": "^0.0.69",
26
+ "@av-pi-studio/protocol": "^0.0.69",
27
+ "@av-pi-studio/relay": "^0.0.69",
28
28
  "@earendil-works/pi-coding-agent": "^0.83.0",
29
29
  "@xterm/headless": "^6.0.0",
30
30
  "bcryptjs": "^3.0.3",