@scotthuang/agent-knock-knock 0.12.3 → 0.12.5
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/CHANGELOG.md +25 -0
- package/README.md +7 -5
- package/dist/src/cli-core.js +3422 -459
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/deferred-foreground-transfer.d.ts +112 -0
- package/dist/src/deferred-foreground-transfer.js +1063 -0
- package/dist/src/deferred-foreground-transfer.js.map +1 -0
- package/dist/src/herdr-terminal-control-provider.d.ts +26 -1
- package/dist/src/herdr-terminal-control-provider.js +325 -4
- package/dist/src/herdr-terminal-control-provider.js.map +1 -1
- package/dist/src/openclaw-plugin.js +2 -2
- package/dist/src/openclaw-plugin.js.map +1 -1
- package/dist/src/session-store.js +7 -5
- package/dist/src/session-store.js.map +1 -1
- package/dist/src/store.d.ts +3 -1
- package/dist/src/store.js +24 -14
- package/dist/src/store.js.map +1 -1
- package/dist/src/terminal-agent-bridge.d.ts +29 -0
- package/dist/src/terminal-agent-bridge.js +387 -16
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-control-provider.d.ts +19 -0
- package/dist/src/terminal-control-provider.js +86 -7
- package/dist/src/terminal-control-provider.js.map +1 -1
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +9 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-foreground-transfer.js","sourceRoot":"","sources":["../../src/deferred-foreground-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CommandResult, type TerminalControlProvider } from "./terminal-control-provider.js";
|
|
1
|
+
import { type CommandResult, type TerminalControlProvider, type TerminalViewport } from "./terminal-control-provider.js";
|
|
2
2
|
import { type TerminalControlCapability, type TerminalControlRef, type TerminalEndpointRef, type TerminalProviderCapability } from "./terminal-control-ref.js";
|
|
3
3
|
import type { TerminalProcessSnapshot } from "./terminal-agent-adapter.js";
|
|
4
4
|
export declare const HERDR_EXACT_VERSION = "0.8.0";
|
|
@@ -15,6 +15,22 @@ export interface HerdrSocketIdentity {
|
|
|
15
15
|
ctimeNs: string;
|
|
16
16
|
ownerUid?: number;
|
|
17
17
|
}
|
|
18
|
+
export interface HerdrTtyDeviceIdentity {
|
|
19
|
+
device: string;
|
|
20
|
+
inode: string;
|
|
21
|
+
rdev: string;
|
|
22
|
+
ctimeNs: string;
|
|
23
|
+
ownerUid: number;
|
|
24
|
+
symbolicLink: boolean;
|
|
25
|
+
characterDevice: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface HerdrTtyViewportInspectionOptions {
|
|
28
|
+
platform?: NodeJS.Platform;
|
|
29
|
+
runCommand?: (command: string, args: string[]) => CommandResult;
|
|
30
|
+
statTty?: (ttyPath: string) => HerdrTtyDeviceIdentity;
|
|
31
|
+
currentUid?: number;
|
|
32
|
+
}
|
|
33
|
+
export type HerdrTtyViewportInspector = (shellPid: number) => TerminalViewport | undefined | Promise<TerminalViewport | undefined>;
|
|
18
34
|
export interface HerdrRequestOptions {
|
|
19
35
|
expectedSocketIdentity?: HerdrSocketIdentity;
|
|
20
36
|
}
|
|
@@ -78,6 +94,7 @@ export declare class HerdrTerminalControlProvider implements TerminalControlProv
|
|
|
78
94
|
private readonly runCommand;
|
|
79
95
|
private readonly request;
|
|
80
96
|
private readonly statSocket;
|
|
97
|
+
private readonly inspectTtyViewport;
|
|
81
98
|
private readonly endpointSocketIdentities;
|
|
82
99
|
private requestSequence;
|
|
83
100
|
constructor(options?: {
|
|
@@ -86,6 +103,7 @@ export declare class HerdrTerminalControlProvider implements TerminalControlProv
|
|
|
86
103
|
request?: HerdrRequestFunction;
|
|
87
104
|
requestTimeoutMs?: number;
|
|
88
105
|
statSocket?: (socketPath: string) => HerdrSocketIdentity;
|
|
106
|
+
inspectTtyViewport?: HerdrTtyViewportInspector;
|
|
89
107
|
});
|
|
90
108
|
diagnostics(): Promise<Record<string, unknown>>;
|
|
91
109
|
listTerminals(): Promise<TerminalEndpointRef[]>;
|
|
@@ -93,6 +111,7 @@ export declare class HerdrTerminalControlProvider implements TerminalControlProv
|
|
|
93
111
|
toControlRef(terminal: TerminalEndpointRef, capabilities?: readonly TerminalControlCapability[]): TerminalControlRef;
|
|
94
112
|
resolve(terminal: TerminalEndpointRef): Promise<TerminalEndpointRef>;
|
|
95
113
|
containsProcess(terminal: TerminalEndpointRef, process: Pick<TerminalProcessSnapshot, "pid" | "ppid">, processes: readonly Pick<TerminalProcessSnapshot, "pid" | "ppid">[]): boolean;
|
|
114
|
+
inspectViewport(terminal: TerminalEndpointRef): Promise<TerminalViewport | undefined>;
|
|
96
115
|
capture(terminal: TerminalEndpointRef, options?: {
|
|
97
116
|
scrollbackLines?: number;
|
|
98
117
|
preserveEscapes?: boolean;
|
|
@@ -111,5 +130,11 @@ export declare class HerdrTerminalControlProvider implements TerminalControlProv
|
|
|
111
130
|
export declare function parseHerdrSessionList(output: string): HerdrSessionInfo[];
|
|
112
131
|
/** Translate the tmux-oriented bridge key vocabulary to Herdr key combos. */
|
|
113
132
|
export declare function translateHerdrKey(value: string): string;
|
|
133
|
+
/**
|
|
134
|
+
* Read the exact inner PTY viewport owned by a verified Herdr shell process.
|
|
135
|
+
* Herdr layout geometry is deliberately not used here: direct attaches may
|
|
136
|
+
* resize the PTY without updating the layout rectangle that owns the pane.
|
|
137
|
+
*/
|
|
138
|
+
export declare function inspectHerdrTtyViewport(shellPid: number, options?: HerdrTtyViewportInspectionOptions): TerminalViewport | undefined;
|
|
114
139
|
export declare function readHerdrSocketIdentity(socketPath: string): HerdrSocketIdentity;
|
|
115
140
|
export {};
|
|
@@ -2,7 +2,7 @@ import { spawnSync } from "node:child_process";
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { createConnection } from "node:net";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { TerminalControlInputNotSentError } from "./terminal-control-provider.js";
|
|
5
|
+
import { TerminalControlInputNotSentError, TerminalControlUnavailableError } from "./terminal-control-provider.js";
|
|
6
6
|
import { createTerminalEndpointRef, herdrTerminalRouteKey, sameTerminalControlIncarnation, sameTerminalEndpointIdentity, terminalControlWithCapabilities, terminalEndpointFromControlRef } from "./terminal-control-ref.js";
|
|
7
7
|
export const HERDR_EXACT_VERSION = "0.8.0";
|
|
8
8
|
export const HERDR_EXACT_PROTOCOL = 19;
|
|
@@ -10,6 +10,8 @@ const HERDR_MAX_REQUEST_BYTES = 1024 * 1024;
|
|
|
10
10
|
const HERDR_MAX_RESPONSE_BYTES = 16 * 1024 * 1024;
|
|
11
11
|
const HERDR_DEFAULT_TIMEOUT_MS = 5_000;
|
|
12
12
|
const HERDR_MAX_READ_LINES = 1_000;
|
|
13
|
+
const HERDR_MAX_TTY_PATH_BYTES = 1_024;
|
|
14
|
+
const HERDR_MAX_TTY_VIEWPORT_DIMENSION = 65_535;
|
|
13
15
|
/** A structured Herdr API rejection received after a complete request. */
|
|
14
16
|
export class HerdrApiError extends Error {
|
|
15
17
|
code;
|
|
@@ -185,6 +187,7 @@ export class HerdrTerminalControlProvider {
|
|
|
185
187
|
runCommand;
|
|
186
188
|
request;
|
|
187
189
|
statSocket;
|
|
190
|
+
inspectTtyViewport;
|
|
188
191
|
endpointSocketIdentities = new WeakMap();
|
|
189
192
|
requestSequence = 0;
|
|
190
193
|
constructor(options = {}) {
|
|
@@ -193,6 +196,8 @@ export class HerdrTerminalControlProvider {
|
|
|
193
196
|
: ["herdr", "/opt/homebrew/bin/herdr", "/usr/local/bin/herdr"];
|
|
194
197
|
this.runCommand = options.runCommand ?? runHerdrCommand;
|
|
195
198
|
this.statSocket = options.statSocket ?? readHerdrSocketIdentity;
|
|
199
|
+
this.inspectTtyViewport = options.inspectTtyViewport ??
|
|
200
|
+
inspectHerdrTtyViewport;
|
|
196
201
|
const requestTimeoutMs = options.requestTimeoutMs;
|
|
197
202
|
this.request = options.request ?? ((socketPath, request, requestOptions) => requestHerdrUnixSocket(socketPath, request, {
|
|
198
203
|
timeoutMs: requestTimeoutMs,
|
|
@@ -299,10 +304,11 @@ export class HerdrTerminalControlProvider {
|
|
|
299
304
|
assertProviderCapability(this.providerCapabilities, "stable_resource_resolution");
|
|
300
305
|
assertEndpointKind(terminal, this.kind);
|
|
301
306
|
const matches = (await this.listTerminals()).filter((candidate) => sameTerminalEndpointIdentity(candidate, terminal));
|
|
307
|
+
if (matches.length === 0) {
|
|
308
|
+
throw new TerminalControlUnavailableError(`Herdr terminal resource ${terminal.route.label} is no longer available`);
|
|
309
|
+
}
|
|
302
310
|
if (matches.length !== 1) {
|
|
303
|
-
throw new Error(
|
|
304
|
-
? `Herdr terminal resource ${terminal.route.label} is no longer available`
|
|
305
|
-
: `Herdr terminal resource ${terminal.route.label} is ambiguous`);
|
|
311
|
+
throw new Error(`Herdr terminal resource ${terminal.route.label} is ambiguous`);
|
|
306
312
|
}
|
|
307
313
|
const expectedSocketIdentity = this.endpointSocketIdentities.get(terminal);
|
|
308
314
|
const candidateSocketIdentity = this.endpointSocketIdentities.get(matches[0]);
|
|
@@ -344,6 +350,139 @@ export class HerdrTerminalControlProvider {
|
|
|
344
350
|
}
|
|
345
351
|
return false;
|
|
346
352
|
}
|
|
353
|
+
async inspectViewport(terminal) {
|
|
354
|
+
assertEndpointKind(terminal, this.kind);
|
|
355
|
+
const resolved = await this.resolve(terminal);
|
|
356
|
+
if (!sameTerminalControlIncarnation(terminal, resolved)) {
|
|
357
|
+
throw new Error("Herdr terminal stable resource or process anchor changed before viewport inspection");
|
|
358
|
+
}
|
|
359
|
+
const control = herdrControlFromEndpoint(resolved);
|
|
360
|
+
const socketIdentity = this.requireEndpointSocketIdentity(resolved);
|
|
361
|
+
const result = await this.invoke(control.socketPath, "session.snapshot", {}, { expectedSocketIdentity: socketIdentity });
|
|
362
|
+
if (result.type !== "session_snapshot" || !isRecord(result.snapshot)) {
|
|
363
|
+
throw new Error(`Herdr session ${control.session} returned an unexpected viewport snapshot`);
|
|
364
|
+
}
|
|
365
|
+
if (result.snapshot.version !== HERDR_EXACT_VERSION ||
|
|
366
|
+
result.snapshot.protocol !== HERDR_EXACT_PROTOCOL) {
|
|
367
|
+
throw new HerdrCompatibilityError(`Herdr session ${control.session} viewport snapshot is not exact ` +
|
|
368
|
+
`${HERDR_EXACT_VERSION}/protocol ${HERDR_EXACT_PROTOCOL}`);
|
|
369
|
+
}
|
|
370
|
+
if (!Array.isArray(result.snapshot.panes)) {
|
|
371
|
+
throw new Error(`Herdr session ${control.session} viewport snapshot panes are invalid`);
|
|
372
|
+
}
|
|
373
|
+
const matchingPanes = result.snapshot.panes
|
|
374
|
+
.map((value, index) => parsePaneInfo(value, `${control.session} viewport pane ${index}`))
|
|
375
|
+
.filter((pane) => pane.paneId === control.paneId);
|
|
376
|
+
if (matchingPanes.length !== 1) {
|
|
377
|
+
throw new Error(`Herdr terminal ${control.target} changed during viewport inspection`);
|
|
378
|
+
}
|
|
379
|
+
const [pane] = matchingPanes;
|
|
380
|
+
if (pane.terminalId !== control.terminalId ||
|
|
381
|
+
pane.workspaceId !== control.workspaceId ||
|
|
382
|
+
pane.tabId !== control.tabId) {
|
|
383
|
+
throw new Error(`Herdr terminal ${control.target} identity or route changed during viewport inspection`);
|
|
384
|
+
}
|
|
385
|
+
if (result.snapshot.layouts === undefined) {
|
|
386
|
+
return undefined;
|
|
387
|
+
}
|
|
388
|
+
if (!Array.isArray(result.snapshot.layouts)) {
|
|
389
|
+
throw new Error(`Herdr session ${control.session} viewport snapshot layouts are invalid`);
|
|
390
|
+
}
|
|
391
|
+
const matchingLayouts = result.snapshot.layouts.filter((value, index) => {
|
|
392
|
+
if (!isRecord(value)) {
|
|
393
|
+
throw new Error(`invalid Herdr ${control.session} viewport layout ${index}`);
|
|
394
|
+
}
|
|
395
|
+
const workspaceId = nonEmptyString(value.workspace_id);
|
|
396
|
+
const tabId = nonEmptyString(value.tab_id);
|
|
397
|
+
if (!workspaceId || !tabId) {
|
|
398
|
+
throw new Error(`invalid Herdr ${control.session} viewport layout ${index} route`);
|
|
399
|
+
}
|
|
400
|
+
return workspaceId === control.workspaceId && tabId === control.tabId;
|
|
401
|
+
});
|
|
402
|
+
if (matchingLayouts.length === 0) {
|
|
403
|
+
return undefined;
|
|
404
|
+
}
|
|
405
|
+
if (matchingLayouts.length !== 1) {
|
|
406
|
+
throw new Error(`Herdr terminal ${control.target} has an ambiguous viewport layout`);
|
|
407
|
+
}
|
|
408
|
+
const layout = matchingLayouts[0];
|
|
409
|
+
if (typeof layout.zoomed !== "boolean") {
|
|
410
|
+
throw new Error(`Herdr terminal ${control.target} viewport layout zoom state is invalid`);
|
|
411
|
+
}
|
|
412
|
+
const layoutPanes = layout.panes;
|
|
413
|
+
if (layoutPanes === undefined) {
|
|
414
|
+
return undefined;
|
|
415
|
+
}
|
|
416
|
+
if (!Array.isArray(layoutPanes)) {
|
|
417
|
+
throw new Error(`Herdr terminal ${control.target} viewport layout panes are invalid`);
|
|
418
|
+
}
|
|
419
|
+
const matchingLayoutPanes = layoutPanes.filter((value, index) => {
|
|
420
|
+
if (!isRecord(value)) {
|
|
421
|
+
throw new Error(`invalid Herdr ${control.target} viewport layout pane ${index}`);
|
|
422
|
+
}
|
|
423
|
+
const paneId = nonEmptyString(value.pane_id);
|
|
424
|
+
if (!paneId) {
|
|
425
|
+
throw new Error(`invalid Herdr ${control.target} viewport layout pane ${index} identity`);
|
|
426
|
+
}
|
|
427
|
+
return paneId === control.paneId;
|
|
428
|
+
});
|
|
429
|
+
if (matchingLayoutPanes.length === 0) {
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
if (matchingLayoutPanes.length !== 1) {
|
|
433
|
+
throw new Error(`Herdr terminal ${control.target} has an ambiguous viewport rectangle`);
|
|
434
|
+
}
|
|
435
|
+
const layoutPane = matchingLayoutPanes[0];
|
|
436
|
+
const paneFocused = layoutPane.focused;
|
|
437
|
+
if (typeof paneFocused !== "boolean") {
|
|
438
|
+
throw new Error(`Herdr terminal ${control.target} viewport layout pane focus is invalid`);
|
|
439
|
+
}
|
|
440
|
+
const focusedPaneId = nonEmptyString(layout.focused_pane_id);
|
|
441
|
+
if (layout.focused_pane_id !== undefined &&
|
|
442
|
+
focusedPaneId === undefined) {
|
|
443
|
+
throw new Error(`Herdr terminal ${control.target} viewport layout focused pane identity is invalid`);
|
|
444
|
+
}
|
|
445
|
+
if (layout.zoomed === true) {
|
|
446
|
+
if (!focusedPaneId) {
|
|
447
|
+
throw new Error(`Herdr terminal ${control.target} zoomed viewport requires an exact focused pane identity`);
|
|
448
|
+
}
|
|
449
|
+
if (focusedPaneId !== control.paneId) {
|
|
450
|
+
if (paneFocused === true) {
|
|
451
|
+
throw new Error(`Herdr terminal ${control.target} zoomed viewport focus metadata is inconsistent`);
|
|
452
|
+
}
|
|
453
|
+
return undefined;
|
|
454
|
+
}
|
|
455
|
+
if (paneFocused !== true) {
|
|
456
|
+
throw new Error(`Herdr terminal ${control.target} zoomed viewport focus metadata is inconsistent or missing`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
else if (focusedPaneId !== undefined &&
|
|
460
|
+
((focusedPaneId === control.paneId && paneFocused === false) ||
|
|
461
|
+
(focusedPaneId !== control.paneId && paneFocused === true))) {
|
|
462
|
+
throw new Error(`Herdr terminal ${control.target} viewport focus metadata is inconsistent`);
|
|
463
|
+
}
|
|
464
|
+
const shellPid = positiveInteger(resolved.processAnchorPid);
|
|
465
|
+
if (!shellPid) {
|
|
466
|
+
return undefined;
|
|
467
|
+
}
|
|
468
|
+
const viewport = await this.inspectTtyViewport(shellPid);
|
|
469
|
+
if (viewport === undefined) {
|
|
470
|
+
return undefined;
|
|
471
|
+
}
|
|
472
|
+
const columns = positiveInteger(viewport.columns);
|
|
473
|
+
const rows = positiveInteger(viewport.rows);
|
|
474
|
+
if (!columns ||
|
|
475
|
+
!rows ||
|
|
476
|
+
columns > HERDR_MAX_TTY_VIEWPORT_DIMENSION ||
|
|
477
|
+
rows > HERDR_MAX_TTY_VIEWPORT_DIMENSION) {
|
|
478
|
+
throw new Error(`Herdr terminal ${control.target} returned invalid exact PTY viewport dimensions`);
|
|
479
|
+
}
|
|
480
|
+
const finalResolved = await this.resolve(resolved);
|
|
481
|
+
if (!sameTerminalControlIncarnation(resolved, finalResolved)) {
|
|
482
|
+
throw new Error(`Herdr terminal ${control.target} changed after exact PTY viewport inspection`);
|
|
483
|
+
}
|
|
484
|
+
return { columns, rows };
|
|
485
|
+
}
|
|
347
486
|
async capture(terminal, options = {}) {
|
|
348
487
|
assertEndpointCapability(terminal, "screen_status");
|
|
349
488
|
assertProviderCapability(this.providerCapabilities, options.preserveEscapes ? "ansi_capture" : "screen_capture");
|
|
@@ -910,6 +1049,188 @@ function runHerdrCommand(command, args) {
|
|
|
910
1049
|
error: result.error
|
|
911
1050
|
};
|
|
912
1051
|
}
|
|
1052
|
+
/**
|
|
1053
|
+
* Read the exact inner PTY viewport owned by a verified Herdr shell process.
|
|
1054
|
+
* Herdr layout geometry is deliberately not used here: direct attaches may
|
|
1055
|
+
* resize the PTY without updating the layout rectangle that owns the pane.
|
|
1056
|
+
*/
|
|
1057
|
+
export function inspectHerdrTtyViewport(shellPid, options = {}) {
|
|
1058
|
+
const pid = positiveInteger(shellPid);
|
|
1059
|
+
if (!pid) {
|
|
1060
|
+
throw new Error("Herdr exact PTY viewport requires a positive shell PID");
|
|
1061
|
+
}
|
|
1062
|
+
const commands = herdrTtyCommands(options.platform ?? process.platform);
|
|
1063
|
+
if (!commands) {
|
|
1064
|
+
return undefined;
|
|
1065
|
+
}
|
|
1066
|
+
const runCommand = options.runCommand ?? runHerdrTtyCommand;
|
|
1067
|
+
const statTty = options.statTty ?? readHerdrTtyDeviceIdentity;
|
|
1068
|
+
const currentUid = options.currentUid ?? (typeof process.getuid === "function" ? process.getuid() : undefined);
|
|
1069
|
+
if (currentUid === undefined) {
|
|
1070
|
+
return undefined;
|
|
1071
|
+
}
|
|
1072
|
+
const before = readHerdrProcessTtyEvidence(commands.ps, pid, runCommand, "before stty");
|
|
1073
|
+
if (!before) {
|
|
1074
|
+
return undefined;
|
|
1075
|
+
}
|
|
1076
|
+
const beforeDevice = statTty(before.ttyPath);
|
|
1077
|
+
assertSafeHerdrTtyDevice(before.ttyPath, beforeDevice, currentUid);
|
|
1078
|
+
const sizeResult = runCommand(commands.stty, [
|
|
1079
|
+
commands.sttyDeviceFlag,
|
|
1080
|
+
before.ttyPath,
|
|
1081
|
+
"size"
|
|
1082
|
+
]);
|
|
1083
|
+
if (sizeResult.status !== 0) {
|
|
1084
|
+
return undefined;
|
|
1085
|
+
}
|
|
1086
|
+
const size = parseHerdrSttySize(sizeResult.stdout);
|
|
1087
|
+
if (!size) {
|
|
1088
|
+
throw new Error(`Herdr stty returned malformed PTY viewport dimensions for ${before.ttyPath}`);
|
|
1089
|
+
}
|
|
1090
|
+
const after = readHerdrProcessTtyEvidence(commands.ps, pid, runCommand, "after stty");
|
|
1091
|
+
if (!after) {
|
|
1092
|
+
return undefined;
|
|
1093
|
+
}
|
|
1094
|
+
if (after.pid !== before.pid ||
|
|
1095
|
+
after.ttyPath !== before.ttyPath ||
|
|
1096
|
+
after.processBirth !== before.processBirth) {
|
|
1097
|
+
throw new Error(`Herdr shell ${pid} TTY process identity changed during viewport inspection`);
|
|
1098
|
+
}
|
|
1099
|
+
const afterDevice = statTty(after.ttyPath);
|
|
1100
|
+
assertSafeHerdrTtyDevice(after.ttyPath, afterDevice, currentUid);
|
|
1101
|
+
if (!sameHerdrTtyDeviceIdentity(beforeDevice, afterDevice)) {
|
|
1102
|
+
throw new Error(`Herdr TTY device ${after.ttyPath} changed during viewport inspection`);
|
|
1103
|
+
}
|
|
1104
|
+
return size;
|
|
1105
|
+
}
|
|
1106
|
+
function herdrTtyCommands(platform) {
|
|
1107
|
+
if (platform === "darwin") {
|
|
1108
|
+
return { ps: "/bin/ps", stty: "/bin/stty", sttyDeviceFlag: "-f" };
|
|
1109
|
+
}
|
|
1110
|
+
if (platform === "linux") {
|
|
1111
|
+
return { ps: "/bin/ps", stty: "/bin/stty", sttyDeviceFlag: "-F" };
|
|
1112
|
+
}
|
|
1113
|
+
return undefined;
|
|
1114
|
+
}
|
|
1115
|
+
function runHerdrTtyCommand(command, args) {
|
|
1116
|
+
const result = spawnSync(command, args, {
|
|
1117
|
+
encoding: "utf8",
|
|
1118
|
+
maxBuffer: 1024 * 1024,
|
|
1119
|
+
timeout: HERDR_DEFAULT_TIMEOUT_MS
|
|
1120
|
+
});
|
|
1121
|
+
return {
|
|
1122
|
+
status: result.status,
|
|
1123
|
+
stdout: result.stdout ?? "",
|
|
1124
|
+
stderr: result.stderr ?? "",
|
|
1125
|
+
error: result.error
|
|
1126
|
+
};
|
|
1127
|
+
}
|
|
1128
|
+
function readHerdrProcessTtyEvidence(psCommand, pid, runCommand, stage) {
|
|
1129
|
+
const result = runCommand(psCommand, [
|
|
1130
|
+
"-p",
|
|
1131
|
+
String(pid),
|
|
1132
|
+
"-o",
|
|
1133
|
+
"pid=,tty=,lstart="
|
|
1134
|
+
]);
|
|
1135
|
+
if (result.status !== 0) {
|
|
1136
|
+
return undefined;
|
|
1137
|
+
}
|
|
1138
|
+
const raw = result.stdout.trim();
|
|
1139
|
+
if (!raw) {
|
|
1140
|
+
return undefined;
|
|
1141
|
+
}
|
|
1142
|
+
if (raw.includes("\n") || raw.includes("\r")) {
|
|
1143
|
+
throw new Error(`Herdr ps returned ambiguous TTY ${stage}`);
|
|
1144
|
+
}
|
|
1145
|
+
const match = /^(\d+)\s+(\S+)\s+(.+)$/u.exec(raw);
|
|
1146
|
+
if (!match) {
|
|
1147
|
+
throw new Error(`Herdr ps returned malformed process TTY evidence ${stage}`);
|
|
1148
|
+
}
|
|
1149
|
+
const observedPid = positiveInteger(Number(match[1]));
|
|
1150
|
+
if (observedPid !== pid) {
|
|
1151
|
+
throw new Error(`Herdr ps returned mismatched shell PID ${stage}`);
|
|
1152
|
+
}
|
|
1153
|
+
const rawTty = match[2];
|
|
1154
|
+
if (rawTty === "?" || rawTty === "??" || rawTty === "-") {
|
|
1155
|
+
return undefined;
|
|
1156
|
+
}
|
|
1157
|
+
const processBirth = match[3].trim();
|
|
1158
|
+
if (!processBirth) {
|
|
1159
|
+
throw new Error(`Herdr ps returned missing shell process birth ${stage}`);
|
|
1160
|
+
}
|
|
1161
|
+
return {
|
|
1162
|
+
pid: observedPid,
|
|
1163
|
+
ttyPath: safeHerdrTtyPath(rawTty, stage),
|
|
1164
|
+
processBirth
|
|
1165
|
+
};
|
|
1166
|
+
}
|
|
1167
|
+
function safeHerdrTtyPath(raw, stage) {
|
|
1168
|
+
if (Buffer.byteLength(raw) > HERDR_MAX_TTY_PATH_BYTES) {
|
|
1169
|
+
throw new Error(`Herdr ps returned overlong TTY path ${stage}`);
|
|
1170
|
+
}
|
|
1171
|
+
const relative = raw.startsWith("/dev/") ? raw.slice(5) : raw;
|
|
1172
|
+
const segments = relative.split("/");
|
|
1173
|
+
if (segments.length === 0 ||
|
|
1174
|
+
segments.some((segment) => !segment ||
|
|
1175
|
+
segment === "." ||
|
|
1176
|
+
segment === ".." ||
|
|
1177
|
+
!/^[A-Za-z0-9._-]+$/u.test(segment))) {
|
|
1178
|
+
throw new Error(`Herdr ps returned unsafe TTY path ${stage}`);
|
|
1179
|
+
}
|
|
1180
|
+
const ttyPath = `/dev/${segments.join("/")}`;
|
|
1181
|
+
if (Buffer.byteLength(ttyPath) > HERDR_MAX_TTY_PATH_BYTES ||
|
|
1182
|
+
path.posix.normalize(ttyPath) !== ttyPath) {
|
|
1183
|
+
throw new Error(`Herdr ps returned unsafe TTY path ${stage}`);
|
|
1184
|
+
}
|
|
1185
|
+
return ttyPath;
|
|
1186
|
+
}
|
|
1187
|
+
function parseHerdrSttySize(output) {
|
|
1188
|
+
const match = /^(\d+)\s+(\d+)$/u.exec(output.trim());
|
|
1189
|
+
if (!match) {
|
|
1190
|
+
return undefined;
|
|
1191
|
+
}
|
|
1192
|
+
const rows = positiveInteger(Number(match[1]));
|
|
1193
|
+
const columns = positiveInteger(Number(match[2]));
|
|
1194
|
+
if (!rows ||
|
|
1195
|
+
!columns ||
|
|
1196
|
+
rows > HERDR_MAX_TTY_VIEWPORT_DIMENSION ||
|
|
1197
|
+
columns > HERDR_MAX_TTY_VIEWPORT_DIMENSION) {
|
|
1198
|
+
return undefined;
|
|
1199
|
+
}
|
|
1200
|
+
return { columns, rows };
|
|
1201
|
+
}
|
|
1202
|
+
function readHerdrTtyDeviceIdentity(ttyPath) {
|
|
1203
|
+
const stats = fs.lstatSync(ttyPath, { bigint: true });
|
|
1204
|
+
return {
|
|
1205
|
+
device: stats.dev.toString(),
|
|
1206
|
+
inode: stats.ino.toString(),
|
|
1207
|
+
rdev: stats.rdev.toString(),
|
|
1208
|
+
ctimeNs: stats.ctimeNs.toString(),
|
|
1209
|
+
ownerUid: Number(stats.uid),
|
|
1210
|
+
symbolicLink: stats.isSymbolicLink(),
|
|
1211
|
+
characterDevice: stats.isCharacterDevice()
|
|
1212
|
+
};
|
|
1213
|
+
}
|
|
1214
|
+
function assertSafeHerdrTtyDevice(ttyPath, identity, currentUid) {
|
|
1215
|
+
if (identity.symbolicLink) {
|
|
1216
|
+
throw new Error(`Herdr TTY must not be a symbolic link: ${ttyPath}`);
|
|
1217
|
+
}
|
|
1218
|
+
if (!identity.characterDevice) {
|
|
1219
|
+
throw new Error(`Herdr TTY is not a character device: ${ttyPath}`);
|
|
1220
|
+
}
|
|
1221
|
+
if (identity.ownerUid !== currentUid) {
|
|
1222
|
+
throw new Error(`Herdr TTY ${ttyPath} is owned by uid ${identity.ownerUid}, expected ${currentUid}`);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
function sameHerdrTtyDeviceIdentity(left, right) {
|
|
1226
|
+
return left.device === right.device &&
|
|
1227
|
+
left.inode === right.inode &&
|
|
1228
|
+
left.rdev === right.rdev &&
|
|
1229
|
+
left.ctimeNs === right.ctimeNs &&
|
|
1230
|
+
left.ownerUid === right.ownerUid &&
|
|
1231
|
+
left.symbolicLink === right.symbolicLink &&
|
|
1232
|
+
left.characterDevice === right.characterDevice;
|
|
1233
|
+
}
|
|
913
1234
|
export function readHerdrSocketIdentity(socketPath) {
|
|
914
1235
|
const stats = fs.lstatSync(socketPath, { bigint: true });
|
|
915
1236
|
if (stats.isSymbolicLink()) {
|