@getpaseo/server 0.1.79 → 0.1.81

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.
Files changed (86) hide show
  1. package/dist/server/client/daemon-client.d.ts +5 -2
  2. package/dist/server/client/daemon-client.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client.js +7 -1
  4. package/dist/server/client/daemon-client.js.map +1 -1
  5. package/dist/server/client/terminal-stream-router.d.ts +4 -0
  6. package/dist/server/client/terminal-stream-router.d.ts.map +1 -1
  7. package/dist/server/client/terminal-stream-router.js +8 -0
  8. package/dist/server/client/terminal-stream-router.js.map +1 -1
  9. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  10. package/dist/server/server/agent/agent-metadata-generator.js +5 -6
  11. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  12. package/dist/server/server/agent/agent-response-loop.d.ts +5 -0
  13. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  14. package/dist/server/server/agent/agent-response-loop.js +12 -1
  15. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  16. package/dist/server/server/agent/import-sessions.d.ts.map +1 -1
  17. package/dist/server/server/agent/import-sessions.js +6 -0
  18. package/dist/server/server/agent/import-sessions.js.map +1 -1
  19. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +4 -0
  20. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -1
  21. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +12 -2
  22. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -1
  23. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  24. package/dist/server/server/agent/providers/opencode-agent.js +0 -4
  25. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  26. package/dist/server/server/agent/providers/pi/agent.d.ts +2 -0
  27. package/dist/server/server/agent/providers/pi/agent.d.ts.map +1 -1
  28. package/dist/server/server/agent/providers/pi/agent.js +115 -4
  29. package/dist/server/server/agent/providers/pi/agent.js.map +1 -1
  30. package/dist/server/server/agent/providers/pi/cli-runtime.js +4 -1
  31. package/dist/server/server/agent/providers/pi/cli-runtime.js.map +1 -1
  32. package/dist/server/server/agent/providers/pi/runtime.d.ts +5 -0
  33. package/dist/server/server/agent/providers/pi/runtime.d.ts.map +1 -1
  34. package/dist/server/server/agent/providers/pi/runtime.js.map +1 -1
  35. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +13 -0
  36. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts.map +1 -1
  37. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +5 -0
  38. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js.map +1 -1
  39. package/dist/server/server/websocket-server.d.ts.map +1 -1
  40. package/dist/server/server/websocket-server.js +2 -0
  41. package/dist/server/server/websocket-server.js.map +1 -1
  42. package/dist/server/server/worktree-branch-name-generator.d.ts +1 -0
  43. package/dist/server/server/worktree-branch-name-generator.d.ts.map +1 -1
  44. package/dist/server/server/worktree-branch-name-generator.js +5 -6
  45. package/dist/server/server/worktree-branch-name-generator.js.map +1 -1
  46. package/dist/server/shared/binary-frames/terminal.d.ts +1 -0
  47. package/dist/server/shared/binary-frames/terminal.d.ts.map +1 -1
  48. package/dist/server/shared/binary-frames/terminal.js +3 -1
  49. package/dist/server/shared/binary-frames/terminal.js.map +1 -1
  50. package/dist/server/shared/messages.d.ts +221 -0
  51. package/dist/server/shared/messages.d.ts.map +1 -1
  52. package/dist/server/shared/messages.js +16 -0
  53. package/dist/server/shared/messages.js.map +1 -1
  54. package/dist/server/shared/terminal-snapshot.d.ts +3 -0
  55. package/dist/server/shared/terminal-snapshot.d.ts.map +1 -0
  56. package/dist/server/shared/terminal-snapshot.js +165 -0
  57. package/dist/server/shared/terminal-snapshot.js.map +1 -0
  58. package/dist/server/terminal/terminal-manager.d.ts +2 -2
  59. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  60. package/dist/server/terminal/terminal-manager.js +3 -3
  61. package/dist/server/terminal/terminal-manager.js.map +1 -1
  62. package/dist/server/terminal/terminal-restore.d.ts +17 -0
  63. package/dist/server/terminal/terminal-restore.d.ts.map +1 -0
  64. package/dist/server/terminal/terminal-restore.js +46 -0
  65. package/dist/server/terminal/terminal-restore.js.map +1 -0
  66. package/dist/server/terminal/terminal-session-controller.d.ts +3 -0
  67. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
  68. package/dist/server/terminal/terminal-session-controller.js +88 -27
  69. package/dist/server/terminal/terminal-session-controller.js.map +1 -1
  70. package/dist/server/terminal/terminal-worker-process.js +1 -1
  71. package/dist/server/terminal/terminal-worker-process.js.map +1 -1
  72. package/dist/server/terminal/terminal-worker-protocol.d.ts +2 -1
  73. package/dist/server/terminal/terminal-worker-protocol.d.ts.map +1 -1
  74. package/dist/server/terminal/terminal.d.ts +11 -2
  75. package/dist/server/terminal/terminal.d.ts.map +1 -1
  76. package/dist/server/terminal/terminal.js +19 -8
  77. package/dist/server/terminal/terminal.js.map +1 -1
  78. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -1
  79. package/dist/server/terminal/worker-terminal-manager.js +16 -4
  80. package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
  81. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  82. package/dist/server/utils/checkout-git.js +7 -7
  83. package/dist/server/utils/checkout-git.js.map +1 -1
  84. package/dist/src/shared/messages.js +16 -0
  85. package/dist/src/shared/messages.js.map +1 -1
  86. package/package.json +3 -3
@@ -0,0 +1,165 @@
1
+ const DEFAULT_STYLE = {
2
+ fg: undefined,
3
+ bg: undefined,
4
+ fgMode: undefined,
5
+ bgMode: undefined,
6
+ bold: false,
7
+ italic: false,
8
+ underline: false,
9
+ dim: false,
10
+ inverse: false,
11
+ strikethrough: false,
12
+ };
13
+ export function renderTerminalSnapshotToAnsi(state) {
14
+ const rows = [...state.scrollback, ...state.grid];
15
+ const lines = ["\u001b[?7l"];
16
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
17
+ const row = rows[rowIndex] ?? [];
18
+ lines.push(renderTerminalRow(row));
19
+ if (rowIndex < rows.length - 1) {
20
+ lines.push("\r\n");
21
+ }
22
+ }
23
+ lines.push("\u001b[0m");
24
+ const cursorPresentationAnsi = renderCursorPresentationToAnsi(state.cursor);
25
+ if (cursorPresentationAnsi) {
26
+ lines.push(cursorPresentationAnsi);
27
+ }
28
+ lines.push(`\u001b[${state.cursor.row + 1};${state.cursor.col + 1}H`);
29
+ lines.push(state.cursor.hidden ? "\u001b[?25l" : "\u001b[?25h");
30
+ lines.push("\u001b[?7h");
31
+ return lines.join("");
32
+ }
33
+ function renderCursorPresentationToAnsi(cursor) {
34
+ if (!cursor.style) {
35
+ return null;
36
+ }
37
+ const cursorStyleCode = (() => {
38
+ if (cursor.style === "block") {
39
+ return cursor.blink === false ? 2 : 1;
40
+ }
41
+ if (cursor.style === "underline") {
42
+ return cursor.blink === false ? 4 : 3;
43
+ }
44
+ return cursor.blink === false ? 6 : 5;
45
+ })();
46
+ return `\u001b[${cursorStyleCode} q`;
47
+ }
48
+ function renderTerminalRow(row) {
49
+ const output = [];
50
+ const length = getTerminalRowLength(row);
51
+ let previousStyle = DEFAULT_STYLE;
52
+ for (let index = 0; index < length; index += 1) {
53
+ const cell = row[index] ?? { char: " " };
54
+ const nextStyle = getTerminalStyle(cell);
55
+ if (!terminalStylesEqual(previousStyle, nextStyle)) {
56
+ output.push(styleToAnsi(nextStyle));
57
+ previousStyle = nextStyle;
58
+ }
59
+ output.push(cell.char || " ");
60
+ }
61
+ if (!terminalStylesEqual(previousStyle, DEFAULT_STYLE)) {
62
+ output.push("\u001b[0m");
63
+ }
64
+ return output.join("");
65
+ }
66
+ function getTerminalRowLength(row) {
67
+ for (let index = row.length - 1; index >= 0; index -= 1) {
68
+ const cell = row[index];
69
+ if (!cell) {
70
+ continue;
71
+ }
72
+ if (cell.char !== " ") {
73
+ return index + 1;
74
+ }
75
+ if (cell.fg !== undefined ||
76
+ cell.bg !== undefined ||
77
+ cell.fgMode !== undefined ||
78
+ cell.bgMode !== undefined ||
79
+ cell.bold ||
80
+ cell.italic ||
81
+ cell.underline ||
82
+ cell.dim ||
83
+ cell.inverse ||
84
+ cell.strikethrough) {
85
+ return index + 1;
86
+ }
87
+ }
88
+ return 0;
89
+ }
90
+ function getTerminalStyle(cell) {
91
+ return {
92
+ fg: cell.fg,
93
+ bg: cell.bg,
94
+ fgMode: cell.fgMode,
95
+ bgMode: cell.bgMode,
96
+ bold: Boolean(cell.bold),
97
+ italic: Boolean(cell.italic),
98
+ underline: Boolean(cell.underline),
99
+ dim: Boolean(cell.dim),
100
+ inverse: Boolean(cell.inverse),
101
+ strikethrough: Boolean(cell.strikethrough),
102
+ };
103
+ }
104
+ function terminalStylesEqual(left, right) {
105
+ return (left.fg === right.fg &&
106
+ left.bg === right.bg &&
107
+ left.fgMode === right.fgMode &&
108
+ left.bgMode === right.bgMode &&
109
+ left.bold === right.bold &&
110
+ left.italic === right.italic &&
111
+ left.underline === right.underline &&
112
+ left.dim === right.dim &&
113
+ left.inverse === right.inverse &&
114
+ left.strikethrough === right.strikethrough);
115
+ }
116
+ function styleToAnsi(style) {
117
+ const codes = ["0"];
118
+ if (style.bold) {
119
+ codes.push("1");
120
+ }
121
+ if (style.dim) {
122
+ codes.push("2");
123
+ }
124
+ if (style.italic) {
125
+ codes.push("3");
126
+ }
127
+ if (style.underline) {
128
+ codes.push("4");
129
+ }
130
+ if (style.inverse) {
131
+ codes.push("7");
132
+ }
133
+ if (style.strikethrough) {
134
+ codes.push("9");
135
+ }
136
+ if (style.fg !== undefined && style.fgMode !== undefined) {
137
+ codes.push(...colorToSgr(style.fgMode, style.fg, false));
138
+ }
139
+ if (style.bg !== undefined && style.bgMode !== undefined) {
140
+ codes.push(...colorToSgr(style.bgMode, style.bg, true));
141
+ }
142
+ return `\u001b[${codes.join(";")}m`;
143
+ }
144
+ function colorToSgr(mode, value, background) {
145
+ if (mode === 1) {
146
+ if (value >= 8) {
147
+ return [String((background ? 100 : 90) + (value - 8))];
148
+ }
149
+ return [String((background ? 40 : 30) + value)];
150
+ }
151
+ if (mode === 2) {
152
+ return [background ? "48" : "38", "5", String(value)];
153
+ }
154
+ if (mode === 3) {
155
+ return [
156
+ background ? "48" : "38",
157
+ "2",
158
+ String((value >> 16) & 0xff),
159
+ String((value >> 8) & 0xff),
160
+ String(value & 0xff),
161
+ ];
162
+ }
163
+ return [];
164
+ }
165
+ //# sourceMappingURL=terminal-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-snapshot.js","sourceRoot":"","sources":["../../../src/shared/terminal-snapshot.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type TerminalSession, type TerminalStateSnapshot } from "./terminal.js";
1
+ import { type TerminalSession, type TerminalStateSnapshot, type TerminalStateSnapshotOptions } from "./terminal.js";
2
2
  import { type CaptureTerminalLinesResult } from "./terminal-capture.js";
3
3
  export interface TerminalListItem {
4
4
  id: string;
@@ -27,7 +27,7 @@ export interface TerminalManager {
27
27
  env: Record<string, string>;
28
28
  }): void;
29
29
  getTerminal(id: string): TerminalSession | undefined;
30
- getTerminalState(id: string): Promise<TerminalStateSnapshot | null>;
30
+ getTerminalState(id: string, options?: TerminalStateSnapshotOptions): Promise<TerminalStateSnapshot | null>;
31
31
  setTerminalTitle(id: string, title: string): boolean;
32
32
  killTerminal(id: string): void;
33
33
  killTerminalAndWait(id: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAwB,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAG9F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtD,cAAc,CAAC,OAAO,EAAE;QACtB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7B,cAAc,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACpE,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACrD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,CACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAChE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,eAAe,CACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACvC,eAAe,IAAI,MAAM,EAAE,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB,yBAAyB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI,CAAC;CAC3E;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAmOvD"}
1
+ {"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EAClC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAwB,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAG9F,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtD,cAAc,CAAC,OAAO,EAAE;QACtB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7B,cAAc,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACrD,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACrD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,CACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAChE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,eAAe,CACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACvC,eAAe,IAAI,MAAM,EAAE,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB,yBAAyB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI,CAAC;CAC3E;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAsOvD"}
@@ -1,4 +1,4 @@
1
- import { createTerminal } from "./terminal.js";
1
+ import { createTerminal, } from "./terminal.js";
2
2
  import { captureTerminalLines } from "./terminal-capture.js";
3
3
  import { resolve, sep, win32, posix } from "node:path";
4
4
  export function createTerminalManager() {
@@ -128,8 +128,8 @@ export function createTerminalManager() {
128
128
  getTerminal(id) {
129
129
  return terminalsById.get(id);
130
130
  },
131
- async getTerminalState(id) {
132
- return terminalsById.get(id)?.getStateSnapshot() ?? null;
131
+ async getTerminalState(id, options) {
132
+ return terminalsById.get(id)?.getStateSnapshot(options) ?? null;
133
133
  },
134
134
  setTerminalTitle(id, title) {
135
135
  const session = terminalsById.get(id);
@@ -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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"}
@@ -0,0 +1,17 @@
1
+ import type { SubscribeTerminalRequest } from "../server/messages.js";
2
+ import type { TerminalStateSnapshot, TerminalStateSnapshotOptions } from "./terminal.js";
3
+ export declare const MAX_TERMINAL_OUTPUT_FRAME_BYTES: number;
4
+ export type TerminalRestoreOptions = NonNullable<SubscribeTerminalRequest["restore"]>;
5
+ export type TerminalSubscriptionSnapshotMode = "state" | "ready";
6
+ export declare function resolveTerminalSubscriptionSnapshotMode(restore: TerminalRestoreOptions | undefined): TerminalSubscriptionSnapshotMode;
7
+ export declare function resolveRestoreAfterOutputOverflow(restore: TerminalRestoreOptions | undefined): TerminalRestoreOptions | undefined;
8
+ export declare function resolveTerminalRestoreSnapshotOptions(restore: TerminalRestoreOptions): TerminalStateSnapshotOptions | null | undefined;
9
+ export declare function encodeLegacyTerminalSnapshotFrame(input: {
10
+ slot: number;
11
+ snapshot: TerminalStateSnapshot;
12
+ }): Uint8Array;
13
+ export declare function encodeTerminalRestoreFrame(input: {
14
+ slot: number;
15
+ snapshot: TerminalStateSnapshot;
16
+ }): Uint8Array;
17
+ //# sourceMappingURL=terminal-restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-restore.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-restore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAOtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAEzF,eAAO,MAAM,+BAA+B,QAAa,CAAC;AAK1D,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC;AAEtF,MAAM,MAAM,gCAAgC,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,sBAAsB,GAAG,SAAS,GAC1C,gCAAgC,CAElC;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,sBAAsB,GAAG,SAAS,GAC1C,sBAAsB,GAAG,SAAS,CAKpC;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,sBAAsB,GAC9B,4BAA4B,GAAG,IAAI,GAAG,SAAS,CAUjD;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,qBAAqB,CAAC;CACjC,GAAG,UAAU,CAMb;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,qBAAqB,CAAC;CACjC,GAAG,UAAU,CAMb"}
@@ -0,0 +1,46 @@
1
+ import { TerminalStreamOpcode, encodeTerminalSnapshotPayload, encodeTerminalStreamFrame, } from "../shared/binary-frames/index.js";
2
+ import { renderTerminalSnapshotToAnsi } from "../shared/terminal-snapshot.js";
3
+ export const MAX_TERMINAL_OUTPUT_FRAME_BYTES = 256 * 1024;
4
+ const DEFAULT_VISIBLE_RESTORE_SCROLLBACK_LINES = 200;
5
+ const MAX_VISIBLE_RESTORE_SCROLLBACK_LINES = 500;
6
+ export function resolveTerminalSubscriptionSnapshotMode(restore) {
7
+ return restore ? "ready" : "state";
8
+ }
9
+ export function resolveRestoreAfterOutputOverflow(restore) {
10
+ if (restore?.mode === "live") {
11
+ return { mode: "visible-snapshot" };
12
+ }
13
+ return restore;
14
+ }
15
+ export function resolveTerminalRestoreSnapshotOptions(restore) {
16
+ if (restore.mode === "live") {
17
+ return null;
18
+ }
19
+ if (restore.mode === "visible-snapshot") {
20
+ return {
21
+ scrollbackLines: resolveVisibleRestoreScrollbackLines(restore.scrollbackLines),
22
+ };
23
+ }
24
+ return undefined;
25
+ }
26
+ export function encodeLegacyTerminalSnapshotFrame(input) {
27
+ return encodeTerminalStreamFrame({
28
+ opcode: TerminalStreamOpcode.Snapshot,
29
+ slot: input.slot,
30
+ payload: encodeTerminalSnapshotPayload(input.snapshot.state),
31
+ });
32
+ }
33
+ export function encodeTerminalRestoreFrame(input) {
34
+ return encodeTerminalStreamFrame({
35
+ opcode: TerminalStreamOpcode.Restore,
36
+ slot: input.slot,
37
+ payload: renderTerminalSnapshotToAnsi(input.snapshot.state),
38
+ });
39
+ }
40
+ function resolveVisibleRestoreScrollbackLines(value) {
41
+ if (typeof value !== "number") {
42
+ return DEFAULT_VISIBLE_RESTORE_SCROLLBACK_LINES;
43
+ }
44
+ return Math.min(Math.max(0, value), MAX_VISIBLE_RESTORE_SCROLLBACK_LINES);
45
+ }
46
+ //# sourceMappingURL=terminal-restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-restore.js","sourceRoot":"","sources":["../../../src/terminal/terminal-restore.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAG9E,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,GAAG,IAAI,CAAC;AAE1D,MAAM,wCAAwC,GAAG,GAAG,CAAC;AACrD,MAAM,oCAAoC,GAAG,GAAG,CAAC;AAMjD,MAAM,UAAU,uCAAuC,CACrD,OAA2C;IAE3C,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAA2C;IAE3C,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,OAA+B;IAE/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,eAAe,EAAE,oCAAoC,CAAC,OAAO,CAAC,eAAe,CAAC;SAC/E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,KAGjD;IACC,OAAO,yBAAyB,CAAC;QAC/B,MAAM,EAAE,oBAAoB,CAAC,QAAQ;QACrC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAG1C;IACC,OAAO,yBAAyB,CAAC;QAC/B,MAAM,EAAE,oBAAoB,CAAC,OAAO;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oCAAoC,CAAC,KAAyB;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,wCAAwC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAC5E,CAAC"}
@@ -58,6 +58,9 @@ export declare class TerminalSessionController {
58
58
  private handleCaptureTerminalRequest;
59
59
  private bindActiveStream;
60
60
  private trySendSnapshot;
61
+ private emitLegacySnapshot;
62
+ private emitRestoreSnapshot;
63
+ private replayTerminalOutputAfterSnapshot;
61
64
  private allocateSlot;
62
65
  private detachStream;
63
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-session-controller.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAMV,qBAAqB,EACrB,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAC;AAmBpF,MAAM,WAAW,gCAAgC;IAC/C,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IACvE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AA2BD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,2BAA2B,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,EAAE,gCAAgC;IASrD,KAAK,IAAI,IAAI;IASb,UAAU,IAAI,gCAAgC;IAO9C,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAkC/D,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAsCnD,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQ5E,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,+BAA+B;IAKvC,OAAO,CAAC,iCAAiC;YAI3B,mCAAmC;YAqBnC,0BAA0B;YA0C1B,sBAAsB;YAYtB,2BAA2B;YA2D3B,2BAA2B;YA0B3B,8BAA8B;IA+D5C,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,WAAW;YAKL,yBAAyB;YAYzB,4BAA4B;IA8D1C,OAAO,CAAC,gBAAgB;YA2EV,eAAe;IAmE7B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;CA6BrB"}
1
+ {"version":3,"file":"terminal-session-controller.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAMV,qBAAqB,EACrB,sBAAsB,EAMvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,kCAAkC,CAAC;AAY1C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAC;AA2BpF,MAAM,WAAW,gCAAgC;IAC/C,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IACvE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AA2BD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuD;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,2BAA2B,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,EAAE,gCAAgC;IASrD,KAAK,IAAI,IAAI;IASb,UAAU,IAAI,gCAAgC;IAO9C,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAkC/D,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAsCnD,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAQ5E,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,+BAA+B;IAKvC,OAAO,CAAC,iCAAiC;YAI3B,mCAAmC;YAqBnC,0BAA0B;YA0C1B,sBAAsB;YAYtB,2BAA2B;YA2D3B,2BAA2B;YA0B3B,8BAA8B;IA6E5C,OAAO,CAAC,gCAAgC;IAIxC,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,WAAW;YAKL,yBAAyB;YAYzB,4BAA4B;IA8D1C,OAAO,CAAC,gBAAgB;YA6FV,eAAe;YA+Cf,kBAAkB;YAsBlB,mBAAmB;IA+BjC,OAAO,CAAC,iCAAiC;IA0BzC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;CA6BrB"}
@@ -1,6 +1,7 @@
1
1
  import { killTerminalsUnderPath as killWorktreeTerminalsUnderPath } from "../server/paseo-worktree-archive-service.js";
2
- import { TerminalStreamOpcode, decodeTerminalResizePayload, encodeTerminalSnapshotPayload, encodeTerminalStreamFrame, } from "../shared/binary-frames/index.js";
2
+ import { TerminalStreamOpcode, decodeTerminalResizePayload, encodeTerminalStreamFrame, } from "../shared/binary-frames/index.js";
3
3
  import { TerminalOutputCoalescer } from "./terminal-output-coalescer.js";
4
+ import { MAX_TERMINAL_OUTPUT_FRAME_BYTES, encodeLegacyTerminalSnapshotFrame, encodeTerminalRestoreFrame, resolveRestoreAfterOutputOverflow, resolveTerminalRestoreSnapshotOptions, resolveTerminalSubscriptionSnapshotMode, } from "./terminal-restore.js";
4
5
  const MAX_TERMINAL_STREAM_SLOTS = 256;
5
6
  const TERMINAL_MESSAGE_TYPES = new Set([
6
7
  "subscribe_terminals_request",
@@ -363,7 +364,18 @@ export class TerminalSessionController {
363
364
  return;
364
365
  }
365
366
  this.ensureExitSubscription(session);
366
- const slot = this.bindActiveStream(session);
367
+ if (msg.restore?.size) {
368
+ const currentSize = session.getSize();
369
+ if (currentSize.rows !== msg.restore.size.rows ||
370
+ currentSize.cols !== msg.restore.size.cols) {
371
+ session.send({
372
+ type: "resize",
373
+ rows: msg.restore.size.rows,
374
+ cols: msg.restore.size.cols,
375
+ });
376
+ }
377
+ }
378
+ const slot = this.bindActiveStream(session, { restore: msg.restore });
367
379
  if (slot === null) {
368
380
  this.sessionLogger.warn({
369
381
  terminalId: msg.terminalId,
@@ -485,7 +497,7 @@ export class TerminalSessionController {
485
497
  });
486
498
  }
487
499
  }
488
- bindActiveStream(terminal) {
500
+ bindActiveStream(terminal, options) {
489
501
  if (!this.hasBinaryChannel()) {
490
502
  return null;
491
503
  }
@@ -494,6 +506,7 @@ export class TerminalSessionController {
494
506
  const existingStream = this.activeStreams.get(existingSlot);
495
507
  if (existingStream) {
496
508
  existingStream.needsSnapshot = true;
509
+ existingStream.restore = options?.restore;
497
510
  return existingSlot;
498
511
  }
499
512
  this.idToSlot.delete(terminal.id);
@@ -508,13 +521,23 @@ export class TerminalSessionController {
508
521
  unsubscribe: () => { },
509
522
  needsSnapshot: true,
510
523
  snapshotInFlight: false,
524
+ readyRevision: undefined,
525
+ restore: options?.restore,
511
526
  bufferedOutputs: [],
527
+ outputBytesSinceSnapshot: 0,
512
528
  outputCoalescer: new TerminalOutputCoalescer({
513
529
  timers: { setTimeout, clearTimeout },
514
530
  onFlush: ({ payload }) => {
515
531
  if (this.activeStreams.get(slot) !== activeStream) {
516
532
  return;
517
533
  }
534
+ activeStream.outputBytesSinceSnapshot += payload.byteLength;
535
+ if (activeStream.outputBytesSinceSnapshot > MAX_TERMINAL_OUTPUT_FRAME_BYTES) {
536
+ activeStream.restore = resolveRestoreAfterOutputOverflow(activeStream.restore);
537
+ activeStream.needsSnapshot = true;
538
+ void this.trySendSnapshot(activeStream);
539
+ return;
540
+ }
518
541
  this.emitBinary(encodeTerminalStreamFrame({
519
542
  opcode: TerminalStreamOpcode.Output,
520
543
  slot,
@@ -529,7 +552,8 @@ export class TerminalSessionController {
529
552
  if (this.activeStreams.get(slot) !== activeStream) {
530
553
  return;
531
554
  }
532
- if (message.type === "snapshot") {
555
+ if (message.type === "snapshot" || message.type === "snapshotReady") {
556
+ activeStream.readyRevision = message.revision;
533
557
  activeStream.outputCoalescer.flush();
534
558
  activeStream.needsSnapshot = true;
535
559
  void this.trySendSnapshot(activeStream);
@@ -549,7 +573,7 @@ export class TerminalSessionController {
549
573
  return;
550
574
  }
551
575
  activeStream.outputCoalescer.handle(message.data);
552
- });
576
+ }, { initialSnapshot: resolveTerminalSubscriptionSnapshotMode(options?.restore) });
553
577
  return slot;
554
578
  }
555
579
  async trySendSnapshot(activeStream) {
@@ -568,34 +592,22 @@ export class TerminalSessionController {
568
592
  this.detachStream(activeStream.terminalId, { emitExit: true });
569
593
  return;
570
594
  }
595
+ if (activeStream.restore && activeStream.readyRevision === undefined) {
596
+ return;
597
+ }
571
598
  activeStream.outputCoalescer.flush();
572
599
  activeStream.snapshotInFlight = true;
573
600
  try {
574
- const snapshot = await terminalManager.getTerminalState(activeStream.terminalId);
575
- if (this.activeStreams.get(activeStream.slot) !== activeStream) {
576
- return;
577
- }
578
- if (!snapshot) {
579
- this.detachStream(activeStream.terminalId, { emitExit: true });
601
+ const restore = activeStream.restore;
602
+ const snapshotResult = restore
603
+ ? await this.emitRestoreSnapshot(activeStream, terminalManager, restore)
604
+ : await this.emitLegacySnapshot(activeStream, terminalManager);
605
+ if (!snapshotResult.shouldContinue) {
580
606
  return;
581
607
  }
582
- this.emitBinary(encodeTerminalStreamFrame({
583
- opcode: TerminalStreamOpcode.Snapshot,
584
- slot: activeStream.slot,
585
- payload: encodeTerminalSnapshotPayload(snapshot.state),
586
- }));
587
- const replayPreamble = terminal.getReplayPreamble();
588
- if (replayPreamble.length > 0) {
589
- activeStream.outputCoalescer.handle(replayPreamble);
590
- }
591
- const bufferedOutputs = activeStream.bufferedOutputs.splice(0, activeStream.bufferedOutputs.length);
592
- for (const output of bufferedOutputs) {
593
- if (output.revision !== undefined && output.revision <= snapshot.revision) {
594
- continue;
595
- }
596
- activeStream.outputCoalescer.handle(output.data);
597
- }
608
+ this.replayTerminalOutputAfterSnapshot(activeStream, terminal, snapshotResult.replayRevision);
598
609
  activeStream.needsSnapshot = false;
610
+ activeStream.outputBytesSinceSnapshot = 0;
599
611
  }
600
612
  catch (error) {
601
613
  this.sessionLogger.warn({ err: error, terminalId: activeStream.terminalId }, "Failed to pull terminal snapshot");
@@ -605,6 +617,55 @@ export class TerminalSessionController {
605
617
  activeStream.snapshotInFlight = false;
606
618
  }
607
619
  }
620
+ async emitLegacySnapshot(activeStream, terminalManager) {
621
+ const snapshot = await terminalManager.getTerminalState(activeStream.terminalId);
622
+ if (this.activeStreams.get(activeStream.slot) !== activeStream) {
623
+ return { shouldContinue: false };
624
+ }
625
+ if (!snapshot) {
626
+ this.detachStream(activeStream.terminalId, { emitExit: true });
627
+ return { shouldContinue: false };
628
+ }
629
+ this.emitBinary(encodeLegacyTerminalSnapshotFrame({
630
+ slot: activeStream.slot,
631
+ snapshot,
632
+ }));
633
+ return { shouldContinue: true, replayRevision: snapshot.revision };
634
+ }
635
+ async emitRestoreSnapshot(activeStream, terminalManager, restore) {
636
+ const snapshotOptions = resolveTerminalRestoreSnapshotOptions(restore);
637
+ if (snapshotOptions === null) {
638
+ return { shouldContinue: true };
639
+ }
640
+ const snapshot = await terminalManager.getTerminalState(activeStream.terminalId, snapshotOptions);
641
+ if (this.activeStreams.get(activeStream.slot) !== activeStream) {
642
+ return { shouldContinue: false };
643
+ }
644
+ if (!snapshot) {
645
+ this.detachStream(activeStream.terminalId, { emitExit: true });
646
+ return { shouldContinue: false };
647
+ }
648
+ this.emitBinary(encodeTerminalRestoreFrame({
649
+ slot: activeStream.slot,
650
+ snapshot,
651
+ }));
652
+ return { shouldContinue: true, replayRevision: snapshot.revision };
653
+ }
654
+ replayTerminalOutputAfterSnapshot(activeStream, terminal, replayRevision) {
655
+ const replayPreamble = terminal.getReplayPreamble();
656
+ if (replayPreamble.length > 0) {
657
+ activeStream.outputCoalescer.handle(replayPreamble);
658
+ }
659
+ const bufferedOutputs = activeStream.bufferedOutputs.splice(0, activeStream.bufferedOutputs.length);
660
+ for (const output of bufferedOutputs) {
661
+ if (replayRevision !== undefined &&
662
+ output.revision !== undefined &&
663
+ output.revision <= replayRevision) {
664
+ continue;
665
+ }
666
+ activeStream.outputCoalescer.handle(output.data);
667
+ }
668
+ }
608
669
  allocateSlot() {
609
670
  for (let attempt = 0; attempt < MAX_TERMINAL_STREAM_SLOTS; attempt += 1) {
610
671
  const slot = (this.nextSlot + attempt) % MAX_TERMINAL_STREAM_SLOTS;