@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/dist/reap.js CHANGED
@@ -1,8 +1,30 @@
1
1
  import { existsSync, readdirSync, readFileSync, rmSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
- import { bootToken, processStartToken, readRecord, recordPath } from "./record.js";
3
+ import { discardSeatArtifacts } from "./artifacts.js";
4
+ import { bootToken, exitPath, isSeatId, processStartToken, readRecord, recordPath } from "./record.js";
4
5
  import { RUN_MARKER_FLAG } from "./launcher.js";
5
6
  import { unsupportedTransport } from "./protocol.js";
7
+ /** How the child ended, as its custodian recorded it; why a record that exists cannot be read; or
8
+ * neither when no record exists (the child was still running, or its custodian never wrote one). */
9
+ function recordedExit(file) {
10
+ let raw;
11
+ try {
12
+ raw = JSON.parse(readFileSync(file, "utf8"));
13
+ }
14
+ catch (e) {
15
+ return e.code === "ENOENT" ? {} : { unreadable: e.message };
16
+ }
17
+ if (typeof raw !== "object" || raw === null)
18
+ return { unreadable: "not a JSON object" };
19
+ const { code, signal, diagnostic } = raw;
20
+ return {
21
+ exit: {
22
+ ...(Number.isInteger(code) ? { code: code } : {}),
23
+ ...(Number.isInteger(signal) ? { signal: signal } : {}),
24
+ ...(typeof diagnostic === "string" ? { diagnostic } : {}),
25
+ },
26
+ };
27
+ }
6
28
  /** A pid's standing against a recorded start identity. `live` only when the process exists AND
7
29
  * carries the recorded start token; a different token means the pid was reused by an unrelated
8
30
  * process, which is never signalled. */
@@ -103,6 +125,21 @@ export function censusCustodians(run) {
103
125
  }
104
126
  return out;
105
127
  }
128
+ /** Why `rec`'s pids cannot be tied to the processes it recorded, or undefined when they can. A
129
+ * start token counts ticks since ITS OWN boot, so it only tells two processes apart within one boot,
130
+ * and a record may have outlived a reboot on disk. A record with no start identity, no boot identity,
131
+ * or another boot's identity proves nothing about whatever this boot put at those pid numbers, so it
132
+ * is neither signalled nor reported as running or gone. */
133
+ function unprovedIdentity(id, rec) {
134
+ if (rec.custodianStart === undefined)
135
+ return `seat ${id} record carries no process start identity; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (a bare pid may belong to an unrelated process)`;
136
+ if (rec.bootId === undefined)
137
+ return `seat ${id} record carries no boot identity; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (its start tokens cannot be compared across a reboot)`;
138
+ const boot = bootToken();
139
+ if (boot !== undefined && rec.bootId !== boot)
140
+ return `seat ${id} record belongs to boot ${rec.bootId}, but this is boot ${boot}; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (those pids now belong to this boot's processes)`;
141
+ return undefined;
142
+ }
106
143
  /**
107
144
  * Reap one custodied seat: a crashed manager's orphan, a lingering custodian, or a cleanly exited seat
108
145
  * whose custodian unlinked its on-disk record.
@@ -112,8 +149,11 @@ export function censusCustodians(run) {
112
149
  * start identities to execute the same kernel identity and group checks. An unknown reference with neither
113
150
  * on-disk file nor pinned record returns `absent` (failing closed as RuntimeReapUnproven).
114
151
  *
115
- * Signals only a pid whose current start identity matches the record, verifies the custodian, the child
116
- * and the child's whole process group gone, then removes the custody record directory.
152
+ * Signals the custodian and the child only while their current start identity matches the record. The
153
+ * child's descendants are not in the record, so its process group is signalled by pgid and then swept by
154
+ * membership alone, and the record's contents are trusted as written; docs/security.md lists both as
155
+ * accepted residuals. Verifies the custodian, the child and the child's whole process group gone, then
156
+ * removes the custody record directory.
117
157
  */
118
158
  export async function reapSeat(root, id, opts = {}) {
119
159
  if (process.platform !== "linux")
@@ -137,17 +177,13 @@ export async function reapSeat(root, id, opts = {}) {
137
177
  throw new Error(`seat ${id} record at ${path} is unreadable: ${e.message}`);
138
178
  }
139
179
  }
140
- if (rec.custodianStart === undefined)
141
- throw new Error(`seat ${id} record carries no process start identity; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (a bare pid may belong to an unrelated process)`);
142
- // A start token counts ticks since ITS OWN boot, so it only tells two processes apart within one
143
- // boot, and this record may have outlived a reboot on disk. An unbound or foreign-boot record is
144
- // refused rather than signalled: the pids in it now name whatever this boot put at those numbers.
145
- const boot = bootToken();
146
- if (rec.bootId === undefined)
147
- throw new Error(`seat ${id} record carries no boot identity; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (its start tokens cannot be compared across a reboot)`);
148
- if (boot !== undefined && rec.bootId !== boot)
149
- throw new Error(`seat ${id} record belongs to boot ${rec.bootId}, but this is boot ${boot}; refusing to signal pid ${rec.custodianPid}/${rec.childPid} (those pids now belong to this boot's processes)`);
180
+ const unproved = unprovedIdentity(id, rec);
181
+ if (unproved !== undefined)
182
+ throw new Error(unproved);
150
183
  const custodianStart = rec.custodianStart;
184
+ // Read before anything is signalled, so a SIGKILL sent below is never reported as how the child ended.
185
+ const recorded = recordedExit(exitPath(path));
186
+ const exit = recorded.exit;
151
187
  // A pinned record without a child identity means the child was gone before custody began.
152
188
  const childLive = () => rec.childStart !== undefined && identityVerdict(rec.childPid, rec.childStart) === "live";
153
189
  // The child first: node-pty made it a session and process-group leader, so signalling the group
@@ -185,16 +221,104 @@ export async function reapSeat(root, id, opts = {}) {
185
221
  if (!empty)
186
222
  throw new Error(`seat ${id}: ${group} process(es) still in group ${rec.childPid} ${graceMs}ms after SIGKILL; exit not proved`);
187
223
  }
224
+ // The launch artifacts the record still lists, read again now that the custodian is proved gone and
225
+ // can no longer change it: ones it had not removed when it died, or could not remove. Never the
226
+ // pinned copy, which still lists what the custodian has since removed, so its names may have been
227
+ // reused. A failed removal keeps the record, so a later reap of this reference tries again.
228
+ let latest;
229
+ try {
230
+ latest = readRecord(path);
231
+ }
232
+ catch (e) {
233
+ if (e.code !== "ENOENT")
234
+ throw new Error(`seat ${id}: exit proved, but its record at ${path} is unreadable: ${e.message}; custody record kept`);
235
+ }
236
+ try {
237
+ discardSeatArtifacts(latest?.artifacts, latest?.artifactRoot);
238
+ }
239
+ catch (e) {
240
+ throw new Error(`seat ${id}: exit proved, but ${e.message}; custody record kept so a later reap retries`);
241
+ }
188
242
  const hadPath = existsSync(path);
189
243
  const dir = dirname(path);
190
244
  if (existsSync(dir))
191
245
  rmSync(dir, { recursive: true, force: true });
246
+ // A child already gone when the reap began ended on its own, and its custodian's record is the
247
+ // only account of how, so a missing or unreadable one is said rather than left out.
248
+ const ended = exit
249
+ ? `; its custodian recorded exit code ${exit.code ?? "unknown"}${exit.signal === undefined ? "" : `, signal ${exit.signal}`}${exit.diagnostic ? `, last connector diagnostic: ${exit.diagnostic}` : ""}`
250
+ : recorded.unreadable !== undefined
251
+ ? `; its custodian's exit record is unreadable: ${recorded.unreadable}`
252
+ : child === "gone"
253
+ ? "; no exit record from its custodian was found"
254
+ : "";
192
255
  return {
193
256
  outcome: "reaped",
194
257
  custodian,
195
258
  child,
196
259
  group,
197
- detail: `custodian ${rec.custodianPid} ${custodian}, child ${rec.childPid} ${child}${groupKilled || group > 0 ? `, group ${rec.childPid} empty` : ""}; custody record ${hadPath ? "removed" : "verified gone"}`,
260
+ ...(exit ? { exit } : {}),
261
+ detail: `custodian ${rec.custodianPid} ${custodian}, child ${rec.childPid} ${child}${groupKilled || group > 0 ? `, group ${rec.childPid} empty` : ""}; custody record ${hadPath ? "removed" : "verified gone"}${ended}`,
198
262
  };
199
263
  }
264
+ /**
265
+ * List the custody records under `root`, and with `drain` retire every seat whose child is gone
266
+ * (#1391).
267
+ *
268
+ * A seat whose child still holds its recorded start identity is reported and left alone: it is a
269
+ * running agent, and a manager may still adopt it. Only a seat whose child is proved gone reaches
270
+ * {@link reapSeat}. A record is written once, and a start identity that is gone never comes back, so
271
+ * the reap that follows finds the child gone too and signals at most a custodian whose identity
272
+ * matches the record. A record that cannot be read or whose identity proves nothing on this boot, or
273
+ * a reap that does not prove exit, is refused and left on disk for the operator.
274
+ */
275
+ export async function drainSeats(root, opts = {}) {
276
+ if (process.platform !== "linux")
277
+ throw unsupportedTransport();
278
+ let ids;
279
+ try {
280
+ ids = readdirSync(root).filter(isSeatId).sort();
281
+ }
282
+ catch (e) {
283
+ if (e.code === "ENOENT")
284
+ return [];
285
+ throw e;
286
+ }
287
+ const out = [];
288
+ for (const id of ids) {
289
+ let rec;
290
+ try {
291
+ rec = readRecord(recordPath(root, id));
292
+ }
293
+ catch (e) {
294
+ out.push({ id, state: "refused", detail: `record unreadable: ${e.message}` });
295
+ continue;
296
+ }
297
+ const seen = { id, name: rec.name, custodianPid: rec.custodianPid, childPid: rec.childPid };
298
+ const unproved = unprovedIdentity(id, rec);
299
+ if (unproved !== undefined) {
300
+ out.push({ ...seen, state: "refused", detail: unproved });
301
+ continue;
302
+ }
303
+ if (rec.childStart !== undefined && identityVerdict(rec.childPid, rec.childStart) === "live") {
304
+ out.push({ ...seen, state: "live-child", detail: `child ${rec.childPid} is running; kept` });
305
+ continue;
306
+ }
307
+ if (!opts.drain) {
308
+ const custodian = rec.custodianStart !== undefined && identityVerdict(rec.custodianPid, rec.custodianStart) === "live" ? "running" : "gone";
309
+ out.push({ ...seen, state: "childless", detail: `child ${rec.childPid} is gone; custodian ${rec.custodianPid} ${custodian}` });
310
+ continue;
311
+ }
312
+ try {
313
+ const evidence = await reapSeat(root, id, opts.graceMs === undefined ? {} : { graceMs: opts.graceMs });
314
+ out.push(evidence.outcome === "reaped"
315
+ ? { ...seen, state: "drained", detail: evidence.detail }
316
+ : { ...seen, state: "refused", detail: "record vanished before the reap; nothing was signalled" });
317
+ }
318
+ catch (e) {
319
+ out.push({ ...seen, state: "refused", detail: e.message });
320
+ }
321
+ }
322
+ return out;
323
+ }
200
324
  //# sourceMappingURL=reap.js.map
package/dist/reap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"reap.js","sourceRoot":"","sources":["../src/reap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reap.js","sourceRoot":"","sources":["../src/reap.ts"],"names":[],"mappings":"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"}
package/dist/record.d.ts CHANGED
@@ -20,6 +20,14 @@ export interface SeatRecord {
20
20
  * the same pid at the same tick after a reboot, and be signalled for it. Absent on a record
21
21
  * written before boot binding; such a record is never signalled. */
22
22
  bootId?: string;
23
+ /** Private temporary directories the launch wrote for this seat's child to read (a persona
24
+ * carrier, an MCP config file). The custodian removes them when its child exits and drops from the
25
+ * record the ones it removed; any still listed belong to a custodian killed first or could not be
26
+ * removed, and the reap that proves the seat gone removes them, keeping the record until it has. */
27
+ artifacts?: string[];
28
+ /** The temp dir of the launcher that wrote `artifacts`, which every entry must sit directly under.
29
+ * Recorded because a reap may run in a successor whose own temp dir differs. */
30
+ artifactRoot?: string;
23
31
  }
24
32
  export declare function seatId(): string;
25
33
  /** Every seat id names a directory under the custody root, so it is checked against the shape
@@ -28,8 +36,12 @@ export declare function seatId(): string;
28
36
  * record outside the root. Refuse rather than resolve: an unaddressable reference must not be
29
37
  * reported as a seat that is already forgotten. */
30
38
  export declare function assertSeatId(id: string): string;
39
+ /** Whether `id` has the shape {@link seatId} mints, so a directory entry can be told from a seat. */
40
+ export declare function isSeatId(id: string): boolean;
31
41
  export declare function capabilityToken(): string;
32
42
  export declare function recordPath(root: string, id: string): string;
43
+ /** Where a custodian records how its child ended, beside the custody record it names. */
44
+ export declare function exitPath(recordFile: string): string;
33
45
  export declare function socketPath(root: string, id: string): string;
34
46
  /** This boot's identity. Read at the moment a record is written and again when it is read back: a
35
47
  * start token is ticks since THIS boot, so two records from different boots share a namespace they
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB;;qFAEiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;0GACsG;IACtG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;yEAIqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAID;;;;oDAIoD;AACpD,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;kFAGkF;AAClF,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAO9C;AAED;;;yCAGyC;AACzC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAKlE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA6BnD"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB;;qFAEiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;0GACsG;IACtG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;yEAIqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;yGAGqG;IACrG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;qFACiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,MAAM,IAAI,MAAM,CAE/B;AAID;;;;oDAIoD;AACpD,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,qGAAqG;AACrG,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;kFAGkF;AAClF,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAO9C;AAED;;;yCAGyC;AACzC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAKlE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAmCnD"}
package/dist/record.js CHANGED
@@ -12,16 +12,24 @@ const SEAT_ID = /^[0-9a-f]{32}$/;
12
12
  * record outside the root. Refuse rather than resolve: an unaddressable reference must not be
13
13
  * reported as a seat that is already forgotten. */
14
14
  export function assertSeatId(id) {
15
- if (!SEAT_ID.test(id))
15
+ if (!isSeatId(id))
16
16
  throw new Error(`seat id ${JSON.stringify(id)} is not 32 lowercase hex characters; it names a directory under the custody root`);
17
17
  return id;
18
18
  }
19
+ /** Whether `id` has the shape {@link seatId} mints, so a directory entry can be told from a seat. */
20
+ export function isSeatId(id) {
21
+ return SEAT_ID.test(id);
22
+ }
19
23
  export function capabilityToken() {
20
24
  return randomBytes(32).toString("hex");
21
25
  }
22
26
  export function recordPath(root, id) {
23
27
  return join(root, assertSeatId(id), "record.json");
24
28
  }
29
+ /** Where a custodian records how its child ended, beside the custody record it names. */
30
+ export function exitPath(recordFile) {
31
+ return join(dirname(recordFile), "exit.json");
32
+ }
25
33
  export function socketPath(root, id) {
26
34
  return join(root, assertSeatId(id), "seat.sock");
27
35
  }
@@ -83,6 +91,10 @@ export function readRecord(path) {
83
91
  throw new Error("seat record childStart is not a start token");
84
92
  if (raw.bootId !== undefined && (typeof raw.bootId !== "string" || raw.bootId.length === 0))
85
93
  throw new Error("seat record bootId is not a boot identity");
94
+ if (raw.artifacts !== undefined && (!Array.isArray(raw.artifacts) || raw.artifacts.some((a) => typeof a !== "string" || a.length === 0)))
95
+ throw new Error("seat record artifacts is not a list of paths");
96
+ if (raw.artifactRoot !== undefined && (typeof raw.artifactRoot !== "string" || raw.artifactRoot.length === 0))
97
+ throw new Error("seat record artifactRoot is not a path");
86
98
  return {
87
99
  version: RECORD_VERSION,
88
100
  id: raw.id,
@@ -96,6 +108,8 @@ export function readRecord(path) {
96
108
  // Carried, not re-read from this process: a record read on another boot must still say which
97
109
  // boot its pids came from, which is the whole point of the stamp.
98
110
  ...(raw.bootId !== undefined ? { bootId: raw.bootId } : {}),
111
+ ...(raw.artifacts !== undefined ? { artifacts: raw.artifacts } : {}),
112
+ ...(raw.artifactRoot !== undefined ? { artifactRoot: raw.artifactRoot } : {}),
99
113
  };
100
114
  }
101
115
  //# sourceMappingURL=record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/seat",
3
3
  "description": "Local PTY seat custody: one detached custodian process per seat, a one-shot launcher, and the authenticated local protocol a manager worker uses to adopt the handle. Depends on nothing else in the repo.",
4
- "version": "0.58.0",
4
+ "version": "0.59.0",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",