@cotal-ai/seat 0.58.0 → 0.59.0
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 +13 -0
- package/dist/artifacts.d.ts +14 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +40 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/client.d.ts +6 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -3
- package/dist/client.js.map +1 -1
- package/dist/custodian.d.ts +5 -0
- package/dist/custodian.d.ts.map +1 -1
- package/dist/custodian.js +123 -21
- package/dist/custodian.js.map +1 -1
- package/dist/diagnostic.d.ts +13 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +43 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/handle.d.ts +2 -4
- package/dist/handle.d.ts.map +1 -1
- package/dist/handle.js +1 -1
- package/dist/handle.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/launcher.d.ts +2 -0
- package/dist/launcher.d.ts.map +1 -1
- package/dist/launcher.js +55 -33
- package/dist/launcher.js.map +1 -1
- package/dist/protocol.d.ts +12 -8
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/reap.d.ts +35 -2
- package/dist/reap.d.ts.map +1 -1
- package/dist/reap.js +138 -14
- package/dist/reap.js.map +1 -1
- package/dist/record.d.ts +12 -0
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +15 -1
- package/dist/record.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,6 +55,11 @@ child, keeps the process. A connected socket that never authenticated does not:
|
|
|
55
55
|
session, no output subscription and no wait, so a settle owes it nothing. A seat whose child has
|
|
56
56
|
already exited at listen stays up briefly so the launcher can adopt it.
|
|
57
57
|
|
|
58
|
+
A reap signals the custodian and the child only while each carries its recorded start identity.
|
|
59
|
+
The child's descendants are not in the record, so the reap kills the child's process group by
|
|
60
|
+
membership. The record carries no authentication, so a same-uid process that rewrites it chooses
|
|
61
|
+
what the next reap signals. `docs/security.md` lists both as accepted residuals.
|
|
62
|
+
|
|
58
63
|
A custodian with no authenticated controller stops its child and exits after `UNATTENDED_MS`
|
|
59
64
|
(ten minutes, overridable at launch with `COTAL_SEAT_UNATTENDED_MS`). The window restarts at each
|
|
60
65
|
disconnect, so a manager that detaches and re-adopts keeps its seats; one that crashes, or a suite
|
|
@@ -67,5 +72,13 @@ Every custodian carries `--cotal-run <marker>` on its argv and `COTAL_RUN` in it
|
|
|
67
72
|
`censusCustodians(run?)` reads that marker back out of `/proc/<pid>/cmdline`, which is
|
|
68
73
|
world-readable, so a reaper can find and attribute orphans without walking `/proc/*/cwd`.
|
|
69
74
|
|
|
75
|
+
`drainSeats(root, { drain })` lists the custody records under a root. A record that cannot be
|
|
76
|
+
read, or whose start and boot identity do not tie its pids to this boot, is reported as `refused`
|
|
77
|
+
and left on disk, with or without `drain`. A seat whose child still holds its recorded start
|
|
78
|
+
identity is reported as `live-child` and never signalled. With `drain`, every other seat goes
|
|
79
|
+
through `reapSeat`. One it cannot prove gone is reported as `refused` and left on disk, and
|
|
80
|
+
`reapSeat` may already have sent `SIGKILL` to its custodian.
|
|
81
|
+
`cotal seats [--drain]` is the operator command over it.
|
|
82
|
+
|
|
70
83
|
Generation CAS, the crash journal, N/N-1 protocol compatibility, and manager-worker activation
|
|
71
84
|
are later milestones. This package currently speaks a single implicit controller.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove a seat's launch artifacts (the record's `artifacts`). Called only where this package
|
|
3
|
+
* can prove the seat's child gone or never started: the custodian when it observes its child's exit
|
|
4
|
+
* or fails to start one, the launcher when it refuses before any process exists, and the reap once it
|
|
5
|
+
* has proved the seat gone. Losing a connection to the custodian proves none of these, so nothing on
|
|
6
|
+
* the client side calls this.
|
|
7
|
+
*
|
|
8
|
+
* `root` is the temp dir of the process that wrote them (the record's `artifactRoot`). Refuses,
|
|
9
|
+
* before removing anything, a path that is not a `cotal-` directory directly under it. Otherwise it
|
|
10
|
+
* tries every directory and then throws naming each one it could not remove, so the caller can keep
|
|
11
|
+
* those owned and try again.
|
|
12
|
+
*/
|
|
13
|
+
export declare function discardSeatArtifacts(artifacts: readonly string[] | undefined, root: string | undefined): void;
|
|
14
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAiB7G"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { rmSync } from "node:fs";
|
|
2
|
+
import { basename, dirname, resolve } from "node:path";
|
|
3
|
+
/** Every launch artifact directory name starts with this (core launch-artifacts). Repeated here
|
|
4
|
+
* because this package depends on nothing else in the repo, and it guards a recursive removal. */
|
|
5
|
+
const DIR_PREFIX = "cotal-";
|
|
6
|
+
/**
|
|
7
|
+
* Remove a seat's launch artifacts (the record's `artifacts`). Called only where this package
|
|
8
|
+
* can prove the seat's child gone or never started: the custodian when it observes its child's exit
|
|
9
|
+
* or fails to start one, the launcher when it refuses before any process exists, and the reap once it
|
|
10
|
+
* has proved the seat gone. Losing a connection to the custodian proves none of these, so nothing on
|
|
11
|
+
* the client side calls this.
|
|
12
|
+
*
|
|
13
|
+
* `root` is the temp dir of the process that wrote them (the record's `artifactRoot`). Refuses,
|
|
14
|
+
* before removing anything, a path that is not a `cotal-` directory directly under it. Otherwise it
|
|
15
|
+
* tries every directory and then throws naming each one it could not remove, so the caller can keep
|
|
16
|
+
* those owned and try again.
|
|
17
|
+
*/
|
|
18
|
+
export function discardSeatArtifacts(artifacts, root) {
|
|
19
|
+
if (!artifacts?.length)
|
|
20
|
+
return;
|
|
21
|
+
if (root === undefined)
|
|
22
|
+
throw new Error(`refusing to remove launch artifacts ${artifacts.join(", ")}: no temp dir recorded for them`);
|
|
23
|
+
const base = resolve(root);
|
|
24
|
+
for (const dir of artifacts) {
|
|
25
|
+
if (dirname(resolve(dir)) !== base || !basename(dir).startsWith(DIR_PREFIX))
|
|
26
|
+
throw new Error(`refusing to remove launch artifact ${dir}: not a ${DIR_PREFIX}* directory directly under ${base}`);
|
|
27
|
+
}
|
|
28
|
+
const failed = [];
|
|
29
|
+
for (const dir of artifacts) {
|
|
30
|
+
try {
|
|
31
|
+
rmSync(dir, { recursive: true, force: true });
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
failed.push(`${dir} (${e.message})`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (failed.length)
|
|
38
|
+
throw new Error(`could not remove launch artifact ${failed.join(", ")}`);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvD;mGACmG;AACnG,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAwC,EAAE,IAAwB;IACrG,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO;IAC/B,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACtI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,WAAW,UAAU,8BAA8B,IAAI,EAAE,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAM,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type StopMode } from "./protocol.js";
|
|
1
|
+
import { type SeatExit, type StopMode } from "./protocol.js";
|
|
2
2
|
import type { SeatRecord } from "./record.js";
|
|
3
3
|
export interface HelloInfo {
|
|
4
4
|
name: string;
|
|
@@ -6,10 +6,7 @@ export interface HelloInfo {
|
|
|
6
6
|
cols: number;
|
|
7
7
|
rows: number;
|
|
8
8
|
status: "running" | "exited";
|
|
9
|
-
exit?:
|
|
10
|
-
code?: number;
|
|
11
|
-
signal?: number;
|
|
12
|
-
};
|
|
9
|
+
exit?: SeatExit;
|
|
13
10
|
}
|
|
14
11
|
export declare class SeatClient {
|
|
15
12
|
private readonly record;
|
|
@@ -23,6 +20,7 @@ export declare class SeatClient {
|
|
|
23
20
|
private exits;
|
|
24
21
|
private helloInfo;
|
|
25
22
|
private pendingExit;
|
|
23
|
+
private pendingExitInfo;
|
|
26
24
|
private closed;
|
|
27
25
|
constructor(record: SeatRecord);
|
|
28
26
|
connect(): Promise<HelloInfo>;
|
|
@@ -33,15 +31,14 @@ export declare class SeatClient {
|
|
|
33
31
|
rows: number;
|
|
34
32
|
}>;
|
|
35
33
|
subscribeOutput(fn: (data: Buffer) => void): Promise<() => void>;
|
|
34
|
+
/** How the child ended, once the custodian has said so (hello, exit event, or wait-exit). */
|
|
35
|
+
exitInfo(): SeatExit | undefined;
|
|
36
36
|
onExit(fn: () => void): () => void;
|
|
37
37
|
write(data: string): Promise<number>;
|
|
38
38
|
resize(cols: number, rows: number): Promise<void>;
|
|
39
39
|
interrupt(): Promise<void>;
|
|
40
40
|
stop(mode: StopMode): Promise<void>;
|
|
41
|
-
waitExit(): Promise<
|
|
42
|
-
code?: number;
|
|
43
|
-
signal?: number;
|
|
44
|
-
} | undefined>;
|
|
41
|
+
waitExit(): Promise<SeatExit | undefined>;
|
|
45
42
|
health(): Promise<{
|
|
46
43
|
pid: number;
|
|
47
44
|
status: "running" | "exited";
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,QAAQ,EAGb,KAAK,QAAQ,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAQD,qBAAa,UAAU;IAcT,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbnC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAS;gBAEM,MAAM,EAAE,UAAU;IAEzC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAyCnC,IAAI,IAAI,SAAS;IAKX,QAAQ,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjE,eAAe,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgBtE,6FAA6F;IAC7F,QAAQ,IAAI,QAAQ,GAAG,SAAS;IAIhC,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAW5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAOzC,MAAM,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAMxF,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,OAAO;CAchB"}
|
package/dist/client.js
CHANGED
|
@@ -12,6 +12,7 @@ export class SeatClient {
|
|
|
12
12
|
exits = new Set();
|
|
13
13
|
helloInfo;
|
|
14
14
|
pendingExit = false;
|
|
15
|
+
pendingExitInfo;
|
|
15
16
|
closed = false;
|
|
16
17
|
constructor(record) {
|
|
17
18
|
this.record = record;
|
|
@@ -57,7 +58,7 @@ export class SeatClient {
|
|
|
57
58
|
cols: reply.cols,
|
|
58
59
|
rows: reply.rows,
|
|
59
60
|
status: this.pendingExit ? "exited" : reply.status,
|
|
60
|
-
...(reply.exit ? { exit: reply.exit } : {}),
|
|
61
|
+
...((reply.exit ?? this.pendingExitInfo) ? { exit: reply.exit ?? this.pendingExitInfo } : {}),
|
|
61
62
|
};
|
|
62
63
|
return this.helloInfo;
|
|
63
64
|
}
|
|
@@ -90,6 +91,10 @@ export class SeatClient {
|
|
|
90
91
|
this.pendingSubscribe = undefined;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
94
|
+
/** How the child ended, once the custodian has said so (hello, exit event, or wait-exit). */
|
|
95
|
+
exitInfo() {
|
|
96
|
+
return this.helloInfo?.exit ?? this.pendingExitInfo;
|
|
97
|
+
}
|
|
93
98
|
onExit(fn) {
|
|
94
99
|
if (this.helloInfo?.status === "exited" || this.pendingExit) {
|
|
95
100
|
queueMicrotask(fn);
|
|
@@ -167,10 +172,16 @@ export class SeatClient {
|
|
|
167
172
|
return;
|
|
168
173
|
}
|
|
169
174
|
if (msg.event === "exit") {
|
|
170
|
-
if (this.helloInfo)
|
|
175
|
+
if (this.helloInfo) {
|
|
171
176
|
this.helloInfo.status = "exited";
|
|
172
|
-
|
|
177
|
+
if (msg.exit)
|
|
178
|
+
this.helloInfo.exit = msg.exit;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
173
181
|
this.pendingExit = true;
|
|
182
|
+
if (msg.exit)
|
|
183
|
+
this.pendingExitInfo = msg.exit;
|
|
184
|
+
}
|
|
174
185
|
for (const fn of this.exits)
|
|
175
186
|
fn();
|
|
176
187
|
this.exits.clear();
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/custodian.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export interface CustodianLaunch {
|
|
|
17
17
|
* Resolved by the LAUNCHER, because the launcher scrubs the environment it hands this process
|
|
18
18
|
* (the child must not inherit the caller's), so an env override read here would never see one. */
|
|
19
19
|
unattendedMs?: number;
|
|
20
|
+
/** The launch's private temporary directories, copied onto the seat record. This custodian removes
|
|
21
|
+
* them once it sees its child exit, the one exit it observes directly. */
|
|
22
|
+
artifacts?: string[];
|
|
23
|
+
/** The launcher's temp dir, which every entry of `artifacts` must sit directly under. */
|
|
24
|
+
artifactRoot?: string;
|
|
20
25
|
}
|
|
21
26
|
export declare function runCustodian(launch: CustodianLaunch): Promise<void>;
|
|
22
27
|
//# sourceMappingURL=custodian.d.ts.map
|
package/dist/custodian.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custodian.d.ts","sourceRoot":"","sources":["../src/custodian.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"custodian.d.ts","sourceRoot":"","sources":["../src/custodian.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;oEACgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;uGAEmG;IACnG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;+EAC2E;IAC3E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,wBAAsB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsmBzE"}
|
package/dist/custodian.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { appendFileSync, chmodSync, mkdirSync, readFileSync, unlinkSync } from "node:fs";
|
|
1
|
+
import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { createServer } from "node:net";
|
|
3
3
|
import { dirname } from "node:path";
|
|
4
4
|
import * as pty from "@lydell/node-pty";
|
|
5
5
|
import Headless from "@xterm/headless";
|
|
6
6
|
import { SerializeAddon } from "@xterm/addon-serialize";
|
|
7
|
+
import { discardSeatArtifacts } from "./artifacts.js";
|
|
7
8
|
import { peerCredentials } from "./peercred.js";
|
|
8
9
|
import { preferSeatForOomKill } from "./oom.js";
|
|
9
10
|
import { CONFIRM_TIMEOUT_MS, DEFAULT_COLS, DEFAULT_ROWS, FrameReader, GRACE_MS, MAX_FRAME_SIZE, PROTOCOL_VERSION, SCROLLBACK_ROWS, UNATTENDED_MS as UNATTENDED_DEFAULT_MS, encodeFrame, } from "./protocol.js";
|
|
10
|
-
import {
|
|
11
|
+
import { ConnectorDiagnosticReader } from "./diagnostic.js";
|
|
12
|
+
import { RECORD_VERSION, bootToken, exitPath, processStartToken, writeRecord } from "./record.js";
|
|
11
13
|
import { StartupConfirmMatcher, unmatchedConfirmMessage } from "./startup-confirm.js";
|
|
12
14
|
function send(sock, msg) {
|
|
13
15
|
if (!sock.writable)
|
|
@@ -26,13 +28,42 @@ export async function runCustodian(launch) {
|
|
|
26
28
|
if (e.code !== "ENOENT")
|
|
27
29
|
throw e;
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
// Removes the launch's files, logging rather than throwing: a refused path must not take down the
|
|
32
|
+
// custodian of a live seat.
|
|
33
|
+
const discardArtifacts = (artifacts) => {
|
|
34
|
+
try {
|
|
35
|
+
discardSeatArtifacts(artifacts, launch.artifactRoot);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
note(`${e.message}\n`);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const note = (line) => {
|
|
42
|
+
try {
|
|
43
|
+
if (launch.logPath)
|
|
44
|
+
appendFileSync(launch.logPath, line, { mode: 0o600 });
|
|
45
|
+
else
|
|
46
|
+
process.stderr.write(line);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
/* the seat directory may already be gone */
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
let proc;
|
|
53
|
+
try {
|
|
54
|
+
proc = pty.spawn(launch.command, launch.args, {
|
|
55
|
+
name: "xterm-256color",
|
|
56
|
+
cols: DEFAULT_COLS,
|
|
57
|
+
rows: DEFAULT_ROWS,
|
|
58
|
+
cwd: launch.cwd,
|
|
59
|
+
env: launch.env,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
// No child was started, so none will read the files.
|
|
64
|
+
discardArtifacts(launch.artifacts);
|
|
65
|
+
throw e;
|
|
66
|
+
}
|
|
36
67
|
const oomPref = preferSeatForOomKill(proc.pid);
|
|
37
68
|
if (!oomPref.applied) {
|
|
38
69
|
const line = `oom preference not applied to child ${proc.pid}: ${oomPref.reason}\n`;
|
|
@@ -66,6 +97,7 @@ export async function runCustodian(launch) {
|
|
|
66
97
|
let cols = DEFAULT_COLS;
|
|
67
98
|
let rows = DEFAULT_ROWS;
|
|
68
99
|
let exit;
|
|
100
|
+
const diagnostic = new ConnectorDiagnosticReader();
|
|
69
101
|
const dataSubs = new Map();
|
|
70
102
|
const waiters = new Map();
|
|
71
103
|
const controllers = new Set();
|
|
@@ -81,6 +113,8 @@ export async function runCustodian(launch) {
|
|
|
81
113
|
let server;
|
|
82
114
|
/** Wait for the first adopter when the child has already exited at listen. */
|
|
83
115
|
const LAUNCH_HANDOFF_MS = 5_000;
|
|
116
|
+
/** How long a child already gone from /proc may wait for node-pty to report how it ended. */
|
|
117
|
+
const EXIT_STATUS_GRACE_MS = 1_000;
|
|
84
118
|
const UNATTENDED_MS = launch.unattendedMs ?? UNATTENDED_DEFAULT_MS;
|
|
85
119
|
if (confirmMatcher) {
|
|
86
120
|
confirmTimer = setTimeout(() => {
|
|
@@ -116,6 +150,20 @@ export async function runCustodian(launch) {
|
|
|
116
150
|
return true;
|
|
117
151
|
}
|
|
118
152
|
};
|
|
153
|
+
/**
|
|
154
|
+
* Mark a child that /proc shows gone as exited WITHOUT a status, but only once node-pty has had
|
|
155
|
+
* time to report the status itself. node-pty reports an exit only when the pty closes, and when a
|
|
156
|
+
* descendant still holds the pty open it forces that close 200 ms after reaping the child. The
|
|
157
|
+
* exit event carries whatever is known when it is sent, so marking earlier sent no status.
|
|
158
|
+
*/
|
|
159
|
+
let goneSince;
|
|
160
|
+
const markGone = () => {
|
|
161
|
+
if (!alive || !childGone())
|
|
162
|
+
return;
|
|
163
|
+
goneSince ??= Date.now();
|
|
164
|
+
if (Date.now() - goneSince >= EXIT_STATUS_GRACE_MS)
|
|
165
|
+
markExited({});
|
|
166
|
+
};
|
|
119
167
|
const settleTerminal = () => {
|
|
120
168
|
if (alive || settling || !ready)
|
|
121
169
|
return;
|
|
@@ -253,19 +301,76 @@ export async function runCustodian(launch) {
|
|
|
253
301
|
return;
|
|
254
302
|
}
|
|
255
303
|
alive = false;
|
|
256
|
-
|
|
304
|
+
const last = diagnostic.read();
|
|
305
|
+
exit = { ...(info ?? exit ?? {}), ...(last ? { diagnostic: last } : {}) };
|
|
306
|
+
// Kept beside the custody record so a reap that runs after every controller is gone, even in a
|
|
307
|
+
// successor manager, can still say how the child ended. Renamed into place, so a reader never
|
|
308
|
+
// sees half a record.
|
|
309
|
+
const exitFile = exitPath(launch.recordPath);
|
|
310
|
+
try {
|
|
311
|
+
writeFileSync(`${exitFile}.tmp`, `${JSON.stringify(exit)}\n`, { mode: 0o600 });
|
|
312
|
+
renameSync(`${exitFile}.tmp`, exitFile);
|
|
313
|
+
}
|
|
314
|
+
catch (e) {
|
|
315
|
+
// A seat directory that is already gone has nobody left to read the record. Any other failure
|
|
316
|
+
// loses the only account a later reap has, so it is said where an operator can find it, and
|
|
317
|
+
// the reap reports the record missing or unreadable.
|
|
318
|
+
if (e.code !== "ENOENT") {
|
|
319
|
+
const line = `exit record not written: ${e.message}\n`;
|
|
320
|
+
try {
|
|
321
|
+
unlinkSync(`${exitFile}.tmp`);
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
/* never created */
|
|
325
|
+
}
|
|
326
|
+
try {
|
|
327
|
+
if (launch.logPath)
|
|
328
|
+
appendFileSync(launch.logPath, line, { mode: 0o600 });
|
|
329
|
+
else
|
|
330
|
+
process.stderr.write(line);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
/* the log can sit on the same failed storage */
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// The child is gone, so it has made every read it will make. Remove its files before anyone is
|
|
338
|
+
// told of the exit, and drop the removed ones from the record so a later reap does not remove the
|
|
339
|
+
// same names again. One that could not be removed stays listed, so the reap that proves this seat
|
|
340
|
+
// gone tries it again. Losing a controller's connection is not this: only the child's exit is.
|
|
341
|
+
if (record.artifacts) {
|
|
342
|
+
discardArtifacts(record.artifacts);
|
|
343
|
+
const left = record.artifacts.filter((dir) => existsSync(dir));
|
|
344
|
+
if (left.length)
|
|
345
|
+
record.artifacts = left;
|
|
346
|
+
else {
|
|
347
|
+
delete record.artifacts;
|
|
348
|
+
delete record.artifactRoot;
|
|
349
|
+
}
|
|
350
|
+
if (ready) {
|
|
351
|
+
try {
|
|
352
|
+
const tmp = `${launch.recordPath}.tmp`;
|
|
353
|
+
writeRecord(tmp, record);
|
|
354
|
+
renameSync(tmp, launch.recordPath);
|
|
355
|
+
}
|
|
356
|
+
catch (e) {
|
|
357
|
+
note(`${e.message}\n`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
257
361
|
if (confirmTimer) {
|
|
258
362
|
clearTimeout(confirmTimer);
|
|
259
363
|
confirmTimer = undefined;
|
|
260
364
|
}
|
|
261
365
|
for (const sock of controllers)
|
|
262
|
-
send(sock, { event: "exit" });
|
|
366
|
+
send(sock, { event: "exit", exit });
|
|
263
367
|
resolveWaiters();
|
|
264
368
|
settleTerminal();
|
|
265
369
|
armUnobservedHandoff();
|
|
266
370
|
};
|
|
267
371
|
proc.onData((d) => {
|
|
268
372
|
term.write(d);
|
|
373
|
+
diagnostic.push(d);
|
|
269
374
|
if (early.length < MAX_FRAME_SIZE) {
|
|
270
375
|
early += early.length + d.length > MAX_FRAME_SIZE ? d.slice(0, MAX_FRAME_SIZE - early.length) : d;
|
|
271
376
|
}
|
|
@@ -291,8 +396,7 @@ export async function runCustodian(launch) {
|
|
|
291
396
|
reap = undefined;
|
|
292
397
|
return;
|
|
293
398
|
}
|
|
294
|
-
|
|
295
|
-
markExited({});
|
|
399
|
+
markGone();
|
|
296
400
|
}, 50);
|
|
297
401
|
reap.unref();
|
|
298
402
|
const stopChild = (mode) => {
|
|
@@ -320,6 +424,7 @@ export async function runCustodian(launch) {
|
|
|
320
424
|
// Bind the pids to THIS boot: their start tokens are ticks since boot and the record outlives a
|
|
321
425
|
// reboot on disk, so without this a survivor could match an innocent process on the next boot.
|
|
322
426
|
...(bootId === undefined ? {} : { bootId }),
|
|
427
|
+
...(launch.artifacts?.length ? { artifacts: launch.artifacts, artifactRoot: launch.artifactRoot } : {}),
|
|
323
428
|
};
|
|
324
429
|
server = createServer((sock) => {
|
|
325
430
|
const reader = new FrameReader();
|
|
@@ -411,8 +516,7 @@ export async function runCustodian(launch) {
|
|
|
411
516
|
clearTimeout(handoffTimer);
|
|
412
517
|
handoffTimer = undefined;
|
|
413
518
|
}
|
|
414
|
-
|
|
415
|
-
markExited({});
|
|
519
|
+
markGone();
|
|
416
520
|
send(sock, {
|
|
417
521
|
id: req.id,
|
|
418
522
|
ok: true,
|
|
@@ -425,7 +529,7 @@ export async function runCustodian(launch) {
|
|
|
425
529
|
...(exit ? { exit } : {}),
|
|
426
530
|
});
|
|
427
531
|
if (!alive)
|
|
428
|
-
send(sock, { event: "exit" });
|
|
532
|
+
send(sock, { event: "exit", ...(exit ? { exit } : {}) });
|
|
429
533
|
return;
|
|
430
534
|
}
|
|
431
535
|
case "snapshot": {
|
|
@@ -443,7 +547,7 @@ export async function runCustodian(launch) {
|
|
|
443
547
|
if (early)
|
|
444
548
|
send(sock, { event: "output", sub, data: Buffer.from(early, "utf8").toString("base64") });
|
|
445
549
|
if (!alive)
|
|
446
|
-
send(sock, { event: "exit", sub });
|
|
550
|
+
send(sock, { event: "exit", sub, ...(exit ? { exit } : {}) });
|
|
447
551
|
return;
|
|
448
552
|
}
|
|
449
553
|
case "unsubscribe-output": {
|
|
@@ -487,8 +591,7 @@ export async function runCustodian(launch) {
|
|
|
487
591
|
return;
|
|
488
592
|
}
|
|
489
593
|
case "wait-exit": {
|
|
490
|
-
|
|
491
|
-
markExited({});
|
|
594
|
+
markGone();
|
|
492
595
|
if (!alive) {
|
|
493
596
|
send(sock, { id: req.id, ok: true, op: "wait-exit", exit });
|
|
494
597
|
return;
|
|
@@ -499,8 +602,7 @@ export async function runCustodian(launch) {
|
|
|
499
602
|
return;
|
|
500
603
|
}
|
|
501
604
|
case "health": {
|
|
502
|
-
|
|
503
|
-
markExited({});
|
|
605
|
+
markGone();
|
|
504
606
|
send(sock, {
|
|
505
607
|
id: req.id,
|
|
506
608
|
ok: true,
|
package/dist/custodian.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custodian.js","sourceRoot":"","sources":["../src/custodian.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custodian.js","sourceRoot":"","sources":["../src/custodian.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChI,OAAO,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,IAAI,qBAAqB,EACtC,WAAW,GAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AA4BtF,SAAS,IAAI,CAAC,IAAY,EAAE,GAAkB;IAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO;IAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAuB;IACxD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,kGAAkG;IAClG,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,CAAC,SAAwC,EAAQ,EAAE;QAC1E,IAAI,CAAC;YACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAI,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;QAClC,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO;gBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;gBACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;YAC5C,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,qDAAqD;QACrD,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,uCAAuC,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC;QACpF,IAAI,MAAM,CAAC,OAAO;YAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;YACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,iGAAiG;IACjG,gGAAgG;IAChG,iGAAiG;IACjG,gGAAgG;IAChG,6FAA6F;IAC7F,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,cAAc,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;IACnI,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,eAAe;QAC3B,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;IACxC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE3B,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAA0B,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,IAAI,YAAuD,CAAC;IAC5D,IAAI,SAAoD,CAAC;IACzD,IAAI,YAAuD,CAAC;IAC5D,IAAI,eAA0D,CAAC;IAC/D,IAAI,IAAgD,CAAC;IACrD,IAAI,MAAmD,CAAC;IACxD,8EAA8E;IAC9E,MAAM,iBAAiB,GAAG,KAAK,CAAC;IAChC,6FAA6F;IAC7F,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAEnE,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YACnF,IAAI,CAAC,KAAK,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,KAAK,MAAM,IAAI,IAAI,KAAK;oBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,MAAM,CAAC,OAAO;gBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxE,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAoB,EAAE,CACrC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAElF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAClC,KAAK,MAAM,EAAE,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAY,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF;;;;;OAKG;IACH,IAAI,SAA6B,CAAC;IAClC,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QACnC,SAAS,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,oBAAoB;YAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,IAAI,KAAK,IAAI,QAAQ,IAAI,CAAC,KAAK;YAAE,OAAO;QACxC,2FAA2F;QAC3F,gGAAgG;QAChG,4FAA4F;QAC5F,8FAA8F;QAC9F,8FAA8F;QAC9F,+EAA+E;QAC/E,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO;QACjC,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,eAAe,CAAC,CAAC;YAC9B,eAAe,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,gFAAgF;QAChF,8EAA8E;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF;;;;;;;;;OASG;IACH,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,eAAe,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO;QAC1E,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,eAAe,GAAG,SAAS,CAAC;YAC5B,IAAI,QAAQ,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC;gBAAE,OAAO;YAC7C,6FAA6F;YAC7F,6CAA6C;YAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACjJ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,2FAA2F;gBAC3F,yFAAyF;gBACzF,wDAAwD;gBACxD,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtB,wFAAwF;gBACxF,kFAAkF;gBAClF,OAAO;YACT,CAAC;YACD,UAAU,GAAG,IAAI,CAAC;YAClB,cAAc,EAAE,CAAC;QACnB,CAAC,EAAE,aAAa,CAAC,CAAC;QAClB,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAClC,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9B,eAAe,GAAG,SAAS,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAS,EAAE;QACtC,IAAI,KAAK,IAAI,UAAU,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,YAAY;YAAE,OAAO;QACtE,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,YAAY,GAAG,SAAS,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC;YAClB,cAAc,EAAE,CAAC;QACnB,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtB,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAyC,EAAQ,EAAE;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;YACjB,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,KAAK,GAAG,KAAK,CAAC;QACd,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,+FAA+F;QAC/F,8FAA8F;QAC9F,sBAAsB;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,aAAa,CAAC,GAAG,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,UAAU,CAAC,GAAG,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,8FAA8F;YAC9F,4FAA4F;YAC5F,qDAAqD;YACrD,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,4BAA6B,CAAW,CAAC,OAAO,IAAI,CAAC;gBAClE,IAAI,CAAC;oBACH,UAAU,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,mBAAmB;gBACrB,CAAC;gBACD,IAAI,CAAC;oBACH,IAAI,MAAM,CAAC,OAAO;wBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;wBACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,gDAAgD;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QACD,+FAA+F;QAC/F,kGAAkG;QAClG,kGAAkG;QAClG,+FAA+F;QAC/F,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;iBACpC,CAAC;gBACJ,OAAO,MAAM,CAAC,SAAS,CAAC;gBACxB,OAAO,MAAM,CAAC,YAAY,CAAC;YAC7B,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,MAAM,CAAC;oBACvC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACzB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,GAAI,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,CAAC;QACjB,oBAAoB,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YAClC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,YAAY;gBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAC7C,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,IAAI;gBAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,SAAS,CAAC;YACjB,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,IAAI,CAAC,KAAK,EAAE,CAAC;IAEb,MAAM,SAAS,GAAG,CAAC,IAAyB,EAAQ,EAAE;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM,MAAM,GAAe;QACzB,OAAO,EAAE,cAAc;QACvB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,YAAY,EAAE,OAAO,CAAC,GAAG;QACzB,QAAQ,EAAE,IAAI,CAAC,GAAG;QAClB,cAAc;QACd,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,gGAAgG;QAChG,+FAA+F;QAC/F,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxG,CAAC;IAEF,MAAM,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;oBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;YACD,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,+FAA+F;YAC/F,uFAAuF;YACvF,aAAa,EAAE,CAAC;QAClB,CAAC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,QAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;oBACrB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM;oBACpB,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;wBACf,MAAM,GAAG,CAAC,CAAC;oBACb,CAAC;oBACD,KAAK;iBACN,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAG,GAAuB,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjG,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,MAAM,CACnB,IAAY,EACZ,GAAY,EACZ,OAAuF;QAEvF,MAAM,GAAG,GAAG,GAAoB,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACxG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;YACf,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;oBAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACxB,UAAU,GAAG,IAAI,CAAC;gBAClB,0FAA0F;gBAC1F,4FAA4F;gBAC5F,0EAA0E;gBAC1E,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,gBAAgB,EAAE,CAAC;gBACnB,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC3B,YAAY,GAAG,SAAS,CAAC;gBAC3B,CAAC;gBACD,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,EAAE;oBACT,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,EAAE,IAAI;oBACR,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,IAAI;oBACJ,IAAI;oBACJ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;oBACpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1B,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBACrD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAClE,IAAI,KAAK;oBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACrG,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;wBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,6CAA6C,CAAC,CAAC;gBAC9F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9F,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACjC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBAChB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,KAAK;wBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;gBACnD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,EAAE;oBACT,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,EAAE,IAAI;oBACR,EAAE,EAAE,QAAQ;oBACZ,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;oBACpC,QAAQ,EAAE,gBAAgB;iBAC3B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,EAAE,GAAG,OAAQ,GAAwB,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;YACnC,gGAAgG;YAChG,4FAA4F;YAC5F,8FAA8F;YAC9F,+FAA+F;YAC/F,iDAAiD;YACjD,IAAI,CAAC;gBACH,0FAA0F;gBAC1F,0FAA0F;gBAC1F,2FAA2F;gBAC3F,+EAA+E;gBAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM;oBACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,sBAAsB,MAAM,CAAC,MAAM,0EAA0E,CAAC,CAAC;gBACzJ,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACvC,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBACxG,IAAI,MAAM,CAAC,OAAO;oBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;oBAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrC,oBAAoB,EAAE,CAAC;gBACvB,aAAa,EAAE,CAAC;gBAChB,cAAc,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,yEAAyE;gBACzE,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACP,kBAAkB;gBACpB,CAAC;gBACD,MAAM,CAAC,CAAU,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;AAC5C,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,GAAI,GAAa,CAAC,KAAK,IAAK,GAAa,CAAC,OAAO,IAAI,CAAC;QACnE,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO;gBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;;gBACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keeps the last connector diagnostic a pty child printed, across arbitrary output chunks. Both pty
|
|
3
|
+
* backends feed it, so a seat's exit reports the same diagnostic whichever one owned the child.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConnectorDiagnosticReader {
|
|
6
|
+
private last;
|
|
7
|
+
/** The start of the unfinished line the child may still be printing. */
|
|
8
|
+
private lineHead;
|
|
9
|
+
push(chunk: string): void;
|
|
10
|
+
/** The last diagnostic, counting a final line the child left unfinished. */
|
|
11
|
+
read(): string | undefined;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=diagnostic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,IAAI,CAAqB;IACjC,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAM;IAEtB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASzB,4EAA4E;IAC5E,IAAI,IAAI,MAAM,GAAG,SAAS;CAG3B"}
|