poly-weaver 0.14.2 → 0.14.4
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/dist/crosscheck/broadcast-composer.d.ts +4 -2
- package/dist/crosscheck/broadcast-composer.d.ts.map +1 -1
- package/dist/crosscheck/broadcast-composer.js +7 -2
- package/dist/crosscheck/broadcast-composer.js.map +1 -1
- package/dist/crosscheck/coordinator.d.ts +6 -0
- package/dist/crosscheck/coordinator.d.ts.map +1 -1
- package/dist/crosscheck/coordinator.js +106 -15
- package/dist/crosscheck/coordinator.js.map +1 -1
- package/dist/crosscheck/key-helpers.d.ts +2 -2
- package/dist/crosscheck/key-helpers.d.ts.map +1 -1
- package/dist/crosscheck/key-helpers.js +6 -4
- package/dist/crosscheck/key-helpers.js.map +1 -1
- package/dist/flow-editor/tui.d.ts +5 -0
- package/dist/flow-editor/tui.d.ts.map +1 -1
- package/dist/flow-editor/tui.js +34 -23
- package/dist/flow-editor/tui.js.map +1 -1
- package/dist/offscreen/controller.d.ts.map +1 -1
- package/dist/offscreen/controller.js +8 -1
- package/dist/offscreen/controller.js.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +2 -9
- package/dist/orchestrator.js.map +1 -1
- package/dist/paste-image/persistence.d.ts +4 -0
- package/dist/paste-image/persistence.d.ts.map +1 -1
- package/dist/paste-image/persistence.js +17 -0
- package/dist/paste-image/persistence.js.map +1 -1
- package/dist/preview-panel.d.ts.map +1 -1
- package/dist/preview-panel.js +2 -2
- package/dist/preview-panel.js.map +1 -1
- package/dist/providers/copilot/completion.d.ts +1 -0
- package/dist/providers/copilot/completion.d.ts.map +1 -1
- package/dist/providers/copilot/completion.js +14 -0
- package/dist/providers/copilot/completion.js.map +1 -1
- package/dist/providers/copilot/strategy.d.ts.map +1 -1
- package/dist/providers/copilot/strategy.js +2 -3
- package/dist/providers/copilot/strategy.js.map +1 -1
- package/dist/startup-tui.d.ts.map +1 -1
- package/dist/startup-tui.js +22 -12
- package/dist/startup-tui.js.map +1 -1
- package/dist/terminal/host-input-mode.d.ts +1 -0
- package/dist/terminal/host-input-mode.d.ts.map +1 -1
- package/dist/terminal/host-input-mode.js +11 -1
- package/dist/terminal/host-input-mode.js.map +1 -1
- package/dist/terminal/host.js +1 -1
- package/dist/terminal/host.js.map +1 -1
- package/dist/terminal/input-router.d.ts +14 -13
- package/dist/terminal/input-router.d.ts.map +1 -1
- package/dist/terminal/input-router.js +37 -35
- package/dist/terminal/input-router.js.map +1 -1
- package/dist/terminal/key-event-source.d.ts +2 -0
- package/dist/terminal/key-event-source.d.ts.map +1 -1
- package/dist/terminal/key-event-source.js +4 -1
- package/dist/terminal/key-event-source.js.map +1 -1
- package/dist/terminal/key-to-bytes.js +2 -0
- package/dist/terminal/key-to-bytes.js.map +1 -1
- package/dist/terminal/right-click-paste.d.ts +9 -0
- package/dist/terminal/right-click-paste.d.ts.map +1 -0
- package/dist/terminal/right-click-paste.js +37 -0
- package/dist/terminal/right-click-paste.js.map +1 -0
- package/dist/terminal/sgr-mouse.d.ts +17 -0
- package/dist/terminal/sgr-mouse.d.ts.map +1 -0
- package/dist/terminal/sgr-mouse.js +37 -0
- package/dist/terminal/sgr-mouse.js.map +1 -0
- package/dist/terminal/stdin-byte-source.d.ts +7 -1
- package/dist/terminal/stdin-byte-source.d.ts.map +1 -1
- package/dist/terminal/stdin-byte-source.js +14 -3
- package/dist/terminal/stdin-byte-source.js.map +1 -1
- package/dist/terminal/windows-terminal-shift-enter.d.ts +24 -0
- package/dist/terminal/windows-terminal-shift-enter.d.ts.map +1 -0
- package/dist/terminal/windows-terminal-shift-enter.js +316 -0
- package/dist/terminal/windows-terminal-shift-enter.js.map +1 -0
- package/dist/terminal-input.d.ts +12 -1
- package/dist/terminal-input.d.ts.map +1 -1
- package/dist/terminal-input.js +211 -109
- package/dist/terminal-input.js.map +1 -1
- package/dist/text-editing/emacs-input.d.ts +3 -0
- package/dist/text-editing/emacs-input.d.ts.map +1 -1
- package/dist/text-editing/emacs-input.js +8 -1
- package/dist/text-editing/emacs-input.js.map +1 -1
- package/dist/user/feedback-editing.d.ts.map +1 -1
- package/dist/user/feedback-editing.js +2 -5
- package/dist/user/feedback-editing.js.map +1 -1
- package/dist/user/host-curate-prompt.d.ts.map +1 -1
- package/dist/user/host-curate-prompt.js +18 -9
- package/dist/user/host-curate-prompt.js.map +1 -1
- package/dist/user/host-prompt.d.ts.map +1 -1
- package/dist/user/host-prompt.js +18 -9
- package/dist/user/host-prompt.js.map +1 -1
- package/package.json +2 -1
|
@@ -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;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,mCAAmC,CAAC;AAyC1F;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1C,OAAO,IAAI,eAAe,CACxB,KAAK,EACL,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAC7B,qCAAqC,EAAE,EACvC;QACE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,KAAK,IAAI;KAC3D,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-to-bytes.js","sourceRoot":"","sources":["../../src/terminal/key-to-bytes.ts"],"names":[],"mappings":"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"}
|
|
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,9 @@
|
|
|
1
|
+
import type { TerminalKey } from "../terminal-input.js";
|
|
2
|
+
export type RightButtonGestureResult = "consume" | "pass";
|
|
3
|
+
export declare class RightButtonPasteGesture {
|
|
4
|
+
private state;
|
|
5
|
+
handleEvent(key: TerminalKey, claimPress?: () => boolean): RightButtonGestureResult;
|
|
6
|
+
reset(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function filterRightButtonPasteGesture(gesture: RightButtonPasteGesture, events: TerminalKey[], requestPaste: () => boolean): TerminalKey[];
|
|
9
|
+
//# sourceMappingURL=right-click-paste.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"right-click-paste.d.ts","sourceRoot":"","sources":["../../src/terminal/right-click-paste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQxD,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,KAAK,CAA4C;IAEzD,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,GAAE,MAAM,OAAqB,GACtC,wBAAwB;IAiB3B,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,MAAM,OAAO,GAC1B,WAAW,EAAE,CAYf"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isUnmodifiedRightButtonGestureFrame, isUnmodifiedRightButtonPress, isUnmodifiedRightButtonRelease, parseSgrMouseFrame, } from "./sgr-mouse.js";
|
|
2
|
+
export class RightButtonPasteGesture {
|
|
3
|
+
state = "none";
|
|
4
|
+
handleEvent(key, claimPress = () => false) {
|
|
5
|
+
const frame = parseSgrMouseFrame(key);
|
|
6
|
+
if (this.state !== "none" && frame && isUnmodifiedRightButtonGestureFrame(frame)) {
|
|
7
|
+
const wasClaimed = this.state === "claimed";
|
|
8
|
+
if (isUnmodifiedRightButtonRelease(frame))
|
|
9
|
+
this.state = "none";
|
|
10
|
+
return wasClaimed ? "consume" : "pass";
|
|
11
|
+
}
|
|
12
|
+
if (frame && isUnmodifiedRightButtonPress(frame)) {
|
|
13
|
+
this.state = claimPress() ? "claimed" : "unclaimed";
|
|
14
|
+
if (this.state === "unclaimed")
|
|
15
|
+
return "pass";
|
|
16
|
+
return "consume";
|
|
17
|
+
}
|
|
18
|
+
return "pass";
|
|
19
|
+
}
|
|
20
|
+
reset() {
|
|
21
|
+
this.state = "none";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function filterRightButtonPasteGesture(gesture, events, requestPaste) {
|
|
25
|
+
let unconsumed;
|
|
26
|
+
for (let index = 0; index < events.length; index++) {
|
|
27
|
+
const event = events[index];
|
|
28
|
+
const result = gesture.handleEvent(event, requestPaste);
|
|
29
|
+
if (result === "consume") {
|
|
30
|
+
unconsumed ??= events.slice(0, index);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
unconsumed?.push(event);
|
|
34
|
+
}
|
|
35
|
+
return unconsumed ?? events;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=right-click-paste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"right-click-paste.js","sourceRoot":"","sources":["../../src/terminal/right-click-paste.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,OAAO,uBAAuB;IAC1B,KAAK,GAAqC,MAAM,CAAC;IAEzD,WAAW,CACT,GAAgB,EAChB,aAA4B,GAAG,EAAE,CAAC,KAAK;QAEvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,IAAI,mCAAmC,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;YAC5C,IAAI,8BAA8B,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YAC/D,OAAO,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;YACpD,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;gBAAE,OAAO,MAAM,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACtB,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAgC,EAChC,MAAqB,EACrB,YAA2B;IAE3B,IAAI,UAAqC,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QACD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,UAAU,IAAI,MAAM,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TerminalKey } from "../terminal-input.js";
|
|
2
|
+
export interface SgrMouseFrame {
|
|
3
|
+
button: number;
|
|
4
|
+
column: number;
|
|
5
|
+
row: number;
|
|
6
|
+
/** Trailing `M` (press/motion) or `m` (release). */
|
|
7
|
+
final: "M" | "m";
|
|
8
|
+
}
|
|
9
|
+
export declare function isRawSgrMouseFrame(key: TerminalKey): boolean;
|
|
10
|
+
export declare function isRawSgrMouseMotion(key: TerminalKey): boolean;
|
|
11
|
+
/** Decode a raw SGR mouse frame (`\x1b[<btn;col;rowM/m`) into its fields. */
|
|
12
|
+
export declare function parseSgrMouseFrame(key: TerminalKey): SgrMouseFrame | undefined;
|
|
13
|
+
export declare function isUnmodifiedRightButtonPress(frame: SgrMouseFrame): boolean;
|
|
14
|
+
export declare function isUnmodifiedRightButtonMotion(frame: SgrMouseFrame): boolean;
|
|
15
|
+
export declare function isUnmodifiedRightButtonRelease(frame: SgrMouseFrame): boolean;
|
|
16
|
+
export declare function isUnmodifiedRightButtonGestureFrame(frame: SgrMouseFrame): boolean;
|
|
17
|
+
//# sourceMappingURL=sgr-mouse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sgr-mouse.d.ts","sourceRoot":"","sources":["../../src/terminal/sgr-mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAG7D;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAU9E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE1E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE3E;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5E;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAIjF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const RAW_SGR_MOUSE_RE = /^\x1b\[<\d+;\d+;\d+[Mm]$/;
|
|
2
|
+
export function isRawSgrMouseFrame(key) {
|
|
3
|
+
return key.kind === "raw" && RAW_SGR_MOUSE_RE.test(key.bytes.toString("ascii"));
|
|
4
|
+
}
|
|
5
|
+
export function isRawSgrMouseMotion(key) {
|
|
6
|
+
const frame = parseSgrMouseFrame(key);
|
|
7
|
+
return frame !== undefined && frame.final === "M" && (frame.button & 32) !== 0;
|
|
8
|
+
}
|
|
9
|
+
/** Decode a raw SGR mouse frame (`\x1b[<btn;col;rowM/m`) into its fields. */
|
|
10
|
+
export function parseSgrMouseFrame(key) {
|
|
11
|
+
if (key.kind !== "raw")
|
|
12
|
+
return undefined;
|
|
13
|
+
const match = /^\x1b\[<(\d+);(\d+);(\d+)([Mm])$/.exec(key.bytes.toString("ascii"));
|
|
14
|
+
if (!match)
|
|
15
|
+
return undefined;
|
|
16
|
+
return {
|
|
17
|
+
button: Number(match[1]),
|
|
18
|
+
column: Number(match[2]),
|
|
19
|
+
row: Number(match[3]),
|
|
20
|
+
final: match[4],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function isUnmodifiedRightButtonPress(frame) {
|
|
24
|
+
return frame.final === "M" && frame.button === 2;
|
|
25
|
+
}
|
|
26
|
+
export function isUnmodifiedRightButtonMotion(frame) {
|
|
27
|
+
return frame.final === "M" && frame.button === 34;
|
|
28
|
+
}
|
|
29
|
+
export function isUnmodifiedRightButtonRelease(frame) {
|
|
30
|
+
return frame.final === "m" && (frame.button === 2 || frame.button === 3);
|
|
31
|
+
}
|
|
32
|
+
export function isUnmodifiedRightButtonGestureFrame(frame) {
|
|
33
|
+
return isUnmodifiedRightButtonPress(frame)
|
|
34
|
+
|| isUnmodifiedRightButtonMotion(frame)
|
|
35
|
+
|| isUnmodifiedRightButtonRelease(frame);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sgr-mouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sgr-mouse.js","sourceRoot":"","sources":["../../src/terminal/sgr-mouse.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAUpD,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAc;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAoB;IAC/D,OAAO,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAoB;IAChE,OAAO,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAoB;IACjE,OAAO,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAoB;IACtE,OAAO,4BAA4B,CAAC,KAAK,CAAC;WACrC,6BAA6B,CAAC,KAAK,CAAC;WACpC,8BAA8B,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type TerminalKey } from "../terminal-input.js";
|
|
2
2
|
import type { KeyEventSource, ResizeSize } from "./key-event-source.js";
|
|
3
|
+
interface StdinByteSourceOptions {
|
|
4
|
+
enableRightClickPaste?: boolean;
|
|
5
|
+
}
|
|
3
6
|
/**
|
|
4
7
|
* Default `KeyEventSource`. Owns raw-mode on its injected stdin and
|
|
5
8
|
* optional VT input-mode negotiation on its injected stdout.
|
|
@@ -11,16 +14,19 @@ import type { KeyEventSource, ResizeSize } from "./key-event-source.js";
|
|
|
11
14
|
export declare class StdinByteSource implements KeyEventSource {
|
|
12
15
|
private readonly stdin;
|
|
13
16
|
private readonly out;
|
|
17
|
+
private readonly options;
|
|
14
18
|
private readonly parser;
|
|
15
19
|
private readonly subscribers;
|
|
16
20
|
private dataListener;
|
|
21
|
+
private disableRightClickPasteMouseMode;
|
|
17
22
|
private prevRawMode;
|
|
18
23
|
private started;
|
|
19
|
-
constructor(stdin: NodeJS.ReadStream, out?: NodeJS.WritableStream);
|
|
24
|
+
constructor(stdin: NodeJS.ReadStream, out?: NodeJS.WritableStream, configuredShiftEnterBytes?: Buffer, options?: StdinByteSourceOptions);
|
|
20
25
|
start(): void;
|
|
21
26
|
stop(): void;
|
|
22
27
|
onEvents(cb: (events: TerminalKey[]) => void): () => void;
|
|
23
28
|
onResize(_cb: (size: ResizeSize) => void): () => void;
|
|
24
29
|
private fanOut;
|
|
25
30
|
}
|
|
31
|
+
export {};
|
|
26
32
|
//# sourceMappingURL=stdin-byte-source.d.ts.map
|
|
@@ -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;
|
|
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;AAM9B,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExE,UAAU,sBAAsB;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,cAAc;IASlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,+BAA+B,CAA2B;IAClE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAGL,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC5D,yBAAyB,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,sBAA2B;IAMvD,KAAK,IAAI,IAAI;IAqBb,IAAI,IAAI,IAAI;IAqBZ,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,5 +1,5 @@
|
|
|
1
1
|
import { TerminalKeyParser, } from "../terminal-input.js";
|
|
2
|
-
import { disableHostInputModes, enableHostInputModes } from "./host-input-mode.js";
|
|
2
|
+
import { disableHostInputModes, enableHostInputModes, enableRightClickPasteMouseMode, } from "./host-input-mode.js";
|
|
3
3
|
/**
|
|
4
4
|
* Default `KeyEventSource`. Owns raw-mode on its injected stdin and
|
|
5
5
|
* optional VT input-mode negotiation on its injected stdout.
|
|
@@ -11,15 +11,18 @@ import { disableHostInputModes, enableHostInputModes } from "./host-input-mode.j
|
|
|
11
11
|
export class StdinByteSource {
|
|
12
12
|
stdin;
|
|
13
13
|
out;
|
|
14
|
+
options;
|
|
14
15
|
parser;
|
|
15
16
|
subscribers = new Set();
|
|
16
17
|
dataListener;
|
|
18
|
+
disableRightClickPasteMouseMode;
|
|
17
19
|
prevRawMode = false;
|
|
18
20
|
started = false;
|
|
19
|
-
constructor(stdin, out = process.stdout) {
|
|
21
|
+
constructor(stdin, out = process.stdout, configuredShiftEnterBytes, options = {}) {
|
|
20
22
|
this.stdin = stdin;
|
|
21
23
|
this.out = out;
|
|
22
|
-
this.
|
|
24
|
+
this.options = options;
|
|
25
|
+
this.parser = new TerminalKeyParser(50, configuredShiftEnterBytes);
|
|
23
26
|
this.parser.onDeferredKeys((keys) => this.fanOut(keys));
|
|
24
27
|
}
|
|
25
28
|
start() {
|
|
@@ -30,6 +33,9 @@ export class StdinByteSource {
|
|
|
30
33
|
this.prevRawMode = this.stdin.isRaw === true;
|
|
31
34
|
this.stdin.setRawMode(true);
|
|
32
35
|
enableHostInputModes(this.out);
|
|
36
|
+
if (this.options.enableRightClickPaste === true) {
|
|
37
|
+
this.disableRightClickPasteMouseMode = enableRightClickPasteMouseMode(this.out);
|
|
38
|
+
}
|
|
33
39
|
this.stdin.resume();
|
|
34
40
|
}
|
|
35
41
|
this.dataListener = (chunk) => {
|
|
@@ -49,12 +55,17 @@ export class StdinByteSource {
|
|
|
49
55
|
}
|
|
50
56
|
this.parser.cancelPendingEscape();
|
|
51
57
|
if (this.stdin.isTTY) {
|
|
58
|
+
this.disableRightClickPasteMouseMode?.();
|
|
59
|
+
this.disableRightClickPasteMouseMode = undefined;
|
|
52
60
|
disableHostInputModes(this.out);
|
|
53
61
|
try {
|
|
54
62
|
this.stdin.setRawMode(this.prevRawMode);
|
|
55
63
|
}
|
|
56
64
|
catch { /* ignore */ }
|
|
57
65
|
}
|
|
66
|
+
else {
|
|
67
|
+
this.disableRightClickPasteMouseMode = undefined;
|
|
68
|
+
}
|
|
58
69
|
}
|
|
59
70
|
onEvents(cb) {
|
|
60
71
|
this.subscribers.add(cb);
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"stdin-byte-source.js","sourceRoot":"","sources":["../../src/terminal/stdin-byte-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type KoffiLike } from "./koffi-loader.js";
|
|
2
|
+
export interface WindowsTerminalShiftEnterKoffiLike extends Pick<KoffiLike, "load" | "alloc" | "decode"> {
|
|
3
|
+
struct(def: Record<string, string>): unknown;
|
|
4
|
+
struct(name: string, def: Record<string, string>): unknown;
|
|
5
|
+
pointer(type: unknown): unknown;
|
|
6
|
+
inout(type: unknown): unknown;
|
|
7
|
+
sizeof(type: unknown): number;
|
|
8
|
+
}
|
|
9
|
+
export interface ProcessSnapshotEntry {
|
|
10
|
+
pid: number;
|
|
11
|
+
parentPid: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveWindowsTerminalShiftEnterBytes(): Buffer | undefined;
|
|
14
|
+
export declare function __resetWindowsTerminalShiftEnterCacheForTest(): void;
|
|
15
|
+
export declare function discoverWindowsTerminalShiftEnterBytes(env: NodeJS.ProcessEnv, pid?: number): Buffer | undefined;
|
|
16
|
+
export declare function windowsTerminalSettingsPath(localAppData: string, packageFamily: string): string;
|
|
17
|
+
export declare function packageFamilyFromProcessImagePath(imagePath: string): string | undefined;
|
|
18
|
+
export declare function resolveConfiguredShiftEnterInputFromSettings(settingsText: string): string | undefined;
|
|
19
|
+
export declare function resolveConfiguredShiftEnterInput(settings: Record<string, unknown>): string | undefined;
|
|
20
|
+
export declare function normalizeWindowsTerminalChord(chord: unknown): string | undefined;
|
|
21
|
+
export declare function findWindowsTerminalPackageFamilyForProcess(koffi: WindowsTerminalShiftEnterKoffiLike, pid: number): string | undefined;
|
|
22
|
+
export declare function collectWindowsProcessSnapshot(koffi: WindowsTerminalShiftEnterKoffiLike): ProcessSnapshotEntry[];
|
|
23
|
+
export declare function findWindowsTerminalPackageFamilyInAncestry(pid: number, processes: readonly ProcessSnapshotEntry[], imagePathForPid: (pid: number) => string | undefined, maxDepth?: number): string | undefined;
|
|
24
|
+
//# sourceMappingURL=windows-terminal-shift-enter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windows-terminal-shift-enter.d.ts","sourceRoot":"","sources":["../../src/terminal/windows-terminal-shift-enter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWjF,MAAM,WAAW,kCACf,SAAQ,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IAC3D,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B;AAQD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,qCAAqC,IAAI,MAAM,GAAG,SAAS,CAK1E;AAED,wBAAgB,4CAA4C,IAAI,IAAI,CAGnE;AAED,wBAAgB,sCAAsC,CACpD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,SAAc,GAChB,MAAM,GAAG,SAAS,CAgBpB;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,MAAM,CAER;AAED,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvF;AAED,wBAAgB,4CAA4C,CAC1D,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAWtG;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CA0BhF;AAgGD,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,kCAAkC,EACzC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kCAAkC,GACxC,oBAAoB,EAAE,CAExB;AAED,wBAAgB,0CAA0C,CACxD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACpD,QAAQ,SAAqB,GAC5B,MAAM,GAAG,SAAS,CAiBpB"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { win32 } from "node:path";
|
|
3
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
4
|
+
import { loadKoffi } from "./koffi-loader.js";
|
|
5
|
+
const STABLE_PACKAGE = "Microsoft.WindowsTerminal_8wekyb3d8bbwe";
|
|
6
|
+
const PREVIEW_PACKAGE = "Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe";
|
|
7
|
+
const MAX_ANCESTRY_DEPTH = 24;
|
|
8
|
+
const PROCESS_QUERY_LIMITED_INFORMATION = 0x1000;
|
|
9
|
+
const TH32CS_SNAPPROCESS = 0x00000002;
|
|
10
|
+
let cachedShiftEnterBytes;
|
|
11
|
+
let cacheFilled = false;
|
|
12
|
+
export function resolveWindowsTerminalShiftEnterBytes() {
|
|
13
|
+
if (cacheFilled)
|
|
14
|
+
return cachedShiftEnterBytes;
|
|
15
|
+
cacheFilled = true;
|
|
16
|
+
cachedShiftEnterBytes = discoverWindowsTerminalShiftEnterBytes(process.env);
|
|
17
|
+
return cachedShiftEnterBytes;
|
|
18
|
+
}
|
|
19
|
+
export function __resetWindowsTerminalShiftEnterCacheForTest() {
|
|
20
|
+
cacheFilled = false;
|
|
21
|
+
cachedShiftEnterBytes = undefined;
|
|
22
|
+
}
|
|
23
|
+
export function discoverWindowsTerminalShiftEnterBytes(env, pid = process.pid) {
|
|
24
|
+
if (process.platform !== "win32")
|
|
25
|
+
return undefined;
|
|
26
|
+
if (!env.WT_SESSION || !env.LOCALAPPDATA)
|
|
27
|
+
return undefined;
|
|
28
|
+
const packageFamily = getHostingWindowsTerminalPackageFamily(pid);
|
|
29
|
+
if (!packageFamily)
|
|
30
|
+
return undefined;
|
|
31
|
+
const settingsPath = windowsTerminalSettingsPath(env.LOCALAPPDATA, packageFamily);
|
|
32
|
+
try {
|
|
33
|
+
const input = resolveConfiguredShiftEnterInputFromSettings(readFileSync(settingsPath, "utf8"));
|
|
34
|
+
return input !== undefined ? Buffer.from(input, "utf8") : undefined;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function windowsTerminalSettingsPath(localAppData, packageFamily) {
|
|
41
|
+
return win32.join(localAppData, "Packages", packageFamily, "LocalState", "settings.json");
|
|
42
|
+
}
|
|
43
|
+
export function packageFamilyFromProcessImagePath(imagePath) {
|
|
44
|
+
const normalized = imagePath.replace(/\//g, "\\").toLowerCase();
|
|
45
|
+
if (!normalized.endsWith("\\windowsterminal.exe"))
|
|
46
|
+
return undefined;
|
|
47
|
+
if (normalized.includes("\\microsoft.windowsterminalpreview_"))
|
|
48
|
+
return PREVIEW_PACKAGE;
|
|
49
|
+
if (normalized.includes("\\microsoft.windowsterminal_"))
|
|
50
|
+
return STABLE_PACKAGE;
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
export function resolveConfiguredShiftEnterInputFromSettings(settingsText) {
|
|
54
|
+
try {
|
|
55
|
+
const errors = [];
|
|
56
|
+
const settings = parseJsonc(settingsText, errors, { allowTrailingComma: true });
|
|
57
|
+
if (errors.length > 0 || !isObject(settings))
|
|
58
|
+
return undefined;
|
|
59
|
+
return resolveConfiguredShiftEnterInput(settings);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function resolveConfiguredShiftEnterInput(settings) {
|
|
66
|
+
const actions = orderedActionEntries(settings);
|
|
67
|
+
const actionReferences = buildActionReferenceMap(actions);
|
|
68
|
+
let current;
|
|
69
|
+
for (const action of actions) {
|
|
70
|
+
if (!bindingHasShiftEnter(action))
|
|
71
|
+
continue;
|
|
72
|
+
current = classifyAction(action, actionReferences);
|
|
73
|
+
}
|
|
74
|
+
return current;
|
|
75
|
+
}
|
|
76
|
+
export function normalizeWindowsTerminalChord(chord) {
|
|
77
|
+
if (typeof chord !== "string")
|
|
78
|
+
return undefined;
|
|
79
|
+
const parts = chord
|
|
80
|
+
.split("+")
|
|
81
|
+
.map((part) => part.trim().toLowerCase())
|
|
82
|
+
.filter(Boolean);
|
|
83
|
+
if (parts.length < 2)
|
|
84
|
+
return undefined;
|
|
85
|
+
const modifiers = new Set();
|
|
86
|
+
let key;
|
|
87
|
+
for (const part of parts) {
|
|
88
|
+
const normalized = part === "control" ? "ctrl" : part === "option" ? "alt" : part;
|
|
89
|
+
if (normalized === "shift" || normalized === "ctrl" || normalized === "alt") {
|
|
90
|
+
modifiers.add(normalized);
|
|
91
|
+
}
|
|
92
|
+
else if (key === undefined) {
|
|
93
|
+
key = normalized === "return" ? "enter" : normalized;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (key !== "enter")
|
|
100
|
+
return undefined;
|
|
101
|
+
if (!modifiers.has("shift") || modifiers.has("ctrl") || modifiers.has("alt")) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
return "shift+enter";
|
|
105
|
+
}
|
|
106
|
+
function orderedActionEntries(settings) {
|
|
107
|
+
const actions = [];
|
|
108
|
+
for (const [key, value] of Object.entries(settings)) {
|
|
109
|
+
if (key !== "actions" && key !== "keybindings")
|
|
110
|
+
continue;
|
|
111
|
+
if (!Array.isArray(value))
|
|
112
|
+
continue;
|
|
113
|
+
for (const item of value) {
|
|
114
|
+
if (isObject(item))
|
|
115
|
+
actions.push(item);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return actions;
|
|
119
|
+
}
|
|
120
|
+
function buildActionReferenceMap(actions) {
|
|
121
|
+
const actionReferences = new Map();
|
|
122
|
+
for (const action of actions) {
|
|
123
|
+
if (!isActionDefinition(action))
|
|
124
|
+
continue;
|
|
125
|
+
if (typeof action.id === "string") {
|
|
126
|
+
actionReferences.set(action.id, action);
|
|
127
|
+
}
|
|
128
|
+
if (typeof action.name === "string") {
|
|
129
|
+
actionReferences.set(action.name, action);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return actionReferences;
|
|
133
|
+
}
|
|
134
|
+
function bindingHasShiftEnter(action) {
|
|
135
|
+
const keys = action.keys;
|
|
136
|
+
if (Array.isArray(keys)) {
|
|
137
|
+
return keys.some((key) => normalizeWindowsTerminalChord(key) === "shift+enter");
|
|
138
|
+
}
|
|
139
|
+
return normalizeWindowsTerminalChord(keys) === "shift+enter";
|
|
140
|
+
}
|
|
141
|
+
function classifyAction(action, actionReferences, seen = new Set()) {
|
|
142
|
+
if (!isActionDefinition(action) && typeof action.id === "string") {
|
|
143
|
+
return classifyReferencedAction(action.id, actionReferences, seen);
|
|
144
|
+
}
|
|
145
|
+
const command = action.command ?? action;
|
|
146
|
+
return classifyCommand(command, actionReferences, seen);
|
|
147
|
+
}
|
|
148
|
+
function classifyCommand(command, actionReferences, seen) {
|
|
149
|
+
if (typeof command === "string") {
|
|
150
|
+
if (command === "unbound")
|
|
151
|
+
return undefined;
|
|
152
|
+
return classifyReferencedAction(command, actionReferences, seen);
|
|
153
|
+
}
|
|
154
|
+
if (!isObject(command))
|
|
155
|
+
return undefined;
|
|
156
|
+
const action = command.action;
|
|
157
|
+
if (typeof action !== "string")
|
|
158
|
+
return undefined;
|
|
159
|
+
if (action === "unbound")
|
|
160
|
+
return undefined;
|
|
161
|
+
if (action === "sendInput") {
|
|
162
|
+
return typeof command.input === "string" && command.input.length > 0
|
|
163
|
+
? command.input
|
|
164
|
+
: undefined;
|
|
165
|
+
}
|
|
166
|
+
return classifyReferencedAction(action, actionReferences, seen);
|
|
167
|
+
}
|
|
168
|
+
function classifyReferencedAction(reference, actionReferences, seen) {
|
|
169
|
+
if (seen.has(reference))
|
|
170
|
+
return undefined;
|
|
171
|
+
const action = actionReferences.get(reference);
|
|
172
|
+
if (!action)
|
|
173
|
+
return undefined;
|
|
174
|
+
seen.add(reference);
|
|
175
|
+
return classifyAction(action, actionReferences, seen);
|
|
176
|
+
}
|
|
177
|
+
function getHostingWindowsTerminalPackageFamily(pid) {
|
|
178
|
+
const koffi = loadKoffi();
|
|
179
|
+
if (!koffi)
|
|
180
|
+
return undefined;
|
|
181
|
+
try {
|
|
182
|
+
return findWindowsTerminalPackageFamilyForProcess(koffi, pid);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export function findWindowsTerminalPackageFamilyForProcess(koffi, pid) {
|
|
189
|
+
const kernel32 = koffi.load("kernel32.dll");
|
|
190
|
+
const processes = snapshotProcesses(koffi, kernel32);
|
|
191
|
+
if (processes.length === 0)
|
|
192
|
+
return undefined;
|
|
193
|
+
const imagePathForPid = createProcessImagePathReader(koffi, kernel32);
|
|
194
|
+
return findWindowsTerminalPackageFamilyInAncestry(pid, processes, imagePathForPid);
|
|
195
|
+
}
|
|
196
|
+
export function collectWindowsProcessSnapshot(koffi) {
|
|
197
|
+
return snapshotProcesses(koffi, koffi.load("kernel32.dll"));
|
|
198
|
+
}
|
|
199
|
+
export function findWindowsTerminalPackageFamilyInAncestry(pid, processes, imagePathForPid, maxDepth = MAX_ANCESTRY_DEPTH) {
|
|
200
|
+
const parentByPid = new Map();
|
|
201
|
+
for (const entry of processes) {
|
|
202
|
+
parentByPid.set(entry.pid, entry.parentPid);
|
|
203
|
+
}
|
|
204
|
+
let currentPid = pid;
|
|
205
|
+
for (let depth = 0; depth < maxDepth && currentPid > 0; depth++) {
|
|
206
|
+
const imagePath = imagePathForPid(currentPid);
|
|
207
|
+
if (imagePath) {
|
|
208
|
+
const family = packageFamilyFromProcessImagePath(imagePath);
|
|
209
|
+
if (family)
|
|
210
|
+
return family;
|
|
211
|
+
}
|
|
212
|
+
currentPid = parentByPid.get(currentPid) ?? 0;
|
|
213
|
+
}
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
function snapshotProcesses(koffi, kernel32) {
|
|
217
|
+
const PROCESSENTRY32W = koffi.struct({
|
|
218
|
+
dwSize: "uint32",
|
|
219
|
+
cntUsage: "uint32",
|
|
220
|
+
th32ProcessID: "uint32",
|
|
221
|
+
th32DefaultHeapID: "uintptr",
|
|
222
|
+
th32ModuleID: "uint32",
|
|
223
|
+
cntThreads: "uint32",
|
|
224
|
+
th32ParentProcessID: "uint32",
|
|
225
|
+
pcPriClassBase: "long",
|
|
226
|
+
dwFlags: "uint32",
|
|
227
|
+
szExeFile: "char16[260]",
|
|
228
|
+
});
|
|
229
|
+
const createToolhelp32Snapshot = kernel32.func("CreateToolhelp32Snapshot", "void *", ["uint32", "uint32"]);
|
|
230
|
+
const processEntry32WPointer = koffi.inout(koffi.pointer(PROCESSENTRY32W));
|
|
231
|
+
const process32FirstW = kernel32.func("Process32FirstW", "int", ["void *", processEntry32WPointer]);
|
|
232
|
+
const process32NextW = kernel32.func("Process32NextW", "int", ["void *", processEntry32WPointer]);
|
|
233
|
+
const closeHandle = kernel32.func("CloseHandle", "int", ["void *"]);
|
|
234
|
+
const snapshot = createToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
|
|
235
|
+
if (isInvalidHandle(snapshot))
|
|
236
|
+
return [];
|
|
237
|
+
try {
|
|
238
|
+
const entry = {
|
|
239
|
+
dwSize: koffi.sizeof(PROCESSENTRY32W),
|
|
240
|
+
cntUsage: 0,
|
|
241
|
+
th32ProcessID: 0,
|
|
242
|
+
th32DefaultHeapID: 0,
|
|
243
|
+
th32ModuleID: 0,
|
|
244
|
+
cntThreads: 0,
|
|
245
|
+
th32ParentProcessID: 0,
|
|
246
|
+
pcPriClassBase: 0,
|
|
247
|
+
dwFlags: 0,
|
|
248
|
+
szExeFile: "",
|
|
249
|
+
};
|
|
250
|
+
const entries = [];
|
|
251
|
+
let ok = process32FirstW(snapshot, entry);
|
|
252
|
+
while (ok) {
|
|
253
|
+
entries.push({
|
|
254
|
+
pid: Number(entry.th32ProcessID) >>> 0,
|
|
255
|
+
parentPid: Number(entry.th32ParentProcessID) >>> 0,
|
|
256
|
+
});
|
|
257
|
+
ok = process32NextW(snapshot, entry);
|
|
258
|
+
}
|
|
259
|
+
return entries;
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
try {
|
|
263
|
+
closeHandle(snapshot);
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
/* best-effort */
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function createProcessImagePathReader(koffi, kernel32) {
|
|
271
|
+
const openProcess = kernel32.func("OpenProcess", "void *", ["uint32", "int", "uint32"]);
|
|
272
|
+
const getProcessImageFileNameW = kernel32.func("K32GetProcessImageFileNameW", "uint32", ["void *", "void *", "uint32"]);
|
|
273
|
+
const closeHandle = kernel32.func("CloseHandle", "int", ["void *"]);
|
|
274
|
+
const capacity = 32768;
|
|
275
|
+
const buffer = koffi.alloc("char16", capacity);
|
|
276
|
+
return (pid) => {
|
|
277
|
+
const handle = openProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid);
|
|
278
|
+
if (!handle)
|
|
279
|
+
return undefined;
|
|
280
|
+
try {
|
|
281
|
+
const length = Number(getProcessImageFileNameW(handle, buffer, capacity));
|
|
282
|
+
if (!Number.isFinite(length) || length <= 0)
|
|
283
|
+
return undefined;
|
|
284
|
+
const decoded = koffi.decode(buffer, "char16", length);
|
|
285
|
+
return typeof decoded === "string" ? trimAtNul(decoded) : undefined;
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
try {
|
|
289
|
+
closeHandle(handle);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
/* best-effort */
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
function isInvalidHandle(handle) {
|
|
298
|
+
if (!handle)
|
|
299
|
+
return true;
|
|
300
|
+
if (typeof handle === "number")
|
|
301
|
+
return handle === -1 || handle === 0xffffffff;
|
|
302
|
+
if (typeof handle === "bigint")
|
|
303
|
+
return handle === -1n || handle === 0xffffffffn;
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
function trimAtNul(value) {
|
|
307
|
+
const nul = value.indexOf("\0");
|
|
308
|
+
return nul >= 0 ? value.slice(0, nul) : value;
|
|
309
|
+
}
|
|
310
|
+
function isObject(value) {
|
|
311
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
312
|
+
}
|
|
313
|
+
function isActionDefinition(action) {
|
|
314
|
+
return Object.hasOwn(action, "command") || Object.hasOwn(action, "action");
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=windows-terminal-shift-enter.js.map
|