linkshell-cli 0.10.13 → 0.10.15

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":"store.js","sourceRoot":"","sources":["../../../../host/src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../host/src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare const TERMINAL_HISTORY_LINES = 1000;
2
+ export declare class TerminalState {
3
+ cols: number;
4
+ rows: number;
5
+ private readonly core;
6
+ private readonly handle;
7
+ private readonly continuation;
8
+ constructor(cols: number, rows: number);
9
+ dispose(): void;
10
+ write(data: string): void;
11
+ resize(cols: number, rows: number, cellWidth?: number, cellHeight?: number): void;
12
+ private read;
13
+ text(): string;
14
+ snapshot(): string;
15
+ inspect(): {
16
+ x: number;
17
+ y: number;
18
+ screen: number;
19
+ keyboard: number;
20
+ images: number;
21
+ placements: number;
22
+ };
23
+ imagePosition(id: number): number[];
24
+ imageChecksum(id: number): number;
25
+ }
@@ -0,0 +1,181 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { deflateSync, gunzipSync } from "node:zlib";
3
+ import { PNG } from "pngjs";
4
+ import { createHash } from "node:crypto";
5
+ let compiled;
6
+ const encoder = new TextEncoder();
7
+ const decoder = new TextDecoder();
8
+ const IMAGE_BYTES = 32 * 1024 * 1024;
9
+ export const TERMINAL_HISTORY_LINES = 1000;
10
+ /** Keep only an unfinished control sequence; completed history lives in Ghostty. */
11
+ class Continuation {
12
+ pending = "";
13
+ mode = "ground";
14
+ osc = false;
15
+ write(data) {
16
+ for (let i = 0; i < data.length; i++) {
17
+ if (this.mode === "ground") {
18
+ const next = data.indexOf("\x1b", i);
19
+ if (next < 0)
20
+ return;
21
+ i = next;
22
+ this.pending = "\x1b";
23
+ this.mode = "escape";
24
+ continue;
25
+ }
26
+ const ch = data[i];
27
+ if (ch === "\x18" || ch === "\x1a") {
28
+ this.pending = "";
29
+ this.mode = "ground";
30
+ continue;
31
+ }
32
+ if (ch === "\x1b" && this.mode !== "string" && this.mode !== "string-escape") {
33
+ this.pending = "\x1b";
34
+ this.mode = "escape";
35
+ continue;
36
+ }
37
+ this.pending += ch;
38
+ if (this.mode === "string-escape") {
39
+ if (ch === "\\") {
40
+ this.pending = "";
41
+ this.mode = "ground";
42
+ continue;
43
+ }
44
+ this.pending = `\x1b${ch}`;
45
+ this.mode = "escape";
46
+ }
47
+ if (this.mode === "string") {
48
+ if (ch === "\x1b")
49
+ this.mode = "string-escape";
50
+ else if (this.osc && ch === "\x07") {
51
+ this.pending = "";
52
+ this.mode = "ground";
53
+ }
54
+ }
55
+ else if (this.mode === "escape") {
56
+ if (ch === "[")
57
+ this.mode = "csi";
58
+ else if ("]P_^X".includes(ch)) {
59
+ this.mode = "string";
60
+ this.osc = ch === "]";
61
+ }
62
+ else if (ch >= "0" && ch <= "~") {
63
+ this.pending = "";
64
+ this.mode = "ground";
65
+ }
66
+ else if (ch === "\x1b")
67
+ this.pending = "\x1b";
68
+ }
69
+ else if (this.mode === "csi" && ch >= "@" && ch <= "~") {
70
+ this.pending = "";
71
+ this.mode = "ground";
72
+ }
73
+ }
74
+ if (this.pending.length > 64 * 1024 * 1024)
75
+ throw new Error("未完成的终端控制序列过大");
76
+ }
77
+ }
78
+ // Ghostty parses the same VT stream as the phone. The portable host core only
79
+ // mirrors state: it has no PTY, filesystem access, or terminal reply callback.
80
+ export class TerminalState {
81
+ cols;
82
+ rows;
83
+ core;
84
+ handle;
85
+ continuation = new Continuation();
86
+ constructor(cols, rows) {
87
+ this.cols = cols;
88
+ this.rows = rows;
89
+ compiled ??= new WebAssembly.Module(gunzipSync(readFileSync(new URL("./terminal-state.wasm.gz", import.meta.url))));
90
+ let core;
91
+ const compressedImages = new Map();
92
+ let compressedBytes = 0;
93
+ const put = (bytes) => {
94
+ const pointer = core.allocate(bytes.length);
95
+ if (!pointer)
96
+ throw new Error("终端状态内存不足");
97
+ new Uint8Array(core.memory.buffer).set(bytes, pointer);
98
+ return pointer;
99
+ };
100
+ core = new WebAssembly.Instance(compiled, { env: {
101
+ decode_png(data, length, out) {
102
+ try {
103
+ if (length > IMAGE_BYTES)
104
+ return 0;
105
+ const source = Buffer.from(new Uint8Array(core.memory.buffer, data, length));
106
+ if (source.length < 24 || source.readUInt32BE(16) * source.readUInt32BE(20) * 4 > IMAGE_BYTES)
107
+ return 0;
108
+ const image = PNG.sync.read(source);
109
+ const pointer = put(image.data);
110
+ const view = new DataView(core.memory.buffer);
111
+ view.setUint32(out, image.width, true);
112
+ view.setUint32(out + 4, image.height, true);
113
+ view.setUint32(out + 8, pointer, true);
114
+ view.setUint32(out + 12, image.data.length, true);
115
+ return 1;
116
+ }
117
+ catch {
118
+ return 0;
119
+ }
120
+ },
121
+ compress(data, length, outLength) {
122
+ const pixels = new Uint8Array(core.memory.buffer, data, length);
123
+ const key = createHash("sha256").update(pixels).digest("hex");
124
+ let bytes = compressedImages.get(key);
125
+ if (!bytes) {
126
+ bytes = deflateSync(pixels);
127
+ while (compressedBytes + bytes.length > IMAGE_BYTES && compressedImages.size) {
128
+ const oldest = compressedImages.keys().next().value;
129
+ compressedBytes -= compressedImages.get(oldest).length;
130
+ compressedImages.delete(oldest);
131
+ }
132
+ compressedImages.set(key, bytes);
133
+ compressedBytes += bytes.length;
134
+ }
135
+ const pointer = put(bytes);
136
+ new DataView(core.memory.buffer).setUint32(outLength, bytes.length, true);
137
+ return pointer;
138
+ },
139
+ } }).exports;
140
+ this.core = core;
141
+ this.handle = core.create(cols, rows);
142
+ if (!this.handle)
143
+ throw new Error("无法创建终端状态");
144
+ }
145
+ dispose() { this.core.destroy(this.handle); }
146
+ write(data) {
147
+ if (!data)
148
+ return;
149
+ const bytes = encoder.encode(data), pointer = this.core.allocate(bytes.length);
150
+ if (!pointer)
151
+ throw new Error("终端状态内存不足");
152
+ try {
153
+ new Uint8Array(this.core.memory.buffer).set(bytes, pointer);
154
+ this.core.write(this.handle, pointer, bytes.length);
155
+ this.continuation.write(data);
156
+ }
157
+ finally {
158
+ this.core.release(pointer, bytes.length);
159
+ }
160
+ }
161
+ resize(cols, rows, cellWidth = 8, cellHeight = 16) {
162
+ if (!this.core.resize(this.handle, cols, rows, cellWidth, cellHeight))
163
+ throw new Error("无法调整终端状态大小");
164
+ this.cols = cols;
165
+ this.rows = rows;
166
+ }
167
+ read(pointer) {
168
+ if (!pointer)
169
+ throw new Error("无法导出终端状态");
170
+ return decoder.decode(new Uint8Array(this.core.memory.buffer, pointer, this.core.output_len(this.handle)));
171
+ }
172
+ text() { return this.read(this.core.plain(this.handle)); }
173
+ snapshot() { return this.read(this.core.snapshot(this.handle)) + this.continuation.pending; }
174
+ inspect() {
175
+ const c = this.core, h = this.handle;
176
+ return { x: c.cursor_x(h), y: c.cursor_y(h), screen: c.active_screen(h), keyboard: c.keyboard_flags(h), images: c.image_count(h), placements: c.placement_count(h) };
177
+ }
178
+ imagePosition(id) { return [this.core.image_position(this.handle, id, 0), this.core.image_position(this.handle, id, 1)]; }
179
+ imageChecksum(id) { return this.core.image_checksum(this.handle, id); }
180
+ }
181
+ //# sourceMappingURL=terminal-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-state.js","sourceRoot":"","sources":["../../../../host/src/terminal-state.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ export declare class TerminalManager {
20
20
  private readonly timer;
21
21
  private readonly changeListeners;
22
22
  private stopped;
23
+ private readonly snapshots;
23
24
  /** @param env The user's login-shell environment. */
24
25
  constructor(env?: NodeJS.ProcessEnv | undefined, store?: HostStore | undefined);
25
26
  onChange(listener: TerminalChangeListener): () => void;
@@ -32,7 +33,7 @@ export declare class TerminalManager {
32
33
  cols: number;
33
34
  rows: number;
34
35
  }): TerminalInfo;
35
- attach(id: string, listener: OutputListener, fromSeq?: number, replayFormat?: "frames-v1", fromFrame?: number): {
36
+ attach(id: string, listener: OutputListener, fromSeq?: number, replayFormat?: "frames-v1", fromFrame?: number, snapshot?: boolean): {
36
37
  replay: string;
37
38
  reset: boolean;
38
39
  seq: number;
@@ -48,6 +49,29 @@ export declare class TerminalManager {
48
49
  exitCode?: number | null | undefined;
49
50
  interrupted?: boolean | undefined;
50
51
  };
52
+ } | {
53
+ replay: string;
54
+ state: {
55
+ snapshotId: `${string}-${string}-${string}-${string}-${string}`;
56
+ length: number;
57
+ frame: number;
58
+ cols: number;
59
+ rows: number;
60
+ };
61
+ reset: boolean;
62
+ seq: number;
63
+ terminal: {
64
+ id: string;
65
+ title: string;
66
+ cwd: string;
67
+ createdAt: number;
68
+ cols: number;
69
+ rows: number;
70
+ activeAt: number;
71
+ command?: string | undefined;
72
+ exitCode?: number | null | undefined;
73
+ interrupted?: boolean | undefined;
74
+ };
51
75
  } | {
52
76
  replay: string;
53
77
  reset: boolean;
@@ -69,6 +93,12 @@ export declare class TerminalManager {
69
93
  interrupted?: boolean | undefined;
70
94
  };
71
95
  };
96
+ private savedState;
97
+ state(id: string, snapshotId: string, offset: number): {
98
+ data: string;
99
+ nextOffset: number;
100
+ done: boolean;
101
+ };
72
102
  replay(id: string, afterFrame: number, throughFrame: number): {
73
103
  frames: {
74
104
  frame: number;
@@ -7,6 +7,7 @@ import { SerializeAddon } from "@xterm/addon-serialize";
7
7
  import xtermHeadless from "@xterm/headless";
8
8
  import { spawn } from "node-pty";
9
9
  import { RpcError } from "@linkshell/wire";
10
+ import { TerminalState } from "./terminal-state.js";
10
11
  // Plain shells on the host, kept open while devices come and go: any command,
11
12
  // like an SSH session that survives the phone locking.
12
13
  //
@@ -56,6 +57,8 @@ class Terminal {
56
57
  serializer = new SerializeAddon();
57
58
  /** The last chunk the mirror has parsed (it parses asynchronously). */
58
59
  parsedSeq = 0;
60
+ state;
61
+ stateSnapshot;
59
62
  constructor(pty, cwd, shell, cols, rows, command, changed, store) {
60
63
  this.pty = pty;
61
64
  this.cwd = cwd;
@@ -66,6 +69,12 @@ class Terminal {
66
69
  this.changed = changed;
67
70
  this.store = store;
68
71
  this.title = basename(shell);
72
+ try {
73
+ this.state = new TerminalState(cols, rows);
74
+ }
75
+ catch (error) {
76
+ console.warn("Terminal snapshot mirror unavailable:", error instanceof Error ? error.message : error);
77
+ }
69
78
  this.recordFrame("");
70
79
  this.mirror = new ScreenMirror({ cols, rows, scrollback: SCROLLBACK, allowProposedApi: true });
71
80
  // The addon's types are written against the browser's terminal; it only uses what the headless one has too.
@@ -117,6 +126,20 @@ class Terminal {
117
126
  buffer,
118
127
  };
119
128
  }
129
+ captureState() {
130
+ this.flush();
131
+ if (!this.state)
132
+ return undefined;
133
+ if (this.stateSnapshot?.frame === this.frame)
134
+ return this.stateSnapshot;
135
+ try {
136
+ return this.stateSnapshot = { frame: this.frame, cols: this.cols, rows: this.rows, data: this.state.snapshot() };
137
+ }
138
+ catch {
139
+ // An unsupported state must use exact recordings, never a damaged screen.
140
+ return undefined;
141
+ }
142
+ }
120
143
  get running() {
121
144
  return this.exitCode === undefined;
122
145
  }
@@ -164,12 +187,23 @@ class Terminal {
164
187
  this.recordFrame("");
165
188
  this.pty.resize(cols, rows);
166
189
  this.mirror.resize(cols, rows);
190
+ try {
191
+ this.state?.resize(cols, rows);
192
+ }
193
+ catch {
194
+ this.state?.dispose();
195
+ this.state = undefined;
196
+ this.stateSnapshot = undefined;
197
+ }
167
198
  }
168
199
  close() {
169
200
  this.closed = true;
170
201
  clearTimeout(this.flushTimer);
171
202
  this.listeners.clear();
172
203
  this.mirror.dispose();
204
+ this.state?.dispose();
205
+ this.state = undefined;
206
+ this.stateSnapshot = undefined;
173
207
  if (this.running) {
174
208
  try {
175
209
  this.pty.kill("SIGHUP");
@@ -206,6 +240,15 @@ class Terminal {
206
240
  pending = pending.slice(end);
207
241
  this.chunks.push(chunk);
208
242
  this.recordFrame(chunk.data);
243
+ try {
244
+ this.state?.write(chunk.data);
245
+ }
246
+ catch (error) {
247
+ console.warn("Terminal snapshot mirror unavailable:", error instanceof Error ? error.message : error);
248
+ this.state?.dispose();
249
+ this.state = undefined;
250
+ this.stateSnapshot = undefined;
251
+ }
209
252
  this.mirror.write(chunk.data, () => { this.parsedSeq = chunk.seq; });
210
253
  this.bytes += chunk.data.length;
211
254
  while (this.bytes > BUFFER_BYTES && this.chunks.length > 1)
@@ -246,6 +289,7 @@ export class TerminalManager {
246
289
  timer;
247
290
  changeListeners = new Set();
248
291
  stopped = false;
292
+ snapshots = new Map();
249
293
  /** @param env The user's login-shell environment. */
250
294
  constructor(env, store) {
251
295
  this.env = env;
@@ -258,6 +302,9 @@ export class TerminalManager {
258
302
  this.history.set(record.id, { record: { ...record, ended: true }, interrupted });
259
303
  }
260
304
  this.timer = setInterval(() => {
305
+ for (const [key, value] of this.snapshots)
306
+ if (value.expires < Date.now())
307
+ this.snapshots.delete(key);
261
308
  for (const terminal of this.terminals.values()) {
262
309
  // The foreground process ("vim", "npm") is the most useful name for a terminal.
263
310
  if (terminal.refreshTitle())
@@ -281,6 +328,9 @@ export class TerminalManager {
281
328
  return;
282
329
  terminal.dirty = false;
283
330
  this.store?.saveTerminal(terminal.record());
331
+ const snapshot = terminal.captureState();
332
+ if (snapshot)
333
+ this.store?.saveTerminalSnapshot(terminal.id, snapshot);
284
334
  }
285
335
  list() {
286
336
  return [
@@ -346,14 +396,87 @@ export class TerminalManager {
346
396
  this.emit(terminal.info());
347
397
  return terminal.info();
348
398
  }
349
- attach(id, listener, fromSeq, replayFormat, fromFrame) {
399
+ attach(id, listener, fromSeq, replayFormat, fromFrame, snapshot = false) {
350
400
  const attached = this.attachScreen(id, listener, fromSeq);
401
+ if (snapshot && attached.reset) {
402
+ const state = this.terminals.has(id) ? this.terminals.get(id).captureState() : this.savedState(id);
403
+ if (state) {
404
+ const snapshotId = randomUUID();
405
+ // Keep immutable transfers briefly, bounded across all devices. A
406
+ // second attach cannot change a first client's half-received snapshot.
407
+ let bytes = state.data.length * 2;
408
+ for (const [key, value] of this.snapshots) {
409
+ if (value.expires < Date.now())
410
+ this.snapshots.delete(key);
411
+ else
412
+ bytes += value.data.length * 2;
413
+ }
414
+ while (bytes > 256 * 1024 * 1024 && this.snapshots.size) {
415
+ const oldest = this.snapshots.keys().next().value;
416
+ bytes -= this.snapshots.get(oldest).data.length * 2;
417
+ this.snapshots.delete(oldest);
418
+ }
419
+ this.snapshots.set(snapshotId, { terminalId: id, data: state.data, expires: Date.now() + 120_000 });
420
+ return { ...attached, replay: "", state: { snapshotId, length: state.data.length, frame: state.frame, cols: state.cols, rows: state.rows } };
421
+ }
422
+ }
351
423
  const throughFrame = replayFormat ? this.store?.lastTerminalFrame(id) ?? 0 : 0;
352
424
  if (!throughFrame)
353
425
  return attached;
354
426
  const afterFrame = fromFrame !== undefined && fromFrame >= 0 && fromFrame <= throughFrame ? fromFrame : 0;
355
427
  return { ...attached, replay: "", reset: afterFrame === 0, recording: { afterFrame, throughFrame } };
356
428
  }
429
+ savedState(id) {
430
+ if (!this.history.has(id))
431
+ return undefined;
432
+ const saved = this.store?.terminalSnapshot(id);
433
+ const record = this.history.get(id).record;
434
+ const latest = this.store?.lastTerminalFrame(id) ?? 0;
435
+ if (saved?.frame === latest)
436
+ return saved;
437
+ if (!latest)
438
+ return undefined;
439
+ let state;
440
+ try {
441
+ state = new TerminalState(saved?.cols ?? record.cols, saved?.rows ?? record.rows);
442
+ if (saved)
443
+ state.write(saved.data);
444
+ let after = saved?.frame ?? 0;
445
+ // Older recordings are compacted once on the host; subsequent opens use
446
+ // the checkpoint, without moving the old journal over the network.
447
+ while (after < latest) {
448
+ const frames = this.store.terminalFrames(id, after, latest);
449
+ if (!frames.length)
450
+ throw new Error("终端检查点后的记录不完整");
451
+ for (const frame of frames) {
452
+ state.resize(frame.cols, frame.rows);
453
+ state.write(frame.data);
454
+ after = frame.frame;
455
+ }
456
+ }
457
+ const updated = { frame: latest, cols: state.cols, rows: state.rows, data: state.snapshot() };
458
+ this.store?.saveTerminalSnapshot(id, updated);
459
+ return updated;
460
+ }
461
+ catch {
462
+ return undefined;
463
+ }
464
+ finally {
465
+ state?.dispose();
466
+ }
467
+ }
468
+ state(id, snapshotId, offset) {
469
+ const snapshot = this.snapshots.get(snapshotId);
470
+ if (!snapshot || snapshot.terminalId !== id || snapshot.expires < Date.now())
471
+ throw RpcError.app("not_found", "终端恢复状态已过期,请重试");
472
+ if (offset > snapshot.data.length)
473
+ throw RpcError.app("invalid_params", "终端恢复位置无效");
474
+ snapshot.expires = Date.now() + 120_000;
475
+ let end = Math.min(snapshot.data.length, offset + 256 * 1024);
476
+ if (end < snapshot.data.length && /[\uD800-\uDBFF]/.test(snapshot.data[end - 1]))
477
+ end--;
478
+ return { data: snapshot.data.slice(offset, end), nextOffset: end, done: end === snapshot.data.length };
479
+ }
357
480
  replay(id, afterFrame, throughFrame) {
358
481
  if (!this.terminals.has(id) && !this.history.has(id))
359
482
  throw RpcError.app("not_found", "终端不存在");
@@ -399,17 +522,21 @@ export class TerminalManager {
399
522
  this.terminals.delete(id);
400
523
  this.history.delete(id);
401
524
  this.store?.deleteTerminal(id);
525
+ for (const [key, value] of this.snapshots)
526
+ if (value.terminalId === id)
527
+ this.snapshots.delete(key);
402
528
  this.emit(info, true);
403
529
  }
404
530
  stop() {
405
531
  clearInterval(this.timer);
406
532
  // Saved as still running: next start lists them as interrupted.
407
533
  for (const terminal of this.terminals.values())
408
- this.store?.saveTerminal(terminal.record());
534
+ this.save(terminal);
409
535
  this.stopped = true;
410
536
  for (const terminal of this.terminals.values())
411
537
  terminal.close();
412
538
  this.terminals.clear();
539
+ this.snapshots.clear();
413
540
  }
414
541
  live(id) {
415
542
  const terminal = this.terminals.get(id);