@cotal-ai/manager 0.52.1 → 0.54.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.
@@ -15,6 +15,14 @@ export class CustodialPtyRuntime {
15
15
  root;
16
16
  kind = "pty";
17
17
  supportsRelease = true;
18
+ /**
19
+ * Private cache of active SeatRecords keyed by custody reference id, populated on spawn and adopt
20
+ * and pruned on reap or release. When a managed seat cleanly exits, its custodian unlinks the
21
+ * on-disk custody file; this pinned record allows reapSeat to prove the kernel start identities and
22
+ * process group are gone without requiring the file to linger. An unadopted reference without a
23
+ * pinned record falls back to fail-closed absent handling (RuntimeReapUnproven).
24
+ */
25
+ records = new Map();
18
26
  constructor(root = process.env.COTAL_SEAT_ROOT ?? defaultCustodyRoot()) {
19
27
  this.root = root;
20
28
  mkdirSync(this.root, { recursive: true, mode: 0o700 });
@@ -39,23 +47,42 @@ export class CustodialPtyRuntime {
39
47
  cwd,
40
48
  ...(reference ? { id: reference.id } : {}),
41
49
  });
50
+ this.records.set(rec.id, rec);
42
51
  const seat = adoptSeatSync(rec);
43
- return { ...seat, release: () => seat.close() };
52
+ return {
53
+ ...seat,
54
+ release: () => {
55
+ this.records.delete(rec.id);
56
+ seat.close();
57
+ },
58
+ };
44
59
  }
45
60
  adopt(reference) {
46
61
  if (process.platform !== "linux")
47
62
  throw unsupportedTransport();
48
63
  if (reference.kind !== "pty")
49
64
  throw new Error(`cannot adopt runtime kind "${reference.kind}" with pty`);
50
- const seat = adoptSeatSync(loadSeat(this.root, reference.id));
51
- return { ...seat, release: () => seat.close() };
65
+ const rec = loadSeat(this.root, reference.id);
66
+ this.records.set(rec.id, rec);
67
+ const seat = adoptSeatSync(rec);
68
+ return {
69
+ ...seat,
70
+ release: () => {
71
+ this.records.delete(rec.id);
72
+ seat.close();
73
+ },
74
+ };
52
75
  }
53
76
  async reap(reference) {
54
77
  if (process.platform !== "linux")
55
78
  throw unsupportedTransport();
56
79
  if (reference.kind !== "pty")
57
80
  throw new Error(`cannot reap runtime kind "${reference.kind}" with pty`);
58
- const evidence = await reapSeat(this.root, reference.id);
81
+ const pinnedRecord = this.records.get(reference.id);
82
+ const evidence = await reapSeat(this.root, reference.id, { pinnedRecord });
83
+ if (evidence.outcome === "reaped") {
84
+ this.records.delete(reference.id);
85
+ }
59
86
  return evidence.outcome === "absent" ? { outcome: "absent" } : { outcome: "reaped", detail: evidence.detail };
60
87
  }
61
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"custodial-pty.js","sourceRoot":"","sources":["../../src/runtime/custodial-pty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custodial-pty.js","sourceRoot":"","sources":["../../src/runtime/custodial-pty.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/manager",
3
3
  "description": "Cotal agent supervisor: spawns and manages mesh nodes via a pluggable runtime (pty/tmux/cmux/orca/herdr).",
4
- "version": "0.52.1",
4
+ "version": "0.54.0",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -30,21 +30,21 @@
30
30
  "ws": "^8.21.0",
31
31
  "yaml": "^2.9.0",
32
32
  "zod": "^4.4.3",
33
- "@cotal-ai/core": "0.52.1",
34
- "@cotal-ai/seat": "0.52.1",
35
- "@cotal-ai/workspace": "0.52.1"
33
+ "@cotal-ai/core": "0.54.0",
34
+ "@cotal-ai/seat": "0.54.0",
35
+ "@cotal-ai/workspace": "0.54.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@nats-io/nats-core": "^3.4.0",
39
39
  "@types/ws": "^8.18.1",
40
40
  "esbuild": "^0.28.1",
41
- "@cotal-ai/auth": "0.52.1",
42
- "@cotal-ai/connector-claude-code": "0.52.1",
43
- "@cotal-ai/connector-codex": "0.52.1",
41
+ "@cotal-ai/connector-claude-code": "0.54.0",
42
+ "@cotal-ai/auth": "0.54.0",
43
+ "@cotal-ai/connector-codex": "0.54.0",
44
44
  "@cotal-ai/smoke-kit": "0.0.0",
45
- "@cotal-ai/connector-core": "0.52.1",
46
- "@cotal-ai/connector-opencode": "0.52.1",
47
- "@cotal-ai/delivery": "0.52.1"
45
+ "@cotal-ai/connector-core": "0.54.0",
46
+ "@cotal-ai/connector-opencode": "0.54.0",
47
+ "@cotal-ai/delivery": "0.54.0"
48
48
  },
49
49
  "files": [
50
50
  "dist"