@cotal-ai/cli 0.13.1 → 0.14.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.
Files changed (87) hide show
  1. package/cotal-skills/.claude-plugin/plugin.json +6 -0
  2. package/cotal-skills/skills/team-topology/SKILL.md +96 -0
  3. package/dist/command.d.ts.map +1 -1
  4. package/dist/command.js +4 -0
  5. package/dist/command.js.map +1 -1
  6. package/dist/commands/backup.d.ts.map +1 -1
  7. package/dist/commands/backup.js +6 -2
  8. package/dist/commands/backup.js.map +1 -1
  9. package/dist/commands/clean.d.ts.map +1 -1
  10. package/dist/commands/clean.js +53 -19
  11. package/dist/commands/clean.js.map +1 -1
  12. package/dist/commands/doctor.d.ts +4 -0
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +57 -14
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/down-manifest.js +2 -2
  17. package/dist/commands/down-manifest.js.map +1 -1
  18. package/dist/commands/down.d.ts +9 -0
  19. package/dist/commands/down.d.ts.map +1 -1
  20. package/dist/commands/down.js +113 -46
  21. package/dist/commands/down.js.map +1 -1
  22. package/dist/commands/ext.d.ts +3 -0
  23. package/dist/commands/ext.d.ts.map +1 -1
  24. package/dist/commands/ext.js +95 -30
  25. package/dist/commands/ext.js.map +1 -1
  26. package/dist/commands/mint.d.ts.map +1 -1
  27. package/dist/commands/mint.js +5 -4
  28. package/dist/commands/mint.js.map +1 -1
  29. package/dist/commands/setup.d.ts +4 -0
  30. package/dist/commands/setup.d.ts.map +1 -1
  31. package/dist/commands/setup.js +226 -63
  32. package/dist/commands/setup.js.map +1 -1
  33. package/dist/commands/spawn.d.ts.map +1 -1
  34. package/dist/commands/spawn.js +3 -3
  35. package/dist/commands/spawn.js.map +1 -1
  36. package/dist/commands/status.d.ts.map +1 -1
  37. package/dist/commands/status.js +101 -7
  38. package/dist/commands/status.js.map +1 -1
  39. package/dist/commands/up.d.ts.map +1 -1
  40. package/dist/commands/up.js +23 -16
  41. package/dist/commands/up.js.map +1 -1
  42. package/dist/commands/update.d.ts +36 -0
  43. package/dist/commands/update.d.ts.map +1 -0
  44. package/dist/commands/update.js +348 -0
  45. package/dist/commands/update.js.map +1 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +12 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/agent-skills.d.ts +61 -0
  51. package/dist/lib/agent-skills.d.ts.map +1 -0
  52. package/dist/lib/agent-skills.js +240 -0
  53. package/dist/lib/agent-skills.js.map +1 -0
  54. package/dist/lib/auth-proc.d.ts +19 -1
  55. package/dist/lib/auth-proc.d.ts.map +1 -1
  56. package/dist/lib/auth-proc.js +102 -27
  57. package/dist/lib/auth-proc.js.map +1 -1
  58. package/dist/lib/control.js +2 -2
  59. package/dist/lib/control.js.map +1 -1
  60. package/dist/lib/delivery-proc.js +3 -3
  61. package/dist/lib/delivery-proc.js.map +1 -1
  62. package/dist/lib/ext-mutation.d.ts +9 -7
  63. package/dist/lib/ext-mutation.d.ts.map +1 -1
  64. package/dist/lib/ext-mutation.js +11 -12
  65. package/dist/lib/ext-mutation.js.map +1 -1
  66. package/dist/lib/maintenance-files.d.ts.map +1 -1
  67. package/dist/lib/maintenance-files.js +25 -6
  68. package/dist/lib/maintenance-files.js.map +1 -1
  69. package/dist/lib/pid.d.ts +23 -0
  70. package/dist/lib/pid.d.ts.map +1 -0
  71. package/dist/lib/pid.js +39 -0
  72. package/dist/lib/pid.js.map +1 -0
  73. package/dist/lib/restore.js +2 -2
  74. package/dist/lib/restore.js.map +1 -1
  75. package/dist/lib/status.d.ts +1 -2
  76. package/dist/lib/status.d.ts.map +1 -1
  77. package/dist/lib/status.js +34 -8
  78. package/dist/lib/status.js.map +1 -1
  79. package/dist/seed/paths.d.ts +2 -1
  80. package/dist/seed/paths.d.ts.map +1 -1
  81. package/dist/seed/paths.js +9 -8
  82. package/dist/seed/paths.js.map +1 -1
  83. package/dist/seed/reconcile.d.ts +1 -0
  84. package/dist/seed/reconcile.d.ts.map +1 -1
  85. package/dist/seed/reconcile.js +20 -15
  86. package/dist/seed/reconcile.js.map +1 -1
  87. package/package.json +5 -4
@@ -1,11 +1,12 @@
1
1
  import { existsSync, readFileSync, readdirSync } from "node:fs";
2
2
  import { basename, join } from "node:path";
3
3
  import { credentialLifetime, inspectCredHealth, } from "@cotal-ai/core";
4
- import { authDir, findCotalRoot, loadSpaceAuth, readRenewalRecord, remintDaemonCreds, userAuthStateDir, writeRenewalRecord, } from "@cotal-ai/workspace";
4
+ import { authDir, findCotalRoot, getSoleSpaceAuth, getSpaceAuth, hasUserAuthState, readRenewalRecord, remintDaemonCreds, spaceAccountPath, workspaceSecretStore, writeRenewalRecord, } from "@cotal-ai/workspace";
5
5
  import { displayCmd } from "../lib/self-exec.js";
6
6
  import { c } from "../ui.js";
7
7
  export const doctorFlags = [
8
8
  { name: "fix", type: "boolean", description: "execute the safe repairs (re-sign the manager-remintable daemon creds; needs the local signer)" },
9
+ { name: "space", type: "string", description: "target space on a multi-space root (default: the sole space)" },
9
10
  ];
10
11
  /** `cotal doctor auth` — the ONE stale-credential repair surface (D5 slice 6). Read-only diagnosis
11
12
  * of every managed credential file in this folder against the credential-lifetime matrix, rendered
@@ -16,34 +17,55 @@ export const doctorFlags = [
16
17
  export async function doctor(args) {
17
18
  const sub = args.positionals[0];
18
19
  if (sub !== "auth") {
19
- console.error(`usage: ${displayCmd()} doctor auth [--fix] - credential-health diagnosis + repair for this folder's mesh`);
20
+ console.error(`usage: ${displayCmd()} doctor auth [--fix] [--space <s>] - credential-health diagnosis + repair for this folder's mesh`);
20
21
  process.exitCode = 1;
21
22
  return;
22
23
  }
23
24
  const values = args.values;
24
25
  const root = findCotalRoot(process.cwd());
25
- const auth = loadSpaceAuth(authDir(root));
26
+ const auth = values.space ? await getSpaceAuth(workspaceSecretStore(root), values.space) : await getSoleSpaceAuth(workspaceSecretStore(root), authDir(root));
26
27
  console.log(c.bold("cotal doctor auth"));
27
28
  console.log(` root ${root}`);
28
29
  if (!auth) {
30
+ // An explicitly named space that has no record is a selection error, never "healthy" —
31
+ // falling through to the open-mesh answer would turn a typo into a green diagnosis.
32
+ if (values.space) {
33
+ console.error(c.red(`\n✗ no account record for space "${values.space}" under ${authDir(root)} (expected ${spaceAccountPath(authDir(root), values.space)})`));
34
+ process.exitCode = 1;
35
+ return;
36
+ }
29
37
  // An open mesh has no minted credentials at all — nothing to diagnose is a healthy answer,
30
38
  // not a silent one.
31
39
  console.log(c.green("\nauth: healthy - open mesh (no credential material in this folder)"));
32
40
  return;
33
41
  }
34
- const userMode = existsSync(userAuthStateDir(root, auth.space));
35
- console.log(` space ${auth.space}${userMode ? " · user-auth" : ""} · signer ${c.green("present")} (${join(authDir(root), "auth.json")})`);
42
+ const userMode = hasUserAuthState(root, auth.space);
43
+ // A legacy monolith root genuinely holds the signer in auth.json until a write splits it.
44
+ const acctPath = spaceAccountPath(authDir(root), auth.space);
45
+ const signerPath = existsSync(acctPath) ? acctPath : join(authDir(root), "auth.json");
46
+ console.log(` space ${auth.space}${userMode ? " · user-auth" : ""} · signer ${c.green("present")} (${signerPath})`);
36
47
  let reports = inventory(root);
37
48
  let problems = reports.filter((r) => r.problem);
38
49
  // --fix: the one safe local repair — re-sign the remintable daemon files (same nkeys), exactly
39
50
  // what the manager's renewal pass does, and record the pass so the audit trail stays honest
40
51
  // (adoption is the DAEMON's explicit reload, which only the running manager requests — a doctor
41
- // fix without a live manager is adopted by the daemon's 75% re-read backstop). Then re-diagnose:
52
+ // fix without a live manager is adopted by the daemon's own 75% renewal timer). Then re-diagnose:
42
53
  // the doctor reports what IS, never what it hopes the fix did.
43
54
  if (values.fix && problems.some((r) => isRemintable(r.kind))) {
44
55
  console.log(c.dim("\n--fix: re-signing the remintable daemon creds…"));
45
- const results = await remintDaemonCreds(root);
46
- writeRenewalRecord(root, { ts: new Date().toISOString(), owner: "doctor --fix", results });
56
+ const prior = readRenewalRecord(root);
57
+ const results = await remintDaemonCreds(root, auth.space); // validate the signer against THIS folder's space
58
+ // A local re-sign is NOT a broker proof: `--fix` has no live admin rail to adopt through, it
59
+ // relies on the daemon's 75% renewal timer. So it must NEVER erase a KNOWN broker refusal to
60
+ // green — if the last renewal was refused (e.g. the signer the broker rejects), the re-signed
61
+ // generation is still unproven and may be broker-dead. Carry the refusal forward as an explicit
62
+ // unproven state until a REAL proof (the manager's/daemon's reloadCreds) supersedes it, so the
63
+ // verdict below stays exit 1 with an actionable next step. A prior non-refusal is left absent
64
+ // (the "backstop will adopt" state), unchanged from before.
65
+ const adoption = prior?.adoption?.ok === false
66
+ ? { ok: false, error: "re-signed locally by `doctor auth --fix`, but the previous renewal was refused by the broker and the re-signed generation is not yet broker-proven - start the mesh's manager (the renewal owner) so it proves and adopts it" }
67
+ : undefined;
68
+ writeRenewalRecord(root, { ts: new Date().toISOString(), owner: "doctor --fix", results, adoption });
47
69
  for (const r of results.filter((x) => !x.ok && !x.skipped))
48
70
  console.error(c.red(` ✗ ${r.file}: ${r.error}`));
49
71
  reports = inventory(root);
@@ -53,13 +75,25 @@ export async function doctor(args) {
53
75
  renderRenewalRecord(root);
54
76
  render("$SYS creds (rotation-renewed - never remintable from disk)", reports.filter((r) => r.kind === "membership-observer" || r.kind === "connection-evictor"));
55
77
  render("Agent creds (static, pre-flip)", reports.filter((r) => r.kind === "agent"));
56
- if (!problems.length) {
78
+ // A broker-REFUSED renewal is a first-class problem for the final verdict + exit status, not just a
79
+ // warning line. Cred-file health alone is not enough: a structurally-valid JWT the broker rejected
80
+ // must never let `auth: healthy` / exit 0 stand (the whole point of the renewal-honesty slice).
81
+ const rec = readRenewalRecord(root);
82
+ const adoptionRefused = rec?.adoption?.ok === false;
83
+ if (!problems.length && !adoptionRefused) {
57
84
  console.log(c.green("\nauth: healthy"));
58
85
  return;
59
86
  }
60
- console.log(c.red(`\nauth: ${problems.length} problem${problems.length === 1 ? "" : "s"}`));
87
+ const parts = [];
88
+ if (problems.length)
89
+ parts.push(`${problems.length} cred problem${problems.length === 1 ? "" : "s"}`);
90
+ if (adoptionRefused)
91
+ parts.push("last renewal not broker-accepted");
92
+ console.log(c.red(`\nauth: ${parts.join(", ")}`));
61
93
  for (const p of problems)
62
94
  console.log(` ${c.red("✗")} ${p.label}: ${p.problem}\n next: ${p.repair}`);
95
+ if (adoptionRefused)
96
+ console.log(` ${c.red("✗")} the last renewal pass was refused by the broker: ${rec?.adoption?.error ?? "unknown"}\n next: start or repair the mesh's manager (the renewal owner) so it re-signs and re-proves the daemon creds`);
63
97
  process.exitCode = 1;
64
98
  }
65
99
  function isRemintable(kind) {
@@ -154,13 +188,22 @@ function renderRenewalRecord(root) {
154
188
  }
155
189
  const resigned = rec.results.filter((r) => r.ok).map((r) => r.file);
156
190
  const failed = rec.results.filter((r) => !r.ok && !r.skipped);
191
+ // Per-component result from the daemon's structured reply detail (persisted on ok AND failed
192
+ // passes): "accepted" = the broker accepted this generation (the proof); "rejected" (ok:false);
193
+ // "n/a" (absent/skipped). NOT "adopted" — the resident wire swap is best-effort/self-healing, not
194
+ // witnessed. Empty for an older record.
195
+ const detail = rec.adoption?.detail;
196
+ const compStatus = (comp) => comp === undefined ? "n/a" : comp.ok === false ? "rejected" : comp.skipped ? "n/a" : comp.brokerAccepted ? "accepted" : "n/a";
197
+ const perComponent = detail && typeof detail === "object" && (detail.delivery !== undefined || detail.membership !== undefined)
198
+ ? ` (delivery: ${compStatus(detail.delivery)}, membership: ${compStatus(detail.membership)})`
199
+ : "";
157
200
  const adoption = rec.adoption === undefined
158
201
  ? resigned.length
159
- ? c.yellow("daemon adoption not requested by this pass - daemons adopt via the 75% re-read backstop or the manager's next renewal pass")
160
- : c.dim("adoption: n/a (nothing re-signed)")
202
+ ? c.yellow("daemon reload not requested by this pass - daemons pick up the re-sign via the 75% re-read backstop or the next renewal pass")
203
+ : c.dim("renewal: n/a (nothing re-signed)")
161
204
  : rec.adoption.ok
162
- ? c.green("daemon adopted ✓")
163
- : c.yellow(`daemon adoption pending - ${rec.adoption.error ?? "unknown"}`);
205
+ ? c.green(`broker-accepted ✓${perComponent}`)
206
+ : c.yellow(`renewal not accepted - ${rec.adoption.error ?? "unknown"}${perComponent}`);
164
207
  console.log(` ${c.dim(`last renewal pass ${rec.ts} by ${rec.owner}`)} - re-signed [${resigned.join(", ") || "none"}] · ${adoption}`);
165
208
  for (const f of failed)
166
209
  console.log(` ${c.red("✗")} last pass failed on ${f.file}: ${f.error}`);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAKlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gGAAgG,EAAE;CACvI,CAAC;AAaX;;;;;kGAKkG;AAClG,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,qFAAqF,CAAC,CAAC;QAC3H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAwC,CAAC;IAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,2FAA2F;QAC3F,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAE3I,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEhD,+FAA+F;IAC/F,4FAA4F;IAC5F,gGAAgG;IAChG,iGAAiG;IACjG,+DAA+D;IAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9C,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3F,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9G,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,2CAA2C,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,4DAA4D,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC;IACjK,MAAM,CAAC,gCAAgC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;IAEpF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,IAAoB;IACxC,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,eAAe,CAAC;AACzD,CAAC;AAED;;0DAE0D;AAC1D,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAiE;QAC1E,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE;QAC5E,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,EAAE;QAC3F,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,2BAA2B,CAAC,EAAE;QAC7G,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAAE;KAC3G,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACnH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,IAAoB,EAAE,IAAY;IAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,oBAAoB,IAAI,MAAM,CAAC,KAAK,KAAK,kBAAkB,CAAC;IAC9F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,GAAG,UAAU,EAAE,0HAA0H;QAC3I,CAAC,CAAC,IAAI,KAAK,OAAO;YAChB,CAAC,CAAC,wBAAwB,UAAU,EAAE,4CAA4C;YAClF,CAAC,CAAC,8BAA8B,UAAU,EAAE,0BAA0B,UAAU,EAAE,qCAAqC,CAAC;IAC5H,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,CAAC,CAAC,OAAO,GAAG,+BAA+B,MAAM,CAAC,KAAK,GAAG,CAAC;YAC3D,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,CAAC,CAAC,OAAO,GAAG,6CAA6C,CAAC;YAC1D,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,MAAM;QACR,KAAK,aAAa;YAChB,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,OAAO,GAAG,0CAA0C,MAAM,CAAC,YAAY,eAAe,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,CAAC;YACD,MAAM;QACR,KAAK,WAAW;YACd,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,OAAO,GAAG,4FAA4F,CAAC;gBACzG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,CAAC;YACD,MAAM;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAqB;IAClD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,sCAAsC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjH,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GACT,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5C,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;gBACvD,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;oBACrG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;0DAG0D;AAC1D,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS;QACzC,CAAC,CAAC,QAAQ,CAAC,MAAM;YACf,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,4HAA4H,CAAC;YACxI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mCAAmC,CAAC;QAC9C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;YAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,6BAA6B,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,iBAAiB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,QAAQ,EAAE,CAAC,CAAC;IACxI,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,EAAE,CAAC,GAAY;IACtB,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAKlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gGAAgG,EAAE;IAC/I,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;CACtG,CAAC;AAaX;;;;;kGAKkG;AAClG,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,mGAAmG,CAAC,CAAC;QACzI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAwC,CAAC;IAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7J,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,uFAAuF;QACvF,oFAAoF;QACpF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,KAAK,WAAW,OAAO,CAAC,IAAI,CAAC,cAAc,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7J,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,2FAA2F;QAC3F,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC;IAErH,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEhD,+FAA+F;IAC/F,4FAA4F;IAC5F,gGAAgG;IAChG,kGAAkG;IAClG,+DAA+D;IAC/D,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kDAAkD;QAC7G,6FAA6F;QAC7F,6FAA6F;QAC7F,8FAA8F;QAC9F,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,KAAK;YAC5C,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8NAA8N,EAAE;YACtP,CAAC,CAAC,SAAS,CAAC;QACd,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrG,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9G,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,2CAA2C,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,4DAA4D,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC;IACjK,MAAM,CAAC,gCAAgC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;IAEpF,oGAAoG;IACpG,mGAAmG;IACnG,gGAAgG;IAChG,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,KAAK,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACtG,IAAI,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACzG,IAAI,eAAe;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,qDAAqD,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,SAAS,kHAAkH,CAAC,CAAC;IACvO,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,IAAoB;IACxC,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,eAAe,CAAC;AACzD,CAAC;AAED;;0DAE0D;AAC1D,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAiE;QAC1E,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE;QAC5E,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,qBAAqB,CAAC,EAAE;QAC3F,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,KAAK,CAAC,2BAA2B,CAAC,EAAE;QAC7G,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,0BAA0B,CAAC,EAAE;KAC3G,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACnH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,IAAoB,EAAE,IAAY;IAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,KAAK,oBAAoB,IAAI,MAAM,CAAC,KAAK,KAAK,kBAAkB,CAAC;IAC9F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,GAAG,UAAU,EAAE,0HAA0H;QAC3I,CAAC,CAAC,IAAI,KAAK,OAAO;YAChB,CAAC,CAAC,wBAAwB,UAAU,EAAE,4CAA4C;YAClF,CAAC,CAAC,8BAA8B,UAAU,EAAE,0BAA0B,UAAU,EAAE,qCAAqC,CAAC;IAC5H,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,YAAY;YACf,CAAC,CAAC,OAAO,GAAG,+BAA+B,MAAM,CAAC,KAAK,GAAG,CAAC;YAC3D,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,CAAC,CAAC,OAAO,GAAG,6CAA6C,CAAC;YAC1D,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,MAAM;QACR,KAAK,aAAa;YAChB,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,OAAO,GAAG,0CAA0C,MAAM,CAAC,YAAY,eAAe,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,CAAC;YACD,MAAM;QACR,KAAK,WAAW;YACd,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,OAAO,GAAG,4FAA4F,CAAC;gBACzG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,CAAC;YACD,MAAM;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,OAAqB;IAClD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,sCAAsC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjH,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GACT,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5C,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;gBACvD,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;oBACrG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;0DAG0D;AAC1D,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9D,6FAA6F;IAC7F,gGAAgG;IAChG,kGAAkG;IAClG,wCAAwC;IACxC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,MAEhB,CAAC;IACd,MAAM,UAAU,GAAG,CAAC,IAAmE,EAAU,EAAE,CACjG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;IAChI,MAAM,YAAY,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;QAC7H,CAAC,CAAC,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;QAC7F,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS;QACzC,CAAC,CAAC,QAAQ,CAAC,MAAM;YACf,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,8HAA8H,CAAC;YAC1I,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC;QAC7C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,YAAY,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,0BAA0B,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,iBAAiB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,QAAQ,EAAE,CAAC,CAAC;IACxI,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,EAAE,CAAC,GAAY;IACtB,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC"}
@@ -17,7 +17,7 @@
17
17
  import { lstatSync, readFileSync, rmSync } from "node:fs";
18
18
  import { join, resolve } from "node:path";
19
19
  import { CONTROL_ADMIN, deleteChannels, isReachable, mintCreds, newIdentity, parsePrincipalKey, realDirNoSymlink, resolveAuthProvider, subjectMatches, unlinkFileNoFollow, } from "@cotal-ai/core";
20
- import { agentActorTokenKey, agentCredsKey, agentSecretFilePaths, agentSentinelCredsKey, authDir, loadSpaceAuth, userAuthStateDir, workspaceSecretStore } from "@cotal-ai/workspace";
20
+ import { agentActorTokenKey, agentCredsKey, agentSecretFilePaths, agentSentinelCredsKey, getSpaceAuth, userAuthStateDir, workspaceSecretStore } from "@cotal-ai/workspace";
21
21
  import { c } from "../ui.js";
22
22
  import { cotalRoot } from "../lib/paths.js";
23
23
  import { connectProbe } from "../lib/manifest/live.js";
@@ -342,7 +342,7 @@ function credSubject(raw) {
342
342
  * an open mesh / mismatched checkout (then we connect bare and do local cleanup). `teardown` is the SOLE
343
343
  * cred that keeps `STREAM.DELETE` (deleteSpace + clearChannel) — no read, no forge, no other stream. */
344
344
  async function mintIfAuth(root, space) {
345
- const auth = loadSpaceAuth(authDir(root));
345
+ const auth = await getSpaceAuth(workspaceSecretStore(root), space);
346
346
  if (!auth || auth.space !== space)
347
347
  return undefined;
348
348
  return mintCreds(auth, newIdentity(), "teardown");
@@ -1 +1 @@
1
- {"version":3,"file":"down-manifest.js","sourceRoot":"","sources":["../../src/commands/down-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"down-manifest.js","sourceRoot":"","sources":["../../src/commands/down-manifest.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,15 @@ export declare function down(args: ParsedArgs): Promise<void>;
8
8
  export declare const isAlive: (pid: number) => boolean;
9
9
  export declare function processRecorded(component: LocalProcess, context: LocalProcessContext): boolean;
10
10
  export declare function processAlive(component: LocalProcess, context: LocalProcessContext): boolean;
11
+ /** Whether a component MIGHT still be running - the question the pre-stop `stopLast` guard must ask,
12
+ * and it fails CLOSED on uncertainty. A component with NO pidfile, an EMPTY husk, or a valid pid
13
+ * PROVEN dead (ESRCH) is not running. ANY other state - an unparsable/unattributable record, or a
14
+ * valid pid that is alive or whose liveness cannot be confirmed (`unknown`) - MIGHT be running, so
15
+ * it must BLOCK a stop-last (broker) shutdown. `processAlive` collapses unparsable and `unknown` to
16
+ * "not alive", which is fine for "is it worth stopping" but WRONG for "is it safe to stop the broker
17
+ * out from under this": that read would let `cotal down nats` orphan a live auth signer behind a
18
+ * torn pidfile. Only an ESRCH-confirmed death (or no record) clears a dependant. */
19
+ export declare function mayBeRunning(component: LocalProcess, context: LocalProcessContext): boolean;
11
20
  /** Stop one recorded process and await its actual exit before the next dependency is stopped. */
12
21
  export declare function stopLocalProcess(component: LocalProcess, context: LocalProcessContext): Promise<boolean>;
13
22
  /** Compatibility inventory for `clean`; lifecycle commands use the registered descriptors above. */
@@ -1 +1 @@
1
- {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAoBL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAIzB,MAAM,qBAAqB,CAAC;AA4B7B,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAS7D;AAED;kGACkG;AAClG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF1D;AAOD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAErC,CAAC;AAEF,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAE9F;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAK3F;AAED,iGAAiG;AACjG,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4E9G;AAuWD,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOvD"}
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../src/commands/down.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAuBL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAIzB,MAAM,qBAAqB,CAAC;AA6B7B,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAS7D;AAED;kGACkG;AAClG,wBAAsB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F1D;AAQD,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,OAAyC,CAAC;AAEhF,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAE9F;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAK3F;AAED;;;;;;;qFAOqF;AACrF,wBAAgB,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAQ3F;AAED,iGAAiG;AACjG,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiH9G;AA6WD,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQlF;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOvD"}
@@ -1,13 +1,15 @@
1
- import { closeSync, existsSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
1
+ import { closeSync, existsSync, linkSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs";
2
+ import { randomBytes } from "node:crypto";
2
3
  import { join } from "node:path";
3
4
  import {} from "@cotal-ai/core";
4
- import { abortMaintenanceCut, acquireMaintenanceLock, beginMaintenanceCut, clearPreservationCommitIntent, clearPreservationPrepareIntent, completeMaintenanceCut, loadMeshes, localProcessPath, readMaintenanceJournal, readMaintenanceResumeDocument, readPreservationCommitIntent, readPreservationPrepareIntent, readStoreIdentity, recordPreservationManagerCommit, releaseMaintenanceLock, removeMeshesByRoot, sameStoreIdentity, writePreservationCommitIntent, writePreservationPrepareIntent, MAINTENANCE_RESUME_DOCUMENT_VERSION, writeMaintenanceResumeDocument, } from "@cotal-ai/workspace";
5
+ import { abortMaintenanceCut, acquireMaintenanceLock, assertSingleSpaceBroker, authDir, beginMaintenanceCut, clearPreservationCommitIntent, clearPreservationPrepareIntent, completeMaintenanceCut, loadMeshes, localProcessPath, readMaintenanceJournal, readMaintenanceResumeDocument, readPreservationCommitIntent, readPreservationPrepareIntent, readStoreIdentity, recordPreservationManagerCommit, releaseMaintenanceLock, removeMeshesByRoot, sameStoreIdentity, writePreservationCommitIntent, writePreservationPrepareIntent, spaceKey, MAINTENANCE_RESUME_DOCUMENT_VERSION, writeMaintenanceResumeDocument, } from "@cotal-ai/workspace";
5
6
  import { jetstreamManager } from "@nats-io/jetstream";
6
7
  import { connect } from "@nats-io/transport-node";
7
8
  import { CONTROL_ADMIN, DEV_OWNER, isReachable, LEASE_TTL_MS, MANAGER_LEASE_KEY, MANAGER_LEASE_TTL_MS, deliveryBucket, managerBucket, presenceBucket, parsePrincipalKey, principalKey, standaloneConnectOpts, } from "@cotal-ai/core";
8
9
  import { extensionNames, localProcessSurface } from "../ext-loader.js";
9
10
  import { c } from "../ui.js";
10
11
  import { cotalRoot } from "../lib/paths.js";
12
+ import { parsePid, probeLiveness } from "../lib/pid.js";
11
13
  import { resolveSpace } from "../lib/status.js";
12
14
  import { downManifest } from "./down-manifest.js";
13
15
  import { askManager, resolveControlTarget } from "../lib/control.js";
@@ -30,6 +32,11 @@ export function downComplete(argv) {
30
32
  export async function down(args) {
31
33
  const values = args.values;
32
34
  const requested = [...new Set(args.positionals)];
35
+ // Every non-manifest `down` stops the shared broker and its per-space daemons; none of them can
36
+ // address one space, so a multi-space root is refused up front rather than at the space-blind
37
+ // pidfile lookup below. A manifest teardown (`-f`/`--run`) names its own space and is exempt.
38
+ if (!values.file && !values.run)
39
+ assertSingleSpaceBroker(authDir(cotalRoot()), "cotal down");
33
40
  if (values["preserve-state"]) {
34
41
  if (requested.length || values.file || values.run || values["dry-run"])
35
42
  throw new Error("--preserve-state is bare-whole-stack only and cannot be combined with components, --file, --run, or --dry-run");
@@ -55,9 +62,13 @@ export async function down(args) {
55
62
  const context = { root: cotalRoot(), space: resolveSpace(process.cwd()) };
56
63
  if (selected.some((component) => component.stopLast)) {
57
64
  const selectedNames = new Set(selected.map((component) => component.name));
58
- const dependants = all.filter((component) => !selectedNames.has(component.name) && processAlive(component, context));
65
+ // Fail CLOSED: an unselected dependant that MIGHT be running (including one behind an
66
+ // unattributable/unknown pidfile) blocks a stop-last shutdown - stopping the broker out from
67
+ // under a live dependant we could not confirm gone is exactly the signer-orphan the contract
68
+ // forbids. `mayBeRunning`, not `processAlive` (which reads uncertainty as "not running").
69
+ const dependants = all.filter((component) => !selectedNames.has(component.name) && mayBeRunning(component, context));
59
70
  if (dependants.length) {
60
- throw new Error(`cannot stop ${selected.filter((component) => component.stopLast).map((component) => component.name).join(", ")} while ${dependants.map((component) => component.name).join(", ")} ${dependants.length === 1 ? "is" : "are"} still running - name them too, or run bare \`cotal down\``);
71
+ throw new Error(`cannot stop ${selected.filter((component) => component.stopLast).map((component) => component.name).join(", ")} while ${dependants.map((component) => component.name).join(", ")} ${dependants.length === 1 ? "is" : "are"} still running (or its liveness cannot be confirmed) - name them too, or run bare \`cotal down\``);
61
72
  }
62
73
  }
63
74
  if (values["dry-run"]) {
@@ -110,19 +121,12 @@ export async function down(args) {
110
121
  }
111
122
  }
112
123
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
113
- const parsePid = (raw) => {
114
- const pid = Number(raw.trim());
115
- return Number.isInteger(pid) && pid > 0 ? pid : undefined;
116
- };
117
- export const isAlive = (pid) => {
118
- try {
119
- process.kill(pid, 0);
120
- return true;
121
- }
122
- catch (e) {
123
- return e.code === "EPERM";
124
- }
125
- };
124
+ // The pid parser + liveness probe are the SHARED pid-attribution contract (`lib/pid.ts`), the same
125
+ // one `auth-proc` uses - so `cotal down`'s stop of the auth-service (a callout SIGNER) attributes a
126
+ // torn pidfile exactly as the direct helper does, instead of the old unbounded parser + two-state
127
+ // probe that mapped a kernel-unsignalable value to "dead" and orphaned the process under a clean
128
+ // stop. `isAlive` = the probe says the process EXISTS; every caller below feeds it a parsed pid.
129
+ export const isAlive = (pid) => probeLiveness(pid) === "alive";
126
130
  export function processRecorded(component, context) {
127
131
  return existsSync(localProcessPath(component.pidFile, context)) || (component.artifacts ?? []).map((artifact) => localProcessPath(artifact, context)).some(existsSync);
128
132
  }
@@ -133,6 +137,26 @@ export function processAlive(component, context) {
133
137
  const pid = parsePid(readFileSync(pidPath, "utf8"));
134
138
  return pid !== undefined && isAlive(pid);
135
139
  }
140
+ /** Whether a component MIGHT still be running - the question the pre-stop `stopLast` guard must ask,
141
+ * and it fails CLOSED on uncertainty. A component with NO pidfile, an EMPTY husk, or a valid pid
142
+ * PROVEN dead (ESRCH) is not running. ANY other state - an unparsable/unattributable record, or a
143
+ * valid pid that is alive or whose liveness cannot be confirmed (`unknown`) - MIGHT be running, so
144
+ * it must BLOCK a stop-last (broker) shutdown. `processAlive` collapses unparsable and `unknown` to
145
+ * "not alive", which is fine for "is it worth stopping" but WRONG for "is it safe to stop the broker
146
+ * out from under this": that read would let `cotal down nats` orphan a live auth signer behind a
147
+ * torn pidfile. Only an ESRCH-confirmed death (or no record) clears a dependant. */
148
+ export function mayBeRunning(component, context) {
149
+ const pidPath = localProcessPath(component.pidFile, context);
150
+ if (!existsSync(pidPath))
151
+ return false;
152
+ const raw = readFileSync(pidPath, "utf8");
153
+ if (raw.trim() === "")
154
+ return false; // empty pre-protocol husk: no process behind it
155
+ const pid = parsePid(raw);
156
+ if (pid === undefined)
157
+ return true; // unattributable content: cannot prove it gone → may be running
158
+ return probeLiveness(pid) !== "dead"; // alive OR unknown → may be running; only ESRCH clears it
159
+ }
136
160
  /** Stop one recorded process and await its actual exit before the next dependency is stopped. */
137
161
  export async function stopLocalProcess(component, context) {
138
162
  const pidPath = localProcessPath(component.pidFile, context);
@@ -150,17 +174,28 @@ export async function stopLocalProcess(component, context) {
150
174
  const marker = `${pidPath}.stopping`;
151
175
  let markerFd;
152
176
  for (;;) {
177
+ // ATOMIC publish (the pid-slot pattern): fill a private temp inode with our pid FIRST, then
178
+ // `link(2)` it as the marker - a no-overwrite atomic op. A contender therefore never observes an
179
+ // empty marker mid-publish; the old `openSync(marker,"wx")` then `writeFileSync` left exactly
180
+ // that window, and a reader in it saw owner=undefined and reclaimed a LIVE owner's reservation
181
+ // (mutual exclusion defeated). The published name and the held fd both keep the inode alive.
182
+ const temp = `${marker}.${process.pid}.${randomBytes(4).toString("hex")}`;
153
183
  try {
154
- markerFd = openSync(marker, "wx", 0o600);
184
+ markerFd = openSync(temp, "wx", 0o600);
155
185
  writeFileSync(markerFd, String(process.pid));
186
+ linkSync(temp, marker); // EEXIST here = the marker is already held
187
+ rmSync(temp, { force: true });
156
188
  break;
157
189
  }
158
190
  catch (e) {
159
191
  if (markerFd !== undefined) {
160
192
  closeSync(markerFd);
161
- rmSync(marker, { force: true });
162
193
  markerFd = undefined;
163
194
  }
195
+ try {
196
+ rmSync(temp, { force: true });
197
+ }
198
+ catch { /* never created, or already gone */ }
164
199
  if (e.code !== "EEXIST")
165
200
  throw e;
166
201
  let owner;
@@ -169,12 +204,19 @@ export async function stopLocalProcess(component, context) {
169
204
  }
170
205
  catch (readErr) {
171
206
  if (readErr.code === "ENOENT")
172
- continue;
207
+ continue; // holder released between publish-refusal and read
173
208
  throw readErr;
174
209
  }
175
- if (owner && isAlive(owner))
210
+ // The atomic publish above is what closes the race: a LIVE `down` holding the marker always
211
+ // wrote its own POSITIVE pid into it (no empty/partial window), so a live holder is always a
212
+ // valid pid that is alive/EPERM/unknown - and THOSE we never reclaim (that is the mutual
213
+ // exclusion). An UNATTRIBUTABLE marker (empty / 0 / negative / garbled) therefore cannot
214
+ // represent a live holder; it is a stale or crashed reservation, and reclaiming it is both safe
215
+ // and required so a crashed `down` never wedges the next one. So: reclaim an unattributable
216
+ // owner or a valid pid PROVEN dead (ESRCH); refuse only a valid pid that is alive or whose
217
+ // liveness we cannot confirm.
218
+ if (owner !== undefined && probeLiveness(owner) !== "dead")
176
219
  throw new Error(`${component.name} is already being stopped by another \`cotal down\` (pid ${owner})`);
177
- // A dead owner cannot finish cleanup. Reclaim its marker and retry the exclusive create.
178
220
  rmSync(marker, { force: true });
179
221
  }
180
222
  }
@@ -182,42 +224,61 @@ export async function stopLocalProcess(component, context) {
182
224
  let stopped = false;
183
225
  try {
184
226
  if (pid === undefined) {
185
- console.log(c.dim(`${component.label} had an invalid pidfile.`));
186
- stopped = true;
187
- return true;
227
+ // An EMPTY pidfile is a pre-protocol husk (no process behind it) and is safe to clear. Any
228
+ // OTHER unattributable content (garbled, fractional, out-of-range - anything `parsePid`
229
+ // rejects) may still front a LIVE process we cannot identify or signal; removing it would
230
+ // orphan that process while reporting a clean stop (the signer-orphan this slice must not do).
231
+ // Refuse loud and preserve it.
232
+ if (rawPid === "") {
233
+ console.log(c.dim(`${component.label} had an empty pidfile.`));
234
+ stopped = true; // husk cleared in `finally`
235
+ return true;
236
+ }
237
+ throw new Error(`${component.label} has an unattributable pidfile at ${pidPath} (${JSON.stringify(rawPid)}) - it may still front a running process; refusing to remove it or report a clean stop. Stop that process and remove the file manually.`);
188
238
  }
189
239
  try {
190
240
  process.kill(pid, "SIGTERM");
191
241
  }
192
- catch {
193
- if (isAlive(pid))
194
- throw new Error(`could not signal ${component.label} (pid ${pid})`);
195
- console.log(c.dim(`${component.label} (pid ${pid}) was not running.`));
196
- stopped = true;
197
- return true;
242
+ catch (e) {
243
+ // ONLY an ESRCH proves the process is already gone (safe to clear). EPERM (exists, another
244
+ // user's) or any other errno (EIO, argument errors, unknown) means we could NOT confirm death
245
+ // - reporting it stopped and removing its record would orphan a live process. Fail loud, keep
246
+ // the record. A two-state "not alive => gone" is exactly the bug: `unknown` is not `dead`.
247
+ if (e.code === "ESRCH") {
248
+ console.log(c.dim(`${component.label} (pid ${pid}) was not running.`));
249
+ stopped = true;
250
+ return true;
251
+ }
252
+ throw new Error(`could not signal ${component.label} (pid ${pid}) (${e.code ?? "unknown error"}) - refusing to report it stopped or remove its record; stop it manually`);
198
253
  }
254
+ // Wait for CONFIRMED death (ESRCH), escalating to SIGKILL; `unknown`/`alive` both keep us
255
+ // waiting, and if death is never confirmed the record is preserved (never deleted on a guess).
199
256
  const graceDeadline = Date.now() + 15_000;
200
- while (isAlive(pid) && Date.now() < graceDeadline)
257
+ while (probeLiveness(pid) !== "dead" && Date.now() < graceDeadline)
201
258
  await sleep(100);
202
- if (isAlive(pid)) {
259
+ if (probeLiveness(pid) !== "dead") {
203
260
  try {
204
261
  process.kill(pid, "SIGKILL");
205
262
  }
206
263
  catch { /* raced to exit */ }
207
264
  const hardDeadline = Date.now() + 3_000;
208
- while (isAlive(pid) && Date.now() < hardDeadline)
265
+ while (probeLiveness(pid) !== "dead" && Date.now() < hardDeadline)
209
266
  await sleep(100);
210
267
  }
211
- if (isAlive(pid))
212
- throw new Error(`${component.label} (pid ${pid}) did not exit; its pidfile was preserved`);
268
+ if (probeLiveness(pid) !== "dead")
269
+ throw new Error(`${component.label} (pid ${pid}) did not exit, or its death could not be confirmed; its pidfile was preserved`);
213
270
  stopped = true;
214
271
  console.log(c.green(`✓ stopped ${component.label} (pid ${pid})`));
215
272
  return true;
216
273
  }
217
274
  finally {
218
- if (stopped || pid === undefined || !isAlive(pid)) {
275
+ // Remove the pidfile ONLY when we confirmed a clean stop: `stopped` is set exclusively on an
276
+ // ESRCH-proven death (already-gone, or a confirmed exit). Every other exit from the try above is
277
+ // a throw that must PRESERVE the record - an unattributable pidfile, a process we could not
278
+ // signal, or a death we could not confirm (`unknown`). The old `|| !isAlive(pid)` clause treated
279
+ // `unknown` as gone and deleted a live process's record; it is gone.
280
+ if (stopped)
219
281
  rmSync(pidPath, { force: true });
220
- }
221
282
  rmSync(marker, { force: true });
222
283
  }
223
284
  }
@@ -270,7 +331,7 @@ async function preserveStateDown(storeOverride) {
270
331
  const manager = all.find((component) => component.name === "manager");
271
332
  if (!manager)
272
333
  throw new Error("local process registry has no manager descriptor");
273
- if (!processAlive(manager, context)) {
334
+ if (!mayBeRunning(manager, context)) { // fail-closed: an uncertain manager is treated as alive, not dead
274
335
  const committing = readPreservationCommitIntent(root);
275
336
  if (!committing || committing.attemptId !== attemptId) {
276
337
  // No commit intent recorded: the child-stopping RPC was never invoked, so nothing was
@@ -302,8 +363,8 @@ async function preserveStateDown(storeOverride) {
302
363
  const retryTarget = await resolveControlTarget({ space: mesh.space, server: mesh.server }, "control-caller-admin");
303
364
  // Plane-3 fence precedes the re-prepared inventory, exactly as on the fresh path.
304
365
  const retryDelivery = all.find((component) => component.name === "delivery");
305
- if (retryDelivery && processAlive(retryDelivery, context))
306
- await stopLocalProcess(retryDelivery, context);
366
+ if (retryDelivery && mayBeRunning(retryDelivery, context))
367
+ await stopLocalProcess(retryDelivery, context); // fence an uncertain delivery too (stopLocalProcess throws loud on unattributable → abort)
307
368
  const reprepared = await askManager(retryTarget.space, retryTarget.server, "preparePreservation", { attemptId }, retryTarget.auth, CONTROL_ADMIN, 60_000);
308
369
  const replan = reprepared.ok ? reprepared.data : undefined;
309
370
  if (!replan?.inventory || (replan.failures?.length ?? 0) !== 0 || (replan.state !== "prepared" && replan.state !== "preserved"))
@@ -348,8 +409,8 @@ async function preserveStateDown(storeOverride) {
348
409
  // Fence Plane 3 BEFORE any inventory work: with the delivery daemon stopped, no durable
349
410
  // join/leave can mutate MEMBERS at or after the moment the inventory is taken.
350
411
  const delivery = all.find((component) => component.name === "delivery");
351
- if (delivery && processAlive(delivery, context))
352
- await stopLocalProcess(delivery, context);
412
+ if (delivery && mayBeRunning(delivery, context))
413
+ await stopLocalProcess(delivery, context); // fence an uncertain delivery: no MEMBERS mutation may race the inventory
353
414
  const prepared = await askManager(target.space, target.server, "preparePreservation", { attemptId }, target.auth, CONTROL_ADMIN, 60_000);
354
415
  if (!prepared.ok)
355
416
  throw new Error(prepared.error ?? "manager preservation prepare failed");
@@ -397,6 +458,10 @@ async function preserveStateDown(storeOverride) {
397
458
  const manager = all.find((component) => component.name === "manager");
398
459
  if (!manager)
399
460
  throw new Error("local process registry has no manager descriptor");
461
+ // This one DELIBERATELY keeps `processAlive` (provably alive), not `mayBeRunning`: here we must
462
+ // USE the manager to prove every retained child stopped, so anything short of provably-alive -
463
+ // dead OR uncertain - must fail closed and preserve the cut. `processAlive` already returns
464
+ // false on `unknown`, so an uncertain manager throws here rather than being trusted to attest.
400
465
  if (!processAlive(manager, context))
401
466
  throw new Error("cannot complete preservation because the attempt-bound manager is not alive to prove every retained child stopped; recovery must preserve the cut-intent journal for inspection");
402
467
  // Fault window: cut-intent journaled but the child-stopping RPC not yet invoked (no commit
@@ -450,9 +515,11 @@ async function preserveStateDown(storeOverride) {
450
515
  // rank() keeps auth (40) ahead of the broker (stopLast, 100) within this phase.
451
516
  for (const component of ranked.filter(afterQuiescence))
452
517
  await stopLocalProcess(component, context);
453
- const stillRunning = all.filter((component) => processAlive(component, context));
518
+ // Fail-closed: a component we cannot PROVE stopped (unattributable/unknown pidfile) leaves the
519
+ // cut partial - it must not be silently counted as gone, or `unknown` becomes a "successful cut".
520
+ const stillRunning = all.filter((component) => mayBeRunning(component, context));
454
521
  if (stillRunning.length)
455
- throw new Error(`preservation cut is partial; still running: ${stillRunning.map((component) => component.name).join(", ")}`);
522
+ throw new Error(`preservation cut is partial; still running (or liveness unconfirmed): ${stillRunning.map((component) => component.name).join(", ")}`);
456
523
  await waitForEndpointUnreachable(mesh.server);
457
524
  completeMaintenanceCut(lock, {
458
525
  attemptId,
@@ -574,7 +641,7 @@ export function pidfileTargets(space) {
574
641
  return [
575
642
  ["manager.pid", "manager"],
576
643
  ["delivery.pid", "delivery daemon"],
577
- [`auth-service.${encodeURIComponent(space)}.pid`, "user-auth service"],
644
+ [`auth-service.${spaceKey(space)}.pid`, "user-auth service"],
578
645
  ["web.pid", "web dashboard"],
579
646
  ["nats.pid", "nats-server"],
580
647
  ];