poly-weaver 0.10.6 → 0.11.1

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 (131) hide show
  1. package/README.md +16 -24
  2. package/dist/agents/runner.d.ts.map +1 -1
  3. package/dist/agents/runner.js +6 -1
  4. package/dist/agents/runner.js.map +1 -1
  5. package/dist/ansi.d.ts +23 -4
  6. package/dist/ansi.d.ts.map +1 -1
  7. package/dist/ansi.js +28 -5
  8. package/dist/ansi.js.map +1 -1
  9. package/dist/auto-update/gate.d.ts +1 -0
  10. package/dist/auto-update/gate.d.ts.map +1 -1
  11. package/dist/auto-update/gate.js +7 -8
  12. package/dist/auto-update/gate.js.map +1 -1
  13. package/dist/auto-update/install-agents.d.ts +1 -0
  14. package/dist/auto-update/install-agents.d.ts.map +1 -1
  15. package/dist/auto-update/install-agents.js +19 -8
  16. package/dist/auto-update/install-agents.js.map +1 -1
  17. package/dist/auto-update/update-request.d.ts +23 -0
  18. package/dist/auto-update/update-request.d.ts.map +1 -0
  19. package/dist/auto-update/update-request.js +83 -0
  20. package/dist/auto-update/update-request.js.map +1 -0
  21. package/dist/cli.js +0 -0
  22. package/dist/dump/hotkey.d.ts +0 -3
  23. package/dist/dump/hotkey.d.ts.map +1 -1
  24. package/dist/dump/hotkey.js +0 -3
  25. package/dist/dump/hotkey.js.map +1 -1
  26. package/dist/launcher.d.ts +23 -0
  27. package/dist/launcher.d.ts.map +1 -0
  28. package/dist/launcher.js +90 -0
  29. package/dist/launcher.js.map +1 -0
  30. package/dist/offscreen/controller.d.ts +4 -1
  31. package/dist/offscreen/controller.d.ts.map +1 -1
  32. package/dist/offscreen/controller.js +48 -3
  33. package/dist/offscreen/controller.js.map +1 -1
  34. package/dist/offscreen/fork-launch.d.ts +1 -0
  35. package/dist/offscreen/fork-launch.d.ts.map +1 -1
  36. package/dist/offscreen/fork-launch.js +4 -0
  37. package/dist/offscreen/fork-launch.js.map +1 -1
  38. package/dist/offscreen/fork.d.ts +6 -1
  39. package/dist/offscreen/fork.d.ts.map +1 -1
  40. package/dist/offscreen/fork.js +26 -3
  41. package/dist/offscreen/fork.js.map +1 -1
  42. package/dist/offscreen/surface.d.ts.map +1 -1
  43. package/dist/offscreen/surface.js +6 -2
  44. package/dist/offscreen/surface.js.map +1 -1
  45. package/dist/providers/claude/strategy.d.ts +6 -0
  46. package/dist/providers/claude/strategy.d.ts.map +1 -1
  47. package/dist/providers/claude/strategy.js +2 -0
  48. package/dist/providers/claude/strategy.js.map +1 -1
  49. package/dist/providers/codex/strategy.d.ts +1 -0
  50. package/dist/providers/codex/strategy.d.ts.map +1 -1
  51. package/dist/providers/codex/strategy.js +7 -1
  52. package/dist/providers/codex/strategy.js.map +1 -1
  53. package/dist/providers/types.d.ts +2 -0
  54. package/dist/providers/types.d.ts.map +1 -1
  55. package/dist/session/process-start-time.d.ts.map +1 -1
  56. package/dist/session/process-start-time.js.map +1 -1
  57. package/dist/status-bar.d.ts +7 -0
  58. package/dist/status-bar.d.ts.map +1 -1
  59. package/dist/status-bar.js +34 -6
  60. package/dist/status-bar.js.map +1 -1
  61. package/dist/terminal/host-input-mode.d.ts +4 -0
  62. package/dist/terminal/host-input-mode.d.ts.map +1 -0
  63. package/dist/terminal/host-input-mode.js +33 -0
  64. package/dist/terminal/host-input-mode.js.map +1 -0
  65. package/dist/terminal/host.d.ts +41 -16
  66. package/dist/terminal/host.d.ts.map +1 -1
  67. package/dist/terminal/host.js +197 -64
  68. package/dist/terminal/host.js.map +1 -1
  69. package/dist/terminal/input-router.d.ts +18 -3
  70. package/dist/terminal/input-router.d.ts.map +1 -1
  71. package/dist/terminal/input-router.js +35 -6
  72. package/dist/terminal/input-router.js.map +1 -1
  73. package/dist/terminal/key-event-source.d.ts +6 -15
  74. package/dist/terminal/key-event-source.d.ts.map +1 -1
  75. package/dist/terminal/key-event-source.js +3 -22
  76. package/dist/terminal/key-event-source.js.map +1 -1
  77. package/dist/terminal/key-to-bytes.d.ts +2 -0
  78. package/dist/terminal/key-to-bytes.d.ts.map +1 -1
  79. package/dist/terminal/key-to-bytes.js +89 -13
  80. package/dist/terminal/key-to-bytes.js.map +1 -1
  81. package/dist/terminal/kitty-negotiator.d.ts +9 -0
  82. package/dist/terminal/kitty-negotiator.d.ts.map +1 -0
  83. package/dist/terminal/kitty-negotiator.js +76 -0
  84. package/dist/terminal/kitty-negotiator.js.map +1 -0
  85. package/dist/terminal/koffi-loader.d.ts +1 -5
  86. package/dist/terminal/koffi-loader.d.ts.map +1 -1
  87. package/dist/terminal/koffi-loader.js.map +1 -1
  88. package/dist/terminal/mouse-mode-tracker.d.ts +36 -0
  89. package/dist/terminal/mouse-mode-tracker.d.ts.map +1 -0
  90. package/dist/terminal/mouse-mode-tracker.js +245 -0
  91. package/dist/terminal/mouse-mode-tracker.js.map +1 -0
  92. package/dist/terminal/osc52.d.ts +16 -0
  93. package/dist/terminal/osc52.d.ts.map +1 -0
  94. package/dist/terminal/osc52.js +18 -0
  95. package/dist/terminal/osc52.js.map +1 -0
  96. package/dist/terminal/render.d.ts +14 -14
  97. package/dist/terminal/render.d.ts.map +1 -1
  98. package/dist/terminal/render.js +20 -28
  99. package/dist/terminal/render.js.map +1 -1
  100. package/dist/terminal/stdin-byte-source.d.ts +4 -5
  101. package/dist/terminal/stdin-byte-source.d.ts.map +1 -1
  102. package/dist/terminal/stdin-byte-source.js +11 -13
  103. package/dist/terminal/stdin-byte-source.js.map +1 -1
  104. package/dist/terminal/virtual-terminal.d.ts +9 -1
  105. package/dist/terminal/virtual-terminal.d.ts.map +1 -1
  106. package/dist/terminal/virtual-terminal.js +33 -1
  107. package/dist/terminal/virtual-terminal.js.map +1 -1
  108. package/dist/terminal-input.d.ts +13 -12
  109. package/dist/terminal-input.d.ts.map +1 -1
  110. package/dist/terminal-input.js +82 -108
  111. package/dist/terminal-input.js.map +1 -1
  112. package/dist/text-editing/emacs-input.d.ts +1 -6
  113. package/dist/text-editing/emacs-input.d.ts.map +1 -1
  114. package/dist/text-editing/emacs-input.js +15 -6
  115. package/dist/text-editing/emacs-input.js.map +1 -1
  116. package/dist/text-editing/readline-ops.d.ts.map +1 -1
  117. package/dist/text-editing/readline-ops.js +11 -2
  118. package/dist/text-editing/readline-ops.js.map +1 -1
  119. package/package.json +5 -2
  120. package/dist/terminal/win32-console-mode.d.ts +0 -23
  121. package/dist/terminal/win32-console-mode.d.ts.map +0 -1
  122. package/dist/terminal/win32-console-mode.js +0 -67
  123. package/dist/terminal/win32-console-mode.js.map +0 -1
  124. package/dist/terminal/win32-console-source.d.ts +0 -26
  125. package/dist/terminal/win32-console-source.d.ts.map +0 -1
  126. package/dist/terminal/win32-console-source.js +0 -277
  127. package/dist/terminal/win32-console-source.js.map +0 -1
  128. package/dist/terminal/win32-key-translator.d.ts +0 -26
  129. package/dist/terminal/win32-key-translator.d.ts.map +0 -1
  130. package/dist/terminal/win32-key-translator.js +0 -109
  131. package/dist/terminal/win32-key-translator.js.map +0 -1
@@ -0,0 +1,245 @@
1
+ import { MOUSE_ANY_EVENT_OFF, MOUSE_ANY_EVENT_ON, MOUSE_BUTTON_EVENT_OFF, MOUSE_BUTTON_EVENT_ON, MOUSE_REPORTING_OFF, MOUSE_REPORTING_ON, MOUSE_SGR_OFF, MOUSE_SGR_ON, } from "../ansi.js";
2
+ const MOUSE_MODES = new Set([1000, 1002, 1003, 1006]);
3
+ const DEC_PARAM_RE = /^\d+$/;
4
+ const TRACKING_MODE_PRIORITY = {
5
+ 1000: 0,
6
+ 1002: 1,
7
+ 1003: 2,
8
+ };
9
+ const MAX_PENDING_BYTES = 512;
10
+ const ENABLE_SEQUENCE = {
11
+ 1000: MOUSE_REPORTING_ON,
12
+ 1002: MOUSE_BUTTON_EVENT_ON,
13
+ 1003: MOUSE_ANY_EVENT_ON,
14
+ 1006: MOUSE_SGR_ON,
15
+ };
16
+ const DISABLE_SEQUENCE = {
17
+ 1000: MOUSE_REPORTING_OFF,
18
+ 1002: MOUSE_BUTTON_EVENT_OFF,
19
+ 1003: MOUSE_ANY_EVENT_OFF,
20
+ 1006: MOUSE_SGR_OFF,
21
+ };
22
+ /**
23
+ * Tracks DEC private mouse-related modes requested by a child PTY.
24
+ *
25
+ * The tracker only observes the child's output stream. It does not write to
26
+ * the real terminal; callers use the returned snapshot with
27
+ * `MouseModeReconciler` so multiple sources cannot fight over the same outer
28
+ * terminal mode.
29
+ */
30
+ export class MouseModeTracker {
31
+ trackingMode;
32
+ sgrEnabled = false;
33
+ pending = "";
34
+ processChunk(data) {
35
+ if (data.length === 0)
36
+ return false;
37
+ // Fast path: with no buffered partial sequence, a chunk that contains no
38
+ // ESC cannot hold a CSI, so there is nothing to parse or carry over. This
39
+ // skips the string copy + scan for ordinary text output (the common case).
40
+ if (this.pending.length === 0 && data.indexOf("\x1b") < 0)
41
+ return false;
42
+ this.pending += data;
43
+ let changed = false;
44
+ let cursor = 0;
45
+ while (cursor < this.pending.length) {
46
+ const esc = this.pending.indexOf("\x1b[", cursor);
47
+ if (esc < 0) {
48
+ cursor = this.pending.endsWith("\x1b")
49
+ ? this.pending.length - 1
50
+ : this.pending.length;
51
+ break;
52
+ }
53
+ const finalIndex = findCsiFinal(this.pending, esc + 2);
54
+ if (finalIndex === undefined) {
55
+ cursor = esc;
56
+ break;
57
+ }
58
+ const body = this.pending.slice(esc + 2, finalIndex);
59
+ const finalByte = this.pending[finalIndex];
60
+ if ((finalByte === "h" || finalByte === "l") && body.startsWith("?")) {
61
+ changed = this.applyDecPrivateMode(body.slice(1), finalByte === "h") || changed;
62
+ }
63
+ cursor = finalIndex + 1;
64
+ }
65
+ this.pending = trimProcessedPrefix(this.pending, cursor);
66
+ return changed;
67
+ }
68
+ reset() {
69
+ this.trackingMode = undefined;
70
+ this.sgrEnabled = false;
71
+ this.pending = "";
72
+ }
73
+ snapshot() {
74
+ return effectiveModeList({
75
+ trackingMode: this.trackingMode,
76
+ sgrEnabled: this.sgrEnabled,
77
+ });
78
+ }
79
+ hasActiveReportingMode() {
80
+ return this.trackingMode !== undefined;
81
+ }
82
+ applyDecPrivateMode(params, enabled) {
83
+ let changed = false;
84
+ for (const raw of params.split(";")) {
85
+ if (!DEC_PARAM_RE.test(raw))
86
+ continue;
87
+ const mode = Number(raw);
88
+ if (!MOUSE_MODES.has(mode))
89
+ continue;
90
+ const mouseMode = mode;
91
+ if (mouseMode === 1006) {
92
+ if (this.sgrEnabled !== enabled) {
93
+ this.sgrEnabled = enabled;
94
+ changed = true;
95
+ }
96
+ continue;
97
+ }
98
+ if (enabled) {
99
+ if (this.trackingMode !== mouseMode) {
100
+ this.trackingMode = mouseMode;
101
+ changed = true;
102
+ }
103
+ }
104
+ else if (this.trackingMode !== undefined) {
105
+ this.trackingMode = undefined;
106
+ changed = true;
107
+ }
108
+ }
109
+ return changed;
110
+ }
111
+ }
112
+ /**
113
+ * Computes the outer terminal mouse-mode delta from named logical sources.
114
+ * Sources are desired state; `reflected` is what this process believes it has
115
+ * emitted to the real terminal while reflection is enabled.
116
+ */
117
+ export class MouseModeReconciler {
118
+ sources = new Map();
119
+ reflected = emptyEffectiveMouseModes();
120
+ reflectionEnabled = true;
121
+ setSource(source, modes) {
122
+ const next = normalizeEffectiveMouseModes(modes);
123
+ if (!hasEffectiveMouseModes(next)) {
124
+ this.sources.delete(source);
125
+ }
126
+ else {
127
+ this.sources.set(source, next);
128
+ }
129
+ return this.reconcile();
130
+ }
131
+ clearSource(source) {
132
+ const deleted = this.sources.delete(source);
133
+ return deleted ? this.reconcile() : "";
134
+ }
135
+ clearAll() {
136
+ const hadSources = this.sources.size > 0;
137
+ this.sources.clear();
138
+ return hadSources || hasEffectiveMouseModes(this.reflected) ? this.reconcile() : "";
139
+ }
140
+ setReflectionEnabled(enabled) {
141
+ if (this.reflectionEnabled === enabled)
142
+ return "";
143
+ this.reflectionEnabled = enabled;
144
+ if (!enabled) {
145
+ const sequence = effectiveModeSequence(this.reflected, false);
146
+ this.reflected = emptyEffectiveMouseModes();
147
+ return sequence;
148
+ }
149
+ return this.reconcile();
150
+ }
151
+ reconcile() {
152
+ if (!this.reflectionEnabled)
153
+ return "";
154
+ const desired = this.desired();
155
+ let sequence = "";
156
+ if (this.reflected.trackingMode !== undefined && desired.trackingMode === undefined) {
157
+ sequence += DISABLE_SEQUENCE[this.reflected.trackingMode];
158
+ }
159
+ if (desired.trackingMode !== undefined
160
+ && this.reflected.trackingMode !== desired.trackingMode) {
161
+ sequence += ENABLE_SEQUENCE[desired.trackingMode];
162
+ }
163
+ if (this.reflected.sgrEnabled && !desired.sgrEnabled) {
164
+ sequence += DISABLE_SEQUENCE[1006];
165
+ }
166
+ if (desired.sgrEnabled && !this.reflected.sgrEnabled) {
167
+ sequence += ENABLE_SEQUENCE[1006];
168
+ }
169
+ this.reflected = desired;
170
+ return sequence;
171
+ }
172
+ desired() {
173
+ const desired = emptyEffectiveMouseModes();
174
+ for (const source of this.sources.values()) {
175
+ if (source.trackingMode !== undefined) {
176
+ desired.trackingMode = preferredTrackingMode(desired.trackingMode, source.trackingMode);
177
+ }
178
+ desired.sgrEnabled ||= source.sgrEnabled;
179
+ }
180
+ return desired;
181
+ }
182
+ }
183
+ function findCsiFinal(data, start) {
184
+ for (let i = start; i < data.length; i++) {
185
+ const code = data.charCodeAt(i);
186
+ if (code >= 0x40 && code <= 0x7e)
187
+ return i;
188
+ }
189
+ return undefined;
190
+ }
191
+ function trimProcessedPrefix(data, cursor) {
192
+ let tail = data.slice(cursor);
193
+ if (tail.length <= MAX_PENDING_BYTES)
194
+ return tail;
195
+ const lastEsc = tail.lastIndexOf("\x1b[");
196
+ if (lastEsc >= 0 && tail.length - lastEsc <= MAX_PENDING_BYTES) {
197
+ tail = tail.slice(lastEsc);
198
+ }
199
+ else {
200
+ tail = "";
201
+ }
202
+ return tail;
203
+ }
204
+ function emptyEffectiveMouseModes() {
205
+ return { trackingMode: undefined, sgrEnabled: false };
206
+ }
207
+ function hasEffectiveMouseModes(state) {
208
+ return state.trackingMode !== undefined || state.sgrEnabled;
209
+ }
210
+ function normalizeEffectiveMouseModes(modes) {
211
+ const state = emptyEffectiveMouseModes();
212
+ for (const mode of modes) {
213
+ if (mode === 1006) {
214
+ state.sgrEnabled = true;
215
+ }
216
+ else {
217
+ state.trackingMode = preferredTrackingMode(state.trackingMode, mode);
218
+ }
219
+ }
220
+ return state;
221
+ }
222
+ function preferredTrackingMode(current, candidate) {
223
+ if (current === undefined)
224
+ return candidate;
225
+ return TRACKING_MODE_PRIORITY[candidate] > TRACKING_MODE_PRIORITY[current]
226
+ ? candidate
227
+ : current;
228
+ }
229
+ function effectiveModeList(state) {
230
+ const modes = [];
231
+ if (state.trackingMode !== undefined)
232
+ modes.push(state.trackingMode);
233
+ if (state.sgrEnabled)
234
+ modes.push(1006);
235
+ return modes;
236
+ }
237
+ function effectiveModeSequence(state, enabled) {
238
+ const table = enabled ? ENABLE_SEQUENCE : DISABLE_SEQUENCE;
239
+ let sequence = "";
240
+ for (const mode of effectiveModeList(state)) {
241
+ sequence += table[mode];
242
+ }
243
+ return sequence;
244
+ }
245
+ //# sourceMappingURL=mouse-mode-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouse-mode-tracker.js","sourceRoot":"","sources":["../../src/terminal/mouse-mode-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type Osc52Parsed = {
2
+ kind: "query";
3
+ selection: string;
4
+ } | {
5
+ kind: "set";
6
+ selection: string;
7
+ base64: string;
8
+ } | {
9
+ kind: "clear";
10
+ selection: string;
11
+ } | {
12
+ kind: "invalid";
13
+ };
14
+ export declare function parseOsc52(data: string): Osc52Parsed;
15
+ export declare function buildOsc52Forward(data: string): string;
16
+ //# sourceMappingURL=osc52.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc52.d.ts","sourceRoot":"","sources":["../../src/terminal/osc52.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAGxB,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQpD;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,18 @@
1
+ // `data` is the xterm OSC 52 handler argument: everything after "52;".
2
+ export function parseOsc52(data) {
3
+ const semi = data.indexOf(";");
4
+ if (semi === -1)
5
+ return { kind: "invalid" };
6
+ const selection = data.slice(0, semi);
7
+ const payload = data.slice(semi + 1);
8
+ if (payload === "?")
9
+ return { kind: "query", selection };
10
+ if (payload === "")
11
+ return { kind: "clear", selection };
12
+ return { kind: "set", selection, base64: payload };
13
+ }
14
+ // Re-emit verbatim and let the outer terminal decide how to honor it.
15
+ export function buildOsc52Forward(data) {
16
+ return `\x1b]52;${data}\x07`;
17
+ }
18
+ //# sourceMappingURL=osc52.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"osc52.js","sourceRoot":"","sources":["../../src/terminal/osc52.ts"],"names":[],"mappings":"AAMA,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACzD,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,WAAW,IAAI,MAAM,CAAC;AAC/B,CAAC"}
@@ -14,29 +14,29 @@ declare function renderLine(line: IBufferLine, cols: number, scratch: IBufferCel
14
14
  forceReset?: boolean;
15
15
  }): string;
16
16
  /**
17
- * Render the child viewport into a single ANSI string.
17
+ * Render the child viewport as row bodies.
18
18
  *
19
- * The string positions the cursor at home, paints `childRows` lines from
20
- * the active buffer, and clears any rows below it that lie inside the
21
- * non-status region. The status row (when reserved by the layout) is
22
- * **not** touched here — the host paints it last, on top of this output.
19
+ * Each entry assumes the cursor is already at column 1 of the target row.
20
+ * No cursor positioning or leading home sequence is included.
23
21
  */
24
- export declare function renderChildViewport(vt: VirtualTerminal, layout: TerminalLayout): string;
22
+ export declare function renderChildViewportRows(vt: VirtualTerminal, layout: TerminalLayout): string[];
25
23
  /**
26
24
  * Render a virtual-terminal viewport as plain surface lines.
27
25
  *
28
- * Unlike `renderChildViewport`, this returns row fragments only: no cursor
29
- * positioning and no clear-to-EOL suffix. The host surface renderer owns row
30
- * placement, clearing, and width padding.
26
+ * Returns row fragments only: no cursor positioning and no clear-to-EOL
27
+ * suffix. The host surface renderer owns row placement, clearing, and width
28
+ * padding.
31
29
  */
32
30
  export declare function renderViewportLines(vt: VirtualTerminal, rows: number, cols: number): string[];
33
31
  /**
34
- * Render an in-band ANSI fragment that paints the status string at
35
- * `layout.statusRow` with inverse video, padded/truncated to `columns`.
36
- *
37
- * Returns `""` if the layout does not reserve a status row.
32
+ * Whether the hardware cursor should mirror this VT's cursor for the current
33
+ * frame: the child has not hidden it and the live cursor row is on-screen.
34
+ */
35
+ export declare function shouldShowVtCursor(vt: VirtualTerminal): boolean;
36
+ /**
37
+ * Render the status row body without cursor positioning.
38
38
  */
39
- export declare function renderStatusLine(layout: TerminalLayout, text: string): string;
39
+ export declare function renderStatusRowBody(layout: TerminalLayout, text: string): string;
40
40
  export declare const __test: {
41
41
  padOrClip: typeof padOrClip;
42
42
  visibleLength: typeof visibleLength;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/terminal/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA6ItD;;;;;;GAMG;AACH,iBAAS,UAAU,CACjB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,MAAM,CA+CR;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,MAAM,CAkBR;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,eAAe,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAeV;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,CAYR;AAED,eAAO,MAAM,MAAM;;;;CAA2C,CAAC"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/terminal/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA6ItD;;;;;;GAMG;AACH,iBAAS,UAAU,CACjB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,MAAM,CA+CR;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,cAAc,GACrB,MAAM,EAAE,CAaV;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,eAAe,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAeV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,CAQR;AAED,eAAO,MAAM,MAAM;;;;CAA2C,CAAC"}
@@ -167,38 +167,30 @@ function renderLine(line, cols, scratch, opts = {}) {
167
167
  return out;
168
168
  }
169
169
  /**
170
- * Render the child viewport into a single ANSI string.
170
+ * Render the child viewport as row bodies.
171
171
  *
172
- * The string positions the cursor at home, paints `childRows` lines from
173
- * the active buffer, and clears any rows below it that lie inside the
174
- * non-status region. The status row (when reserved by the layout) is
175
- * **not** touched here — the host paints it last, on top of this output.
172
+ * Each entry assumes the cursor is already at column 1 of the target row.
173
+ * No cursor positioning or leading home sequence is included.
176
174
  */
177
- export function renderChildViewport(vt, layout) {
175
+ export function renderChildViewportRows(vt, layout) {
178
176
  const buffer = vt.buffer;
179
177
  const scratch = vt.newCell();
180
178
  const top = buffer.viewportY;
181
179
  const childRows = layout.childRows;
182
180
  const cols = layout.childCols;
183
- let out = "\x1b[H"; // home (row 1, col 1)
181
+ const rows = [];
184
182
  for (let row = 0; row < childRows; row++) {
185
183
  const line = buffer.getLine(top + row);
186
- out += `\x1b[${row + 1};1H`;
187
- if (line) {
188
- out += renderLine(line, cols, scratch);
189
- }
190
- else {
191
- out += CLEAR_LINE_RIGHT;
192
- }
184
+ rows.push(line ? renderLine(line, cols, scratch) : CLEAR_LINE_RIGHT);
193
185
  }
194
- return out;
186
+ return rows;
195
187
  }
196
188
  /**
197
189
  * Render a virtual-terminal viewport as plain surface lines.
198
190
  *
199
- * Unlike `renderChildViewport`, this returns row fragments only: no cursor
200
- * positioning and no clear-to-EOL suffix. The host surface renderer owns row
201
- * placement, clearing, and width padding.
191
+ * Returns row fragments only: no cursor positioning and no clear-to-EOL
192
+ * suffix. The host surface renderer owns row placement, clearing, and width
193
+ * padding.
202
194
  */
203
195
  export function renderViewportLines(vt, rows, cols) {
204
196
  const buffer = vt.buffer;
@@ -216,18 +208,18 @@ export function renderViewportLines(vt, rows, cols) {
216
208
  return lines;
217
209
  }
218
210
  /**
219
- * Render an in-band ANSI fragment that paints the status string at
220
- * `layout.statusRow` with inverse video, padded/truncated to `columns`.
221
- *
222
- * Returns `""` if the layout does not reserve a status row.
211
+ * Whether the hardware cursor should mirror this VT's cursor for the current
212
+ * frame: the child has not hidden it and the live cursor row is on-screen.
223
213
  */
224
- export function renderStatusLine(layout, text) {
225
- if (layout.statusRow === undefined) {
226
- return "";
227
- }
214
+ export function shouldShowVtCursor(vt) {
215
+ return vt.cursorVisible && !vt.isScrolledBack;
216
+ }
217
+ /**
218
+ * Render the status row body without cursor positioning.
219
+ */
220
+ export function renderStatusRowBody(layout, text) {
228
221
  const padded = padOrClip(text, layout.columns);
229
- return (`\x1b[${layout.statusRow};1H` +
230
- `\x1b[2K` +
222
+ return (`\x1b[2K` +
231
223
  `\x1b[0m\x1b[7m` +
232
224
  padded +
233
225
  `\x1b[27m\x1b[0m`);
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/terminal/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/terminal/render.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { type TerminalKey } from "../terminal-input.js";
2
2
  import type { KeyEventSource, ResizeSize } from "./key-event-source.js";
3
3
  /**
4
- * Default `KeyEventSource` for off-Windows platforms and the Windows
5
- * fallback when koffi cannot load. Owns raw-mode + VT-input setup on
6
- * its injected stdin.
4
+ * Default `KeyEventSource`. Owns raw-mode on its injected stdin and
5
+ * optional VT input-mode negotiation on its injected stdout.
7
6
  *
8
7
  * Internally drives a `TerminalKeyParser`; consumers only see the
9
8
  * structured `TerminalKey[]` stream — the byte-level parser is no
@@ -11,13 +10,13 @@ import type { KeyEventSource, ResizeSize } from "./key-event-source.js";
11
10
  */
12
11
  export declare class StdinByteSource implements KeyEventSource {
13
12
  private readonly stdin;
13
+ private readonly out;
14
14
  private readonly parser;
15
15
  private readonly subscribers;
16
16
  private dataListener;
17
- private vtInputGuard;
18
17
  private prevRawMode;
19
18
  private started;
20
- constructor(stdin: NodeJS.ReadStream);
19
+ constructor(stdin: NodeJS.ReadStream, out?: NodeJS.WritableStream);
21
20
  start(): void;
22
21
  stop(): void;
23
22
  onEvents(cb: (events: TerminalKey[]) => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"stdin-byte-source.d.ts","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;;GAQG;AACH,qBAAa,eAAgB,YAAW,cAAc;IAQxC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEK,KAAK,EAAE,MAAM,CAAC,UAAU;IAKrD,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAkBZ,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAQrD,OAAO,CAAC,MAAM;CAcf"}
1
+ {"version":3,"file":"stdin-byte-source.d.ts","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,cAAc;IAQlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IARtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAGL,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,GAAG,GAAE,MAAM,CAAC,cAA+B;IAM9D,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAiBZ,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAKzD,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAOrD,OAAO,CAAC,MAAM;CAcf"}
@@ -1,9 +1,8 @@
1
1
  import { TerminalKeyParser, } from "../terminal-input.js";
2
- import { enableVtInputOnStdin, } from "./win32-console-mode.js";
2
+ import { disableHostInputModes, enableHostInputModes } from "./host-input-mode.js";
3
3
  /**
4
- * Default `KeyEventSource` for off-Windows platforms and the Windows
5
- * fallback when koffi cannot load. Owns raw-mode + VT-input setup on
6
- * its injected stdin.
4
+ * Default `KeyEventSource`. Owns raw-mode on its injected stdin and
5
+ * optional VT input-mode negotiation on its injected stdout.
7
6
  *
8
7
  * Internally drives a `TerminalKeyParser`; consumers only see the
9
8
  * structured `TerminalKey[]` stream — the byte-level parser is no
@@ -11,14 +10,15 @@ import { enableVtInputOnStdin, } from "./win32-console-mode.js";
11
10
  */
12
11
  export class StdinByteSource {
13
12
  stdin;
13
+ out;
14
14
  parser;
15
15
  subscribers = new Set();
16
16
  dataListener;
17
- vtInputGuard = null;
18
17
  prevRawMode = false;
19
18
  started = false;
20
- constructor(stdin) {
19
+ constructor(stdin, out = process.stdout) {
21
20
  this.stdin = stdin;
21
+ this.out = out;
22
22
  this.parser = new TerminalKeyParser();
23
23
  this.parser.onDeferredKeys((keys) => this.fanOut(keys));
24
24
  }
@@ -29,7 +29,7 @@ export class StdinByteSource {
29
29
  if (this.stdin.isTTY) {
30
30
  this.prevRawMode = this.stdin.isRaw === true;
31
31
  this.stdin.setRawMode(true);
32
- this.vtInputGuard = enableVtInputOnStdin();
32
+ enableHostInputModes(this.out);
33
33
  this.stdin.resume();
34
34
  }
35
35
  this.dataListener = (chunk) => {
@@ -48,9 +48,8 @@ export class StdinByteSource {
48
48
  this.dataListener = undefined;
49
49
  }
50
50
  this.parser.cancelPendingEscape();
51
- this.vtInputGuard?.restore();
52
- this.vtInputGuard = null;
53
51
  if (this.stdin.isTTY) {
52
+ disableHostInputModes(this.out);
54
53
  try {
55
54
  this.stdin.setRawMode(this.prevRawMode);
56
55
  }
@@ -62,10 +61,9 @@ export class StdinByteSource {
62
61
  return () => { this.subscribers.delete(cb); };
63
62
  }
64
63
  onResize(_cb) {
65
- // On the byte path libuv processes `WINDOW_BUFFER_SIZE_RECORD`
66
- // directly on its watcher thread: it refreshes `stdout.columns`/`rows`
67
- // and fires `process.stdout.emit("resize")`. The host listens for that
68
- // signal separately, so this source has nothing to deliver here.
64
+ // libuv refreshes stdout.columns/stdout.rows and fires the stdout
65
+ // "resize" event. The host listens for that signal separately, so
66
+ // this source has nothing to deliver here.
69
67
  return () => { };
70
68
  }
71
69
  fanOut(events) {
@@ -1 +1 @@
1
- {"version":3,"file":"stdin-byte-source.js","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stdin-byte-source.js","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGnF;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAQP;IACA;IARF,MAAM,CAAoB;IAC1B,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAClE,YAAY,CAAwC;IACpD,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAAG,KAAK,CAAC;IAExB,YACmB,KAAwB,EACxB,MAA6B,OAAO,CAAC,MAAM;QAD3C,UAAK,GAAL,KAAK,CAAmB;QACxB,QAAG,GAAH,GAAG,CAAwC;QAE5D,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,IAAI,CAAC,CAAC;YAC7B,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,EAAmC;QAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,GAA+B;QACtC,kEAAkE;QAClE,kEAAkE;QAClE,2CAA2C;QAC3C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,MAAqB;QAClC,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;YAC3F,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC;gBAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,2DAA2D,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,7 @@
1
1
  import type { IBuffer, IBufferCell } from "@xterm/headless";
2
+ export interface VirtualTerminalOptions {
3
+ onOscClipboard?: (data: string) => void;
4
+ }
2
5
  /**
3
6
  * Wraps `@xterm/headless` so the rest of the host doesn't need to
4
7
  * know xterm-specific details. Owns:
@@ -18,7 +21,8 @@ import type { IBuffer, IBufferCell } from "@xterm/headless";
18
21
  */
19
22
  export declare class VirtualTerminal {
20
23
  private readonly term;
21
- constructor(cols: number, rows: number);
24
+ private cursorVisibleState;
25
+ constructor(cols: number, rows: number, opts?: VirtualTerminalOptions);
22
26
  write(data: string | Uint8Array, callback?: () => void): void;
23
27
  resize(cols: number, rows: number): void;
24
28
  get cols(): number;
@@ -31,6 +35,10 @@ export declare class VirtualTerminal {
31
35
  get cursorY(): number;
32
36
  /** True when the alternate buffer is active. */
33
37
  get isAlternate(): boolean;
38
+ /** True when the child enabled bracketed paste mode (`CSI ? 2004 h`). */
39
+ get bracketedPaste(): boolean;
40
+ /** True unless the child hid the cursor via DECTCEM (`CSI ?25l`). Default: true. */
41
+ get cursorVisible(): boolean;
34
42
  /** Viewport top row index in scrollback coordinates. */
35
43
  get viewportY(): number;
36
44
  /** Buffer base Y — the row where the live tail begins. */
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-terminal.d.ts","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAA6B,MAAM,iBAAiB,CAAC;AAIvF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAUtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQ7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0DAA0D;IAC1D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,wDAAwD;IACxD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0DAA0D;IAC1D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gFAAgF;IAChF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8DAA8D;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,8EAA8E;IAC9E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,uDAAuD;IACvD,WAAW,IAAI,IAAI;IAInB,mDAAmD;IACnD,cAAc,IAAI,IAAI;IAItB,oFAAoF;IACpF,OAAO,IAAI,WAAW;IAItB,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"virtual-terminal.d.ts","sourceRoot":"","sources":["../../src/terminal/virtual-terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAA6B,MAAM,iBAAiB,CAAC;AAKvF,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAQ;gBAEtB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,sBAA2B;IAkCzE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQ7D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0DAA0D;IAC1D,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,8CAA8C;IAC9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,yEAAyE;IACzE,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,oFAAoF;IACpF,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,wDAAwD;IACxD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,0DAA0D;IAC1D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,gFAAgF;IAChF,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,2DAA2D;IAC3D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,8DAA8D;IAC9D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC,8EAA8E;IAC9E,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC,uDAAuD;IACvD,WAAW,IAAI,IAAI;IAInB,mDAAmD;IACnD,cAAc,IAAI,IAAI;IAItB,oFAAoF;IACpF,OAAO,IAAI,WAAW;IAItB,OAAO,IAAI,IAAI;CAGhB"}