@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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** The longest connector diagnostic kept: one line, enough for an error and the path it names. */
|
|
2
|
+
const DIAGNOSTIC_MAX = 240;
|
|
3
|
+
/** How much of the start of an unfinished output line is held while waiting for its end. */
|
|
4
|
+
const LINE_HEAD_MAX = 4096;
|
|
5
|
+
/** The last line in `text` that starts with a `[cotal-<name>]` or `[cotal-<name>/<part>]` prefix,
|
|
6
|
+
* with terminal escapes and control bytes removed. Connectors print their own diagnostics under
|
|
7
|
+
* that prefix; nothing else the child prints is kept, including a line that only quotes the prefix
|
|
8
|
+
* after other text. */
|
|
9
|
+
function lastConnectorDiagnostic(text) {
|
|
10
|
+
const plain = text
|
|
11
|
+
.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, "")
|
|
12
|
+
.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")
|
|
13
|
+
.replace(/\x1b./g, "")
|
|
14
|
+
.replace(/\r/g, "\n")
|
|
15
|
+
.replace(/[\x00-\x09\x0b-\x1f\x7f-\x9f]/g, "");
|
|
16
|
+
const line = plain.match(/^ *\[cotal-[a-z0-9-]+(?:\/[a-z0-9-]+)?\][^\n]*/gm)?.at(-1)?.trim();
|
|
17
|
+
if (!line)
|
|
18
|
+
return undefined;
|
|
19
|
+
return line.length > DIAGNOSTIC_MAX ? `${line.slice(0, DIAGNOSTIC_MAX)}…` : line;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Keeps the last connector diagnostic a pty child printed, across arbitrary output chunks. Both pty
|
|
23
|
+
* backends feed it, so a seat's exit reports the same diagnostic whichever one owned the child.
|
|
24
|
+
*/
|
|
25
|
+
export class ConnectorDiagnosticReader {
|
|
26
|
+
last;
|
|
27
|
+
/** The start of the unfinished line the child may still be printing. */
|
|
28
|
+
lineHead = "";
|
|
29
|
+
push(chunk) {
|
|
30
|
+
// Only complete lines are scanned, so a diagnostic split across chunks is read whole. The start
|
|
31
|
+
// of an unfinished line is what is held, because its prefix decides whether it is a diagnostic.
|
|
32
|
+
const text = this.lineHead + chunk;
|
|
33
|
+
const cut = Math.max(text.lastIndexOf("\n"), text.lastIndexOf("\r"));
|
|
34
|
+
if (cut >= 0 && text.lastIndexOf("[cotal-", cut) >= 0)
|
|
35
|
+
this.last = lastConnectorDiagnostic(text.slice(0, cut)) ?? this.last;
|
|
36
|
+
this.lineHead = text.slice(cut + 1, cut + 1 + LINE_HEAD_MAX);
|
|
37
|
+
}
|
|
38
|
+
/** The last diagnostic, counting a final line the child left unfinished. */
|
|
39
|
+
read() {
|
|
40
|
+
return lastConnectorDiagnostic(this.lineHead) ?? this.last;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,4FAA4F;AAC5F,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B;;;wBAGwB;AACxB,SAAS,uBAAuB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI;SACf,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;SACjD,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC;SACvC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;SACpB,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7F,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IAC5B,IAAI,CAAqB;IACjC,wEAAwE;IAChE,QAAQ,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC,KAAa;QAChB,gGAAgG;QAChG,gGAAgG;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QAC5H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,IAAI;QACF,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;IAC7D,CAAC;CACF"}
|
package/dist/handle.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { SeatRecord } from "./record.js";
|
|
2
|
+
import type { SeatExit } from "./protocol.js";
|
|
2
3
|
export interface SeatAttachSession {
|
|
3
4
|
readonly cols: number;
|
|
4
5
|
readonly rows: number;
|
|
@@ -18,10 +19,7 @@ export interface SeatHandle {
|
|
|
18
19
|
readonly pid: number;
|
|
19
20
|
readonly record: SeatRecord;
|
|
20
21
|
status(): "running" | "exited";
|
|
21
|
-
exitInfo():
|
|
22
|
-
code?: number;
|
|
23
|
-
signal?: number;
|
|
24
|
-
} | undefined;
|
|
22
|
+
exitInfo(): SeatExit | undefined;
|
|
25
23
|
stop(opts?: {
|
|
26
24
|
graceful?: boolean;
|
|
27
25
|
}): void;
|
package/dist/handle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../src/handle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACnC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;IAC/B,QAAQ,IAAI
|
|
1
|
+
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../src/handle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACnC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;IAC/B,QAAQ,IAAI,QAAQ,GAAG,SAAS,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,IAAI,IAAI,CAAC;IAClB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,IAAI,iBAAiB,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAqJ5D;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAIvE"}
|
package/dist/handle.js
CHANGED
|
@@ -43,7 +43,7 @@ export function adoptSeatSync(record) {
|
|
|
43
43
|
pid: record.childPid,
|
|
44
44
|
record,
|
|
45
45
|
status: () => status,
|
|
46
|
-
exitInfo: () => exit,
|
|
46
|
+
exitInfo: () => exit ?? client.exitInfo(),
|
|
47
47
|
stop: (opts) => {
|
|
48
48
|
later((c) => c.stop(opts?.graceful === false ? "hard" : "graceful"));
|
|
49
49
|
},
|
package/dist/handle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../src/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../src/handle.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ export { MAX_SOCKET_PATH, PROTOCOL_VERSION, UNATTENDED_MS, assertSocketPathFits,
|
|
|
2
2
|
export { launchSeat, loadSeat, RUN_MARKER_FLAG, runMarker, runMarkerOf, type LaunchSeatOpts, type SeatLaunchSpec } from "./launcher.js";
|
|
3
3
|
export { adoptSeat, adoptSeatSync, type SeatHandle, type SeatAttachSession } from "./handle.js";
|
|
4
4
|
export { assertSeatId, bootToken, processStartToken, readRecord, recordPath, seatId, socketPath, type SeatRecord } from "./record.js";
|
|
5
|
-
export { censusCustodians, identityVerdict, reapSeat, type CustodianSighting, type SeatReapEvidence } from "./reap.js";
|
|
5
|
+
export { censusCustodians, drainSeats, identityVerdict, reapSeat, type CustodianSighting, type SeatInventoryEntry, type SeatReapEvidence } from "./reap.js";
|
|
6
6
|
export { SeatClient } from "./client.js";
|
|
7
7
|
export { peerCredentials, type PeerCredentials } from "./peercred.js";
|
|
8
8
|
export { runCustodian, type CustodianLaunch } from "./custodian.js";
|
|
9
9
|
export { SEAT_OOM_SCORE_ADJ, preferSeatForOomKill, type OomPreference } from "./oom.js";
|
|
10
|
+
export { ConnectorDiagnosticReader } from "./diagnostic.js";
|
|
10
11
|
export { StartupConfirmMatcher, normalizeConfirmText, unmatchedConfirmMessage } from "./startup-confirm.js";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5J,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,11 @@ export { MAX_SOCKET_PATH, PROTOCOL_VERSION, UNATTENDED_MS, assertSocketPathFits,
|
|
|
2
2
|
export { launchSeat, loadSeat, RUN_MARKER_FLAG, runMarker, runMarkerOf } from "./launcher.js";
|
|
3
3
|
export { adoptSeat, adoptSeatSync } from "./handle.js";
|
|
4
4
|
export { assertSeatId, bootToken, processStartToken, readRecord, recordPath, seatId, socketPath } from "./record.js";
|
|
5
|
-
export { censusCustodians, identityVerdict, reapSeat } from "./reap.js";
|
|
5
|
+
export { censusCustodians, drainSeats, identityVerdict, reapSeat } from "./reap.js";
|
|
6
6
|
export { SeatClient } from "./client.js";
|
|
7
7
|
export { peerCredentials } from "./peercred.js";
|
|
8
8
|
export { runCustodian } from "./custodian.js";
|
|
9
9
|
export { SEAT_OOM_SCORE_ADJ, preferSeatForOomKill } from "./oom.js";
|
|
10
|
+
export { ConnectorDiagnosticReader } from "./diagnostic.js";
|
|
10
11
|
export { StartupConfirmMatcher, normalizeConfirmText, unmatchedConfirmMessage } from "./startup-confirm.js";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAA4C,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,SAAS,EAAE,aAAa,EAA2C,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAA4C,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,SAAS,EAAE,aAAa,EAA2C,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAA0E,MAAM,WAAW,CAAC;AAC5J,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAwB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAsB,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/launcher.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface SeatLaunchSpec {
|
|
|
4
4
|
args: string[];
|
|
5
5
|
env?: Record<string, string>;
|
|
6
6
|
confirm?: string;
|
|
7
|
+
/** The launch's private temporary directories, recorded on the seat record (see SeatRecord). */
|
|
8
|
+
artifacts?: string[];
|
|
7
9
|
}
|
|
8
10
|
export interface LaunchSeatOpts {
|
|
9
11
|
root: string;
|
package/dist/launcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiE,KAAK,UAAU,EAAc,MAAM,aAAa,CAAC;AAGzH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ;;yFAEqF;IACrF,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAaD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,gBAAgB,CAAC;AA6C7C,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,GAAE,MAAoB,GAAG,MAAM,CAIjG;AAED;;iEAEiE;AACjE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW3D;AAaD,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,UAAU,CA4C3D;AAsDD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAE7D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAErD"}
|
package/dist/launcher.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { spawn, spawnSync } from "node:child_process";
|
|
2
2
|
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
-
import {
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { discardSeatArtifacts } from "./artifacts.js";
|
|
5
7
|
import { assertSeatId, capabilityToken, recordPath, seatId, socketPath, readRecord } from "./record.js";
|
|
6
8
|
import { unattendedMs, assertSocketPathFits, unsupportedTransport } from "./protocol.js";
|
|
7
9
|
function packageRoot() {
|
|
@@ -106,6 +108,56 @@ function pidLive(pid) {
|
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
export function launchSeat(opts) {
|
|
111
|
+
// The launch's artifacts were written under THIS process's temp dir. The custodian's environment
|
|
112
|
+
// is scrubbed, so it is told the root rather than reading its own.
|
|
113
|
+
const artifactRoot = resolve(tmpdir());
|
|
114
|
+
let started;
|
|
115
|
+
try {
|
|
116
|
+
started = startCustodian(opts, artifactRoot);
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
// Every throw in there comes before any process exists, so no child will read the files.
|
|
120
|
+
discardSeatArtifacts(opts.spec.artifacts, artifactRoot);
|
|
121
|
+
throw e;
|
|
122
|
+
}
|
|
123
|
+
// A throw from here on proves nothing about the child, which the custodian may have started. Its
|
|
124
|
+
// files are the custodian's to remove once it sees that child exit.
|
|
125
|
+
const { child, launchFd, launchPath, recPath, logPath } = started;
|
|
126
|
+
closeSync(launchFd);
|
|
127
|
+
try {
|
|
128
|
+
unlinkSync(launchPath);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
/* child still holds the fd */
|
|
132
|
+
}
|
|
133
|
+
child.unref();
|
|
134
|
+
const deadline = Date.now() + 10_000;
|
|
135
|
+
while (Date.now() < deadline) {
|
|
136
|
+
try {
|
|
137
|
+
const rec = readRecord(recPath);
|
|
138
|
+
if (rec.custodianPid > 0 && rec.childPid > 0) {
|
|
139
|
+
return rec;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
/* record not written yet */
|
|
144
|
+
}
|
|
145
|
+
if (!pidLive(child.pid)) {
|
|
146
|
+
let err = "";
|
|
147
|
+
try {
|
|
148
|
+
err = readFileSync(logPath, "utf8").trim();
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
/* no log */
|
|
152
|
+
}
|
|
153
|
+
throw new Error(`custodian exited before ready: ${err || `pid ${String(child.pid)} gone`}`);
|
|
154
|
+
}
|
|
155
|
+
spawnSync("sleep", ["0.025"], { stdio: "ignore" });
|
|
156
|
+
}
|
|
157
|
+
throw new Error(`custodian did not write a seat record at ${recPath}`);
|
|
158
|
+
}
|
|
159
|
+
/** Every refusal a launch can make, then the custodian's spawn. A throw here means no process exists. */
|
|
160
|
+
function startCustodian(opts, artifactRoot) {
|
|
109
161
|
if (process.platform !== "linux")
|
|
110
162
|
throw unsupportedTransport();
|
|
111
163
|
mkdirSync(opts.root, { recursive: true, mode: 0o700 });
|
|
@@ -132,6 +184,7 @@ export function launchSeat(opts) {
|
|
|
132
184
|
recordPath: recPath,
|
|
133
185
|
logPath,
|
|
134
186
|
confirm: opts.spec.confirm,
|
|
187
|
+
...(opts.spec.artifacts?.length ? { artifacts: opts.spec.artifacts, artifactRoot } : {}),
|
|
135
188
|
run,
|
|
136
189
|
// Resolved HERE, not in the custodian: the custodian's environment is scrubbed to `PATH` plus the
|
|
137
190
|
// run marker, so it cannot read an override the caller set.
|
|
@@ -154,38 +207,7 @@ export function launchSeat(opts) {
|
|
|
154
207
|
// and so `/proc/<pid>/environ` answers the same question argv does for a reader who can read it.
|
|
155
208
|
env: { PATH: process.env.PATH ?? "", COTAL_RUN: run },
|
|
156
209
|
});
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
unlinkSync(launchPath);
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
/* child still holds the fd */
|
|
163
|
-
}
|
|
164
|
-
child.unref();
|
|
165
|
-
const deadline = Date.now() + 10_000;
|
|
166
|
-
while (Date.now() < deadline) {
|
|
167
|
-
try {
|
|
168
|
-
const rec = readRecord(recPath);
|
|
169
|
-
if (rec.custodianPid > 0 && rec.childPid > 0) {
|
|
170
|
-
return rec;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
catch {
|
|
174
|
-
/* record not written yet */
|
|
175
|
-
}
|
|
176
|
-
if (!pidLive(child.pid)) {
|
|
177
|
-
let err = "";
|
|
178
|
-
try {
|
|
179
|
-
err = readFileSync(logPath, "utf8").trim();
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
/* no log */
|
|
183
|
-
}
|
|
184
|
-
throw new Error(`custodian exited before ready: ${err || `pid ${String(child.pid)} gone`}`);
|
|
185
|
-
}
|
|
186
|
-
spawnSync("sleep", ["0.025"], { stdio: "ignore" });
|
|
187
|
-
}
|
|
188
|
-
throw new Error(`custodian did not write a seat record at ${recPath}`);
|
|
210
|
+
return { child, launchFd, launchPath, recPath, logPath };
|
|
189
211
|
}
|
|
190
212
|
export function loadSeat(root, id) {
|
|
191
213
|
return readRecord(recordPath(root, id));
|
package/dist/launcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -94,6 +94,15 @@ export type ClientRequest = {
|
|
|
94
94
|
id: number;
|
|
95
95
|
op: "health";
|
|
96
96
|
};
|
|
97
|
+
/** How the child ended, as the custodian observed it: node-pty's exit code and signal, and the
|
|
98
|
+
* last line the child printed under a connector's `[cotal-<name>]` or `[cotal-<name>/<part>]`
|
|
99
|
+
* prefix, if it printed one. Only a line that starts with that prefix is kept, so a harness's own
|
|
100
|
+
* output never leaves the seat through this field. */
|
|
101
|
+
export type SeatExit = {
|
|
102
|
+
code?: number;
|
|
103
|
+
signal?: number;
|
|
104
|
+
diagnostic?: string;
|
|
105
|
+
};
|
|
97
106
|
export type ServerEvent = {
|
|
98
107
|
event: "output";
|
|
99
108
|
sub: number;
|
|
@@ -101,6 +110,7 @@ export type ServerEvent = {
|
|
|
101
110
|
} | {
|
|
102
111
|
event: "exit";
|
|
103
112
|
sub?: number;
|
|
113
|
+
exit?: SeatExit;
|
|
104
114
|
};
|
|
105
115
|
export type ServerReply = {
|
|
106
116
|
id: number;
|
|
@@ -111,10 +121,7 @@ export type ServerReply = {
|
|
|
111
121
|
cols: number;
|
|
112
122
|
rows: number;
|
|
113
123
|
status: "running" | "exited";
|
|
114
|
-
exit?:
|
|
115
|
-
code?: number;
|
|
116
|
-
signal?: number;
|
|
117
|
-
};
|
|
124
|
+
exit?: SeatExit;
|
|
118
125
|
} | {
|
|
119
126
|
id: number;
|
|
120
127
|
ok: true;
|
|
@@ -152,10 +159,7 @@ export type ServerReply = {
|
|
|
152
159
|
id: number;
|
|
153
160
|
ok: true;
|
|
154
161
|
op: "wait-exit";
|
|
155
|
-
exit?:
|
|
156
|
-
code?: number;
|
|
157
|
-
signal?: number;
|
|
158
|
-
};
|
|
162
|
+
exit?: SeatExit;
|
|
159
163
|
} | {
|
|
160
164
|
id: number;
|
|
161
165
|
ok: true;
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,kGAAkG;AAClG,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,QAAQ,OAAQ,CAAC;AAC9B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,QAAc,CAAC;AAEzC;;wGAEwG;AACxG,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAOzE;AACD;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAkB,CAAC;AAC9C,sEAAsE;AACtE,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC;;qEAEqE;AACrE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS3D;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,kBAAkB,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,WAAW,GACnB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,kGAAkG;AAClG,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC;AAC9B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAEzC;;wGAEwG;AACxG,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,wBAAwB,CAAC;IACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,aAAa,CAAC;IAC1D,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2EAA2E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpH,OAAO,EAAE,CAAC;AACZ,CAAC;AACD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,GAAG,CAAC,CAAC;AAIlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC;;qEAEqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,KAAK,GAAG,eAAe;QACzB,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,oBAAoB,eAAe,kCAAkC,MAAM,IAAI;YACzG,yGAAyG;YACzG,kFAAkF,CACrF,CAAC;IACJ,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/reap.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SeatRecord } from "./record.js";
|
|
2
|
+
import { type SeatExit } from "./protocol.js";
|
|
2
3
|
/** What a reap proved. `absent`: no custody record exists for that seat id, so there is no process
|
|
3
4
|
* this package can address. `reaped`: every process the record names was either signalled and
|
|
4
5
|
* verified gone, or found already gone (its pid absent or held by a process with a different start
|
|
@@ -10,6 +11,7 @@ export type SeatReapEvidence = {
|
|
|
10
11
|
custodian: "signalled" | "gone";
|
|
11
12
|
child: "signalled" | "gone";
|
|
12
13
|
group: number;
|
|
14
|
+
exit?: SeatExit;
|
|
13
15
|
detail: string;
|
|
14
16
|
};
|
|
15
17
|
/** A pid's standing against a recorded start identity. `live` only when the process exists AND
|
|
@@ -44,11 +46,42 @@ export declare function censusCustodians(run?: string): CustodianSighting[];
|
|
|
44
46
|
* start identities to execute the same kernel identity and group checks. An unknown reference with neither
|
|
45
47
|
* on-disk file nor pinned record returns `absent` (failing closed as RuntimeReapUnproven).
|
|
46
48
|
*
|
|
47
|
-
* Signals only
|
|
48
|
-
*
|
|
49
|
+
* Signals the custodian and the child only while their current start identity matches the record. The
|
|
50
|
+
* child's descendants are not in the record, so its process group is signalled by pgid and then swept by
|
|
51
|
+
* membership alone, and the record's contents are trusted as written; docs/security.md lists both as
|
|
52
|
+
* accepted residuals. Verifies the custodian, the child and the child's whole process group gone, then
|
|
53
|
+
* removes the custody record directory.
|
|
49
54
|
*/
|
|
50
55
|
export declare function reapSeat(root: string, id: string, opts?: {
|
|
51
56
|
graceMs?: number;
|
|
52
57
|
pinnedRecord?: SeatRecord;
|
|
53
58
|
}): Promise<SeatReapEvidence>;
|
|
59
|
+
/** One custody record as {@link drainSeats} found it. `live-child`: the child still holds its
|
|
60
|
+
* recorded start identity, so the seat is a running agent and is never signalled. `childless`: the
|
|
61
|
+
* child is gone, so a drain would retire the seat. `drained`: a drain proved the seat gone and
|
|
62
|
+
* removed its record. `refused`: the record could not be read, its identity does not tie its pids
|
|
63
|
+
* to this boot's processes, or the reap did not prove exit; the record stays on disk. */
|
|
64
|
+
export interface SeatInventoryEntry {
|
|
65
|
+
id: string;
|
|
66
|
+
state: "live-child" | "childless" | "drained" | "refused";
|
|
67
|
+
name?: string;
|
|
68
|
+
custodianPid?: number;
|
|
69
|
+
childPid?: number;
|
|
70
|
+
detail: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* List the custody records under `root`, and with `drain` retire every seat whose child is gone
|
|
74
|
+
* (#1391).
|
|
75
|
+
*
|
|
76
|
+
* A seat whose child still holds its recorded start identity is reported and left alone: it is a
|
|
77
|
+
* running agent, and a manager may still adopt it. Only a seat whose child is proved gone reaches
|
|
78
|
+
* {@link reapSeat}. A record is written once, and a start identity that is gone never comes back, so
|
|
79
|
+
* the reap that follows finds the child gone too and signals at most a custodian whose identity
|
|
80
|
+
* matches the record. A record that cannot be read or whose identity proves nothing on this boot, or
|
|
81
|
+
* a reap that does not prove exit, is refused and left on disk for the operator.
|
|
82
|
+
*/
|
|
83
|
+
export declare function drainSeats(root: string, opts?: {
|
|
84
|
+
drain?: boolean;
|
|
85
|
+
graceMs?: number;
|
|
86
|
+
}): Promise<SeatInventoryEntry[]>;
|
|
54
87
|
//# sourceMappingURL=reap.d.ts.map
|
package/dist/reap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../src/reap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../src/reap.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4E,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAExH,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpE;;;yDAGyD;AACzD,MAAM,MAAM,gBAAgB,GACxB;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,GACrB;IAAE,OAAO,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAsBxI;;yCAEyC;AACzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAG3E;AAgDD,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAwBlE;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+F9I;AAED;;;;0FAI0F;AAC1F,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6C9H"}
|