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.
- package/README.md +16 -24
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +6 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/ansi.d.ts +23 -4
- package/dist/ansi.d.ts.map +1 -1
- package/dist/ansi.js +28 -5
- package/dist/ansi.js.map +1 -1
- package/dist/auto-update/gate.d.ts +1 -0
- package/dist/auto-update/gate.d.ts.map +1 -1
- package/dist/auto-update/gate.js +7 -8
- package/dist/auto-update/gate.js.map +1 -1
- package/dist/auto-update/install-agents.d.ts +1 -0
- package/dist/auto-update/install-agents.d.ts.map +1 -1
- package/dist/auto-update/install-agents.js +19 -8
- package/dist/auto-update/install-agents.js.map +1 -1
- package/dist/auto-update/update-request.d.ts +23 -0
- package/dist/auto-update/update-request.d.ts.map +1 -0
- package/dist/auto-update/update-request.js +83 -0
- package/dist/auto-update/update-request.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/dump/hotkey.d.ts +0 -3
- package/dist/dump/hotkey.d.ts.map +1 -1
- package/dist/dump/hotkey.js +0 -3
- package/dist/dump/hotkey.js.map +1 -1
- package/dist/launcher.d.ts +23 -0
- package/dist/launcher.d.ts.map +1 -0
- package/dist/launcher.js +90 -0
- package/dist/launcher.js.map +1 -0
- package/dist/offscreen/controller.d.ts +4 -1
- package/dist/offscreen/controller.d.ts.map +1 -1
- package/dist/offscreen/controller.js +48 -3
- package/dist/offscreen/controller.js.map +1 -1
- package/dist/offscreen/fork-launch.d.ts +1 -0
- package/dist/offscreen/fork-launch.d.ts.map +1 -1
- package/dist/offscreen/fork-launch.js +4 -0
- package/dist/offscreen/fork-launch.js.map +1 -1
- package/dist/offscreen/fork.d.ts +6 -1
- package/dist/offscreen/fork.d.ts.map +1 -1
- package/dist/offscreen/fork.js +26 -3
- package/dist/offscreen/fork.js.map +1 -1
- package/dist/offscreen/surface.d.ts.map +1 -1
- package/dist/offscreen/surface.js +6 -2
- package/dist/offscreen/surface.js.map +1 -1
- package/dist/providers/claude/strategy.d.ts +6 -0
- package/dist/providers/claude/strategy.d.ts.map +1 -1
- package/dist/providers/claude/strategy.js +2 -0
- package/dist/providers/claude/strategy.js.map +1 -1
- package/dist/providers/codex/strategy.d.ts +1 -0
- package/dist/providers/codex/strategy.d.ts.map +1 -1
- package/dist/providers/codex/strategy.js +7 -1
- package/dist/providers/codex/strategy.js.map +1 -1
- package/dist/providers/types.d.ts +2 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/session/process-start-time.d.ts.map +1 -1
- package/dist/session/process-start-time.js.map +1 -1
- package/dist/status-bar.d.ts +7 -0
- package/dist/status-bar.d.ts.map +1 -1
- package/dist/status-bar.js +34 -6
- package/dist/status-bar.js.map +1 -1
- package/dist/terminal/host-input-mode.d.ts +4 -0
- package/dist/terminal/host-input-mode.d.ts.map +1 -0
- package/dist/terminal/host-input-mode.js +33 -0
- package/dist/terminal/host-input-mode.js.map +1 -0
- package/dist/terminal/host.d.ts +41 -16
- package/dist/terminal/host.d.ts.map +1 -1
- package/dist/terminal/host.js +197 -64
- package/dist/terminal/host.js.map +1 -1
- package/dist/terminal/input-router.d.ts +18 -3
- package/dist/terminal/input-router.d.ts.map +1 -1
- package/dist/terminal/input-router.js +35 -6
- package/dist/terminal/input-router.js.map +1 -1
- package/dist/terminal/key-event-source.d.ts +6 -15
- package/dist/terminal/key-event-source.d.ts.map +1 -1
- package/dist/terminal/key-event-source.js +3 -22
- package/dist/terminal/key-event-source.js.map +1 -1
- package/dist/terminal/key-to-bytes.d.ts +2 -0
- package/dist/terminal/key-to-bytes.d.ts.map +1 -1
- package/dist/terminal/key-to-bytes.js +89 -13
- package/dist/terminal/key-to-bytes.js.map +1 -1
- package/dist/terminal/kitty-negotiator.d.ts +9 -0
- package/dist/terminal/kitty-negotiator.d.ts.map +1 -0
- package/dist/terminal/kitty-negotiator.js +76 -0
- package/dist/terminal/kitty-negotiator.js.map +1 -0
- package/dist/terminal/koffi-loader.d.ts +1 -5
- package/dist/terminal/koffi-loader.d.ts.map +1 -1
- package/dist/terminal/koffi-loader.js.map +1 -1
- package/dist/terminal/mouse-mode-tracker.d.ts +36 -0
- package/dist/terminal/mouse-mode-tracker.d.ts.map +1 -0
- package/dist/terminal/mouse-mode-tracker.js +245 -0
- package/dist/terminal/mouse-mode-tracker.js.map +1 -0
- package/dist/terminal/osc52.d.ts +16 -0
- package/dist/terminal/osc52.d.ts.map +1 -0
- package/dist/terminal/osc52.js +18 -0
- package/dist/terminal/osc52.js.map +1 -0
- package/dist/terminal/render.d.ts +14 -14
- package/dist/terminal/render.d.ts.map +1 -1
- package/dist/terminal/render.js +20 -28
- package/dist/terminal/render.js.map +1 -1
- package/dist/terminal/stdin-byte-source.d.ts +4 -5
- package/dist/terminal/stdin-byte-source.d.ts.map +1 -1
- package/dist/terminal/stdin-byte-source.js +11 -13
- package/dist/terminal/stdin-byte-source.js.map +1 -1
- package/dist/terminal/virtual-terminal.d.ts +9 -1
- package/dist/terminal/virtual-terminal.d.ts.map +1 -1
- package/dist/terminal/virtual-terminal.js +33 -1
- package/dist/terminal/virtual-terminal.js.map +1 -1
- package/dist/terminal-input.d.ts +13 -12
- package/dist/terminal-input.d.ts.map +1 -1
- package/dist/terminal-input.js +82 -108
- package/dist/terminal-input.js.map +1 -1
- package/dist/text-editing/emacs-input.d.ts +1 -6
- package/dist/text-editing/emacs-input.d.ts.map +1 -1
- package/dist/text-editing/emacs-input.js +15 -6
- package/dist/text-editing/emacs-input.js.map +1 -1
- package/dist/text-editing/readline-ops.d.ts.map +1 -1
- package/dist/text-editing/readline-ops.js +11 -2
- package/dist/text-editing/readline-ops.js.map +1 -1
- package/package.json +5 -2
- package/dist/terminal/win32-console-mode.d.ts +0 -23
- package/dist/terminal/win32-console-mode.d.ts.map +0 -1
- package/dist/terminal/win32-console-mode.js +0 -67
- package/dist/terminal/win32-console-mode.js.map +0 -1
- package/dist/terminal/win32-console-source.d.ts +0 -26
- package/dist/terminal/win32-console-source.d.ts.map +0 -1
- package/dist/terminal/win32-console-source.js +0 -277
- package/dist/terminal/win32-console-source.js.map +0 -1
- package/dist/terminal/win32-key-translator.d.ts +0 -26
- package/dist/terminal/win32-key-translator.d.ts.map +0 -1
- package/dist/terminal/win32-key-translator.js +0 -109
- package/dist/terminal/win32-key-translator.js.map +0 -1
|
@@ -5,6 +5,11 @@ import { encodeKeysToBytes } from "./key-to-bytes.js";
|
|
|
5
5
|
* to feel precise while still moving meaningfully on every notch.
|
|
6
6
|
*/
|
|
7
7
|
export const WHEEL_LINES_PER_EVENT = 3;
|
|
8
|
+
const RAW_SGR_MOUSE_RE = /^\x1b\[<\d+;\d+;\d+[Mm]$/;
|
|
9
|
+
const SYNC_OUTPUT_REPORT_RE = /^\x1b\[\?2026;(\d+)\$y$/;
|
|
10
|
+
export function isRawSgrMouseFrame(key) {
|
|
11
|
+
return key.kind === "raw" && RAW_SGR_MOUSE_RE.test(key.bytes.toString("ascii"));
|
|
12
|
+
}
|
|
8
13
|
/**
|
|
9
14
|
* Event-based input router. Operates on `TerminalKey[]` produced by a
|
|
10
15
|
* `KeyEventSource`; the byte-level state machine is internal to
|
|
@@ -16,9 +21,12 @@ export const WHEEL_LINES_PER_EVENT = 3;
|
|
|
16
21
|
* 2. Active parent UI mode (if attached) — fully consumes by default.
|
|
17
22
|
* 3. If the child is in the alternate buffer, Ctrl+C still interrupts
|
|
18
23
|
* but page/home/end/wheel are forwarded to the child.
|
|
19
|
-
* 4. Wheel events →
|
|
20
|
-
*
|
|
21
|
-
*
|
|
24
|
+
* 4. Wheel events → child when child mouse reporting is active, otherwise
|
|
25
|
+
* scrollback callbacks.
|
|
26
|
+
* 5. Raw SGR mouse frames are dropped in host-owned normal-buffer mode
|
|
27
|
+
* unless child mouse reporting is active.
|
|
28
|
+
* 6. Host shortcuts: Ctrl+C → onInterrupt; page/home/end → scrollback.
|
|
29
|
+
* 7. Remaining events → child PTY when `gateOpen` is true, encoded via
|
|
22
30
|
* `encodeKeysToBytes`. Otherwise dropped.
|
|
23
31
|
*/
|
|
24
32
|
export class InputRouter {
|
|
@@ -48,9 +56,18 @@ export class InputRouter {
|
|
|
48
56
|
handleEvents(events) {
|
|
49
57
|
if (events.length === 0)
|
|
50
58
|
return;
|
|
51
|
-
// Pre-filter:
|
|
59
|
+
// Pre-filter: host-owned control reports and dump hotkey are stripped
|
|
60
|
+
// before parent UI or child routing.
|
|
52
61
|
const filtered = [];
|
|
53
62
|
for (const ev of events) {
|
|
63
|
+
if (ev.kind === "raw") {
|
|
64
|
+
const report = ev.bytes.toString("ascii").match(SYNC_OUTPUT_REPORT_RE);
|
|
65
|
+
if (report) {
|
|
66
|
+
const value = Number(report[1]);
|
|
67
|
+
this.options.onSyncOutputReport?.(value !== 0 && value !== 4);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
54
71
|
if (isDumpHotkey(ev)) {
|
|
55
72
|
this.options.onDump?.();
|
|
56
73
|
continue;
|
|
@@ -66,6 +83,7 @@ export class InputRouter {
|
|
|
66
83
|
return;
|
|
67
84
|
}
|
|
68
85
|
const childAlternate = this.options.isChildAlternate?.() === true;
|
|
86
|
+
const childMouseActive = this.options.isChildMouseActive?.() === true;
|
|
69
87
|
if (childAlternate) {
|
|
70
88
|
const forward = [];
|
|
71
89
|
for (const ev of filtered) {
|
|
@@ -86,6 +104,10 @@ export class InputRouter {
|
|
|
86
104
|
const forward = [];
|
|
87
105
|
for (const ev of filtered) {
|
|
88
106
|
if (ev.kind === "wheel") {
|
|
107
|
+
if (childMouseActive) {
|
|
108
|
+
forward.push(ev);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
89
111
|
if (ev.direction === "up") {
|
|
90
112
|
this.options.onScrollBackLines?.(WHEEL_LINES_PER_EVENT);
|
|
91
113
|
}
|
|
@@ -94,6 +116,9 @@ export class InputRouter {
|
|
|
94
116
|
}
|
|
95
117
|
continue;
|
|
96
118
|
}
|
|
119
|
+
if (!childMouseActive && isRawSgrMouseFrame(ev)) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
97
122
|
if (ev.kind === "control" && ev.byte === 0x03) {
|
|
98
123
|
if (this.options.onInterrupt) {
|
|
99
124
|
this.options.onInterrupt();
|
|
@@ -118,13 +143,17 @@ export class InputRouter {
|
|
|
118
143
|
}
|
|
119
144
|
if (forward.length === 0)
|
|
120
145
|
return;
|
|
121
|
-
this.forwardToChild(forward);
|
|
146
|
+
this.forwardToChild(forward, childMouseActive ? { wheelMode: "sgr" } : undefined);
|
|
122
147
|
}
|
|
123
148
|
forwardToChild(events, encodeOptions) {
|
|
124
149
|
const child = this.childHandle;
|
|
125
150
|
if (!child || !child.gateOpen)
|
|
126
151
|
return;
|
|
127
|
-
const buf = encodeKeysToBytes(events,
|
|
152
|
+
const buf = encodeKeysToBytes(events, {
|
|
153
|
+
...encodeOptions,
|
|
154
|
+
childKittyFlags: this.options.getChildKittyFlags?.() ?? 0,
|
|
155
|
+
childBracketedPaste: this.options.getChildBracketedPaste?.() ?? false,
|
|
156
|
+
});
|
|
128
157
|
if (buf.length === 0)
|
|
129
158
|
return;
|
|
130
159
|
// Forward the encoded Buffer verbatim — the PtyHandle adapter is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-router.js","sourceRoot":"","sources":["../../src/terminal/input-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,mBAAmB,CAAC;AAoB9E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"input-router.js","sourceRoot":"","sources":["../../src/terminal/input-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import type { TerminalKey } from "../terminal-input.js";
|
|
|
2
2
|
export interface KeyEventSourceOptions {
|
|
3
3
|
/** Override stdin. Default: `process.stdin`. */
|
|
4
4
|
stdin?: NodeJS.ReadStream;
|
|
5
|
+
/** Override terminal output for host input-mode negotiation. Default: `process.stdout`. */
|
|
6
|
+
stdout?: NodeJS.WritableStream;
|
|
5
7
|
}
|
|
6
8
|
/** Post-resize terminal size carried by a `KeyEventSource.onResize` callback. */
|
|
7
9
|
export interface ResizeSize {
|
|
@@ -16,7 +18,7 @@ export interface ResizeSize {
|
|
|
16
18
|
* - Multiple subscribers may attach via `onEvents`; each event burst
|
|
17
19
|
* fans out to all of them.
|
|
18
20
|
* - `start()` / `stop()` are idempotent; the source owns raw-mode and
|
|
19
|
-
*
|
|
21
|
+
* host input-mode setup on its injected stdout.
|
|
20
22
|
* - Deferred bare-Esc events surface through the same subscriber
|
|
21
23
|
* callback as regular events.
|
|
22
24
|
*/
|
|
@@ -27,26 +29,15 @@ export interface KeyEventSource {
|
|
|
27
29
|
onEvents(cb: (events: TerminalKey[]) => void): () => void;
|
|
28
30
|
/**
|
|
29
31
|
* Fires on a terminal/buffer resize, carrying the post-resize size when
|
|
30
|
-
* the source can determine it.
|
|
31
|
-
* authoritative dimensions decoded from `WINDOW_BUFFER_SIZE_RECORD` —
|
|
32
|
-
* `stdout.columns`/`rows` are stale at that point because libuv never
|
|
33
|
-
* saw the record. Returns an idempotent unsubscribe.
|
|
32
|
+
* the source can determine it. Returns an idempotent unsubscribe.
|
|
34
33
|
*/
|
|
35
34
|
onResize(cb: (size: ResizeSize) => void): () => void;
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
37
|
* Build a `KeyEventSource` for the given (or default) stdin.
|
|
39
38
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* FFI — bypassing ConPTY's lossy byte translation. Otherwise (including
|
|
43
|
-
* koffi-load failure on Windows), returns a `StdinByteSource` that wraps
|
|
44
|
-
* `TerminalKeyParser` over the injected stdin for byte-identical
|
|
45
|
-
* behavior.
|
|
46
|
-
*
|
|
47
|
-
* The `stdin === process.stdin` gate guarantees that test mocks and
|
|
48
|
-
* embedded hosts with a custom stream always fall through to
|
|
49
|
-
* `StdinByteSource`.
|
|
39
|
+
* The source always reads VT bytes from stdin and requests optional host
|
|
40
|
+
* input modes (kitty keyboard protocol + bracketed paste) on stdout.
|
|
50
41
|
*/
|
|
51
42
|
export declare function createKeyEventSource(opts?: KeyEventSourceOptions): KeyEventSource;
|
|
52
43
|
//# sourceMappingURL=key-event-source.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-event-source.d.ts","sourceRoot":"","sources":["../../src/terminal/key-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"key-event-source.d.ts","sourceRoot":"","sources":["../../src/terminal/key-event-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC;AAED,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,qBAA0B,GAC/B,cAAc,CAGhB"}
|
|
@@ -1,31 +1,12 @@
|
|
|
1
1
|
import { StdinByteSource } from "./stdin-byte-source.js";
|
|
2
|
-
import { Win32ConsoleSource } from "./win32-console-source.js";
|
|
3
|
-
let warnedOnFallback = false;
|
|
4
2
|
/**
|
|
5
3
|
* Build a `KeyEventSource` for the given (or default) stdin.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* FFI — bypassing ConPTY's lossy byte translation. Otherwise (including
|
|
10
|
-
* koffi-load failure on Windows), returns a `StdinByteSource` that wraps
|
|
11
|
-
* `TerminalKeyParser` over the injected stdin for byte-identical
|
|
12
|
-
* behavior.
|
|
13
|
-
*
|
|
14
|
-
* The `stdin === process.stdin` gate guarantees that test mocks and
|
|
15
|
-
* embedded hosts with a custom stream always fall through to
|
|
16
|
-
* `StdinByteSource`.
|
|
5
|
+
* The source always reads VT bytes from stdin and requests optional host
|
|
6
|
+
* input modes (kitty keyboard protocol + bracketed paste) on stdout.
|
|
17
7
|
*/
|
|
18
8
|
export function createKeyEventSource(opts = {}) {
|
|
19
9
|
const stdin = opts.stdin ?? process.stdin;
|
|
20
|
-
|
|
21
|
-
const native = Win32ConsoleSource.tryCreate();
|
|
22
|
-
if (native)
|
|
23
|
-
return native;
|
|
24
|
-
if (!warnedOnFallback) {
|
|
25
|
-
warnedOnFallback = true;
|
|
26
|
-
process.stderr.write("[poly-weaver] koffi unavailable; using stdin input path\n");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return new StdinByteSource(stdin);
|
|
10
|
+
return new StdinByteSource(stdin, opts.stdout ?? process.stdout);
|
|
30
11
|
}
|
|
31
12
|
//# sourceMappingURL=key-event-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-event-source.js","sourceRoot":"","sources":["../../src/terminal/key-event-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"key-event-source.js","sourceRoot":"","sources":["../../src/terminal/key-event-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuCzD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1C,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-to-bytes.d.ts","sourceRoot":"","sources":["../../src/terminal/key-to-bytes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"key-to-bytes.d.ts","sourceRoot":"","sources":["../../src/terminal/key-to-bytes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoBxD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAShG"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PASTE_END, PASTE_START } from "../ansi.js";
|
|
1
2
|
const EMPTY = Buffer.alloc(0);
|
|
2
3
|
const BACKSPACE = Buffer.from([0x7f]);
|
|
3
4
|
const ESCAPE = Buffer.from([0x1b]);
|
|
@@ -12,6 +13,8 @@ const END = Buffer.from([0x1b, 0x5b, 0x46]);
|
|
|
12
13
|
const SHIFT_TAB = Buffer.from([0x1b, 0x5b, 0x5a]);
|
|
13
14
|
const TAB = Buffer.from([0x09]);
|
|
14
15
|
const CR = Buffer.from([0x0d]);
|
|
16
|
+
const KITTY_DISAMBIGUATE = 0b1;
|
|
17
|
+
const KITTY_ALL_KEYS = 0b1000;
|
|
15
18
|
/**
|
|
16
19
|
* Encode `TerminalKey[]` back to VT bytes for child PTY forwarding.
|
|
17
20
|
*
|
|
@@ -34,21 +37,43 @@ export function encodeKeysToBytes(events, options = {}) {
|
|
|
34
37
|
return Buffer.concat(parts);
|
|
35
38
|
}
|
|
36
39
|
function encodeKey(key, options) {
|
|
40
|
+
const flags = options.childKittyFlags ?? 0;
|
|
41
|
+
const kittyOn = (flags & (KITTY_DISAMBIGUATE | KITTY_ALL_KEYS)) !== 0;
|
|
42
|
+
const reportAll = (flags & KITTY_ALL_KEYS) !== 0;
|
|
37
43
|
switch (key.kind) {
|
|
38
44
|
case "raw":
|
|
39
45
|
return key.bytes;
|
|
40
46
|
case "printable":
|
|
47
|
+
if (reportAll)
|
|
48
|
+
return encodeKittyPrintable(key.char);
|
|
41
49
|
return Buffer.from(key.char, "utf-8");
|
|
42
|
-
case "control":
|
|
50
|
+
case "control": {
|
|
51
|
+
if (key.byte === 0x09)
|
|
52
|
+
return reportAll ? encodeCsiU(9) : TAB;
|
|
53
|
+
if (kittyOn && key.byte >= 0x01 && key.byte <= 0x1a) {
|
|
54
|
+
return encodeCsiU(key.byte + 96, 5);
|
|
55
|
+
}
|
|
56
|
+
return Buffer.from([key.byte]);
|
|
57
|
+
}
|
|
43
58
|
case "enter":
|
|
59
|
+
if (reportAll)
|
|
60
|
+
return encodeCsiU(13);
|
|
44
61
|
return Buffer.from([key.byte]);
|
|
45
62
|
case "backspace":
|
|
63
|
+
if (reportAll)
|
|
64
|
+
return encodeCsiU(127);
|
|
46
65
|
return BACKSPACE;
|
|
47
66
|
case "delete":
|
|
48
67
|
return Buffer.from(key.ctrl ? "\x1b[3;5~" : "\x1b[3~", "ascii");
|
|
49
68
|
case "escape":
|
|
69
|
+
if (reportAll)
|
|
70
|
+
return encodeCsiU(27);
|
|
50
71
|
return ESCAPE;
|
|
51
72
|
case "arrow":
|
|
73
|
+
if (key.modifiers !== undefined && key.modifiers > 1) {
|
|
74
|
+
const final = arrowFinalByte(key.direction);
|
|
75
|
+
return Buffer.from(`\x1b[1;${key.modifiers}${final}`, "ascii");
|
|
76
|
+
}
|
|
52
77
|
return key.direction === "up" ? ARROW_UP
|
|
53
78
|
: key.direction === "down" ? ARROW_DOWN
|
|
54
79
|
: key.direction === "right" ? ARROW_RIGHT
|
|
@@ -63,22 +88,73 @@ function encodeKey(key, options) {
|
|
|
63
88
|
if (options.wheelMode !== "sgr")
|
|
64
89
|
return EMPTY;
|
|
65
90
|
return Buffer.from(`\x1b[<${key.direction === "up" ? 64 : 65};${key.column};${key.row}M`, "ascii");
|
|
91
|
+
case "paste":
|
|
92
|
+
return Buffer.from(options.childBracketedPaste
|
|
93
|
+
? PASTE_START + key.content + PASTE_END
|
|
94
|
+
: key.content, "utf8");
|
|
66
95
|
case "kitty-key": {
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
case 27: return ESCAPE;
|
|
72
|
-
case 127: return BACKSPACE;
|
|
73
|
-
default:
|
|
74
|
-
return Buffer.from(String.fromCodePoint(key.keyCode), "utf-8");
|
|
75
|
-
}
|
|
96
|
+
if (!kittyOn)
|
|
97
|
+
return encodeLegacyModifiedKey(key.keyCode, key.modifiers);
|
|
98
|
+
if (key.modifiers !== 1 || reportAll) {
|
|
99
|
+
return encodeCsiU(key.keyCode, key.modifiers);
|
|
76
100
|
}
|
|
77
|
-
|
|
78
|
-
return
|
|
101
|
+
switch (key.keyCode) {
|
|
102
|
+
case 9: return TAB;
|
|
103
|
+
case 13: return CR;
|
|
104
|
+
case 27: return ESCAPE;
|
|
105
|
+
case 127: return BACKSPACE;
|
|
106
|
+
default:
|
|
107
|
+
return Buffer.from(String.fromCodePoint(key.keyCode), "utf-8");
|
|
79
108
|
}
|
|
80
|
-
return Buffer.from(`\x1b[${key.keyCode};${key.modifiers}u`, "ascii");
|
|
81
109
|
}
|
|
82
110
|
}
|
|
83
111
|
}
|
|
112
|
+
function encodeCsiU(keyCode, modifiers = 1) {
|
|
113
|
+
if (modifiers === 1)
|
|
114
|
+
return Buffer.from(`\x1b[${keyCode}u`, "ascii");
|
|
115
|
+
return Buffer.from(`\x1b[${keyCode};${modifiers}u`, "ascii");
|
|
116
|
+
}
|
|
117
|
+
function encodeKittyPrintable(char) {
|
|
118
|
+
const cp = char.codePointAt(0);
|
|
119
|
+
if (cp === undefined)
|
|
120
|
+
return EMPTY;
|
|
121
|
+
if (cp >= 65 && cp <= 90)
|
|
122
|
+
return encodeCsiU(cp + 32, 2);
|
|
123
|
+
return encodeCsiU(cp);
|
|
124
|
+
}
|
|
125
|
+
function encodeLegacyModifiedKey(keyCode, modifiers) {
|
|
126
|
+
const ctrl = ((modifiers - 1) & 0x04) !== 0;
|
|
127
|
+
const alt = ((modifiers - 1) & 0x02) !== 0;
|
|
128
|
+
if (keyCode === 9 && modifiers === 2)
|
|
129
|
+
return SHIFT_TAB;
|
|
130
|
+
if (keyCode === 9)
|
|
131
|
+
return TAB;
|
|
132
|
+
if (keyCode === 13 || keyCode === 10)
|
|
133
|
+
return CR;
|
|
134
|
+
if (keyCode === 27)
|
|
135
|
+
return ESCAPE;
|
|
136
|
+
if (keyCode === 127 || keyCode === 8)
|
|
137
|
+
return BACKSPACE;
|
|
138
|
+
if (keyCode === 3)
|
|
139
|
+
return Buffer.from([0x03]);
|
|
140
|
+
if (keyCode >= 97 && keyCode <= 122 && ctrl) {
|
|
141
|
+
const controlByte = Buffer.from([keyCode & 0x1f]);
|
|
142
|
+
if (alt)
|
|
143
|
+
return Buffer.concat([ESCAPE, controlByte]);
|
|
144
|
+
return controlByte;
|
|
145
|
+
}
|
|
146
|
+
if (keyCode >= 32) {
|
|
147
|
+
const printable = Buffer.from(String.fromCodePoint(keyCode), "utf8");
|
|
148
|
+
if (alt)
|
|
149
|
+
return Buffer.concat([ESCAPE, printable]);
|
|
150
|
+
return printable;
|
|
151
|
+
}
|
|
152
|
+
return EMPTY;
|
|
153
|
+
}
|
|
154
|
+
function arrowFinalByte(direction) {
|
|
155
|
+
return direction === "up" ? "A"
|
|
156
|
+
: direction === "down" ? "B"
|
|
157
|
+
: direction === "right" ? "C"
|
|
158
|
+
: "D";
|
|
159
|
+
}
|
|
84
160
|
//# sourceMappingURL=key-to-bytes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-to-bytes.js","sourceRoot":"","sources":["../../src/terminal/key-to-bytes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-to-bytes.js","sourceRoot":"","sources":["../../src/terminal/key-to-bytes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kitty-negotiator.d.ts","sourceRoot":"","sources":["../../src/terminal/kitty-negotiator.ts"],"names":[],"mappings":"AAMA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAM;IAEvB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,KAAK,IAAI,IAAI;IAKb,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA2CnC,OAAO,CAAC,eAAe;CAcxB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const VALID_FLAGS = 0b11111;
|
|
2
|
+
const MAX_DEPTH = 16;
|
|
3
|
+
const KITTY_CSI_RE = /\x1b\[([?<>=])([0-9;]*)u/g;
|
|
4
|
+
const INCOMPLETE_KITTY_CSI_RE = /\x1b\[(?:[?<>=][0-9;]*)?$/;
|
|
5
|
+
const MAX_REMAINDER = 32;
|
|
6
|
+
export class ChildKittyNegotiator {
|
|
7
|
+
flagStack = [0];
|
|
8
|
+
remainder = "";
|
|
9
|
+
get activeFlags() {
|
|
10
|
+
return this.flagStack[this.flagStack.length - 1] ?? 0;
|
|
11
|
+
}
|
|
12
|
+
reset() {
|
|
13
|
+
this.flagStack = [0];
|
|
14
|
+
this.remainder = "";
|
|
15
|
+
}
|
|
16
|
+
processChunk(chunk) {
|
|
17
|
+
// Fast path: with no buffered partial sequence, a chunk that contains no
|
|
18
|
+
// ESC cannot hold a kitty CSI, so there is nothing to parse or carry over.
|
|
19
|
+
if (this.remainder.length === 0 && chunk.indexOf("\x1b") < 0)
|
|
20
|
+
return "";
|
|
21
|
+
const text = this.remainder + chunk;
|
|
22
|
+
this.remainder = "";
|
|
23
|
+
const incomplete = text.match(INCOMPLETE_KITTY_CSI_RE)?.[0] ?? "";
|
|
24
|
+
const body = incomplete.length > 0
|
|
25
|
+
? text.slice(0, text.length - incomplete.length)
|
|
26
|
+
: text;
|
|
27
|
+
if (incomplete.length > 0 && incomplete.length <= MAX_REMAINDER) {
|
|
28
|
+
this.remainder = incomplete;
|
|
29
|
+
}
|
|
30
|
+
KITTY_CSI_RE.lastIndex = 0;
|
|
31
|
+
let reply = "";
|
|
32
|
+
for (let match = KITTY_CSI_RE.exec(body); match; match = KITTY_CSI_RE.exec(body)) {
|
|
33
|
+
const op = match[1];
|
|
34
|
+
const params = match[2] ?? "";
|
|
35
|
+
switch (op) {
|
|
36
|
+
case "?":
|
|
37
|
+
reply += `\x1b[?${this.activeFlags}u`;
|
|
38
|
+
break;
|
|
39
|
+
case ">":
|
|
40
|
+
this.flagStack.push((parseInt(params || "0", 10) || 0) & VALID_FLAGS);
|
|
41
|
+
if (this.flagStack.length > MAX_DEPTH)
|
|
42
|
+
this.flagStack.shift();
|
|
43
|
+
break;
|
|
44
|
+
case "<": {
|
|
45
|
+
let count = parseInt(params || "1", 10) || 1;
|
|
46
|
+
while (count-- > 0)
|
|
47
|
+
this.flagStack.pop();
|
|
48
|
+
if (this.flagStack.length === 0)
|
|
49
|
+
this.flagStack.push(0);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case "=":
|
|
53
|
+
this.setCurrentFlags(params);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return reply;
|
|
58
|
+
}
|
|
59
|
+
setCurrentFlags(params) {
|
|
60
|
+
const [rawFlags, rawMode] = params.split(";");
|
|
61
|
+
const bits = (parseInt(rawFlags || "0", 10) || 0) & VALID_FLAGS;
|
|
62
|
+
const mode = parseInt(rawMode || "1", 10) || 1;
|
|
63
|
+
const current = this.activeFlags;
|
|
64
|
+
const index = this.flagStack.length - 1;
|
|
65
|
+
if (mode === 2) {
|
|
66
|
+
this.flagStack[index] = current | bits;
|
|
67
|
+
}
|
|
68
|
+
else if (mode === 3) {
|
|
69
|
+
this.flagStack[index] = current & ~bits;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.flagStack[index] = bits;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=kitty-negotiator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kitty-negotiator.js","sourceRoot":"","sources":["../../src/terminal/kitty-negotiator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Subset of the koffi API used by win32 console consumers. Declared once
|
|
3
|
-
* here so call sites stay type-checked without a runtime dependency on
|
|
4
|
-
* `@types/koffi`.
|
|
5
|
-
*/
|
|
1
|
+
/** Subset of the koffi API used by Windows FFI helpers. */
|
|
6
2
|
export interface KoffiLibLike {
|
|
7
3
|
func(name: string, retType: string, args: unknown[]): (...args: unknown[]) => unknown;
|
|
8
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koffi-loader.d.ts","sourceRoot":"","sources":["../../src/terminal/koffi-loader.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"koffi-loader.d.ts","sourceRoot":"","sources":["../../src/terminal/koffi-loader.ts"],"names":[],"mappings":"AAIA,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CACvF;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC;IACpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7D;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,IAAI,OAAO,GAAG,IAAI,CAQ1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koffi-loader.js","sourceRoot":"","sources":["../../src/terminal/koffi-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"koffi-loader.js","sourceRoot":"","sources":["../../src/terminal/koffi-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAavD,IAAI,MAAkC,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type MouseMode = 1000 | 1002 | 1003 | 1006;
|
|
2
|
+
/**
|
|
3
|
+
* Tracks DEC private mouse-related modes requested by a child PTY.
|
|
4
|
+
*
|
|
5
|
+
* The tracker only observes the child's output stream. It does not write to
|
|
6
|
+
* the real terminal; callers use the returned snapshot with
|
|
7
|
+
* `MouseModeReconciler` so multiple sources cannot fight over the same outer
|
|
8
|
+
* terminal mode.
|
|
9
|
+
*/
|
|
10
|
+
export declare class MouseModeTracker {
|
|
11
|
+
private trackingMode;
|
|
12
|
+
private sgrEnabled;
|
|
13
|
+
private pending;
|
|
14
|
+
processChunk(data: string): boolean;
|
|
15
|
+
reset(): void;
|
|
16
|
+
snapshot(): MouseMode[];
|
|
17
|
+
hasActiveReportingMode(): boolean;
|
|
18
|
+
private applyDecPrivateMode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Computes the outer terminal mouse-mode delta from named logical sources.
|
|
22
|
+
* Sources are desired state; `reflected` is what this process believes it has
|
|
23
|
+
* emitted to the real terminal while reflection is enabled.
|
|
24
|
+
*/
|
|
25
|
+
export declare class MouseModeReconciler {
|
|
26
|
+
private readonly sources;
|
|
27
|
+
private reflected;
|
|
28
|
+
private reflectionEnabled;
|
|
29
|
+
setSource(source: string, modes: Iterable<MouseMode>): string;
|
|
30
|
+
clearSource(source: string): string;
|
|
31
|
+
clearAll(): string;
|
|
32
|
+
setReflectionEnabled(enabled: boolean): string;
|
|
33
|
+
private reconcile;
|
|
34
|
+
private desired;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=mouse-mode-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse-mode-tracker.d.ts","sourceRoot":"","sources":["../../src/terminal/mouse-mode-tracker.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA+BlD;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAM;IAErB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAqCnC,KAAK,IAAI,IAAI;IAMb,QAAQ,IAAI,SAAS,EAAE;IAOvB,sBAAsB,IAAI,OAAO;IAIjC,OAAO,CAAC,mBAAmB;CA2B5B;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,iBAAiB,CAAQ;IAEjC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM;IAU7D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC,QAAQ,IAAI,MAAM;IAMlB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAW9C,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,OAAO;CAahB"}
|